Name: series-workflowdx5fs Phase: Succeeded StartedAt: 2026-06-23 17:45:37 +0000 UTC FinishedAt: 2026-06-23 21:54:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[0] Phase: Succeeded StartedAt: 2026-06-23 17:45:37 +0000 UTC FinishedAt: 2026-06-23 17:55:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 17:45:37 +0000 UTC FinishedAt: 2026-06-23 17:55:02 +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": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MITIGATION_VMSCAPE", "BPF_JIT" ], "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": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MITIGATION_VMSCAPE", "BPF_JIT" ], "series_id": "6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "kvm", "net" ], "focus_symbols": [ "emit_spectre_bhb_barrier", "cpu_bugs_smt_update" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JVElHQVRJT05fVk1TQ0FQRSYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O2NwdV9idWdzX3NtdF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhOTEzZjZhNjg1Y2E5YjJhYTk1NTEyNTNjNzg2ODkyNTk4M2I5ZGRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTc6NTM6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XG5pbmRleCBkOWI5YTJiNmMxMTRjMC4uMjU1OGE1YzNkOTU2YzMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdFxuQEAgLTg2LDYgJiM0Mzs4NiwxMCBAQCBUaGUgcG9zc2libGUgdmFsdWVzIGluIHRoaXMgZmlsZSBhcmU6XG4gICAgcnVuIGEgcG90ZW50aWFsbHkgbWFsaWNpb3VzIGd1ZXN0IGFuZCBpc3N1ZXMgYW4gSUJQQiBiZWZvcmUgdGhlIGZpcnN0XG4gICAgZXhpdCB0byB1c2Vyc3BhY2UgYWZ0ZXIgVk0tZXhpdC5cbiBcbiYjNDM7ICogJiMzOTtNaXRpZ2F0aW9uOiBDbGVhciBCSEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlJiMzOTs6XG4mIzQzO1xuJiM0MzsgICBBcyBhYm92ZSwgY29uZGl0aW9uYWwgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gaXMgZW5hYmxlZC5cbiYjNDM7XG4gICogJiMzOTtNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCYjMzk7OlxuIFxuICAgIElCUEIgaXMgaXNzdWVkIG9uIGV2ZXJ5IFZNLWV4aXQuIFRoaXMgb2NjdXJzIHdoZW4gb3RoZXIgbWl0aWdhdGlvbnMgbGlrZVxuQEAgLTEwMiw5ICYjNDM7MTA2LDE4IEBAIFRoZSBtaXRpZ2F0aW9uIGNhbiBiZSBjb250cm9sbGVkIHZpYSB0aGUgYGB2bXNjYXBlPWBgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXI6XG4gXG4gICogYGB2bXNjYXBlPWlicGJgYDpcbiBcbi0gICBFbmFibGUgY29uZGl0aW9uYWwgSUJQQiBtaXRpZ2F0aW9uIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KS5cbiYjNDM7ICAgRW5hYmxlIGNvbmRpdGlvbmFsIElCUEIgbWl0aWdhdGlvbi5cbiBcbiAgKiBgYHZtc2NhcGU9Zm9yY2VgYDpcbiBcbiAgICBGb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBldmVuIG9uIHByb2Nlc3NvcnMgdGhhdCBhcmVcbiAgICBub3Qga25vd24gdG8gYmUgYWZmZWN0ZWQuXG4mIzQzO1xuJiM0MzsgKiBgYHZtc2NhcGU9YXV0b2BgOlxuJiM0MztcbiYjNDM7ICAgQ2hvb3NlIHRoZSBtaXRpZ2F0aW9uIGJhc2VkIG9uIHRoZSBWTVNDQVBFIHZhcmlhbnQgdGhlIENQVSBpcyBhZmZlY3RlZCBieS5cbiYjNDM7ICAgKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpXG4mIzQzO1xuJiM0MzsgKiBgYHZtc2NhcGU9b25gYDpcbiYjNDM7XG4mIzQzOyAgIFNhbWUgYXMgYGBhdXRvYGAsIGV4Y2VwdCB0aGF0IGl0IG92ZXJyaWRlcyBhdHRhY2sgdmVjdG9yIGNvbnRyb2xzLlxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4xMzIwYmFmOTI2NGMwNSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuQEAgLTgzMzcsOSAmIzQzOzgzMzcsMTMgQEAgS2VybmVsIHBhcmFtZXRlcnNcbiBcbiBcdFx0XHRvZmZcdFx0LSBkaXNhYmxlIHRoZSBtaXRpZ2F0aW9uXG4gXHRcdFx0aWJwYlx0XHQtIHVzZSBJbmRpcmVjdCBCcmFuY2ggUHJlZGljdGlvbiBCYXJyaWVyXG4tXHRcdFx0XHRcdCAgKElCUEIpIG1pdGlnYXRpb24gKGRlZmF1bHQpXG4mIzQzO1x0XHRcdFx0XHQgIChJQlBCKSBtaXRpZ2F0aW9uXG4gXHRcdFx0Zm9yY2VcdFx0LSBmb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBldmVuIG9uXG4gXHRcdFx0XHRcdCAgdW5hZmZlY3RlZCBwcm9jZXNzb3JzXG4mIzQzO1x0XHRcdGF1dG9cdFx0LSAoZGVmYXVsdCkgdXNlIElCUEIgb3IgQkhCIGNsZWFyXG4mIzQzO1x0XHRcdFx0XHQgIG1pdGlnYXRpb24gYmFzZWQgb24gQ1BVXG4mIzQzO1x0XHRcdG9uXHRcdC0gc2FtZSBhcyBcJiMzNDthdXRvXCYjMzQ7LCBidXQgb3ZlcnJpZGUgYXR0YWNrXG4mIzQzO1x0XHRcdFx0XHQgIHZlY3RvciBjb250cm9sXG4gXG4gXHR2c3lzY2FsbD1cdFtYODYtNjQsRUFSTFldXG4gXHRcdFx0Q29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHZzeXNjYWxscyAoaS5lLiBjYWxscyB0b1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnXG5pbmRleCBmM2Y3Y2IwMWQ2OWQwMi4uYzU5NjViY2YxNGMxZjcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnXG5AQCAtMjcxNyw2ICYjNDM7MjcxNyw3IEBAIGNvbmZpZyBNSVRJR0FUSU9OX1RTQVxuIGNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcbiBcdGJvb2wgXCYjMzQ7TWl0aWdhdGUgVk1TQ0FQRVwmIzM0O1xuIFx0ZGVwZW5kcyBvbiBLVk1cbiYjNDM7XHRkZXBlbmRzIG9uIEhBVkVfU1RBVElDX0NBTExcbiBcdGRlZmF1bHQgeVxuIFx0aGVscFxuIFx0ICBFbmFibGUgbWl0aWdhdGlvbiBmb3IgVk1TQ0FQRSBhdHRhY2tzLiBWTVNDQVBFIGlzIGEgaGFyZHdhcmUgc2VjdXJpdHlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xuaW5kZXggNDI0NDdiMWUxZGZmYTQuLjFmNTZkMDg2ZDMxMmMwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xuQEAgLTE1MjgsMTIgJiM0MzsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZClcbiAgKiByZWZhY3RvcmVkIGluIHRoZSBmdXR1cmUgaWYgbmVlZGVkLiBUaGUgLnNraXBzIGFyZSBmb3Igc2FmZXR5LCB0byBlbnN1cmVcbiAgKiB0aGF0IGFsbCBSRVRzIGFyZSBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgYSBjYWNoZWxpbmUgdG8gbWl0aWdhdGUgSW5kaXJlY3RcbiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLlxuJiM0MzsgKlxuJiM0MzsgKiBOb3RlLCBjYWxsZXJzIHNob3VsZCB1c2UgYSBzcGVjdWxhdGlvbiBiYXJyaWVyIGxpa2UgTEZFTkNFIGltbWVkaWF0ZWx5IGFmdGVyXG4mIzQzOyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuXG4gICovXG4tU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXG4mIzQzO1NZTV9GVU5DX1NUQVJUKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4gXHRBTk5PVEFURV9OT0VOREJSXG4gXHRwdXNoXHQlcmJwXG4gXHRtb3ZcdCVyc3AsICVyYnBcbi1cdG1vdmxcdCQ1LCAlZWN4XG4mIzQzO1xuJiM0MztcdG1vdnpibCAgICBiaGJfc2VxX291dGVyX2xvb3AoJXJpcCksICVlY3hcbiYjNDM7XG4gXHRBTk5PVEFURV9JTlRSQV9GVU5DVElPTl9DQUxMXG4gXHRjYWxsXHQxZlxuIFx0am1wXHQ1ZlxuQEAgLTE1NTMsOCAmIzQzOzE1NTgsOCBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcbiBcdCAqIFRoaXMgc2hvdWxkIGJlIGlkZWFsbHkgYmU6IC5za2lwIDMyIC0gKC5McmV0MiAtIDJmKSwgMHhjY1xuIFx0ICogYnV0IHNvbWUgQ2xhbmcgdmVyc2lvbnMgKGUuZy4gMTgpIGRvbiYjMzk7dCBsaWtlIHRoaXMuXG4gXHQgKi9cbi1cdC5za2lwIDMyIC0gMTgsIDB4Y2Ncbi0yOlx0bW92bFx0JDUsICVlYXhcbiYjNDM7XHQuc2tpcCAzMiAtIDIwLCAweGNjXG4mIzQzOzI6XHRtb3Z6YmwgIGJoYl9zZXFfaW5uZXJfbG9vcCglcmlwKSwgJWVheFxuIDM6XHRqbXBcdDRmXG4gXHRub3BcbiA0Olx0c3ViXHQkMSwgJWVheFxuQEAgLTE1NjIsOSAmIzQzOzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcbiBcdHN1Ylx0JDEsICVlY3hcbiBcdGpuelx0MWJcbiAuTHJldDI6XHRSRVRcbi01Olx0bGZlbmNlXG4mIzQzOzU6XG4gXHRwb3BcdCVyYnBcbiBcdFJFVFxuLVNZTV9GVU5DX0VORChjbGVhcl9iaGJfbG9vcClcbi1FWFBPUlRfU1lNQk9MX0ZPUl9LVk0oY2xlYXJfYmhiX2xvb3ApXG4tU1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wKVxuJiM0MztTWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcbiYjNDM7RVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4mIzQzO1NUQUNLX0ZSQU1FX05PTl9TVEFOREFSRChjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5pbmRleCAxZDUwNmU1ZDZmNDZhYy4uMDlmOTU2YjcyNjM3YzUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5AQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNBX1NRX05PXHRcdCgyMSozMiYjNDM7MTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfTDFfTk9cdFx0KDIxKjMyJiM0MzsxMikgLyogQU1EIENQVSBub3QgdnVsbmVyYWJsZSB0byBUU0EtTDEgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0NMRUFSX0NQVV9CVUZfVk1cdCgyMSozMiYjNDM7MTMpIC8qIENsZWFyIENQVSBidWZmZXJzIHVzaW5nIFZFUlcgYmVmb3JlIFZNUlVOICovXG4tI2RlZmluZSBYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUlx0KDIxKjMyJiM0MzsxNCkgLyogVXNlIElCUEIgb24gZXhpdC10by11c2Vyc3BhY2UsIHNlZSBWTVNDQVBFIGJ1ZyAqL1xuJiM0MzsvKiBGcmVlICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9BQk1DXHRcdCgyMSozMiYjNDM7MTUpIC8qIEFzc2lnbmFibGUgQmFuZHdpZHRoIE1vbml0b3JpbmcgQ291bnRlcnMgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX01TUl9JTU1cdFx0KDIxKjMyJiM0MzsxNikgLyogTVNSIGltbWVkaWF0ZSBmb3JtIGluc3RydWN0aW9ucyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk5cdCgyMSozMiYjNDM7MTcpIC8qIFN1cHBvcnQgZm9yIEVOQ0xTW0VVUERBVEVTVk5dIGluc3RydWN0aW9uICovXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuaW5kZXggZWNhMjRiNWUwN2Y0YzYuLmJlZmExNGExOTgxNzNlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oXG5AQCAtNCw2ICYjNDM7NCw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmFuZG9taXplX2tzdGFjay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdXNlci1yZXR1cm4tbm90aWZpZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYXNtL25vc3BlYy1icmFuY2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9pb19iaXRtYXAuaFx1MDAzZVxuQEAgLTgyLDExICYjNDM7ODMsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZShzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiBcdGN1cnJlbnRfdGhyZWFkX2luZm8oKS1cdTAwM2VzdGF0dXMgXHUwMDI2PSB+KFRTX0NPTVBBVCB8IFRTX0kzODZfUkVHU19QT0tFRCk7XG4gI2VuZGlmXG4gXG4tXHQvKiBBdm9pZCB1bm5lY2Vzc2FyeSByZWFkcyBvZiAmIzM5O3g4Nl9pYnBiX2V4aXRfdG9fdXNlciYjMzk7ICovXG4tXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikgXHUwMDI2XHUwMDI2XG4tXHQgICAgdGhpc19jcHVfcmVhZCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpKSB7XG4tXHRcdGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIoKTtcbi1cdFx0dGhpc19jcHVfd3JpdGUoeDg2X2licGJfZXhpdF90b191c2VyLCBmYWxzZSk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHRoaXNfY3B1X3JlYWQoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpKSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFNpbmNlIHRoZSBtaXRpZ2F0aW9uIGlzIGZvciB1c2Vyc3BhY2UsIGFuIGV4cGxpY2l0XG4mIzQzO1x0XHQgKiBzcGVjdWxhdGlvbiBiYXJyaWVyIGlzIG5vdCByZXF1aXJlZCBhZnRlciBmbHVzaC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0c3RhdGljX2NhbGxfY29uZCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkoKTtcbiYjNDM7XHRcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCBmYWxzZSk7XG4gXHR9XG4gfVxuICNkZWZpbmUgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlIGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmhcbmluZGV4IGQ3YzcwNGVkMWJlOWEyLi5iY2VlYWVkMjk0MGU5MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gICogYXQgbGVhc3Qgb25lIHZlbmRvciBtb2R1bGUgaXMgZW5hYmxlZC5cbiAgKi9cbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgS1ZNX0FSQ0hfTlJfT0JKU19QRVJfTUVNT1JZX0NBQ0hFIDQwXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oXG5pbmRleCA0ZjRiNWU4YTE1NzQzMC4uMzg0NzgzODMxMzliNjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxuQEAgLTMzMSwxMSAmIzQzOzMzMSwxMSBAQFxuIFxuICNpZmRlZiBDT05GSUdfWDg2XzY0XG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZXG4tXHRBTFRFUk5BVElWRSBcJiMzNDtcJiMzNDssIFwmIzM0O2NhbGwgY2xlYXJfYmhiX2xvb3BcJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QXG4mIzQzO1x0QUxURVJOQVRJVkUgXCYjMzQ7XCYjMzQ7LCBcJiMzNDtjYWxsIGNsZWFyX2JoYl9sb29wX25vZmVuY2U7IGxmZW5jZVwmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1BcbiAuZW5kbVxuIFxuIC5tYWNybyBDTEVBUl9CUkFOQ0hfSElTVE9SWV9WTUVYSVRcbi1cdEFMVEVSTkFUSVZFIFwmIzM0O1wmIzM0OywgXCYjMzQ7Y2FsbCBjbGVhcl9iaGJfbG9vcFwmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX1ZNRVhJVFxuJiM0MztcdEFMVEVSTkFUSVZFIFwmIzM0O1wmIzM0OywgXCYjMzQ7Y2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9WTUVYSVRcbiAuZW5kbVxuICNlbHNlXG4gI2RlZmluZSBDTEVBUl9CUkFOQ0hfSElTVE9SWVxuQEAgLTM4OSw3ICYjNDM7Mzg5LDkgQEAgZXh0ZXJuIHZvaWQgZW50cnlfdW50cmFpbl9yZXQodm9pZCk7XG4gZXh0ZXJuIHZvaWQgd3JpdGVfaWJwYih2b2lkKTtcbiBcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxuLWV4dGVybiB2b2lkIGNsZWFyX2JoYl9sb29wKHZvaWQpO1xuJiM0MztleHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpO1xuJiM0MzsjZWxzZVxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSh2b2lkKSB7fVxuICNlbmRpZlxuIFxuIGV4dGVybiB2b2lkICgqeDg2X3JldHVybl90aHVuaykodm9pZCk7XG5AQCAtNTMzLDcgJiM0Mzs1MzUsNyBAQCB2b2lkIGFsdGVybmF0aXZlX21zcl93cml0ZSh1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFsLCB1bnNpZ25lZCBpbnQgZmVhdHVyZSlcbiBcdFx0OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIH1cbiBcbi1ERUNMQVJFX1BFUl9DUFUoYm9vbCwgeDg2X2licGJfZXhpdF90b191c2VyKTtcbiYjNDM7REVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxuIHtcbkBAIC01NDIsMTIgJiM0Mzs1NDQsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIodm9pZClcbiBcdFx0XHQgICAgOjogXCYjMzQ7cmF4XCYjMzQ7LCBcJiMzNDtyY3hcJiMzNDssIFwmIzM0O3JkeFwmIzM0OywgXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiB9XG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0YXRpY19jYWxsX3R5cGVzLmhcdTAwM2VcbiYjNDM7REVDTEFSRV9TVEFUSUNfQ0FMTCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7XG4mIzQzO1xuIC8qIFRoZSBJbnRlbCBTUEVDIENUUkwgTVNSIGJhc2UgdmFsdWUgY2FjaGUgKi9cbiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0cmxfYmFzZTtcbiBERUNMQVJFX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIGV4dGVybiB2b2lkIHVwZGF0ZV9zcGVjX2N0cmxfY29uZCh1NjQgdmFsKTtcbiBleHRlcm4gdTY0IHNwZWNfY3RybF9jdXJyZW50KHZvaWQpO1xuIFxuJiM0MztleHRlcm4gdTggYmhiX3NlcV9pbm5lcl9sb29wLCBiaGJfc2VxX291dGVyX2xvb3A7XG4mIzQzO1xuIC8qXG4gICogV2l0aCByZXRwb2xpbmUsIHdlIG11c3QgdXNlIElCUlMgdG8gcmVzdHJpY3QgYnJhbmNoIHByZWRpY3Rpb25cbiAgKiBiZWZvcmUgY2FsbGluZyBpbnRvIGZpcm13YXJlLlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbmluZGV4IDgzZjUxY2FiMGIxZTM5Li40ZTBiNzdmYjIxZGQzNCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xuQEAgLTYxLDEyICYjNDM7NjEsMTEgQEAgREVGSU5FX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIEVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3NwZWNfY3RybF9jdXJyZW50KTtcbiBcbiAvKlxuLSAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gQW4gSUJQQiB3aWxsXG4tICogYmUgbmVlZGVkIHRvIGJlZm9yZSBydW5uaW5nIHVzZXJzcGFjZS4gVGhhdCBJQlBCIHdpbGwgZmx1c2ggdGhlIGJyYW5jaFxuLSAqIHByZWRpY3RvciBjb250ZW50LlxuJiM0MzsgKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEluZGljYXRlcyB0aGF0IGFcbiYjNDM7ICogYnJhbmNoIHByZWRpY3RvciBmbHVzaCBpcyBuZWVkZWQgYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLlxuICAqL1xuLURFRklORV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7XG4tRVhQT1JUX1BFUl9DUFVfU1lNQk9MX0dQTCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpO1xuJiM0MztERUZJTkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XG4mIzQzO0VYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpO1xuIFxuIHU2NCB4ODZfcHJlZF9jbWQgX19yb19hZnRlcl9pbml0ID0gUFJFRF9DTURfSUJQQjtcbiBcbkBAIC0xNDQsNiAmIzQzOzE0MywxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChjcHVfYnVmX2lkbGVfY2xlYXIpO1xuICAqL1xuIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHN3aXRjaF9tbV9jb25kX2wxZF9mbHVzaCk7XG4gXG4mIzQzOy8qXG4mIzQzOyAqIENvbnRyb2xzIGhvdyB2bXNjYXBlIGlzIG1pdGlnYXRlZCBlLmcuIHZpYSBJQlBCIG9yIEJIQi1jbGVhclxuJiM0MzsgKiBzZXF1ZW5jZS4gVGhpcyBkZWZhdWx0cyB0byBubyBtaXRpZ2F0aW9uLlxuJiM0MzsgKi9cbiYjNDM7REVGSU5FX1NUQVRJQ19DQUxMX05VTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuJiM0MztFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCk7XG4mIzQzO1xuICN1bmRlZiBwcl9mbXRcbiAjZGVmaW5lIHByX2ZtdChmbXQpXHRcJiMzNDttaXRpZ2F0aW9uczogXCYjMzQ7IGZtdFxuIFxuQEAgLTIwNDcsNiAmIzQzOzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMge1xuIHN0YXRpYyBlbnVtIGJoaV9taXRpZ2F0aW9ucyBiaGlfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxuIFx0SVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGO1xuIFxuJiM0MzsvKiBEZWZhdWx0IHRvIHNob3J0IEJIQiBzZXF1ZW5jZSB2YWx1ZXMgKi9cbiYjNDM7dTggYmhiX3NlcV9vdXRlcl9sb29wIF9fcm9fYWZ0ZXJfaW5pdCA9IDU7XG4mIzQzO3U4IGJoYl9zZXFfaW5uZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xuJiM0MztcbiBzdGF0aWMgaW50IF9faW5pdCBzcGVjdHJlX2JoaV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cilcbiB7XG4gXHRpZiAoIXN0cilcbkBAIC0zMDQ4LDE1ICYjNDM7MzA1OCwxOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3Jzb19hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4gZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHtcbiBcdFZNU0NBUEVfTUlUSUdBVElPTl9OT05FLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8sXG4mIzQzO1x0Vk1TQ0FQRV9NSVRJR0FUSU9OX09OLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULFxuJiM0MztcdFZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB2bXNjYXBlX3N0cmluZ3NbXSA9IHtcbi1cdFtWTVNDQVBFX01JVElHQVRJT05fTk9ORV1cdFx0PSBcJiMzNDtWdWxuZXJhYmxlXCYjMzQ7LFxuJiM0MztcdFtWTVNDQVBFX01JVElHQVRJT05fTk9ORV1cdFx0XHQ9IFwmIzM0O1Z1bG5lcmFibGVcJiMzNDssXG4gXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE9dICovXG4tXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSXVx0PSBcJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVwmIzM0Oyxcbi1cdFtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdXHQ9IFwmIzM0O01pdGlnYXRpb246IElCUEIgb24gVk1FWElUXCYjMzQ7LFxuJiM0MztcdC8qIFtWTVNDQVBFX01JVElHQVRJT05fT05dICovXG4mIzQzO1x0W1ZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUl1cdFx0PSBcJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVwmIzM0OyxcbiYjNDM7XHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVx0XHQ9IFwmIzM0O01pdGlnYXRpb246IElCUEIgb24gVk1FWElUXCYjMzQ7LFxuJiM0MztcdFtWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUl1cdD0gXCYjMzQ7TWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVwmIzM0OyxcbiB9O1xuIFxuIHN0YXRpYyBlbnVtIHZtc2NhcGVfbWl0aWdhdGlvbnMgdm1zY2FwZV9taXRpZ2F0aW9uIF9fcm9fYWZ0ZXJfaW5pdCA9XG5AQCAtMzA3Myw2ICYjNDM7MzA4NywxMCBAQCBzdGF0aWMgaW50IF9faW5pdCB2bXNjYXBlX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxuIFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcJiMzNDtmb3JjZVwmIzM0OykpIHtcbiBcdFx0c2V0dXBfZm9yY2VfY3B1X2J1ZyhYODZfQlVHX1ZNU0NBUEUpO1xuJiM0MztcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xuJiM0MztcdH0gZWxzZSBpZiAoIXN0cmNtcChzdHIsIFwmIzM0O29uXCYjMzQ7KSkge1xuJiM0MztcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xuJiM0MztcdH0gZWxzZSBpZiAoIXN0cmNtcChzdHIsIFwmIzM0O2F1dG9cJiMzNDspKSB7XG4gXHRcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPO1xuIFx0fSBlbHNlIHtcbiBcdFx0cHJfZXJyKFwmIzM0O0lnbm9yaW5nIHVua25vd24gdm1zY2FwZT0lcyBvcHRpb24uXFxuXCYjMzQ7LCBzdHIpO1xuQEAgLTMwODQsMTcgJiM0MzszMTAyLDQ0IEBAIGVhcmx5X3BhcmFtKFwmIzM0O3Ztc2NhcGVcJiMzNDssIHZtc2NhcGVfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb24odm9pZClcbiB7XG4tXHRpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSB8fFxuLVx0ICAgICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpIHtcbiYjNDM7XHRpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSkge1xuIFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0aWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykge1xuLVx0XHRpZiAoc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSlcbiYjNDM7XHRpZiAoKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKVxuJiM0MztcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7XG4mIzQzO1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUjpcbiYjNDM7XHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUEIpKVxuJiM0MztcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuJiM0MztcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOlxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIENQVXMgd2l0aCBCSElfQ1RSTChBREwgYW5kIG5ld2VyKSBjYW4gYXZvaWQgdGhlIElCUEIgYW5kIHVzZVxuJiM0MztcdFx0ICogQkhCIGNsZWFyIHNlcXVlbmNlLiBUaGVzZSBDUFVzIGFyZSBvbmx5IHZ1bG5lcmFibGUgdG8gdGhlIEJISVxuJiM0MztcdFx0ICogdmFyaWFudCBvZiB0aGUgVk1TQ0FQRSBhdHRhY2ssIGFuZCB0aHVzIHRoZXkgZG8gbm90IHJlcXVpcmUgYVxuJiM0MztcdFx0ICogZnVsbCBwcmVkaWN0b3IgZmx1c2guXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogTm90ZSwgaW4gMzItYml0IG1vZGUgQkhCIGNsZWFyIHNlcXVlbmNlIGlzIG5vdCBzdXBwb3J0ZWQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQkhJX0NUUkwpIFx1MDAyNlx1MDAyNiBJU19FTkFCTEVEKENPTkZJR19YODZfNjQpKVxuJiM0MztcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUjtcbiYjNDM7XHRcdGVsc2UgaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHRcdGVsc2VcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4gXHR9XG4gfVxuIFxuQEAgLTMxMTMsNyAmIzQzOzMxNTgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxuIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb24odm9pZClcbiB7XG4gXHRpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUilcbi1cdFx0c2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUik7XG4mIzQzO1x0XHRzdGF0aWNfY2FsbF91cGRhdGUodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuJiM0MztcdGVsc2UgaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUilcbiYjNDM7XHRcdHN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSk7XG4gfVxuIFxuICN1bmRlZiBwcl9mbXRcbkBAIC0zMjAyLDkgJiM0MzszMjQ5LDExIEBAIHZvaWQgY3B1X2J1Z3Nfc210X3VwZGF0ZSh2b2lkKVxuIFx0c3dpdGNoICh2bXNjYXBlX21pdGlnYXRpb24pIHtcbiBcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6XG4gXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuJiM0MztcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOlxuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUOlxuIFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI6XG4mIzQzO1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUjpcbiBcdFx0LypcbiBcdFx0ICogSHlwZXJ2aXNvcnMgY2FuIGJlIGF0dGFja2VkIGFjcm9zcy10aHJlYWRzLCB3YXJuIGZvciBTTVQgd2hlblxuIFx0XHQgKiBTVElCUCBpcyBub3QgYWxyZWFkeSBlbmFibGVkIHN5c3RlbS13aWRlLlxuQEAgLTMyNDIsNiAmIzQzOzMyOTEsMTUgQEAgdm9pZCBfX2luaXQgY3B1X3NlbGVjdF9taXRpZ2F0aW9ucyh2b2lkKVxuIFx0XHR4ODZfc3BlY19jdHJsX2Jhc2UgXHUwMDI2PSB+U1BFQ19DVFJMX01JVElHQVRJT05TX01BU0s7XG4gXHR9XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBTd2l0Y2ggdG8gbG9uZyBCSEIgY2xlYXIgc2VxdWVuY2Ugb24gbmV3ZXIgQ1BVcyAod2l0aCBCSElfQ1RSTFxuJiM0MztcdCAqIHN1cHBvcnQpLCBzZWUgSW50ZWwmIzM5O3MgQkhJIGd1aWRhbmNlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSkge1xuJiM0MztcdFx0YmhiX3NlcV9vdXRlcl9sb29wID0gMTI7XG4mIzQzO1x0XHRiaGJfc2VxX2lubmVyX2xvb3AgPSA3O1xuJiM0MztcdH1cbiYjNDM7XG4gXHR4ODZfYXJjaF9jYXBfbXNyID0geDg2X3JlYWRfYXJjaF9jYXBfbXNyKCk7XG4gXG4gXHRjcHVfcHJpbnRfYXR0YWNrX3ZlY3RvcnMoKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDA1NTAzNTllZDc5OGZjLi5mY2Q2MWM0NzY1M2ZhMyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTE1NTYsOCAmIzQzOzExNTU2LDggQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdCAqIHNldCBmb3IgdGhlIENQVSB0aGF0IGFjdHVhbGx5IHJhbiB0aGUgZ3Vlc3QsIGFuZCBub3QgdGhlIENQVSB0aGF0IGl0XG4gXHQgKiBtYXkgbWlncmF0ZSB0by5cbiBcdCAqL1xuLVx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpKVxuLVx0XHR0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIHRydWUpO1xuJiM0MztcdGlmIChzdGF0aWNfY2FsbF9xdWVyeSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkpXG4mIzQzO1x0XHR0aGlzX2NwdV93cml0ZSh4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlciwgdHJ1ZSk7XG4gXG4gXHQvKlxuIFx0ICogQ29uc3VtZSBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzLCBpbmNsdWRpbmcgdGhlIHBvc3NpYmxlIHNvdXJjZSBvZlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggZWE5ZTcwN2U4YWJmZmIuLmU2ZDE3ZWI0ZDk0OWY5IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0xNjE5LDExICYjNDM7MTYxOSwxMyBAQCBzdGF0aWMgaW50IGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcih1OCAqKnBwcm9nLCB1OCAqaXAsXG4gXHRcdEVNSVQxKDB4NTEpOyAvKiBwdXNoIHJjeCAqL1xuIFx0XHRpcCAmIzQzOz0gMjtcbiBcbi1cdFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wO1xuJiM0MztcdFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wX25vZmVuY2U7XG4gXHRcdGlwICYjNDM7PSB4ODZfY2FsbF9kZXB0aF9lbWl0X2FjY291bnRpbmcoXHUwMDI2cHJvZywgZnVuYywgaXApO1xuIFxuIFx0XHRpZiAoZW1pdF9jYWxsKFx1MDAyNnByb2csIGZ1bmMsIGlwKSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdC8qIERvbiYjMzk7dCBzcGVjdWxhdGUgcGFzdCB0aGlzIHVudGlsIEJIQiBpcyBjbGVhcmVkICovXG4mIzQzO1x0XHRFTUlUX0xGRU5DRSgpO1xuIFx0XHRFTUlUMSgweDU5KTsgLyogcG9wIHJjeCAqL1xuIFx0XHRFTUlUMSgweDU4KTsgLyogcG9wIHJheCAqL1xuIFx0fVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXG5pbmRleCBhNTY4ZDhlNmY0ZTgyOS4uYmU2MDJkM2YyODdlNTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXG5AQCAtMTMsNiAmIzQzOzEzLDggQEBcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgXFxcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcJiMzNDtrdm0sXCYjMzQ7IF9fc3RyaW5naWZ5KEtWTV9TVUJfTU9EVUxFUykpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBcXFxuJiM0MztcdEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFwmIzM0O2t2bSxcJiMzNDsgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSlcbiAjZWxzZVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHN5bWJvbClcbiAvKlxuQEAgLTIzLDExICYjNDM7MjUsMTcgQEBcbiAjaWZuZGVmIEVYUE9SVF9TWU1CT0xfRk9SX0tWTVxuICNpZiBJU19NT0RVTEUoQ09ORklHX0tWTSlcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcJiMzNDtrdm1cJiMzNDspXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMoc3ltYm9sLCBcJiMzNDtrdm1cJiMzNDspXG4gI2Vsc2VcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxuICNlbmRpZiAvKiBJU19NT0RVTEUoQ09ORklHX0tWTSkgKi9cbi0jZW5kaWYgLyogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNICovXG4mIzQzOyNlbHNlXG4mIzQzOyNpZm5kZWYgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk1cbiYjNDM7I2Vycm9yIE11c3QgI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTSBpZiAjZGVmaW5pbmcgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNXG4gI2VuZGlmXG4mIzQzOyNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cbiYjNDM7I2VuZGlmIC8qIEtWTV9TVUJfTU9EVUxFUyAqL1xuIFxuICNpZm5kZWYgX19BU1NFTUJMRVJfX1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaCBiL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaFxuaW5kZXggNzhhNzdhNGFlMGVhODcuLmI2MTBhZmQxZWQ1NTY2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmhcbkBAIC0yMTYsNiAmIzQzOzIxNiw5IEBAIGV4dGVybiBsb25nIF9fc3RhdGljX2NhbGxfcmV0dXJuMCh2b2lkKTtcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSlcdFx0XHRcdFx0XFxcbiBcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX0tFWShuYW1lKSk7XHRcdFx0XFxcbiBcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKVxuJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVx0XHRcdFxcXG4mIzQzO1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1x0XHRcXFxuJiM0MztcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoU1RBVElDX0NBTExfVFJBTVAobmFtZSksIG1vZHMpXG4gXG4gLyogTGVhdmUgdGhlIGtleSB1bmV4cG9ydGVkLCBzbyBtb2R1bGVzIGNhbiYjMzk7dCBjaGFuZ2Ugc3RhdGljIGNhbGwgdGFyZ2V0czogKi9cbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9UUkFNUChuYW1lKVx0XHRcdFx0XHRcXFxuQEAgLTI3Niw2ICYjNDM7Mjc5LDkgQEAgZXh0ZXJuIGxvbmcgX19zdGF0aWNfY2FsbF9yZXR1cm4wKHZvaWQpO1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0XHRcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfVFJBTVAobmFtZSkpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKG5hbWUsIG1vZHMpXHRcdFx0XFxcbiYjNDM7XHRFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcyk7XHRcdFxcXG4mIzQzO1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcbiBcbiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJiMzOTt0IGNoYW5nZSBzdGF0aWMgY2FsbCB0YXJnZXRzOiAqL1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX1RSQU1QKG5hbWUpXHRcdFx0XHRcdFxcXG5AQCAtMzQ2LDYgJiM0MzszNTIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBzdGF0aWNfY2FsbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTEwobmFtZSlcdEVYUE9SVF9TWU1CT0woU1RBVElDX0NBTExfS0VZKG5hbWUpKVxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKVxuJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVx0XHRcdFxcXG4mIzQzO1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpXG4gXG4gI2VuZGlmIC8qIENPTkZJR19IQVZFX1NUQVRJQ19DQUxMICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUlUSUdBVElPTl9WTVNDQVBFJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXImIzM0OywKICAgICYjMzQ7Y3B1X2J1Z3Nfc210X3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEJIQiBjbGVhcmluZyBtaXRpZ2F0aW9uIGZvciB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCBtb2RpZmllcyBCUEYgSklUIGNvZGUgZ2VuZXJhdGlvbiB0byB1c2UgYSByZWZhY3RvcmVkIEJIQiBjbGVhcmluZyBsb29wIGFuZCB1cGRhdGVzIEtWTSBWTS1leGl0IHBhdGhzIHRvIHVzZSBhIHN0YXRpYyBjYWxsIGZvciBwcmVkaWN0b3IgZmx1c2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTkxM2Y2YTY4NWNhOWIyYWE5NTUxMjUzYzc4Njg5MjU5ODNiOWRkYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDE3OjUzOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0CmluZGV4IGQ5YjlhMmI2YzExNGMwLi4yNTU4YTVjM2Q5NTZjMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdApAQCAtODYsNiAmIzQzOzg2LDEwIEBAIFRoZSBwb3NzaWJsZSB2YWx1ZXMgaW4gdGhpcyBmaWxlIGFyZToKICAgIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdCBhbmQgaXNzdWVzIGFuIElCUEIgYmVmb3JlIHRoZSBmaXJzdAogICAgZXhpdCB0byB1c2Vyc3BhY2UgYWZ0ZXIgVk0tZXhpdC4KIAomIzQzOyAqICYjMzk7TWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSYjMzk7OgomIzQzOwomIzQzOyAgIEFzIGFib3ZlLCBjb25kaXRpb25hbCBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBpcyBlbmFibGVkLgomIzQzOwogICogJiMzOTtNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCYjMzk7OgogCiAgICBJQlBCIGlzIGlzc3VlZCBvbiBldmVyeSBWTS1leGl0LiBUaGlzIG9jY3VycyB3aGVuIG90aGVyIG1pdGlnYXRpb25zIGxpa2UKQEAgLTEwMiw5ICYjNDM7MTA2LDE4IEBAIFRoZSBtaXRpZ2F0aW9uIGNhbiBiZSBjb250cm9sbGVkIHZpYSB0aGUgYGB2bXNjYXBlPWBgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXI6CiAKICAqIGBgdm1zY2FwZT1pYnBiYGA6CiAKLSAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24gKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpLgomIzQzOyAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24uCiAKICAqIGBgdm1zY2FwZT1mb3JjZWBgOgogCiAgICBGb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBldmVuIG9uIHByb2Nlc3NvcnMgdGhhdCBhcmUKICAgIG5vdCBrbm93biB0byBiZSBhZmZlY3RlZC4KJiM0MzsKJiM0MzsgKiBgYHZtc2NhcGU9YXV0b2BgOgomIzQzOwomIzQzOyAgIENob29zZSB0aGUgbWl0aWdhdGlvbiBiYXNlZCBvbiB0aGUgVk1TQ0FQRSB2YXJpYW50IHRoZSBDUFUgaXMgYWZmZWN0ZWQgYnkuCiYjNDM7ICAgKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpCiYjNDM7CiYjNDM7ICogYGB2bXNjYXBlPW9uYGA6CiYjNDM7CiYjNDM7ICAgU2FtZSBhcyBgYGF1dG9gYCwgZXhjZXB0IHRoYXQgaXQgb3ZlcnJpZGVzIGF0dGFjayB2ZWN0b3IgY29udHJvbHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4xMzIwYmFmOTI2NGMwNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTgzMzcsOSAmIzQzOzgzMzcsMTMgQEAgS2VybmVsIHBhcmFtZXRlcnMKIAogCQkJb2ZmCQktIGRpc2FibGUgdGhlIG1pdGlnYXRpb24KIAkJCWlicGIJCS0gdXNlIEluZGlyZWN0IEJyYW5jaCBQcmVkaWN0aW9uIEJhcnJpZXIKLQkJCQkJICAoSUJQQikgbWl0aWdhdGlvbiAoZGVmYXVsdCkKJiM0MzsJCQkJCSAgKElCUEIpIG1pdGlnYXRpb24KIAkJCWZvcmNlCQktIGZvcmNlIHZ1bG5lcmFiaWxpdHkgZGV0ZWN0aW9uIGV2ZW4gb24KIAkJCQkJICB1bmFmZmVjdGVkIHByb2Nlc3NvcnMKJiM0MzsJCQlhdXRvCQktIChkZWZhdWx0KSB1c2UgSUJQQiBvciBCSEIgY2xlYXIKJiM0MzsJCQkJCSAgbWl0aWdhdGlvbiBiYXNlZCBvbiBDUFUKJiM0MzsJCQlvbgkJLSBzYW1lIGFzICYjMzQ7YXV0byYjMzQ7LCBidXQgb3ZlcnJpZGUgYXR0YWNrCiYjNDM7CQkJCQkgIHZlY3RvciBjb250cm9sCiAKIAl2c3lzY2FsbD0JW1g4Ni02NCxFQVJMWV0KIAkJCUNvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB2c3lzY2FsbHMgKGkuZS4gY2FsbHMgdG8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IGYzZjdjYjAxZDY5ZDAyLi5jNTk2NWJjZjE0YzFmNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0yNzE3LDYgJiM0MzsyNzE3LDcgQEAgY29uZmlnIE1JVElHQVRJT05fVFNBCiBjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFCiAJYm9vbCAmIzM0O01pdGlnYXRlIFZNU0NBUEUmIzM0OwogCWRlcGVuZHMgb24gS1ZNCiYjNDM7CWRlcGVuZHMgb24gSEFWRV9TVEFUSUNfQ0FMTAogCWRlZmF1bHQgeQogCWhlbHAKIAkgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBWTVNDQVBFIGF0dGFja3MuIFZNU0NBUEUgaXMgYSBoYXJkd2FyZSBzZWN1cml0eQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKaW5kZXggNDI0NDdiMWUxZGZmYTQuLjFmNTZkMDg2ZDMxMmMwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKQEAgLTE1MjgsMTIgJiM0MzsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZCkKICAqIHJlZmFjdG9yZWQgaW4gdGhlIGZ1dHVyZSBpZiBuZWVkZWQuIFRoZSAuc2tpcHMgYXJlIGZvciBzYWZldHksIHRvIGVuc3VyZQogICogdGhhdCBhbGwgUkVUcyBhcmUgaW4gdGhlIHNlY29uZCBoYWxmIG9mIGEgY2FjaGVsaW5lIHRvIG1pdGlnYXRlIEluZGlyZWN0CiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLgomIzQzOyAqCiYjNDM7ICogTm90ZSwgY2FsbGVycyBzaG91bGQgdXNlIGEgc3BlY3VsYXRpb24gYmFycmllciBsaWtlIExGRU5DRSBpbW1lZGlhdGVseSBhZnRlcgomIzQzOyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuCiAgKi8KLVNZTV9GVU5DX1NUQVJUKGNsZWFyX2JoYl9sb29wKQomIzQzO1NZTV9GVU5DX1NUQVJUKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCiAJQU5OT1RBVEVfTk9FTkRCUgogCXB1c2gJJXJicAogCW1vdgklcnNwLCAlcmJwCi0JbW92bAkkNSwgJWVjeAomIzQzOwomIzQzOwltb3Z6YmwgICAgYmhiX3NlcV9vdXRlcl9sb29wKCVyaXApLCAlZWN4CiYjNDM7CiAJQU5OT1RBVEVfSU5UUkFfRlVOQ1RJT05fQ0FMTAogCWNhbGwJMWYKIAlqbXAJNWYKQEAgLTE1NTMsOCAmIzQzOzE1NTgsOCBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcCkKIAkgKiBUaGlzIHNob3VsZCBiZSBpZGVhbGx5IGJlOiAuc2tpcCAzMiAtICguTHJldDIgLSAyZiksIDB4Y2MKIAkgKiBidXQgc29tZSBDbGFuZyB2ZXJzaW9ucyAoZS5nLiAxOCkgZG9uJiMzOTt0IGxpa2UgdGhpcy4KIAkgKi8KLQkuc2tpcCAzMiAtIDE4LCAweGNjCi0yOgltb3ZsCSQ1LCAlZWF4CiYjNDM7CS5za2lwIDMyIC0gMjAsIDB4Y2MKJiM0MzsyOgltb3Z6YmwgIGJoYl9zZXFfaW5uZXJfbG9vcCglcmlwKSwgJWVheAogMzoJam1wCTRmCiAJbm9wCiA0OglzdWIJJDEsICVlYXgKQEAgLTE1NjIsOSAmIzQzOzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcCkKIAlzdWIJJDEsICVlY3gKIAlqbnoJMWIKIC5McmV0MjoJUkVUCi01OglsZmVuY2UKJiM0Mzs1OgogCXBvcAklcmJwCiAJUkVUCi1TWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3ApCi1FWFBPUlRfU1lNQk9MX0ZPUl9LVk0oY2xlYXJfYmhiX2xvb3ApCi1TVEFDS19GUkFNRV9OT05fU1RBTkRBUkQoY2xlYXJfYmhiX2xvb3ApCiYjNDM7U1lNX0ZVTkNfRU5EKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCiYjNDM7RVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCiYjNDM7U1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaAppbmRleCAxZDUwNmU1ZDZmNDZhYy4uMDlmOTU2YjcyNjM3YzUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaApAQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQAogI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfU1FfTk8JCSgyMSozMiYjNDM7MTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQV9MMV9OTwkJKDIxKjMyJiM0MzsxMikgLyogQU1EIENQVSBub3QgdnVsbmVyYWJsZSB0byBUU0EtTDEgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfQ0xFQVJfQ1BVX0JVRl9WTQkoMjEqMzImIzQzOzEzKSAvKiBDbGVhciBDUFUgYnVmZmVycyB1c2luZyBWRVJXIGJlZm9yZSBWTVJVTiAqLwotI2RlZmluZSBYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUgkoMjEqMzImIzQzOzE0KSAvKiBVc2UgSUJQQiBvbiBleGl0LXRvLXVzZXJzcGFjZSwgc2VlIFZNU0NBUEUgYnVnICovCiYjNDM7LyogRnJlZSAqLwogI2RlZmluZSBYODZfRkVBVFVSRV9BQk1DCQkoMjEqMzImIzQzOzE1KSAvKiBBc3NpZ25hYmxlIEJhbmR3aWR0aCBNb25pdG9yaW5nIENvdW50ZXJzICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX01TUl9JTU0JCSgyMSozMiYjNDM7MTYpIC8qIE1TUiBpbW1lZGlhdGUgZm9ybSBpbnN0cnVjdGlvbnMgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk4JKDIxKjMyJiM0MzsxNykgLyogU3VwcG9ydCBmb3IgRU5DTFNbRVVQREFURVNWTl0gaW5zdHJ1Y3Rpb24gKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmgKaW5kZXggZWNhMjRiNWUwN2Y0YzYuLmJlZmExNGExOTgxNzNlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaApAQCAtNCw2ICYjNDM7NCw3IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9yYW5kb21pemVfa3N0YWNrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdXNlci1yZXR1cm4tbm90aWZpZXIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc3RhdGljX2NhbGxfdHlwZXMuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9ub3NwZWMtYnJhbmNoLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2lvX2JpdG1hcC5oJmd0OwpAQCAtODIsMTEgJiM0Mzs4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCWN1cnJlbnRfdGhyZWFkX2luZm8oKS0mZ3Q7c3RhdHVzICZhbXA7PSB+KFRTX0NPTVBBVCB8IFRTX0kzODZfUkVHU19QT0tFRCk7CiAjZW5kaWYKIAotCS8qIEF2b2lkIHVubmVjZXNzYXJ5IHJlYWRzIG9mICYjMzk7eDg2X2licGJfZXhpdF90b191c2VyJiMzOTsgKi8KLQlpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikgJmFtcDsmYW1wOwotCSAgICB0aGlzX2NwdV9yZWFkKHg4Nl9pYnBiX2V4aXRfdG9fdXNlcikpIHsKLQkJaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcigpOwotCQl0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIGZhbHNlKTsKJiM0MzsJaWYgKHVubGlrZWx5KHRoaXNfY3B1X3JlYWQoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpKSkgewomIzQzOwkJLyoKJiM0MzsJCSAqIFNpbmNlIHRoZSBtaXRpZ2F0aW9uIGlzIGZvciB1c2Vyc3BhY2UsIGFuIGV4cGxpY2l0CiYjNDM7CQkgKiBzcGVjdWxhdGlvbiBiYXJyaWVyIGlzIG5vdCByZXF1aXJlZCBhZnRlciBmbHVzaC4KJiM0MzsJCSAqLwomIzQzOwkJc3RhdGljX2NhbGxfY29uZCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkoKTsKJiM0MzsJCXRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCBmYWxzZSk7CiAJfQogfQogI2RlZmluZSBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmUgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oCmluZGV4IGQ3YzcwNGVkMWJlOWEyLi5iY2VlYWVkMjk0MGU5MCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAgKiBhdCBsZWFzdCBvbmUgdmVuZG9yIG1vZHVsZSBpcyBlbmFibGVkLgogICovCiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpCiYjNDM7I2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpCiAjZW5kaWYKIAogI2RlZmluZSBLVk1fQVJDSF9OUl9PQkpTX1BFUl9NRU1PUllfQ0FDSEUgNDAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaAppbmRleCA0ZjRiNWU4YTE1NzQzMC4uMzg0NzgzODMxMzliNjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgKQEAgLTMzMSwxMSAmIzQzOzMzMSwxMSBAQAogCiAjaWZkZWYgQ09ORklHX1g4Nl82NAogLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZCi0JQUxURVJOQVRJVkUgJiMzNDsmIzM0OywgJiMzNDtjYWxsIGNsZWFyX2JoYl9sb29wJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QCiYjNDM7CUFMVEVSTkFUSVZFICYjMzQ7JiMzNDssICYjMzQ7Y2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2UmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1AKIC5lbmRtCiAKIC5tYWNybyBDTEVBUl9CUkFOQ0hfSElTVE9SWV9WTUVYSVQKLQlBTFRFUk5BVElWRSAmIzM0OyYjMzQ7LCAmIzM0O2NhbGwgY2xlYXJfYmhiX2xvb3AmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX1ZNRVhJVAomIzQzOwlBTFRFUk5BVElWRSAmIzM0OyYjMzQ7LCAmIzM0O2NhbGwgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZTsgbGZlbmNlJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9WTUVYSVQKIC5lbmRtCiAjZWxzZQogI2RlZmluZSBDTEVBUl9CUkFOQ0hfSElTVE9SWQpAQCAtMzg5LDcgJiM0MzszODksOSBAQCBleHRlcm4gdm9pZCBlbnRyeV91bnRyYWluX3JldCh2b2lkKTsKIGV4dGVybiB2b2lkIHdyaXRlX2licGIodm9pZCk7CiAKICNpZmRlZiBDT05GSUdfWDg2XzY0Ci1leHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcCh2b2lkKTsKJiM0MztleHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpOwomIzQzOyNlbHNlCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2JoYl9sb29wX25vZmVuY2Uodm9pZCkge30KICNlbmRpZgogCiBleHRlcm4gdm9pZCAoKng4Nl9yZXR1cm5fdGh1bmspKHZvaWQpOwpAQCAtNTMzLDcgJiM0Mzs1MzUsNyBAQCB2b2lkIGFsdGVybmF0aXZlX21zcl93cml0ZSh1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFsLCB1bnNpZ25lZCBpbnQgZmVhdHVyZSkKIAkJOiAmIzM0O21lbW9yeSYjMzQ7KTsKIH0KIAotREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7CiYjNDM7REVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIodm9pZCkKIHsKQEAgLTU0MiwxMiAmIzQzOzU0NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKQogCQkJICAgIDo6ICYjMzQ7cmF4JiMzNDssICYjMzQ7cmN4JiMzNDssICYjMzQ7cmR4JiMzNDssICYjMzQ7bWVtb3J5JiMzNDspOwogfQogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3N0YXRpY19jYWxsX3R5cGVzLmgmZ3Q7CiYjNDM7REVDTEFSRV9TVEFUSUNfQ0FMTCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7CiYjNDM7CiAvKiBUaGUgSW50ZWwgU1BFQyBDVFJMIE1TUiBiYXNlIHZhbHVlIGNhY2hlICovCiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0cmxfYmFzZTsKIERFQ0xBUkVfUEVSX0NQVSh1NjQsIHg4Nl9zcGVjX2N0cmxfY3VycmVudCk7CiBleHRlcm4gdm9pZCB1cGRhdGVfc3BlY19jdHJsX2NvbmQodTY0IHZhbCk7CiBleHRlcm4gdTY0IHNwZWNfY3RybF9jdXJyZW50KHZvaWQpOwogCiYjNDM7ZXh0ZXJuIHU4IGJoYl9zZXFfaW5uZXJfbG9vcCwgYmhiX3NlcV9vdXRlcl9sb29wOwomIzQzOwogLyoKICAqIFdpdGggcmV0cG9saW5lLCB3ZSBtdXN0IHVzZSBJQlJTIHRvIHJlc3RyaWN0IGJyYW5jaCBwcmVkaWN0aW9uCiAgKiBiZWZvcmUgY2FsbGluZyBpbnRvIGZpcm13YXJlLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwppbmRleCA4M2Y1MWNhYjBiMWUzOS4uNGUwYjc3ZmIyMWRkMzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jCkBAIC02MSwxMiAmIzQzOzYxLDExIEBAIERFRklORV9QRVJfQ1BVKHU2NCwgeDg2X3NwZWNfY3RybF9jdXJyZW50KTsKIEVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3NwZWNfY3RybF9jdXJyZW50KTsKIAogLyoKLSAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gQW4gSUJQQiB3aWxsCi0gKiBiZSBuZWVkZWQgdG8gYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLiBUaGF0IElCUEIgd2lsbCBmbHVzaCB0aGUgYnJhbmNoCi0gKiBwcmVkaWN0b3IgY29udGVudC4KJiM0MzsgKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEluZGljYXRlcyB0aGF0IGEKJiM0MzsgKiBicmFuY2ggcHJlZGljdG9yIGZsdXNoIGlzIG5lZWRlZCBiZWZvcmUgcnVubmluZyB1c2Vyc3BhY2UuCiAgKi8KLURFRklORV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7Ci1FWFBPUlRfUEVSX0NQVV9TWU1CT0xfR1BMKHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7CiYjNDM7REVGSU5FX1BFUl9DUFUoYm9vbCwgeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpOwomIzQzO0VYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpOwogCiB1NjQgeDg2X3ByZWRfY21kIF9fcm9fYWZ0ZXJfaW5pdCA9IFBSRURfQ01EX0lCUEI7CiAKQEAgLTE0NCw2ICYjNDM7MTQzLDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGNwdV9idWZfaWRsZV9jbGVhcik7CiAgKi8KIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHN3aXRjaF9tbV9jb25kX2wxZF9mbHVzaCk7CiAKJiM0MzsvKgomIzQzOyAqIENvbnRyb2xzIGhvdyB2bXNjYXBlIGlzIG1pdGlnYXRlZCBlLmcuIHZpYSBJQlBCIG9yIEJIQi1jbGVhcgomIzQzOyAqIHNlcXVlbmNlLiBUaGlzIGRlZmF1bHRzIHRvIG5vIG1pdGlnYXRpb24uCiYjNDM7ICovCiYjNDM7REVGSU5FX1NUQVRJQ19DQUxMX05VTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpOwomIzQzO0VYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNKHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoKTsKJiM0MzsKICN1bmRlZiBwcl9mbXQKICNkZWZpbmUgcHJfZm10KGZtdCkJJiMzNDttaXRpZ2F0aW9uczogJiMzNDsgZm10CiAKQEAgLTIwNDcsNiAmIzQzOzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMgewogc3RhdGljIGVudW0gYmhpX21pdGlnYXRpb25zIGJoaV9taXRpZ2F0aW9uIF9fcm9fYWZ0ZXJfaW5pdCA9CiAJSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGOwogCiYjNDM7LyogRGVmYXVsdCB0byBzaG9ydCBCSEIgc2VxdWVuY2UgdmFsdWVzICovCiYjNDM7dTggYmhiX3NlcV9vdXRlcl9sb29wIF9fcm9fYWZ0ZXJfaW5pdCA9IDU7CiYjNDM7dTggYmhiX3NlcV9pbm5lcl9sb29wIF9fcm9fYWZ0ZXJfaW5pdCA9IDU7CiYjNDM7CiBzdGF0aWMgaW50IF9faW5pdCBzcGVjdHJlX2JoaV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cikKIHsKIAlpZiAoIXN0cikKQEAgLTMwNDgsMTUgJiM0MzszMDU4LDE5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcnNvX2FwcGx5X21pdGlnYXRpb24odm9pZCkKIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB7CiAJVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkUsCiAJVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8sCiYjNDM7CVZNU0NBUEVfTUlUSUdBVElPTl9PTiwKIAlWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVIsCiAJVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULAomIzQzOwlWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUiwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgdm1zY2FwZV9zdHJpbmdzW10gPSB7Ci0JW1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXQkJPSAmIzM0O1Z1bG5lcmFibGUmIzM0OywKJiM0MzsJW1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXQkJCT0gJiMzNDtWdWxuZXJhYmxlJiMzNDssCiAJLyogW1ZNU0NBUEVfTUlUSUdBVElPTl9BVVRPXSAqLwotCVtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVJdCT0gJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSYjMzQ7LAotCVtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdCT0gJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCYjMzQ7LAomIzQzOwkvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX09OXSAqLwomIzQzOwlbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSXQkJPSAmIzM0O01pdGlnYXRpb246IElCUEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlJiMzNDssCiYjNDM7CVtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdCQk9ICYjMzQ7TWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVQmIzM0OywKJiM0MzsJW1ZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSXQk9ICYjMzQ7TWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSYjMzQ7LAogfTsKIAogc3RhdGljIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB2bXNjYXBlX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID0KQEAgLTMwNzMsNiAmIzQzOzMwODcsMTAgQEAgc3RhdGljIGludCBfX2luaXQgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cikKIAkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOwogCX0gZWxzZSBpZiAoIXN0cmNtcChzdHIsICYjMzQ7Zm9yY2UmIzM0OykpIHsKIAkJc2V0dXBfZm9yY2VfY3B1X2J1ZyhYODZfQlVHX1ZNU0NBUEUpOwomIzQzOwkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OOwomIzQzOwl9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAmIzM0O29uJiMzNDspKSB7CiYjNDM7CQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fT047CiYjNDM7CX0gZWxzZSBpZiAoIXN0cmNtcChzdHIsICYjMzQ7YXV0byYjMzQ7KSkgewogCQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fQVVUTzsKIAl9IGVsc2UgewogCQlwcl9lcnIoJiMzNDtJZ25vcmluZyB1bmtub3duIHZtc2NhcGU9JXMgb3B0aW9uLlxuJiMzNDssIHN0cik7CkBAIC0zMDg0LDE3ICYjNDM7MzEwMiw0NCBAQCBlYXJseV9wYXJhbSgmIzM0O3Ztc2NhcGUmIzM0Oywgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKTsKIAogc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb24odm9pZCkKIHsKLQlpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSB8fAotCSAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUEIpKSB7CiYjNDM7CWlmICghYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX1ZNU0NBUEUpKSB7CiAJCXZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykgewotCQlpZiAoc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSkKJiM0MzsJaWYgKCh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8pICZhbXA7JmFtcDsKJiM0MzsJICAgICFzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKQomIzQzOwkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7CiYjNDM7CiYjNDM7CXN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7CiYjNDM7CWNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6CiYjNDM7CQlicmVhazsKJiM0MzsKJiM0MzsJY2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI6CiYjNDM7CQlpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSkKJiM0MzsJCQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTsKJiM0MzsJCWJyZWFrOwomIzQzOwomIzQzOwljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOgomIzQzOwljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9PTjoKJiM0MzsJCS8qCiYjNDM7CQkgKiBDUFVzIHdpdGggQkhJX0NUUkwoQURMIGFuZCBuZXdlcikgY2FuIGF2b2lkIHRoZSBJQlBCIGFuZCB1c2UKJiM0MzsJCSAqIEJIQiBjbGVhciBzZXF1ZW5jZS4gVGhlc2UgQ1BVcyBhcmUgb25seSB2dWxuZXJhYmxlIHRvIHRoZSBCSEkKJiM0MzsJCSAqIHZhcmlhbnQgb2YgdGhlIFZNU0NBUEUgYXR0YWNrLCBhbmQgdGh1cyB0aGV5IGRvIG5vdCByZXF1aXJlIGEKJiM0MzsJCSAqIGZ1bGwgcHJlZGljdG9yIGZsdXNoLgomIzQzOwkJICoKJiM0MzsJCSAqIE5vdGUsIGluIDMyLWJpdCBtb2RlIEJIQiBjbGVhciBzZXF1ZW5jZSBpcyBub3Qgc3VwcG9ydGVkLgomIzQzOwkJICovCiYjNDM7CQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSAmYW1wOyZhbXA7IElTX0VOQUJMRUQoQ09ORklHX1g4Nl82NCkpCiYjNDM7CQkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI7CiYjNDM7CQllbHNlIGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpCiAJCQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7CiAJCWVsc2UKIAkJCXZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOwomIzQzOwkJYnJlYWs7CiYjNDM7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlicmVhazsKIAl9CiB9CiAKQEAgLTMxMTMsNyAmIzQzOzMxNTgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbih2b2lkKQogc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfYXBwbHlfbWl0aWdhdGlvbih2b2lkKQogewogCWlmICh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSKQotCQlzZXR1cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX0lCUEJfRVhJVF9UT19VU0VSKTsKJiM0MzsJCXN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7CiYjNDM7CWVsc2UgaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUikKJiM0MzsJCXN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSk7CiB9CiAKICN1bmRlZiBwcl9mbXQKQEAgLTMyMDIsOSAmIzQzOzMyNDksMTEgQEAgdm9pZCBjcHVfYnVnc19zbXRfdXBkYXRlKHZvaWQpCiAJc3dpdGNoICh2bXNjYXBlX21pdGlnYXRpb24pIHsKIAljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOgogCWNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE86CiYjNDM7CWNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOgogCQlicmVhazsKIAljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX09OX1ZNRVhJVDoKIAljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUjoKJiM0MzsJY2FzZSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUjoKIAkJLyoKIAkJICogSHlwZXJ2aXNvcnMgY2FuIGJlIGF0dGFja2VkIGFjcm9zcy10aHJlYWRzLCB3YXJuIGZvciBTTVQgd2hlbgogCQkgKiBTVElCUCBpcyBub3QgYWxyZWFkeSBlbmFibGVkIHN5c3RlbS13aWRlLgpAQCAtMzI0Miw2ICYjNDM7MzI5MSwxNSBAQCB2b2lkIF9faW5pdCBjcHVfc2VsZWN0X21pdGlnYXRpb25zKHZvaWQpCiAJCXg4Nl9zcGVjX2N0cmxfYmFzZSAmYW1wOz0gflNQRUNfQ1RSTF9NSVRJR0FUSU9OU19NQVNLOwogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBTd2l0Y2ggdG8gbG9uZyBCSEIgY2xlYXIgc2VxdWVuY2Ugb24gbmV3ZXIgQ1BVcyAod2l0aCBCSElfQ1RSTAomIzQzOwkgKiBzdXBwb3J0KSwgc2VlIEludGVsJiMzOTtzIEJISSBndWlkYW5jZS4KJiM0MzsJICovCiYjNDM7CWlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSkgewomIzQzOwkJYmhiX3NlcV9vdXRlcl9sb29wID0gMTI7CiYjNDM7CQliaGJfc2VxX2lubmVyX2xvb3AgPSA3OwomIzQzOwl9CiYjNDM7CiAJeDg2X2FyY2hfY2FwX21zciA9IHg4Nl9yZWFkX2FyY2hfY2FwX21zcigpOwogCiAJY3B1X3ByaW50X2F0dGFja192ZWN0b3JzKCk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMDU1MDM1OWVkNzk4ZmMuLmZjZDYxYzQ3NjUzZmEzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0xMTU1Niw4ICYjNDM7MTE1NTYsOCBAQCBzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCSAqIHNldCBmb3IgdGhlIENQVSB0aGF0IGFjdHVhbGx5IHJhbiB0aGUgZ3Vlc3QsIGFuZCBub3QgdGhlIENQVSB0aGF0IGl0CiAJICogbWF5IG1pZ3JhdGUgdG8uCiAJICovCi0JaWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpKQotCQl0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIHRydWUpOwomIzQzOwlpZiAoc3RhdGljX2NhbGxfcXVlcnkodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gpKQomIzQzOwkJdGhpc19jcHVfd3JpdGUoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIsIHRydWUpOwogCiAJLyoKIAkgKiBDb25zdW1lIGFueSBwZW5kaW5nIGludGVycnVwdHMsIGluY2x1ZGluZyB0aGUgcG9zc2libGUgc291cmNlIG9mCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggZWE5ZTcwN2U4YWJmZmIuLmU2ZDE3ZWI0ZDk0OWY5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0xNjE5LDExICYjNDM7MTYxOSwxMyBAQCBzdGF0aWMgaW50IGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcih1OCAqKnBwcm9nLCB1OCAqaXAsCiAJCUVNSVQxKDB4NTEpOyAvKiBwdXNoIHJjeCAqLwogCQlpcCAmIzQzOz0gMjsKIAotCQlmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3A7CiYjNDM7CQlmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZTsKIAkJaXAgJiM0Mzs9IHg4Nl9jYWxsX2RlcHRoX2VtaXRfYWNjb3VudGluZygmYW1wO3Byb2csIGZ1bmMsIGlwKTsKIAogCQlpZiAoZW1pdF9jYWxsKCZhbXA7cHJvZywgZnVuYywgaXApKQogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkvKiBEb24mIzM5O3Qgc3BlY3VsYXRlIHBhc3QgdGhpcyB1bnRpbCBCSEIgaXMgY2xlYXJlZCAqLwomIzQzOwkJRU1JVF9MRkVOQ0UoKTsKIAkJRU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi8KIAkJRU1JVDEoMHg1OCk7IC8qIHBvcCByYXggKi8KIAl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaAppbmRleCBhNTY4ZDhlNmY0ZTgyOS4uYmU2MDJkM2YyODdlNTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaApAQCAtMTMsNiAmIzQzOzEzLDggQEAKIAlFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHN5bWJvbCwgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSkKICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgXAogCUVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCAmIzM0O2t2bSwmIzM0OyBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKQomIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBcCiYjNDM7CUVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsICYjMzQ7a3ZtLCYjMzQ7IF9fc3RyaW5naWZ5KEtWTV9TVUJfTU9EVUxFUykpCiAjZWxzZQogI2RlZmluZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoc3ltYm9sKQogLyoKQEAgLTIzLDExICYjNDM7MjUsMTcgQEAKICNpZm5kZWYgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNCiAjaWYgSVNfTU9EVUxFKENPTkZJR19LVk0pCiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCAmIzM0O2t2bSYjMzQ7KQomIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMoc3ltYm9sLCAmIzM0O2t2bSYjMzQ7KQogI2Vsc2UKICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkKJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNKHN5bWJvbCkKICNlbmRpZiAvKiBJU19NT0RVTEUoQ09ORklHX0tWTSkgKi8KLSNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi8KJiM0MzsjZWxzZQomIzQzOyNpZm5kZWYgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0KJiM0MzsjZXJyb3IgTXVzdCAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNIGlmICNkZWZpbmluZyBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0KICNlbmRpZgomIzQzOyNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi8KJiM0MzsjZW5kaWYgLyogS1ZNX1NVQl9NT0RVTEVTICovCiAKICNpZm5kZWYgX19BU1NFTUJMRVJfXwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmggYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmgKaW5kZXggNzhhNzdhNGFlMGVhODcuLmI2MTBhZmQxZWQ1NTY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oCkBAIC0yMTYsNiAmIzQzOzIxNiw5IEBAIGV4dGVybiBsb25nIF9fc3RhdGljX2NhbGxfcmV0dXJuMCh2b2lkKTsKICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKQkJCQkJXAogCUVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX0tFWShuYW1lKSk7CQkJXAogCUVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKQomIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKG5hbWUsIG1vZHMpCQkJXAomIzQzOwlFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcyk7CQlcCiYjNDM7CUVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoU1RBVElDX0NBTExfVFJBTVAobmFtZSksIG1vZHMpCiAKIC8qIExlYXZlIHRoZSBrZXkgdW5leHBvcnRlZCwgc28gbW9kdWxlcyBjYW4mIzM5O3QgY2hhbmdlIHN0YXRpYyBjYWxsIHRhcmdldHM6ICovCiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9UUkFNUChuYW1lKQkJCQkJXApAQCAtMjc2LDYgJiM0MzsyNzksOSBAQCBleHRlcm4gbG9uZyBfX3N0YXRpY19jYWxsX3JldHVybjAodm9pZCk7CiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSkJCQkJCVwKIAlFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9LRVkobmFtZSkpOwkJCVwKIAlFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSkKJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKQkJCVwKJiM0MzsJRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpOwkJXAomIzQzOwlFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpLCBtb2RzKQogCiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJiMzOTt0IGNoYW5nZSBzdGF0aWMgY2FsbCB0YXJnZXRzOiAqLwogI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSkJCQkJCVwKQEAgLTM0Niw2ICYjNDM7MzUyLDggQEAgc3RhdGljIGlubGluZSBpbnQgc3RhdGljX2NhbGxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9pZCAqZW5kKQogCiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTChuYW1lKQlFWFBPUlRfU1lNQk9MKFNUQVRJQ19DQUxMX0tFWShuYW1lKSkKICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKQlFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9LRVkobmFtZSkpCiYjNDM7I2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMobmFtZSwgbW9kcykJCQlcCiYjNDM7CUVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoU1RBVElDX0NBTExfS0VZKG5hbWUpLCBtb2RzKQogCiAjZW5kaWYgLyogQ09ORklHX0hBVkVfU1RBVElDX0NBTEwgKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzcxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTQ3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBzZXJpZXMgaXMgZGVmaW5pdGVseSB0b3VjaGluZyBvbiBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaW50cm9kdWNlcyBhbnkgbmV3IHN1cmZhY2UgYXJlYSB0aGF0JiMzOTtzIHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIHRoaXMgaXMgYWJvdXQgbWl0aWdhdGluZyB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBtaXRpZ2F0aW9uIHN0cmF0ZWd5IGludm9sdmluZyBjbGVhcmluZyB0aGUgQkhCIGJlZm9yZSBleGl0aW5nIHRvIHVzZXJzcGFjZS4gVGhleSYjMzk7cmUgdXNpbmcgc3RhdGljIGNhbGxzIGZvciBhIHByZWRpY3RvciBmbHVzaC4KCkl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZXMgc3BhbiBhY3Jvc3Mgc2V2ZXJhbCBjcnVjaWFsIGFyZWFzOiBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIEtjb25maWcgbW9kaWZpY2F0aW9ucywgYW5kIGNvcmUgY29kZSBpbiBgYXJjaC94ODYvYCwgaW5jbHVkaW5nIHRoZSBlbnRyeSBwb2ludHMsIENQVSBidWcgaGFuZGxpbmcsIEtWTSBjb2RlLCBhbmQgQlBGIEpJVCBjb21waWxhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIGFuZCBub3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcuCgpUaGUgY2hhbmdlcyBhcmUgcmVhY2hpbmcgS1ZNIGFuZCBCUEYgSklULCBhbmQgdGhpcyBpcyBoYXBwZW5pbmcgb24gZXhpdCB0byB1c2VyIHNwYWNlLiBJdCBjYW4gYmUgY29udHJvbGxlZCBieSBhIGtlcm5lbCBjb21tYW5kIGxpbmUgYHZtc2NhcGU9Li4uYC4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcmVhY2hhYmlsaXR5LiBLVk0gaXMgY2VydGFpbmx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGF0JiMzOTtzIGEgeWVzLiBCUEYgSklUIGlzIHJlYWNoYWJsZSB0b28uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGNoYW5nZXMgaW5jcmVhc2UgdGhlIGF0dGFjayBzdXJmYWNlLgoKVGhlIGJ1bGsgb2YgdGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIGZvY3VzZWQgb24gcmVwbGFjaW5nIGhhcmRjb2RlZCBJQlBCIGluc3RydWN0aW9ucyB3aXRoIHN0YXRpYyBjYWxscyB0byBlaXRoZXIgSUJQQiBvciBCSEIgY2xlYXJpbmcgYW5kIG1pbm9yIGFkanVzdG1lbnRzIHRvIHRoZSBCSEIgY2xlYXJpbmcgbG9vcC4gVGhlIEJQRiBKSVQgY2hhbmdlIGlzIGEgc2ltcGxlIGVtaXNzaW9uIG9mIGFuIGxmZW5jZSBpbnN0cnVjdGlvbi4gVGhlIEtWTSBjb2RlIHVzZXMgYHN0YXRpY19jYWxsX3F1ZXJ5YCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIENQVSBmZWF0dXJlcy4gVGhlIGVudHJ5IGNvZGUgbm93IHVzZXMgYHN0YXRpY19jYWxsX2NvbmRgIGluc3RlYWQgb2YgYW4gaW5kaXJlY3QgYnJhbmNoIHByZWRpY3Rpb24gYmFycmllci4KCkdpdmVuIHRoYXQgdGhlc2UgYXJlIG1pdGlnYXRpb25zIGFuZCB0aGUgcHJpbWFyeSBjaGFuZ2VzIGludm9sdmUgc3RhdGljIGNhbGxzIGFuZCBtaW5vciBpbnN0cnVjdGlvbiByZS1hcnJhbmdlbWVudCwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCB0aGlzIG5vdCBhZGRpbmcgKnNpZ25pZmljYW50KiBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgbmVlZCB0byBsb29rIGludG8gdGhpcyBtb3JlLCBidXQgaXQgc2VlbXMgdGhhdCB0aGVzZSBjaGFuZ2VzIG1heSBub3QgaW50cm9kdWNlICpuZXcqIHZ1bG5lcmFiaWxpdGllcyBwZXIgc2UgYnV0IGFyZSBhaW1lZCBhdCBpbXByb3ZpbmcgbWl0aWdhdGlvbiBmb3IgZXhpc3Rpbmcgb25lcy4KCkkmIzM5O3ZlIGdvdCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIGBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFYCBleGlzdHMgYW5kIGRlcGVuZHMgb24gYEhBVkVfU1RBVElDX0NBTExgIGFuZCBgS1ZNYC4gYENPTkZJR19LVk1gIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQsIGFuZCBzbyBpcyBgQ09ORklHX0JQRl9KSVRgLgoKTGV0JiMzOTtzIHVzZSB0aGUgdG9vbHMgdG8gZGV0ZXJtaW5lIG90aGVyIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUlUSUdBVElPTl9WTVNDQVBFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdD0xMDE9VGhlIG1pdGlnYXRpb24gY2FuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBgYHZtc2NhcGU9YGAgY29tbWFuZCBsaW5lIHBhcmFtZXRlcjpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3QtMTE4LSAgIENob29zZSB0aGUgbWl0aWdhdGlvbiBiYXNlZCBvbiB0aGUgVk1TQ0FQRSB2YXJpYW50IHRoZSBDUFUgaXMgYWZmZWN0ZWQgYnkuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3Q6MTE5OiAgIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0LTEyMC1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI3MDc9Y29uZmlnIE1JVElHQVRJT05fVFNBXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yNzE2LVxuYXJjaC94ODYvS2NvbmZpZzoyNzE3OmNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcbmFyY2gveDg2L0tjb25maWctMjcxOC1cdGJvb2wgXCYjMzQ7TWl0aWdhdGUgVk1TQ0FQRVwmIzM0O1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jPTMwNzY9c3RhdGljIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB2bXNjYXBlX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jOjMwNzc6XHRJU19FTkFCTEVEKENPTkZJR19NSVRJR0FUSU9OX1ZNU0NBUEUpID8gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8gOiBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMwNzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2OTEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGb2N1czogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCBzcGVjaWZpYyBmdW5jdGlvbnMgb2ZmZXIgdGhlIGJlc3QgcmV0dXJuIG9uIGludmVzdG1lbnQgZm9yIGZ1enppbmc/IExldCBtZSBzZWXigKYgSSBoYXZlIHRocmVlIGNhbmRpZGF0ZSBmdW5jdGlvbnMgZmxhZ2dlZDogYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgZnJvbSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCwgYHZjcHVfZW50ZXJfZ3Vlc3RgIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBhbmQgYGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZWAgaW4gYGFyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oYC4KCldhaXQgYSBtaW51dGUsIGJvdGggYHZjcHVfZW50ZXJfZ3Vlc3RgIGFuZCBgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlYCBhcmUgZGVmaW5pdGVseSBob3QtcGF0aCBmdW5jdGlvbnMsIHRoYXQgbWFrZXMgdGhlbSBhIGdyZWF0IHRhcmdldC4gQnV0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLi4uIHRoYXQmIzM5O3MgdXNlZCBkdXJpbmcgQlBGIEpJVCBjb21waWxhdGlvbiwgd2hpY2ggdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGxvYWRlZCwgbm90IGEgcGFydGljdWxhcmx5IGhvdCBwYXRoLiBBbHRob3VnaCwgU3BlY3RyZSBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bSBnb2luZyB0byBzZXQgaXQgYXNpZGUgZm9yIG5vdy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfc3BlY3RyZV9iaGJfYmFycmllciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MTU4MD1zdGF0aWMgdm9pZCBlbWl0X3ByaXZfZnJhbWVfcHRyKHU4ICoqcHByb2csIHZvaWQgX19wZXJjcHUgKnByaXZfZnJhbWVfcHRyKVxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0xNjA5LVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjE2MTA6c3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTE2MTEtXHRcdFx0XHQgICAgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MjE0MT1zdDpcdFx0XHRpZiAoaXNfaW1tOChpbnNuLVx1MDAzZW9mZikpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzctXHRcdFx0ICAgICFuc19jYXBhYmxlX25vYXVkaXQoXHUwMDI2aW5pdF91c2VyX25zLCBDQVBfU1lTX0FETUlOKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjI3Mzg6XHRcdFx0XHRpZiAoZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKFx1MDAyNnByb2csIGlwLCBicGZfcHJvZykpXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjczOS1cdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MjQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGb2N1cyBmb3IgU3BlY3RyZSBCSEIgTWl0aWdhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIHNlZW1zIGxpa2UgdGhlIHByaW1lIGNhbmRpZGF0ZSBmb3IgdGFyZ2V0ZWQgZnV6emluZywgcmlnaHQ/IEJ1dCB3aGF0IGFib3V0IHRoZSBvdGhlciBtb2RpZmljYXRpb25zPyBUaG9zZSBgX19pbml0YCBmdW5jdGlvbnMgaW4gYGFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jYCDigJMgYHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb25gLCBgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uYCwgYW5kIGB2bXNjYXBlX3BhcnNlX2NtZGxpbmVgIOKAkyBhcmUgb25seSBleGVjdXRlZCBkdXJpbmcgYm9vdCwgc28gdGhleSBhcmVuJiMzOTt0IGEgcHJpb3JpdHkuIFRoZSBjaGFuZ2VzIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIChzcGVjaWZpY2FsbHkgYHZjcHVfZW50ZXJfZ3Vlc3RgKSBhbmQgYGFyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oYCAoYGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZWApIGFyZSBpbiBzdXBlciBob3QgcGF0aHMsIGFuZCB0aGUgZ3VpZGFuY2UgaXMgdG8gYXZvaWQgZnV6emluZyB0aG9zZSBkaXJlY3RseS4KClNvLCByZWFsbHksIGl0IGFsbCBib2lscyBkb3duIHRvIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBCdXQgaXMgdGhpcyBwYXRjaCBldmVuICp3b3J0aCogZnV6emluZz8gSXQmIzM5O3MgYSBoYXJkd2FyZSB2dWxuZXJhYmlsaXR5IG1pdGlnYXRpb24sIGFuZCB0aGUgY29yZSBsb2dpYyBzZWVtcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDogc2V0dGluZyB1cCBzdGF0aWMgY2FsbHMgYW5kIGVtaXR0aW5nIGEgZmV3IGFzc2VtYmx5IGluc3RydWN0aW9ucy4gRnV6emluZyB0aGUgQlBGIEpJVCBtaWdodCBoaXQgYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAsIGJ1dCBpdCYjMzk7cyBqdXN0IGVtaXR0aW5nIGEgY2FsbCBhbmQgYW4gYGxmZW5jZWAuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBzb3VyY2VzIG9mIGNvbXBsZXggbG9naWMgdGhhdCBjb3VsZCBoaWRlIGJ1Z3MuIFdhaXQsIGJ1dCB0aGUgcGF0Y2ggKmRvZXMqIGNoYW5nZSBgY2xlYXJfYmhiX2xvb3BgIHRvIGBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlYCBhbmQgYWRkcyBhbiBleHBsaWNpdCBgbGZlbmNlYCBpbiBCUEYgSklULiBJdCBhbHNvIHVzZXMgYSBzdGF0aWMgY2FsbCBmb3IgS1ZNIGV4aXQgbWl0aWdhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBgV29ydGhGdXp6aW5nPXRydWVgIHNlZW1zIGFwcHJvcHJpYXRlLgoKTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZm9jdXNlZCBhdHRlbnRpb24uIE9rYXksIGBicGZfaml0X2NvbXAuY2AsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYGRvX2ppdGAsIGNhbGxzIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBTbyBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfc3BlY3RyZV9iaGJfYmFycmllciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MTU4MD1zdGF0aWMgdm9pZCBlbWl0X3ByaXZfZnJhbWVfcHRyKHU4ICoqcHByb2csIHZvaWQgX19wZXJjcHUgKnByaXZfZnJhbWVfcHRyKVxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0xNjA5LVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjE2MTA6c3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTE2MTEtXHRcdFx0XHQgICAgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MjE0MT1zdDpcdFx0XHRpZiAoaXNfaW1tOChpbnNuLVx1MDAzZW9mZikpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzctXHRcdFx0ICAgICFuc19jYXBhYmxlX25vYXVkaXQoXHUwMDI2aW5pdF91c2VyX25zLCBDQVBfU1lTX0FETUlOKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjI3Mzg6XHRcdFx0XHRpZiAoZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKFx1MDAyNnByb2csIGlwLCBicGZfcHJvZykpXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjczOS1cdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3ODAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZXMqKgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgdnVsbmVyYWJsZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgYmV5b25kIHRoZSBpbml0aWFsIGNvbW1hbmQtbGluZSBwYXJzaW5nLCBzaW5jZSBgdm1zY2FwZV9wYXJzZV9jbWRsaW5lYCBpcyBoYW5kbGVkIGVhcmx5IGFuZCB0aGVyZWZvcmUgbm90IGZ1enplZC4gSSYjMzk7bSBub3RpbmcgdGhhdCBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCBhbmQgYHZtc2NhcGVfdXBkYXRlX21pdGlnYXRpb25gIGFyZSBhbGwgaW5pdGlhbGl6ZWQgKGBfX2luaXRgKS4gVGhhdCYjMzk7cyBnb29kIHRvIGtlZXAgaW4gbWluZCwgYnV0IHRoZXkgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGV4cGxvaXRhYmxlLiBOb3csIGhlcmUmIzM5O3MgYW4gaW50ZXJlc3Rpbmcgb25lOiBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuIFRoZSBjb21tZW50IGluZGljYXRlcyBpdCYjMzk7cyB0cmlnZ2VyZWQgZHVyaW5nIENQVSBob3RwbHVnIG9yIFNNVCBjb250cm9sIGNoYW5nZXMuIEhvdHBsdWcgZXZlbnRzIGFuZCBTTVQgdG9nZ2xpbmcgYXJlIGtub3duIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycywgc28gSSBzdXNwZWN0IGl0IG1pZ2h0IGJlIHJlYWNoYWJsZS4gVGltZSB0byBkaWcgZGVlcGVyIGludG8gYGNwdV9idWdzX3NtdF91cGRhdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHVfYnVnc19zbXRfdXBkYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Z3MuaD0xMD1zdGF0aWMgaW5saW5lIGludCBwcHJvX3dpdGhfcmFtX2J1Zyh2b2lkKSB7IHJldHVybiAwOyB9XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vYnVncy5oLTEyLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vYnVncy5oOjEzOmV4dGVybiB2b2lkIGNwdV9idWdzX3NtdF91cGRhdGUodm9pZCk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWdzLmgtMTQtXG4tLVxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM9MzE1OD1zdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4tLVxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMtMzE3My1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jOjMxNzQ6dm9pZCBjcHVfYnVnc19zbXRfdXBkYXRlKHZvaWQpXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMTc1LXtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jPTI1NzI9dm9pZCBhcmNoX3NtdF91cGRhdGUodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jLTI1NzQtXHQvKiBIYW5kbGUgdGhlIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiBtaXNmZWF0dXJlcyAqL1xuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYzoyNTc1Olx0Y3B1X2J1Z3Nfc210X3VwZGF0ZSgpO1xuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYy0yNTc2LVx0LyogQ2hlY2sgd2hldGhlciBJUEkgYnJvYWRjYXN0aW5nIGNhbiBiZSBlbmFibGVkICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDM3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01ULVJlbGF0ZWQgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGNwdV9idWdzX3NtdF91cGRhdGVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGJ5IGBhcmNoX3NtdF91cGRhdGVgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBTTVQgKFNpbXVsdGFuZW91cyBNdWx0aS1UaHJlYWRpbmcpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEl0JiMzOTtzIG5vdCBpbiBhIGNyaXRpY2FsIHBlcmZvcm1hbmNlIHBhdGgsIHdoaWNoIGlzIGdvb2QuIEJ1dCBpdCAqaXMqIHJlYWNoYWJsZSwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKVGhlIGNvZGUgY2hhbmdlIGl0c2VsZiBzZWVtcyBpbmNyZWRpYmx5IG1pbm9yLiBJdCYjMzk7cyBqdXN0IGEgc2ltcGxlIGFkZGl0aW9uIG9mIGEgY291cGxlIG1vcmUgY2FzZXMgdG8gYSBgc3dpdGNoYCBzdGF0ZW1lbnQgd2l0aGluIGBjcHVfYnVnc19zbXRfdXBkYXRlYC4gUHJldHR5IHRyaXZpYWwsIGFjdHVhbGx5LCBqdXN0IGV4dGVuZGluZyB0aGUgc2NlbmFyaW9zIGNvbnNpZGVyZWQgZm9yIGB2bXNjYXBlX21pdGlnYXRpb25gLiBObyBzaWduaWZpY2FudCBhbGdvcml0aG1pYyBtb2RpZmljYXRpb25zLiBUaGlzIGlzbiYjMzk7dCB3aGVyZSB0aGUgYWN0aW9uIGlzLgoKVGhlcmVmb3JlLCB0aGUgc2lnbmlmaWNhbnQgY2hhbmdlIGlzIHJlYWxseSBpbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCB3aGljaCBpcyBhbHNvIGEgbm9uLWhvdCBwYXRoIGZ1bmN0aW9uLiBJIHNob3VsZCB2ZXJpZnkgdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLgoKQWxyaWdodCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBUaGUga2V5IG9uZSBpcyBgTUlUSUdBVElPTl9WTVNDQVBFYC4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBkcml2ZXIgaGVyZS4gVGhlbiwgdG8gZW5hYmxlIFZNU0NBUEUsIGBLVk1gIGlzIG5lY2Vzc2FyeS4gQW5kLCBiYXNlZCBvbiB0aGUgbm9uLWhvdC1wYXRoIGZ1bmN0aW9uLCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCwgd2UgbmVlZCBgQlBGX0pJVGAuIEl0IGxvb2tzIGxpa2UgYEhBVkVfU1RBVElDX0NBTExgIGlzIGFsc28gYSBkZXBlbmRlbmN5IGZvciBgTUlUSUdBVElPTl9WTVNDQVBFYC4gVGhlc2UgY2hlY2tzIGFyZSBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBjb2RlIGJlaGF2ZXMgYXMgaW50ZW5kZWQgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYE1JVElHQVRJT05fVk1TQ0FQRWAgaW4gYGFyY2gveDg2L0tjb25maWdgIHRvIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBpbiBpdHMgZGVwZW5kZW5jaWVzIG9yIGltcGxpY2F0aW9ucy4gR290dGEgZG90IHRob3NlIGkmIzM5O3MgYW5kIGNyb3NzIHRob3NlIHQmIzM5O3MsIGVzcGVjaWFsbHkgd2l0aCBzZWN1cml0eS1yZWxhdGVkIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZz0yNzA3PWNvbmZpZyBNSVRJR0FUSU9OX1RTQVxuLS1cbmFyY2gveDg2L0tjb25maWctMjcxNi1cbmFyY2gveDg2L0tjb25maWc6MjcxNzpjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXG5hcmNoL3g4Ni9LY29uZmlnLTI3MTgtXHRib29sIFwmIzM0O01pdGlnYXRlIFZNU0NBUEVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzMTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIHg4NiBBcmNoaXRlY3R1cmUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGFyY2gveDg2L0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBhaW1pbmcgZm9yIGFyb3VuZCBsaW5lIDI3MTcuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyB0byBnZXQgdGhlIHNwZWNpZmljIHBpZWNlIG9mIGluZm9ybWF0aW9uIHRoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIGZpbmQgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjcxMDpcdFx0ZGVmYXVsdCB5XG4yNzExOlx0XHRoZWxwXG4yNzEyOlx0XHQgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBUcmFuc2llbnQgU2NoZWR1bGVyIEF0dGFja3MuIFRTQSBpcyBhIGhhcmR3YXJlXG4yNzEzOlx0XHQgIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgb24gQU1EIENQVXMgd2hpY2ggY2FuIGxlYWQgdG8gZm9yd2FyZGluZyBvZlxuMjcxNDpcdFx0ICBpbnZhbGlkIGluZm8gdG8gc3Vic2VxdWVudCBpbnN0cnVjdGlvbnMgYW5kIHRodXMgY2FuIGFmZmVjdCB0aGVpclxuMjcxNTpcdFx0ICB0aW1pbmcgYW5kIHRoZXJlYnkgY2F1c2UgYSBsZWFrYWdlLlxuMjcxNjpcdFxuMjcxNzpcdGNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcbjI3MTg6XHRcdGJvb2wgXCYjMzQ7TWl0aWdhdGUgVk1TQ0FQRVwmIzM0O1xuMjcxOTpcdFx0ZGVwZW5kcyBvbiBLVk1cbjI3MjA6XHRcdGRlcGVuZHMgb24gSEFWRV9TVEFUSUNfQ0FMTFxuMjcyMTpcdFx0ZGVmYXVsdCB5XG4yNzIyOlx0XHRoZWxwXG4yNzIzOlx0XHQgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBWTVNDQVBFIGF0dGFja3MuIFZNU0NBUEUgaXMgYSBoYXJkd2FyZSBzZWN1cml0eVxuMjcyNDpcdFx0ICB2dWxuZXJhYmlsaXR5IG9uIEludGVsIGFuZCBBTUQgQ1BVcyB0aGF0IG1heSBhbGxvdyBhIGd1ZXN0IHRvIGRvXG4yNzI1Olx0XHQgIFNwZWN0cmUgdjIgc3R5bGUgYXR0YWNrcyBvbiB1c2Vyc3BhY2UgaHlwZXJ2aXNvci5cbjI3MjY6XHRlbmRpZlxuMjcyNzpcdFxuMjcyODpcdGNvbmZpZyBBUkNIX0hBU19BRERfUEFHRVNcbjI3Mjk6XHRcdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NzQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiAgVGhhdCYjMzk7cyB0aGUga2V5LCByaWdodD8gQW5kLCBob2xkIG9uLCBpdCBkZXBlbmRzIG9uIGBLVk1gIGFuZCBgSEFWRV9TVEFUSUNfQ0FMTGAuICBUaGF0IGNvbmZpcm1zIHRoYXQgZW5hYmxpbmcgYE1JVElHQVRJT05fVk1TQ0FQRWAgaXMgZXNzZW50aWFsIGhlcmUsIGFuZCBtYWtlcyB0b3RhbCBzZW5zZSBnaXZlbiB0aGUgdnVsbmVyYWJpbGl0eSBiZWluZyBhZGRyZXNzZWQuIEFuZCBpdCBzZWVtcyB3ZSBuZWVkIGBCUEZfSklUYCBmb3IgdGhlIEJQRiBwYXJ0LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgTUlUSUdBVElPTl9WTVNDQVBFYCBpcyB0aGUgKm9ubHkqIHNpZ25pZmljYW50IGNvbmZpZyBjaGFuZ2UuLi4gTm9wZSwgdGhhdCYjMzk7cyBpdC4gR29vZC4KCkFscmlnaHQsIHRpbWUgdG8gc3VtbWFyaXplIHdoYXQgSSYjMzk7dmUgZ290OgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIHRpbWUKKiAgICoqRm9jdXNTeW1ib2xzOioqIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIC0gdGhpcyBsb29rcyBsaWtlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludC4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgTUlUSUdBVElPTl9WTVNDQVBFYCwgYEJQRl9KSVRgIC0gb2J2aW91cyBjaG9pY2VzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBhbmQgdGhlIGRlcGVuZGVuY2llcwoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gZm9yIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHksIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gYW5kIHRoZSBLVk0gVk0tZXhpdCBwYXRocy4KCk5vdywgbGV0IG1lIGRyaWxsIGRvd24gb24gYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAuIEl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uIGluIGBhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNgLiBJcyBpdCByZWFjaGFibGU/IEJpbmdvISBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgZG9faml0YCB3aGVuIGNvbXB1dGluZyBgYnBmX3Byb2ctJmd0O2F1eC0mZ3Q7aml0ZWRfbGVuYCBhbmQgd2hlbiBlbWl0dGluZyBpbnN0cnVjdGlvbnMsIGFuZCBpdCBsb29rcyBsaWtlIGEgdXNlciBjYW4gdHJpZ2dlciBpdCB0aHJvdWdoIGEgQlBGIHByb2dyYW0uCgpJIG5lZWQgdG8gY29uZmlybSBpZiBpdCBpcyB0aGUgb25seSBmdW5jdGlvbiwgd2hpY2ggSSB3YXMgYWJsZSB0byBkbyEgSSYjMzk7bSBzZWVpbmcgb3RoZXIgYXNzZW1ibHkgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGF0ZWQsIGJ1dCBsaWtlbHkgZXhlY3V0ZWQuIEFsc28sIGl0IGxvb2tzIGxpa2UgYHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoYCBpcyBhbHNvIHJlYWNoYWJsZSBieSBzdGF0aWMgY2FsbHMuIEkgYWxzbyBub3RpY2VkIHRoYXQgYGNwdV9idWdzX3NtdF91cGRhdGVgIGlzIHJlYWNoYWJsZS4KClJpZ2h0LCBiYWNrIHRvIHRoZSBpbnN0cnVjdGlvbnMuLi4gJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmLi4uJiMzNDsgIE5vLCB0aGlzIGlzICpkZWZpbml0ZWx5KiBub3QgZG9jdW1lbnRhdGlvbiwgYSBjb21tZW50LCBhIGNvbnN0YW50IGNoYW5nZSwgb3Igc29tZXRoaW5nIGltcG9zc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQsIEtWTSBleGl0IGhhbmRsaW5nKSBhbmQgaXMgKmFic29sdXRlbHkqIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLgoKVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgc3RheXMgYHRydWVgLiBTbywgZmluYWwgc3VtbWFyeToKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlCiogICAqKkZvY3VzU3ltYm9sczoqKiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYAoqICAgKipFbmFibGVDb25maWdzOioqIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLCBgQlBGX0pJVGAKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBCUEYgSklUIGNvbXBpbGF0aW9uIGFuZCBLVk0gVk0tZXhpdCBoYW5kbGluZyB0byBpbXBsZW1lbnQgYSBuZXcgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gZm9yIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHkuIEkgdGhpbmsgYEJQRl9KSVRgIGlzIHRoZSByaWdodCBjb25maWcgbmFtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMxNgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDaGVja2luZyBCUEYgYW5kIEtWTSBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXR0eSBzdXJlIGBCUEZfSklUYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJiMzOTtyZSBsb29raW5nIGF0IGhlcmUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgZmxhZyBmb3IgdGhlIEJQRiBKdXN0LUluLVRpbWUgY29tcGlsZXIuIEl0JiMzOTtzIHRoZSBvbmUgSSByZW1lbWJlciBuZWVkaW5nIHRvIGVuYWJsZSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyByZWxhdGVkIHRvIEJQRiBwcm9ncmFtcy4KCk5vdywgSSYjMzk7bSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNraW5nIG15IG1lbnRhbCBtYXAgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHNwYWNlLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBLVk1gIGlzIGluZGVlZCB0aGUgY29ycmVjdCBuYW1lIGZvciB0aGUgS1ZNLXJlbGF0ZWQgY29uZmlndXJhdGlvbi4gTXkgaW50dWl0aW9uIHNheXMgaXQgaXMsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgY29uZmlybSB0aGUgZXhhY3QgY29uZmlnIG5hbWUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3VjaCBmb3VuZGF0aW9uYWwgY29tcG9uZW50cy4gSSYjMzk7bSByZWNhbGxpbmcgdGhlIGdlbmVyYWwgcGF0dGVybnMgYW5kIG5hbWluZyBjb252ZW50aW9ucyB0aGF0IGFyZSB1c3VhbGx5IHVzZWQgc28gSSBjYW4gYmUgc3VyZSBJJiMzOTttIHRhbGtpbmcgYWJvdXQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTctXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MTg6Y29uZmlnIEtWTVxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMwLVxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzItXHRib29sIFwmIzM0O01haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNjpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjctXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mjk6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNDpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzUtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM3LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fQk9PSzNTXzY0XG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo3OTpjb25maWcgS1ZNX0JPT0szU182NF9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTk5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNjpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI5OmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A5X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciB0aGUgUDkgZW50cnkgcG9pbnRcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDMtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O05lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcJiMzNDsgaWYgRVhQRVJUXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE1VXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7SHlwZXJ2aXNvciBQZXJmIGV2ZW50cyBmb3IgS1ZNIEJvb2szcy1IVlwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODMtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODUtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4Nzpjb25maWcgS1ZNX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCBleGl0IHRpbWluZ1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTk4OmNvbmZpZyBLVk1fRTUwMFYyXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVx0Ym9vbCBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwdjIgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTItXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE0LVx0Ym9vbCBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fTVBJQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIzMC1cdGJvb2wgXCYjMzQ7S1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDAtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjQxOmNvbmZpZyBLVk1fWElDU1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cdGJvb2wgXCYjMzQ7S1ZNIGluLWtlcm5lbCBYSUNTIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTAtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1Mi1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc9MjI9c291cmNlIFwmIzM0O2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvbWljcm93YXR0L0tjb25maWdcJiMzNDtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yMy1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZzoyNDpjb25maWcgS1ZNX0dVRVNUXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ1LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXCYjMzQ7XG4tLVxuYXJjaC94ODYvS2NvbmZpZz04Mzk9c291cmNlIFwmIzM0O2FyY2gveDg2L3hlbi9LY29uZmlnXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnLTg0MC1cbmFyY2gveDg2L0tjb25maWc6ODQxOmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gveDg2L0tjb25maWctODQyLVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuLS1cbnZpcnQva3ZtL0tjb25maWctMy1cbnZpcnQva3ZtL0tjb25maWc6NDpjb25maWcgS1ZNX0NPTU1PTlxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz0zOT1jb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxuLS1cbnZpcnQva3ZtL0tjb25maWctNDItXG52aXJ0L2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fTU1JT1xudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy00NS1cbnZpcnQva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9BU1lOQ19QRlxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWctNDktIyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTYxLVxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTY3LVxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTcwLVxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy03My1cbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxuLS1cbnZpcnQva3ZtL0tjb25maWctOTMtXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05Ni1cbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctOTktXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctMTAyLVxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDUtXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg0MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gZmluYWxpemluZyB0aGlzIGNvbmZpZy4gSSBrbm93IHRoYXQgYEtWTWAgaXMgdGhlIGJhc2UsIGJ1dCBgTUlUSUdBVElPTl9WTVNDQVBFYCBidWlsZHMgb24gdGhhdCBkZXBlbmRlbmN5LiBTbywgcmVhbGx5LCBzcGVjaWZ5aW5nIGBNSVRJR0FUSU9OX1ZNU0NBUEVgIGFuZCBgQlBGX0pJVGAgc2hvdWxkIGNvdmVyIGV2ZXJ5dGhpbmcgd2UgbmVlZC4KCkxldCBtZSBkbyBhIGZpbmFsIHN3ZWVwIHRocm91Z2ggdGhlIEZvY3VzU3ltYm9scy4gSSYjMzk7bSBub3RpbmcgdGhhdCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGZpbmUsIHdlIGNhbiBzdGlsbCBsaXN0IGl0LiBBbnkgb3RoZXIgZnVuY3Rpb25zIEkgbmVlZCB0byBhZGRyZXNzPyBMZXQmIzM5O3Mgc2VlLi4uIEkgaGF2ZSBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCBgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX3BhcnNlX2NtZGxpbmVgLCBhbmQgYGNwdV9idWdzX3NtdF91cGRhdGVgLgoKQWxyaWdodCwgSSYjMzk7bGwgaW5jbHVkZSBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBhbmQgYGNwdV9idWdzX3NtdF91cGRhdGVgLgoKV2FpdCBhIHNlY29uZOKApiB3YXNuJiMzOTt0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9KSVRgPyBEb2VzIGBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFYCBhbHNvIGluZmx1ZW5jZSBpdHMgYXZhaWxhYmlsaXR5PyBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCB0byBjb25maXJtIHRoYXQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2MDA6XHQjZGVmaW5lIF9fTE9BRF9UQ0NfUFRSKG9mZilcdFx0XHRcXFxuMTYwMTpcdFx0RU1JVDNfb2ZmMzIoMHg0OCwgMHg4QiwgMHg4NSwgb2ZmKVxuMTYwMjpcdC8qIG1vdiByYXgsIHF3b3JkIHB0ciBbcmJwIC0gcm91bmRlZF9zdGFja19kZXB0aCAtIDE2XSAqL1xuMTYwMzpcdCNkZWZpbmUgTE9BRF9UQUlMX0NBTExfQ05UX1BUUihzdGFjaylcdFx0XHRcdFxcXG4xNjA0Olx0XHRfX0xPQURfVENDX1BUUihCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKHN0YWNrKSlcbjE2MDU6XHRcbjE2MDY6XHQvKiBNZW1vcnkgc2l6ZS92YWx1ZSB0byBwcm90ZWN0IHByaXZhdGUgc3RhY2sgb3ZlcmZsb3cvdW5kZXJmbG93ICovXG4xNjA3Olx0I2RlZmluZSBQUklWX1NUQUNLX0dVQVJEX1NaICAgIDhcbjE2MDg6XHQjZGVmaW5lIFBSSVZfU1RBQ0tfR1VBUkRfVkFMICAgMHhFQjlGMTIzNDU2NzhlYjlmVUxMXG4xNjA5Olx0XG4xNjEwOlx0c3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuMTYxMTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2cpXG4xNjEyOlx0e1xuMTYxMzpcdFx0dTggKnByb2cgPSAqcHByb2c7XG4xNjE0Olx0XHR1OCAqZnVuYztcbjE2MTU6XHRcbjE2MTY6XHRcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QKSkge1xuMTYxNzpcdFx0XHQvKiBUaGUgY2xlYXJpbmcgc2VxdWVuY2UgY2xvYmJlcnMgZWF4IGFuZCBlY3guICovXG4xNjE4Olx0XHRcdEVNSVQxKDB4NTApOyAvKiBwdXNoIHJheCAqL1xuMTYxOTpcdFx0XHRFTUlUMSgweDUxKTsgLyogcHVzaCByY3ggKi9cbjE2MjA6XHRcdFx0aXAgJiM0Mzs9IDI7XG4xNjIxOlx0XG4xNjIyOlx0XHRcdGZ1bmMgPSAodTggKiljbGVhcl9iaGJfbG9vcF9ub2ZlbmNlO1xuMTYyMzpcdFx0XHRpcCAmIzQzOz0geDg2X2NhbGxfZGVwdGhfZW1pdF9hY2NvdW50aW5nKFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcbjE2MjQ6XHRcbjE2MjU6XHRcdFx0aWYgKGVtaXRfY2FsbChcdTAwMjZwcm9nLCBmdW5jLCBpcCkpXG4xNjI2Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNjI3Olx0XHRcdC8qIERvbiYjMzk7dCBzcGVjdWxhdGUgcGFzdCB0aGlzIHVudGlsIEJIQiBpcyBjbGVhcmVkICovXG4xNjI4Olx0XHRcdEVNSVRfTEZFTkNFKCk7XG4xNjI5Olx0XHRcdEVNSVQxKDB4NTkpOyAvKiBwb3AgcmN4ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTk0CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaDogQkhJLCBWTVNDQVBFLCBhbmQgdGhlIEJQRiBKSVQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIHNlZXMgYSBjaGVjayBmb3IgYGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1ApYC4gVGhhdCByaW5ncyBhIGJlbGwg4oCTIGBjbGVhcl9iaGJfbG9vcGAgc291bmRzIGxpa2UgaXQgYmVsb25ncyB0byBCcmFuY2ggSGlzdG9yeSBJbmplY3Rpb24gKEJISSksIGFzIHNldCBieSBgYmhpX3NlbGVjdF9taXRpZ2F0aW9uYC4gQnV0IHRoaXMgcGF0Y2ggaXMgdGFnZ2VkIGFzIFZNU0NBUEUsIHNvIHNvbWV0aGluZyYjMzk7cyBhbWlzcy4KCkFoLCBJIHNlZSBpdCBub3cuIFRoZSBwYXRjaCBpc24mIzM5O3QgZGlyZWN0bHkgKmFib3V0KiBWTVNDQVBFLCBidXQgcmF0aGVyLCBpdCBhbHRlcnMgaG93IHRoZSBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBmdW5jdGlvbiBoYW5kbGVzIHRoZSBCSEIgY2xlYXJpbmcgZm9yICpib3RoKiBCSEkgYW5kIFZNU0NBUEUuIFNwZWNpZmljYWxseSwgaXQgcmVuYW1lcyBgY2xlYXJfYmhiX2xvb3BgIHRvIGBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlYCBhbmQgdGhlbiBpbmplY3RzIGFuIGV4cGxpY2l0IGBsZmVuY2VgIGluc3RydWN0aW9uIHdpdGhpbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC4gVGhlIG9yaWdpbmFsIGBsZmVuY2VgIHdhcyByZW1vdmVkIGZyb20gYGNsZWFyX2JoYl9sb29wYC4KClNvLCB0aGUgdW5kZXJseWluZyBgY2xlYXJfYmhiX2xvb3BgIGZ1bmN0aW9uIGlzIHNoYXJlZCBieSBib3RoIEJISSBhbmQgVk1TQ0FQRSBtaXRpZ2F0aW9ucywgbWVhbmluZyB0aGlzIHBhdGNoIGhhcyBhbiBpbnRlcmVzdGluZyBzaWRlIGVmZmVjdC4gVGhlIGNvcmUgVk1TQ0FQRSBtaXRpZ2F0aW9uIGxvZ2ljIGl0c2VsZiBpcyBpbiBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAgYW5kIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCB3aGljaCBhcmUgdW50b3VjaGVkLgoKVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGVmZmVjdGl2ZWx5IGludHJvZHVjaW5nIGEgKm5ldyogQkhCIGNsZWFyaW5nIHN0cmF0ZWd5IHRoYXQgaW1wYWN0cyBob3cgVk1TQ0FQRSBpcyBoYW5kbGVkLiBGdXJ0aGVybW9yZSwgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgYXJlIHJlbGV2YW50IHRvIHRoZSBCUEYgSklUIEJIQiBiYXJyaWVyLgoKVGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgTUlUSUdBVElPTl9WTVNDQVBFYCBhbmQgYEJQRl9KSVRgLiBUaGUgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgKG9idmlvdXNseSkgYW5kIHBlcmhhcHMgYGNwdV9idWdzX3NtdF91cGRhdGVgIGFzIGl0IGNvdWxkIGJlIGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8gQkhCIHJlbGF0ZWQgbWl0aWdhdGlvbnMuIExldCYjMzk7cyBnZXQgdGhlc2UgcmVzdWx0cyBhbmQgZ2V0IGJhY2sgdG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JVElHQVRJT05fVk1TQ0FQRSYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O2NwdV9idWdzX3NtdF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JVElHQVRJT05fVk1TQ0FQRSYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O2NwdV9idWdzX3NtdF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1MzowNy43MjQzNjU4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMzMTc3MzE1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlUSUdBVElPTl9WTVNDQVBFXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyXCIsXG4gICAgXCJjcHVfYnVnc19zbXRfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjA3LjcyNDM3MjgzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUzNDc2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTkxM2Y2YTY4NWNhOWIyYWE5NTUxMjUzYzc4Njg5MjU5ODNiOWRkYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxNzo1MzowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3QgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3RcXG5pbmRleCBkOWI5YTJiNmMxMTRjMC4uMjU1OGE1YzNkOTU2YzMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XFxuQEAgLTg2LDYgKzg2LDEwIEBAIFRoZSBwb3NzaWJsZSB2YWx1ZXMgaW4gdGhpcyBmaWxlIGFyZTpcXG4gICAgcnVuIGEgcG90ZW50aWFsbHkgbWFsaWNpb3VzIGd1ZXN0IGFuZCBpc3N1ZXMgYW4gSUJQQiBiZWZvcmUgdGhlIGZpcnN0XFxuICAgIGV4aXQgdG8gdXNlcnNwYWNlIGFmdGVyIFZNLWV4aXQuXFxuIFxcbisgKiAnTWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSc6XFxuK1xcbisgICBBcyBhYm92ZSwgY29uZGl0aW9uYWwgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gaXMgZW5hYmxlZC5cXG4rXFxuICAqICdNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCc6XFxuIFxcbiAgICBJQlBCIGlzIGlzc3VlZCBvbiBldmVyeSBWTS1leGl0LiBUaGlzIG9jY3VycyB3aGVuIG90aGVyIG1pdGlnYXRpb25zIGxpa2VcXG5AQCAtMTAyLDkgKzEwNiwxOCBAQCBUaGUgbWl0aWdhdGlvbiBjYW4gYmUgY29udHJvbGxlZCB2aWEgdGhlIGBgdm1zY2FwZT1gYCBjb21tYW5kIGxpbmUgcGFyYW1ldGVyOlxcbiBcXG4gICogYGB2bXNjYXBlPWlicGJgYDpcXG4gXFxuLSAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24gKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpLlxcbisgICBFbmFibGUgY29uZGl0aW9uYWwgSUJQQiBtaXRpZ2F0aW9uLlxcbiBcXG4gICogYGB2bXNjYXBlPWZvcmNlYGA6XFxuIFxcbiAgICBGb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBldmVuIG9uIHByb2Nlc3NvcnMgdGhhdCBhcmVcXG4gICAgbm90IGtub3duIHRvIGJlIGFmZmVjdGVkLlxcbitcXG4rICogYGB2bXNjYXBlPWF1dG9gYDpcXG4rXFxuKyAgIENob29zZSB0aGUgbWl0aWdhdGlvbiBiYXNlZCBvbiB0aGUgVk1TQ0FQRSB2YXJpYW50IHRoZSBDUFUgaXMgYWZmZWN0ZWQgYnkuXFxuKyAgIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KVxcbitcXG4rICogYGB2bXNjYXBlPW9uYGA6XFxuK1xcbisgICBTYW1lIGFzIGBgYXV0b2BgLCBleGNlcHQgdGhhdCBpdCBvdmVycmlkZXMgYXR0YWNrIHZlY3RvciBjb250cm9scy5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxcbmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4xMzIwYmFmOTI2NGMwNSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxcbisrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuQEAgLTgzMzcsOSArODMzNywxMyBAQCBLZXJuZWwgcGFyYW1ldGVyc1xcbiBcXG4gXFx0XFx0XFx0b2ZmXFx0XFx0LSBkaXNhYmxlIHRoZSBtaXRpZ2F0aW9uXFxuIFxcdFxcdFxcdGlicGJcXHRcXHQtIHVzZSBJbmRpcmVjdCBCcmFuY2ggUHJlZGljdGlvbiBCYXJyaWVyXFxuLVxcdFxcdFxcdFxcdFxcdCAgKElCUEIpIG1pdGlnYXRpb24gKGRlZmF1bHQpXFxuK1xcdFxcdFxcdFxcdFxcdCAgKElCUEIpIG1pdGlnYXRpb25cXG4gXFx0XFx0XFx0Zm9yY2VcXHRcXHQtIGZvcmNlIHZ1bG5lcmFiaWxpdHkgZGV0ZWN0aW9uIGV2ZW4gb25cXG4gXFx0XFx0XFx0XFx0XFx0ICB1bmFmZmVjdGVkIHByb2Nlc3NvcnNcXG4rXFx0XFx0XFx0YXV0b1xcdFxcdC0gKGRlZmF1bHQpIHVzZSBJQlBCIG9yIEJIQiBjbGVhclxcbitcXHRcXHRcXHRcXHRcXHQgIG1pdGlnYXRpb24gYmFzZWQgb24gQ1BVXFxuK1xcdFxcdFxcdG9uXFx0XFx0LSBzYW1lIGFzIFxcXCJhdXRvXFxcIiwgYnV0IG92ZXJyaWRlIGF0dGFja1xcbitcXHRcXHRcXHRcXHRcXHQgIHZlY3RvciBjb250cm9sXFxuIFxcbiBcXHR2c3lzY2FsbD1cXHRbWDg2LTY0LEVBUkxZXVxcbiBcXHRcXHRcXHRDb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdnN5c2NhbGxzIChpLmUuIGNhbGxzIHRvXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnXFxuaW5kZXggZjNmN2NiMDFkNjlkMDIuLmM1OTY1YmNmMTRjMWY3IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L0tjb25maWdcXG4rKysgYi9hcmNoL3g4Ni9LY29uZmlnXFxuQEAgLTI3MTcsNiArMjcxNyw3IEBAIGNvbmZpZyBNSVRJR0FUSU9OX1RTQVxcbiBjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXFxuIFxcdGJvb2wgXFxcIk1pdGlnYXRlIFZNU0NBUEVcXFwiXFxuIFxcdGRlcGVuZHMgb24gS1ZNXFxuK1xcdGRlcGVuZHMgb24gSEFWRV9TVEFUSUNfQ0FMTFxcbiBcXHRkZWZhdWx0IHlcXG4gXFx0aGVscFxcbiBcXHQgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBWTVNDQVBFIGF0dGFja3MuIFZNU0NBUEUgaXMgYSBoYXJkd2FyZSBzZWN1cml0eVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xcbmluZGV4IDQyNDQ3YjFlMWRmZmE0Li4xZjU2ZDA4NmQzMTJjMCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TXFxuKysrIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xcbkBAIC0xNTI4LDEyICsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZClcXG4gICogcmVmYWN0b3JlZCBpbiB0aGUgZnV0dXJlIGlmIG5lZWRlZC4gVGhlIC5za2lwcyBhcmUgZm9yIHNhZmV0eSwgdG8gZW5zdXJlXFxuICAqIHRoYXQgYWxsIFJFVHMgYXJlIGluIHRoZSBzZWNvbmQgaGFsZiBvZiBhIGNhY2hlbGluZSB0byBtaXRpZ2F0ZSBJbmRpcmVjdFxcbiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLlxcbisgKlxcbisgKiBOb3RlLCBjYWxsZXJzIHNob3VsZCB1c2UgYSBzcGVjdWxhdGlvbiBiYXJyaWVyIGxpa2UgTEZFTkNFIGltbWVkaWF0ZWx5IGFmdGVyXFxuKyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuXFxuICAqL1xcbi1TWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcXG4rU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcXG4gXFx0QU5OT1RBVEVfTk9FTkRCUlxcbiBcXHRwdXNoXFx0JXJicFxcbiBcXHRtb3ZcXHQlcnNwLCAlcmJwXFxuLVxcdG1vdmxcXHQkNSwgJWVjeFxcbitcXG4rXFx0bW92emJsICAgIGJoYl9zZXFfb3V0ZXJfbG9vcCglcmlwKSwgJWVjeFxcbitcXG4gXFx0QU5OT1RBVEVfSU5UUkFfRlVOQ1RJT05fQ0FMTFxcbiBcXHRjYWxsXFx0MWZcXG4gXFx0am1wXFx0NWZcXG5AQCAtMTU1Myw4ICsxNTU4LDggQEAgU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXFxuIFxcdCAqIFRoaXMgc2hvdWxkIGJlIGlkZWFsbHkgYmU6IC5za2lwIDMyIC0gKC5McmV0MiAtIDJmKSwgMHhjY1xcbiBcXHQgKiBidXQgc29tZSBDbGFuZyB2ZXJzaW9ucyAoZS5nLiAxOCkgZG9uJ3QgbGlrZSB0aGlzLlxcbiBcXHQgKi9cXG4tXFx0LnNraXAgMzIgLSAxOCwgMHhjY1xcbi0yOlxcdG1vdmxcXHQkNSwgJWVheFxcbitcXHQuc2tpcCAzMiAtIDIwLCAweGNjXFxuKzI6XFx0bW92emJsICBiaGJfc2VxX2lubmVyX2xvb3AoJXJpcCksICVlYXhcXG4gMzpcXHRqbXBcXHQ0ZlxcbiBcXHRub3BcXG4gNDpcXHRzdWJcXHQkMSwgJWVheFxcbkBAIC0xNTYyLDkgKzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcXG4gXFx0c3ViXFx0JDEsICVlY3hcXG4gXFx0am56XFx0MWJcXG4gLkxyZXQyOlxcdFJFVFxcbi01OlxcdGxmZW5jZVxcbis1OlxcbiBcXHRwb3BcXHQlcmJwXFxuIFxcdFJFVFxcbi1TWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3ApXFxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTShjbGVhcl9iaGJfbG9vcClcXG4tU1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wKVxcbitTWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcXG4rRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXFxuK1NUQUNLX0ZSQU1FX05PTl9TVEFOREFSRChjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbmluZGV4IDFkNTA2ZTVkNmY0NmFjLi4wOWY5NTZiNzI2MzdjNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbkBAIC01MDQsNyArNTA0LDcgQEBcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfU1FfTk9cXHRcXHQoMjEqMzIrMTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNBX0wxX05PXFx0XFx0KDIxKjMyKzEyKSAvKiBBTUQgQ1BVIG5vdCB2dWxuZXJhYmxlIHRvIFRTQS1MMSAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0NMRUFSX0NQVV9CVUZfVk1cXHQoMjEqMzIrMTMpIC8qIENsZWFyIENQVSBidWZmZXJzIHVzaW5nIFZFUlcgYmVmb3JlIFZNUlVOICovXFxuLSNkZWZpbmUgWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVJcXHQoMjEqMzIrMTQpIC8qIFVzZSBJQlBCIG9uIGV4aXQtdG8tdXNlcnNwYWNlLCBzZWUgVk1TQ0FQRSBidWcgKi9cXG4rLyogRnJlZSAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FCTUNcXHRcXHQoMjEqMzIrMTUpIC8qIEFzc2lnbmFibGUgQmFuZHdpZHRoIE1vbml0b3JpbmcgQ291bnRlcnMgKi9cXG4gI2RlZmluZSBYODZfRkVBVFVSRV9NU1JfSU1NXFx0XFx0KDIxKjMyKzE2KSAvKiBNU1IgaW1tZWRpYXRlIGZvcm0gaW5zdHJ1Y3Rpb25zICovXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk5cXHQoMjEqMzIrMTcpIC8qIFN1cHBvcnQgZm9yIEVOQ0xTW0VVUERBVEVTVk5dIGluc3RydWN0aW9uICovXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcXG5pbmRleCBlY2EyNGI1ZTA3ZjRjNi4uYmVmYTE0YTE5ODE3M2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxcbkBAIC00LDYgKzQsNyBAQFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JhbmRvbWl6ZV9rc3RhY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzZXItcmV0dXJuLW5vdGlmaWVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9ub3NwZWMtYnJhbmNoLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vaW9fYml0bWFwLmhcXHUwMDNlXFxuQEAgLTgyLDExICs4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbiBcXHRjdXJyZW50X3RocmVhZF9pbmZvKCktXFx1MDAzZXN0YXR1cyBcXHUwMDI2PSB+KFRTX0NPTVBBVCB8IFRTX0kzODZfUkVHU19QT0tFRCk7XFxuICNlbmRpZlxcbiBcXG4tXFx0LyogQXZvaWQgdW5uZWNlc3NhcnkgcmVhZHMgb2YgJ3g4Nl9pYnBiX2V4aXRfdG9fdXNlcicgKi9cXG4tXFx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICB0aGlzX2NwdV9yZWFkKHg4Nl9pYnBiX2V4aXRfdG9fdXNlcikpIHtcXG4tXFx0XFx0aW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcigpO1xcbi1cXHRcXHR0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIGZhbHNlKTtcXG4rXFx0aWYgKHVubGlrZWx5KHRoaXNfY3B1X3JlYWQoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpKSkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBTaW5jZSB0aGUgbWl0aWdhdGlvbiBpcyBmb3IgdXNlcnNwYWNlLCBhbiBleHBsaWNpdFxcbitcXHRcXHQgKiBzcGVjdWxhdGlvbiBiYXJyaWVyIGlzIG5vdCByZXF1aXJlZCBhZnRlciBmbHVzaC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHN0YXRpY19jYWxsX2NvbmQodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gpKCk7XFxuK1xcdFxcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCBmYWxzZSk7XFxuIFxcdH1cXG4gfVxcbiAjZGVmaW5lIGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZSBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmVcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxcbmluZGV4IGQ3YzcwNGVkMWJlOWEyLi5iY2VlYWVkMjk0MGU5MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gICogYXQgbGVhc3Qgb25lIHZlbmRvciBtb2R1bGUgaXMgZW5hYmxlZC5cXG4gICovXFxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbClcXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpXFxuICNlbmRpZlxcbiBcXG4gI2RlZmluZSBLVk1fQVJDSF9OUl9PQkpTX1BFUl9NRU1PUllfQ0FDSEUgNDBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oXFxuaW5kZXggNGY0YjVlOGExNTc0MzAuLjM4NDc4MzgzMTM5YjY1IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxcbkBAIC0zMzEsMTEgKzMzMSwxMSBAQFxcbiBcXG4gI2lmZGVmIENPTkZJR19YODZfNjRcXG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZXFxuLVxcdEFMVEVSTkFUSVZFIFxcXCJcXFwiLCBcXFwiY2FsbCBjbGVhcl9iaGJfbG9vcFxcXCIsIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QXFxuK1xcdEFMVEVSTkFUSVZFIFxcXCJcXFwiLCBcXFwiY2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcXFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUFxcbiAuZW5kbVxcbiBcXG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZX1ZNRVhJVFxcbi1cXHRBTFRFUk5BVElWRSBcXFwiXFxcIiwgXFxcImNhbGwgY2xlYXJfYmhiX2xvb3BcXFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfVk1FWElUXFxuK1xcdEFMVEVSTkFUSVZFIFxcXCJcXFwiLCBcXFwiY2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcXFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfVk1FWElUXFxuIC5lbmRtXFxuICNlbHNlXFxuICNkZWZpbmUgQ0xFQVJfQlJBTkNIX0hJU1RPUllcXG5AQCAtMzg5LDcgKzM4OSw5IEBAIGV4dGVybiB2b2lkIGVudHJ5X3VudHJhaW5fcmV0KHZvaWQpO1xcbiBleHRlcm4gdm9pZCB3cml0ZV9pYnBiKHZvaWQpO1xcbiBcXG4gI2lmZGVmIENPTkZJR19YODZfNjRcXG4tZXh0ZXJuIHZvaWQgY2xlYXJfYmhiX2xvb3Aodm9pZCk7XFxuK2V4dGVybiB2b2lkIGNsZWFyX2JoYl9sb29wX25vZmVuY2Uodm9pZCk7XFxuKyNlbHNlXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpIHt9XFxuICNlbmRpZlxcbiBcXG4gZXh0ZXJuIHZvaWQgKCp4ODZfcmV0dXJuX3RodW5rKSh2b2lkKTtcXG5AQCAtNTMzLDcgKzUzNSw3IEBAIHZvaWQgYWx0ZXJuYXRpdmVfbXNyX3dyaXRlKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIHVuc2lnbmVkIGludCBmZWF0dXJlKVxcbiBcXHRcXHQ6IFxcXCJtZW1vcnlcXFwiKTtcXG4gfVxcbiBcXG4tREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7XFxuK0RFQ0xBUkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxcbiB7XFxuQEAgLTU0MiwxMiArNTQ0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbmRpcmVjdF9icmFuY2hfcHJlZGljdGlvbl9iYXJyaWVyKHZvaWQpXFxuIFxcdFxcdFxcdCAgICA6OiBcXFwicmF4XFxcIiwgXFxcInJjeFxcXCIsIFxcXCJyZHhcXFwiLCBcXFwibWVtb3J5XFxcIik7XFxuIH1cXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXFx1MDAzZVxcbitERUNMQVJFX1NUQVRJQ19DQUxMKHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoLCB3cml0ZV9pYnBiKTtcXG4rXFxuIC8qIFRoZSBJbnRlbCBTUEVDIENUUkwgTVNSIGJhc2UgdmFsdWUgY2FjaGUgKi9cXG4gZXh0ZXJuIHU2NCB4ODZfc3BlY19jdHJsX2Jhc2U7XFxuIERFQ0xBUkVfUEVSX0NQVSh1NjQsIHg4Nl9zcGVjX2N0cmxfY3VycmVudCk7XFxuIGV4dGVybiB2b2lkIHVwZGF0ZV9zcGVjX2N0cmxfY29uZCh1NjQgdmFsKTtcXG4gZXh0ZXJuIHU2NCBzcGVjX2N0cmxfY3VycmVudCh2b2lkKTtcXG4gXFxuK2V4dGVybiB1OCBiaGJfc2VxX2lubmVyX2xvb3AsIGJoYl9zZXFfb3V0ZXJfbG9vcDtcXG4rXFxuIC8qXFxuICAqIFdpdGggcmV0cG9saW5lLCB3ZSBtdXN0IHVzZSBJQlJTIHRvIHJlc3RyaWN0IGJyYW5jaCBwcmVkaWN0aW9uXFxuICAqIGJlZm9yZSBjYWxsaW5nIGludG8gZmlybXdhcmUuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcXG5pbmRleCA4M2Y1MWNhYjBiMWUzOS4uNGUwYjc3ZmIyMWRkMzQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcXG4rKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xcbkBAIC02MSwxMiArNjEsMTEgQEAgREVGSU5FX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xcbiBFWFBPUlRfUEVSX0NQVV9TWU1CT0xfR1BMKHg4Nl9zcGVjX2N0cmxfY3VycmVudCk7XFxuIFxcbiAvKlxcbi0gKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEFuIElCUEIgd2lsbFxcbi0gKiBiZSBuZWVkZWQgdG8gYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLiBUaGF0IElCUEIgd2lsbCBmbHVzaCB0aGUgYnJhbmNoXFxuLSAqIHByZWRpY3RvciBjb250ZW50LlxcbisgKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEluZGljYXRlcyB0aGF0IGFcXG4rICogYnJhbmNoIHByZWRpY3RvciBmbHVzaCBpcyBuZWVkZWQgYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLlxcbiAgKi9cXG4tREVGSU5FX1BFUl9DUFUoYm9vbCwgeDg2X2licGJfZXhpdF90b191c2VyKTtcXG4tRVhQT1JUX1BFUl9DUFVfU1lNQk9MX0dQTCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpO1xcbitERUZJTkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XFxuK0VYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpO1xcbiBcXG4gdTY0IHg4Nl9wcmVkX2NtZCBfX3JvX2FmdGVyX2luaXQgPSBQUkVEX0NNRF9JQlBCO1xcbiBcXG5AQCAtMTQ0LDYgKzE0MywxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChjcHVfYnVmX2lkbGVfY2xlYXIpO1xcbiAgKi9cXG4gREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoc3dpdGNoX21tX2NvbmRfbDFkX2ZsdXNoKTtcXG4gXFxuKy8qXFxuKyAqIENvbnRyb2xzIGhvdyB2bXNjYXBlIGlzIG1pdGlnYXRlZCBlLmcuIHZpYSBJQlBCIG9yIEJIQi1jbGVhclxcbisgKiBzZXF1ZW5jZS4gVGhpcyBkZWZhdWx0cyB0byBubyBtaXRpZ2F0aW9uLlxcbisgKi9cXG4rREVGSU5FX1NUQVRJQ19DQUxMX05VTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xcbitFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCk7XFxuK1xcbiAjdW5kZWYgcHJfZm10XFxuICNkZWZpbmUgcHJfZm10KGZtdClcXHRcXFwibWl0aWdhdGlvbnM6IFxcXCIgZm10XFxuIFxcbkBAIC0yMDQ3LDYgKzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMge1xcbiBzdGF0aWMgZW51bSBiaGlfbWl0aWdhdGlvbnMgYmhpX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID1cXG4gXFx0SVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGO1xcbiBcXG4rLyogRGVmYXVsdCB0byBzaG9ydCBCSEIgc2VxdWVuY2UgdmFsdWVzICovXFxuK3U4IGJoYl9zZXFfb3V0ZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xcbit1OCBiaGJfc2VxX2lubmVyX2xvb3AgX19yb19hZnRlcl9pbml0ID0gNTtcXG4rXFxuIHN0YXRpYyBpbnQgX19pbml0IHNwZWN0cmVfYmhpX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxcbiB7XFxuIFxcdGlmICghc3RyKVxcbkBAIC0zMDQ4LDE1ICszMDU4LDE5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcnNvX2FwcGx5X21pdGlnYXRpb24odm9pZClcXG4gZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHtcXG4gXFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX05PTkUsXFxuIFxcdFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPLFxcbitcXHRWTVNDQVBFX01JVElHQVRJT05fT04sXFxuIFxcdFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUixcXG4gXFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULFxcbitcXHRWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUixcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgdm1zY2FwZV9zdHJpbmdzW10gPSB7XFxuLVxcdFtWTVNDQVBFX01JVElHQVRJT05fTk9ORV1cXHRcXHQ9IFxcXCJWdWxuZXJhYmxlXFxcIixcXG4rXFx0W1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXVxcdFxcdFxcdD0gXFxcIlZ1bG5lcmFibGVcXFwiLFxcbiBcXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE9dICovXFxuLVxcdFtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVJdXFx0PSBcXFwiTWl0aWdhdGlvbjogSUJQQiBiZWZvcmUgZXhpdCB0byB1c2Vyc3BhY2VcXFwiLFxcbi1cXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVxcdD0gXFxcIk1pdGlnYXRpb246IElCUEIgb24gVk1FWElUXFxcIixcXG4rXFx0LyogW1ZNU0NBUEVfTUlUSUdBVElPTl9PTl0gKi9cXG4rXFx0W1ZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUl1cXHRcXHQ9IFxcXCJNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVxcXCIsXFxuK1xcdFtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdXFx0XFx0PSBcXFwiTWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVRcXFwiLFxcbitcXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVJdXFx0PSBcXFwiTWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVxcXCIsXFxuIH07XFxuIFxcbiBzdGF0aWMgZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHZtc2NhcGVfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxcbkBAIC0zMDczLDYgKzMwODcsMTAgQEAgc3RhdGljIGludCBfX2luaXQgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cilcXG4gXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSO1xcbiBcXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcXFwiZm9yY2VcXFwiKSkge1xcbiBcXHRcXHRzZXR1cF9mb3JjZV9jcHVfYnVnKFg4Nl9CVUdfVk1TQ0FQRSk7XFxuK1xcdFxcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9PTjtcXG4rXFx0fSBlbHNlIGlmICghc3RyY21wKHN0ciwgXFxcIm9uXFxcIikpIHtcXG4rXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xcbitcXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcXFwiYXV0b1xcXCIpKSB7XFxuIFxcdFxcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRwcl9lcnIoXFxcIklnbm9yaW5nIHVua25vd24gdm1zY2FwZT0lcyBvcHRpb24uXFxcXG5cXFwiLCBzdHIpO1xcbkBAIC0zMDg0LDE3ICszMTAyLDQ0IEBAIGVhcmx5X3BhcmFtKFxcXCJ2bXNjYXBlXFxcIiwgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKTtcXG4gXFxuIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX3NlbGVjdF9taXRpZ2F0aW9uKHZvaWQpXFxuIHtcXG4tXFx0aWYgKCFib290X2NwdV9oYXNfYnVnKFg4Nl9CVUdfVk1TQ0FQRSkgfHxcXG4tXFx0ICAgICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpIHtcXG4rXFx0aWYgKCFib290X2NwdV9oYXNfYnVnKFg4Nl9CVUdfVk1TQ0FQRSkpIHtcXG4gXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykge1xcbi1cXHRcXHRpZiAoc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSlcXG4rXFx0aWYgKCh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSlcXG4rXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XFxuK1xcbitcXHRzd2l0Y2ggKHZtc2NhcGVfbWl0aWdhdGlvbikge1xcbitcXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOlxcbitcXHRcXHRicmVhaztcXG4rXFxuK1xcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOlxcbitcXHRcXHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcXG4rXFx0XFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XFxuK1xcdFxcdGJyZWFrO1xcbitcXG4rXFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fQVVUTzpcXG4rXFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fT046XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIENQVXMgd2l0aCBCSElfQ1RSTChBREwgYW5kIG5ld2VyKSBjYW4gYXZvaWQgdGhlIElCUEIgYW5kIHVzZVxcbitcXHRcXHQgKiBCSEIgY2xlYXIgc2VxdWVuY2UuIFRoZXNlIENQVXMgYXJlIG9ubHkgdnVsbmVyYWJsZSB0byB0aGUgQkhJXFxuK1xcdFxcdCAqIHZhcmlhbnQgb2YgdGhlIFZNU0NBUEUgYXR0YWNrLCBhbmQgdGh1cyB0aGV5IGRvIG5vdCByZXF1aXJlIGFcXG4rXFx0XFx0ICogZnVsbCBwcmVkaWN0b3IgZmx1c2guXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIE5vdGUsIGluIDMyLWJpdCBtb2RlIEJIQiBjbGVhciBzZXF1ZW5jZSBpcyBub3Qgc3VwcG9ydGVkLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9CSElfQ1RSTCkgXFx1MDAyNlxcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfWDg2XzY0KSlcXG4rXFx0XFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI7XFxuK1xcdFxcdGVsc2UgaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcXG4gXFx0XFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FO1xcbitcXHRcXHRicmVhaztcXG4rXFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTMxMTMsNyArMzE1OCw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX3VwZGF0ZV9taXRpZ2F0aW9uKHZvaWQpXFxuIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb24odm9pZClcXG4ge1xcbiBcXHRpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUilcXG4tXFx0XFx0c2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUik7XFxuK1xcdFxcdHN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7XFxuK1xcdGVsc2UgaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUilcXG4rXFx0XFx0c3RhdGljX2NhbGxfdXBkYXRlKHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoLCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKTtcXG4gfVxcbiBcXG4gI3VuZGVmIHByX2ZtdFxcbkBAIC0zMjAyLDkgKzMyNDksMTEgQEAgdm9pZCBjcHVfYnVnc19zbXRfdXBkYXRlKHZvaWQpXFxuIFxcdHN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7XFxuIFxcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6XFxuIFxcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE86XFxuK1xcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOlxcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVQ6XFxuIFxcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOlxcbitcXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSOlxcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBIeXBlcnZpc29ycyBjYW4gYmUgYXR0YWNrZWQgYWNyb3NzLXRocmVhZHMsIHdhcm4gZm9yIFNNVCB3aGVuXFxuIFxcdFxcdCAqIFNUSUJQIGlzIG5vdCBhbHJlYWR5IGVuYWJsZWQgc3lzdGVtLXdpZGUuXFxuQEAgLTMyNDIsNiArMzI5MSwxNSBAQCB2b2lkIF9faW5pdCBjcHVfc2VsZWN0X21pdGlnYXRpb25zKHZvaWQpXFxuIFxcdFxcdHg4Nl9zcGVjX2N0cmxfYmFzZSBcXHUwMDI2PSB+U1BFQ19DVFJMX01JVElHQVRJT05TX01BU0s7XFxuIFxcdH1cXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFN3aXRjaCB0byBsb25nIEJIQiBjbGVhciBzZXF1ZW5jZSBvbiBuZXdlciBDUFVzICh3aXRoIEJISV9DVFJMXFxuK1xcdCAqIHN1cHBvcnQpLCBzZWUgSW50ZWwncyBCSEkgZ3VpZGFuY2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9CSElfQ1RSTCkpIHtcXG4rXFx0XFx0YmhiX3NlcV9vdXRlcl9sb29wID0gMTI7XFxuK1xcdFxcdGJoYl9zZXFfaW5uZXJfbG9vcCA9IDc7XFxuK1xcdH1cXG4rXFxuIFxcdHg4Nl9hcmNoX2NhcF9tc3IgPSB4ODZfcmVhZF9hcmNoX2NhcF9tc3IoKTtcXG4gXFxuIFxcdGNwdV9wcmludF9hdHRhY2tfdmVjdG9ycygpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCAwNTUwMzU5ZWQ3OThmYy4uZmNkNjFjNDc2NTNmYTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTExNTU2LDggKzExNTU2LDggQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0ICogc2V0IGZvciB0aGUgQ1BVIHRoYXQgYWN0dWFsbHkgcmFuIHRoZSBndWVzdCwgYW5kIG5vdCB0aGUgQ1BVIHRoYXQgaXRcXG4gXFx0ICogbWF5IG1pZ3JhdGUgdG8uXFxuIFxcdCAqL1xcbi1cXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikpXFxuLVxcdFxcdHRoaXNfY3B1X3dyaXRlKHg4Nl9pYnBiX2V4aXRfdG9fdXNlciwgdHJ1ZSk7XFxuK1xcdGlmIChzdGF0aWNfY2FsbF9xdWVyeSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkpXFxuK1xcdFxcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCB0cnVlKTtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIENvbnN1bWUgYW55IHBlbmRpbmcgaW50ZXJydXB0cywgaW5jbHVkaW5nIHRoZSBwb3NzaWJsZSBzb3VyY2Ugb2ZcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggZWE5ZTcwN2U4YWJmZmIuLmU2ZDE3ZWI0ZDk0OWY5IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0xNjE5LDExICsxNjE5LDEzIEBAIHN0YXRpYyBpbnQgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKHU4ICoqcHByb2csIHU4ICppcCxcXG4gXFx0XFx0RU1JVDEoMHg1MSk7IC8qIHB1c2ggcmN4ICovXFxuIFxcdFxcdGlwICs9IDI7XFxuIFxcbi1cXHRcXHRmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3A7XFxuK1xcdFxcdGZ1bmMgPSAodTggKiljbGVhcl9iaGJfbG9vcF9ub2ZlbmNlO1xcbiBcXHRcXHRpcCArPSB4ODZfY2FsbF9kZXB0aF9lbWl0X2FjY291bnRpbmcoXFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcXG4gXFxuIFxcdFxcdGlmIChlbWl0X2NhbGwoXFx1MDAyNnByb2csIGZ1bmMsIGlwKSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdC8qIERvbid0IHNwZWN1bGF0ZSBwYXN0IHRoaXMgdW50aWwgQkhCIGlzIGNsZWFyZWQgKi9cXG4rXFx0XFx0RU1JVF9MRkVOQ0UoKTtcXG4gXFx0XFx0RU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi9cXG4gXFx0XFx0RU1JVDEoMHg1OCk7IC8qIHBvcCByYXggKi9cXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxcbmluZGV4IGE1NjhkOGU2ZjRlODI5Li5iZTYwMmQzZjI4N2U1NyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxcbkBAIC0xMyw2ICsxMyw4IEBAXFxuIFxcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIFxcXFxcXG4gXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFxcXCJrdm0sXFxcIiBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNKHN5bWJvbCkgXFxcXFxcbitcXHRFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMoc3ltYm9sLCBcXFwia3ZtLFxcXCIgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSlcXG4gI2Vsc2VcXG4gI2RlZmluZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoc3ltYm9sKVxcbiAvKlxcbkBAIC0yMywxMSArMjUsMTcgQEBcXG4gI2lmbmRlZiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1cXG4gI2lmIElTX01PRFVMRShDT05GSUdfS1ZNKVxcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcXFwia3ZtXFxcIilcXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFxcXCJrdm1cXFwiKVxcbiAjZWxzZVxcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXFxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxcbiAjZW5kaWYgLyogSVNfTU9EVUxFKENPTkZJR19LVk0pICovXFxuLSNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cXG4rI2Vsc2VcXG4rI2lmbmRlZiBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTVxcbisjZXJyb3IgTXVzdCAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNIGlmICNkZWZpbmluZyBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1cXG4gI2VuZGlmXFxuKyNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cXG4rI2VuZGlmIC8qIEtWTV9TVUJfTU9EVUxFUyAqL1xcbiBcXG4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fXFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmggYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmhcXG5pbmRleCA3OGE3N2E0YWUwZWE4Ny4uYjYxMGFmZDFlZDU1NjYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXFxuQEAgLTIxNiw2ICsyMTYsOSBAQCBleHRlcm4gbG9uZyBfX3N0YXRpY19jYWxsX3JldHVybjAodm9pZCk7XFxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcXHRcXHRcXHRcXFxcXFxuIFxcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKVxcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVxcdFxcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1xcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcXG4gXFxuIC8qIExlYXZlIHRoZSBrZXkgdW5leHBvcnRlZCwgc28gbW9kdWxlcyBjYW4ndCBjaGFuZ2Ugc3RhdGljIGNhbGwgdGFyZ2V0czogKi9cXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTI3Niw2ICsyNzksOSBAQCBleHRlcm4gbG9uZyBfX3N0YXRpY19jYWxsX3JldHVybjAodm9pZCk7XFxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcXHRcXHRcXHRcXFxcXFxuIFxcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKVxcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVxcdFxcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1xcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcXG4gXFxuIC8qIExlYXZlIHRoZSBrZXkgdW5leHBvcnRlZCwgc28gbW9kdWxlcyBjYW4ndCBjaGFuZ2Ugc3RhdGljIGNhbGwgdGFyZ2V0czogKi9cXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTM0Niw2ICszNTIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBzdGF0aWNfY2FsbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXFxuIFxcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTChuYW1lKVxcdEVYUE9SVF9TWU1CT0woU1RBVElDX0NBTExfS0VZKG5hbWUpKVxcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSlcXHRFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9LRVkobmFtZSkpXFxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKG5hbWUsIG1vZHMpXFx0XFx0XFx0XFxcXFxcbitcXHRFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcylcXG4gXFxuICNlbmRpZiAvKiBDT05GSUdfSEFWRV9TVEFUSUNfQ0FMTCAqL1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTM6MDguNjc4NTQxNzI2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIzNjM1NDMxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlUSUdBVElPTl9WTVNDQVBFXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyXCIsXG4gICAgXCJjcHVfYnVnc19zbXRfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTkxM2Y2YTY4NWNhOWIyYWE5NTUxMjUzYzc4Njg5MjU5ODNiOWRkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE3OjUzOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XG5pbmRleCBkOWI5YTJiNmMxMTRjMC4uMjU1OGE1YzNkOTU2YzMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdFxuQEAgLTg2LDYgKzg2LDEwIEBAIFRoZSBwb3NzaWJsZSB2YWx1ZXMgaW4gdGhpcyBmaWxlIGFyZTpcbiAgICBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QgYW5kIGlzc3VlcyBhbiBJQlBCIGJlZm9yZSB0aGUgZmlyc3RcbiAgICBleGl0IHRvIHVzZXJzcGFjZSBhZnRlciBWTS1leGl0LlxuIFxuKyAqICdNaXRpZ2F0aW9uOiBDbGVhciBCSEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlJzpcbitcbisgICBBcyBhYm92ZSwgY29uZGl0aW9uYWwgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gaXMgZW5hYmxlZC5cbitcbiAgKiAnTWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVQnOlxuIFxuICAgIElCUEIgaXMgaXNzdWVkIG9uIGV2ZXJ5IFZNLWV4aXQuIFRoaXMgb2NjdXJzIHdoZW4gb3RoZXIgbWl0aWdhdGlvbnMgbGlrZVxuQEAgLTEwMiw5ICsxMDYsMTggQEAgVGhlIG1pdGlnYXRpb24gY2FuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBgYHZtc2NhcGU9YGAgY29tbWFuZCBsaW5lIHBhcmFtZXRlcjpcbiBcbiAgKiBgYHZtc2NhcGU9aWJwYmBgOlxuIFxuLSAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24gKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpLlxuKyAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24uXG4gXG4gICogYGB2bXNjYXBlPWZvcmNlYGA6XG4gXG4gICAgRm9yY2UgdnVsbmVyYWJpbGl0eSBkZXRlY3Rpb24gYW5kIG1pdGlnYXRpb24gZXZlbiBvbiBwcm9jZXNzb3JzIHRoYXQgYXJlXG4gICAgbm90IGtub3duIHRvIGJlIGFmZmVjdGVkLlxuK1xuKyAqIGBgdm1zY2FwZT1hdXRvYGA6XG4rXG4rICAgQ2hvb3NlIHRoZSBtaXRpZ2F0aW9uIGJhc2VkIG9uIHRoZSBWTVNDQVBFIHZhcmlhbnQgdGhlIENQVSBpcyBhZmZlY3RlZCBieS5cbisgICAoZGVmYXVsdCB3aGVuIENPTkZJR19NSVRJR0FUSU9OX1ZNU0NBUEU9eSlcbitcbisgKiBgYHZtc2NhcGU9b25gYDpcbitcbisgICBTYW1lIGFzIGBgYXV0b2BgLCBleGNlcHQgdGhhdCBpdCBvdmVycmlkZXMgYXR0YWNrIHZlY3RvciBjb250cm9scy5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5pbmRleCA5NzAwN2Y0ZjY5ZDRlOC4uMTMyMGJhZjkyNjRjMDUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbkBAIC04MzM3LDkgKzgzMzcsMTMgQEAgS2VybmVsIHBhcmFtZXRlcnNcbiBcbiBcdFx0XHRvZmZcdFx0LSBkaXNhYmxlIHRoZSBtaXRpZ2F0aW9uXG4gXHRcdFx0aWJwYlx0XHQtIHVzZSBJbmRpcmVjdCBCcmFuY2ggUHJlZGljdGlvbiBCYXJyaWVyXG4tXHRcdFx0XHRcdCAgKElCUEIpIG1pdGlnYXRpb24gKGRlZmF1bHQpXG4rXHRcdFx0XHRcdCAgKElCUEIpIG1pdGlnYXRpb25cbiBcdFx0XHRmb3JjZVx0XHQtIGZvcmNlIHZ1bG5lcmFiaWxpdHkgZGV0ZWN0aW9uIGV2ZW4gb25cbiBcdFx0XHRcdFx0ICB1bmFmZmVjdGVkIHByb2Nlc3NvcnNcbitcdFx0XHRhdXRvXHRcdC0gKGRlZmF1bHQpIHVzZSBJQlBCIG9yIEJIQiBjbGVhclxuK1x0XHRcdFx0XHQgIG1pdGlnYXRpb24gYmFzZWQgb24gQ1BVXG4rXHRcdFx0b25cdFx0LSBzYW1lIGFzIFwiYXV0b1wiLCBidXQgb3ZlcnJpZGUgYXR0YWNrXG4rXHRcdFx0XHRcdCAgdmVjdG9yIGNvbnRyb2xcbiBcbiBcdHZzeXNjYWxsPVx0W1g4Ni02NCxFQVJMWV1cbiBcdFx0XHRDb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdnN5c2NhbGxzIChpLmUuIGNhbGxzIHRvXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWdcbmluZGV4IGYzZjdjYjAxZDY5ZDAyLi5jNTk2NWJjZjE0YzFmNyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L0tjb25maWdcbisrKyBiL2FyY2gveDg2L0tjb25maWdcbkBAIC0yNzE3LDYgKzI3MTcsNyBAQCBjb25maWcgTUlUSUdBVElPTl9UU0FcbiBjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXG4gXHRib29sIFwiTWl0aWdhdGUgVk1TQ0FQRVwiXG4gXHRkZXBlbmRzIG9uIEtWTVxuK1x0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXG4gXHRkZWZhdWx0IHlcbiBcdGhlbHBcbiBcdCAgRW5hYmxlIG1pdGlnYXRpb24gZm9yIFZNU0NBUEUgYXR0YWNrcy4gVk1TQ0FQRSBpcyBhIGhhcmR3YXJlIHNlY3VyaXR5XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlNcbmluZGV4IDQyNDQ3YjFlMWRmZmE0Li4xZjU2ZDA4NmQzMTJjMCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlNcbisrKyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlNcbkBAIC0xNTI4LDEyICsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZClcbiAgKiByZWZhY3RvcmVkIGluIHRoZSBmdXR1cmUgaWYgbmVlZGVkLiBUaGUgLnNraXBzIGFyZSBmb3Igc2FmZXR5LCB0byBlbnN1cmVcbiAgKiB0aGF0IGFsbCBSRVRzIGFyZSBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgYSBjYWNoZWxpbmUgdG8gbWl0aWdhdGUgSW5kaXJlY3RcbiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLlxuKyAqXG4rICogTm90ZSwgY2FsbGVycyBzaG91bGQgdXNlIGEgc3BlY3VsYXRpb24gYmFycmllciBsaWtlIExGRU5DRSBpbW1lZGlhdGVseSBhZnRlclxuKyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuXG4gICovXG4tU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXG4rU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcbiBcdEFOTk9UQVRFX05PRU5EQlJcbiBcdHB1c2hcdCVyYnBcbiBcdG1vdlx0JXJzcCwgJXJicFxuLVx0bW92bFx0JDUsICVlY3hcbitcbitcdG1vdnpibCAgICBiaGJfc2VxX291dGVyX2xvb3AoJXJpcCksICVlY3hcbitcbiBcdEFOTk9UQVRFX0lOVFJBX0ZVTkNUSU9OX0NBTExcbiBcdGNhbGxcdDFmXG4gXHRqbXBcdDVmXG5AQCAtMTU1Myw4ICsxNTU4LDggQEAgU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXG4gXHQgKiBUaGlzIHNob3VsZCBiZSBpZGVhbGx5IGJlOiAuc2tpcCAzMiAtICguTHJldDIgLSAyZiksIDB4Y2NcbiBcdCAqIGJ1dCBzb21lIENsYW5nIHZlcnNpb25zIChlLmcuIDE4KSBkb24ndCBsaWtlIHRoaXMuXG4gXHQgKi9cbi1cdC5za2lwIDMyIC0gMTgsIDB4Y2Ncbi0yOlx0bW92bFx0JDUsICVlYXhcbitcdC5za2lwIDMyIC0gMjAsIDB4Y2NcbisyOlx0bW92emJsICBiaGJfc2VxX2lubmVyX2xvb3AoJXJpcCksICVlYXhcbiAzOlx0am1wXHQ0ZlxuIFx0bm9wXG4gNDpcdHN1Ylx0JDEsICVlYXhcbkBAIC0xNTYyLDkgKzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcbiBcdHN1Ylx0JDEsICVlY3hcbiBcdGpuelx0MWJcbiAuTHJldDI6XHRSRVRcbi01Olx0bGZlbmNlXG4rNTpcbiBcdHBvcFx0JXJicFxuIFx0UkVUXG4tU1lNX0ZVTkNfRU5EKGNsZWFyX2JoYl9sb29wKVxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTShjbGVhcl9iaGJfbG9vcClcbi1TVEFDS19GUkFNRV9OT05fU1RBTkRBUkQoY2xlYXJfYmhiX2xvb3ApXG4rU1lNX0ZVTkNfRU5EKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4rRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4rU1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbmluZGV4IDFkNTA2ZTVkNmY0NmFjLi4wOWY5NTZiNzI2MzdjNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbkBAIC01MDQsNyArNTA0LDcgQEBcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQV9TUV9OT1x0XHQoMjEqMzIrMTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfTDFfTk9cdFx0KDIxKjMyKzEyKSAvKiBBTUQgQ1BVIG5vdCB2dWxuZXJhYmxlIHRvIFRTQS1MMSAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfQ0xFQVJfQ1BVX0JVRl9WTVx0KDIxKjMyKzEzKSAvKiBDbGVhciBDUFUgYnVmZmVycyB1c2luZyBWRVJXIGJlZm9yZSBWTVJVTiAqL1xuLSNkZWZpbmUgWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVJcdCgyMSozMisxNCkgLyogVXNlIElCUEIgb24gZXhpdC10by11c2Vyc3BhY2UsIHNlZSBWTVNDQVBFIGJ1ZyAqL1xuKy8qIEZyZWUgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FCTUNcdFx0KDIxKjMyKzE1KSAvKiBBc3NpZ25hYmxlIEJhbmR3aWR0aCBNb25pdG9yaW5nIENvdW50ZXJzICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9NU1JfSU1NXHRcdCgyMSozMisxNikgLyogTVNSIGltbWVkaWF0ZSBmb3JtIGluc3RydWN0aW9ucyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk5cdCgyMSozMisxNykgLyogU3VwcG9ydCBmb3IgRU5DTFNbRVVQREFURVNWTl0gaW5zdHJ1Y3Rpb24gKi9cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oXG5pbmRleCBlY2EyNGI1ZTA3ZjRjNi4uYmVmYTE0YTE5ODE3M2UgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbkBAIC00LDYgKzQsNyBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JhbmRvbWl6ZV9rc3RhY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzZXItcmV0dXJuLW5vdGlmaWVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYXNtL25vc3BlYy1icmFuY2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9pb19iaXRtYXAuaFx1MDAzZVxuQEAgLTgyLDExICs4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuIFx0Y3VycmVudF90aHJlYWRfaW5mbygpLVx1MDAzZXN0YXR1cyBcdTAwMjY9IH4oVFNfQ09NUEFUIHwgVFNfSTM4Nl9SRUdTX1BPS0VEKTtcbiAjZW5kaWZcbiBcbi1cdC8qIEF2b2lkIHVubmVjZXNzYXJ5IHJlYWRzIG9mICd4ODZfaWJwYl9leGl0X3RvX3VzZXInICovXG4tXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikgXHUwMDI2XHUwMDI2XG4tXHQgICAgdGhpc19jcHVfcmVhZCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpKSB7XG4tXHRcdGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIoKTtcbi1cdFx0dGhpc19jcHVfd3JpdGUoeDg2X2licGJfZXhpdF90b191c2VyLCBmYWxzZSk7XG4rXHRpZiAodW5saWtlbHkodGhpc19jcHVfcmVhZCh4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcikpKSB7XG4rXHRcdC8qXG4rXHRcdCAqIFNpbmNlIHRoZSBtaXRpZ2F0aW9uIGlzIGZvciB1c2Vyc3BhY2UsIGFuIGV4cGxpY2l0XG4rXHRcdCAqIHNwZWN1bGF0aW9uIGJhcnJpZXIgaXMgbm90IHJlcXVpcmVkIGFmdGVyIGZsdXNoLlxuK1x0XHQgKi9cbitcdFx0c3RhdGljX2NhbGxfY29uZCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkoKTtcbitcdFx0dGhpc19jcHVfd3JpdGUoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIsIGZhbHNlKTtcbiBcdH1cbiB9XG4gI2RlZmluZSBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmUgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxuaW5kZXggZDdjNzA0ZWQxYmU5YTIuLmJjZWVhZWQyOTQwZTkwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oXG5AQCAtMTUsNiArMTUsNyBAQFxuICAqIGF0IGxlYXN0IG9uZSB2ZW5kb3IgbW9kdWxlIGlzIGVuYWJsZWQuXG4gICovXG4gI2RlZmluZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0oc3ltYm9sKVxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgS1ZNX0FSQ0hfTlJfT0JKU19QRVJfTUVNT1JZX0NBQ0hFIDQwXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oXG5pbmRleCA0ZjRiNWU4YTE1NzQzMC4uMzg0NzgzODMxMzliNjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxuQEAgLTMzMSwxMSArMzMxLDExIEBAXG4gXG4gI2lmZGVmIENPTkZJR19YODZfNjRcbiAubWFjcm8gQ0xFQVJfQlJBTkNIX0hJU1RPUllcbi1cdEFMVEVSTkFUSVZFIFwiXCIsIFwiY2FsbCBjbGVhcl9iaGJfbG9vcFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUFxuK1x0QUxURVJOQVRJVkUgXCJcIiwgXCJjYWxsIGNsZWFyX2JoYl9sb29wX25vZmVuY2U7IGxmZW5jZVwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUFxuIC5lbmRtXG4gXG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZX1ZNRVhJVFxuLVx0QUxURVJOQVRJVkUgXCJcIiwgXCJjYWxsIGNsZWFyX2JoYl9sb29wXCIsIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9WTUVYSVRcbitcdEFMVEVSTkFUSVZFIFwiXCIsIFwiY2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcIiwgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX1ZNRVhJVFxuIC5lbmRtXG4gI2Vsc2VcbiAjZGVmaW5lIENMRUFSX0JSQU5DSF9ISVNUT1JZXG5AQCAtMzg5LDcgKzM4OSw5IEBAIGV4dGVybiB2b2lkIGVudHJ5X3VudHJhaW5fcmV0KHZvaWQpO1xuIGV4dGVybiB2b2lkIHdyaXRlX2licGIodm9pZCk7XG4gXG4gI2lmZGVmIENPTkZJR19YODZfNjRcbi1leHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcCh2b2lkKTtcbitleHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpO1xuKyNlbHNlXG4rc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2JoYl9sb29wX25vZmVuY2Uodm9pZCkge31cbiAjZW5kaWZcbiBcbiBleHRlcm4gdm9pZCAoKng4Nl9yZXR1cm5fdGh1bmspKHZvaWQpO1xuQEAgLTUzMyw3ICs1MzUsNyBAQCB2b2lkIGFsdGVybmF0aXZlX21zcl93cml0ZSh1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFsLCB1bnNpZ25lZCBpbnQgZmVhdHVyZSlcbiBcdFx0OiBcIm1lbW9yeVwiKTtcbiB9XG4gXG4tREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7XG4rREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxuIHtcbkBAIC01NDIsMTIgKzU0NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxuIFx0XHRcdCAgICA6OiBcInJheFwiLCBcInJjeFwiLCBcInJkeFwiLCBcIm1lbW9yeVwiKTtcbiB9XG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc3RhdGljX2NhbGxfdHlwZXMuaFx1MDAzZVxuK0RFQ0xBUkVfU1RBVElDX0NBTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuK1xuIC8qIFRoZSBJbnRlbCBTUEVDIENUUkwgTVNSIGJhc2UgdmFsdWUgY2FjaGUgKi9cbiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0cmxfYmFzZTtcbiBERUNMQVJFX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIGV4dGVybiB2b2lkIHVwZGF0ZV9zcGVjX2N0cmxfY29uZCh1NjQgdmFsKTtcbiBleHRlcm4gdTY0IHNwZWNfY3RybF9jdXJyZW50KHZvaWQpO1xuIFxuK2V4dGVybiB1OCBiaGJfc2VxX2lubmVyX2xvb3AsIGJoYl9zZXFfb3V0ZXJfbG9vcDtcbitcbiAvKlxuICAqIFdpdGggcmV0cG9saW5lLCB3ZSBtdXN0IHVzZSBJQlJTIHRvIHJlc3RyaWN0IGJyYW5jaCBwcmVkaWN0aW9uXG4gICogYmVmb3JlIGNhbGxpbmcgaW50byBmaXJtd2FyZS5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG5pbmRleCA4M2Y1MWNhYjBiMWUzOS4uNGUwYjc3ZmIyMWRkMzQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xuKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbkBAIC02MSwxMiArNjEsMTEgQEAgREVGSU5FX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIEVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3NwZWNfY3RybF9jdXJyZW50KTtcbiBcbiAvKlxuLSAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gQW4gSUJQQiB3aWxsXG4tICogYmUgbmVlZGVkIHRvIGJlZm9yZSBydW5uaW5nIHVzZXJzcGFjZS4gVGhhdCBJQlBCIHdpbGwgZmx1c2ggdGhlIGJyYW5jaFxuLSAqIHByZWRpY3RvciBjb250ZW50LlxuKyAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gSW5kaWNhdGVzIHRoYXQgYVxuKyAqIGJyYW5jaCBwcmVkaWN0b3IgZmx1c2ggaXMgbmVlZGVkIGJlZm9yZSBydW5uaW5nIHVzZXJzcGFjZS5cbiAgKi9cbi1ERUZJTkVfUEVSX0NQVShib29sLCB4ODZfaWJwYl9leGl0X3RvX3VzZXIpO1xuLUVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X2licGJfZXhpdF90b191c2VyKTtcbitERUZJTkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XG4rRVhQT1JUX1BFUl9DUFVfU1lNQk9MX0dQTCh4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XG4gXG4gdTY0IHg4Nl9wcmVkX2NtZCBfX3JvX2FmdGVyX2luaXQgPSBQUkVEX0NNRF9JQlBCO1xuIFxuQEAgLTE0NCw2ICsxNDMsMTMgQEAgRVhQT1JUX1NZTUJPTF9HUEwoY3B1X2J1Zl9pZGxlX2NsZWFyKTtcbiAgKi9cbiBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzd2l0Y2hfbW1fY29uZF9sMWRfZmx1c2gpO1xuIFxuKy8qXG4rICogQ29udHJvbHMgaG93IHZtc2NhcGUgaXMgbWl0aWdhdGVkIGUuZy4gdmlhIElCUEIgb3IgQkhCLWNsZWFyXG4rICogc2VxdWVuY2UuIFRoaXMgZGVmYXVsdHMgdG8gbm8gbWl0aWdhdGlvbi5cbisgKi9cbitERUZJTkVfU1RBVElDX0NBTExfTlVMTCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7XG4rRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0odm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gpO1xuK1xuICN1bmRlZiBwcl9mbXRcbiAjZGVmaW5lIHByX2ZtdChmbXQpXHRcIm1pdGlnYXRpb25zOiBcIiBmbXRcbiBcbkBAIC0yMDQ3LDYgKzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMge1xuIHN0YXRpYyBlbnVtIGJoaV9taXRpZ2F0aW9ucyBiaGlfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxuIFx0SVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGO1xuIFxuKy8qIERlZmF1bHQgdG8gc2hvcnQgQkhCIHNlcXVlbmNlIHZhbHVlcyAqL1xuK3U4IGJoYl9zZXFfb3V0ZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xuK3U4IGJoYl9zZXFfaW5uZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xuK1xuIHN0YXRpYyBpbnQgX19pbml0IHNwZWN0cmVfYmhpX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxuIHtcbiBcdGlmICghc3RyKVxuQEAgLTMwNDgsMTUgKzMwNTgsMTkgQEAgc3RhdGljIHZvaWQgX19pbml0IHNyc29fYXBwbHlfbWl0aWdhdGlvbih2b2lkKVxuIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB7XG4gXHRWTVNDQVBFX01JVElHQVRJT05fTk9ORSxcbiBcdFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPLFxuK1x0Vk1TQ0FQRV9NSVRJR0FUSU9OX09OLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULFxuK1x0Vk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVIsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHZtc2NhcGVfc3RyaW5nc1tdID0ge1xuLVx0W1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXVx0XHQ9IFwiVnVsbmVyYWJsZVwiLFxuK1x0W1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXVx0XHRcdD0gXCJWdWxuZXJhYmxlXCIsXG4gXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE9dICovXG4tXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSXVx0PSBcIk1pdGlnYXRpb246IElCUEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlXCIsXG4tXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVx0PSBcIk1pdGlnYXRpb246IElCUEIgb24gVk1FWElUXCIsXG4rXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX09OXSAqL1xuK1x0W1ZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUl1cdFx0PSBcIk1pdGlnYXRpb246IElCUEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlXCIsXG4rXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVx0XHQ9IFwiTWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVRcIixcbitcdFtWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUl1cdD0gXCJNaXRpZ2F0aW9uOiBDbGVhciBCSEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlXCIsXG4gfTtcbiBcbiBzdGF0aWMgZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHZtc2NhcGVfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxuQEAgLTMwNzMsNiArMzA4NywxMCBAQCBzdGF0aWMgaW50IF9faW5pdCB2bXNjYXBlX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxuIFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcImZvcmNlXCIpKSB7XG4gXHRcdHNldHVwX2ZvcmNlX2NwdV9idWcoWDg2X0JVR19WTVNDQVBFKTtcbitcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xuK1x0fSBlbHNlIGlmICghc3RyY21wKHN0ciwgXCJvblwiKSkge1xuK1x0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fT047XG4rXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcImF1dG9cIikpIHtcbiBcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE87XG4gXHR9IGVsc2Uge1xuIFx0XHRwcl9lcnIoXCJJZ25vcmluZyB1bmtub3duIHZtc2NhcGU9JXMgb3B0aW9uLlxcblwiLCBzdHIpO1xuQEAgLTMwODQsMTcgKzMxMDIsNDQgQEAgZWFybHlfcGFyYW0oXCJ2bXNjYXBlXCIsIHZtc2NhcGVfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb24odm9pZClcbiB7XG4tXHRpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSB8fFxuLVx0ICAgICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpIHtcbitcdGlmICghYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX1ZNU0NBUEUpKSB7XG4gXHRcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPKSB7XG4tXHRcdGlmIChzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKVxuK1x0aWYgKCh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8pIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKVxuK1x0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbitcbitcdHN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7XG4rXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOlxuK1x0XHRicmVhaztcbitcbitcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOlxuK1x0XHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcbitcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbitcdFx0YnJlYWs7XG4rXG4rXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuK1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fT046XG4rXHRcdC8qXG4rXHRcdCAqIENQVXMgd2l0aCBCSElfQ1RSTChBREwgYW5kIG5ld2VyKSBjYW4gYXZvaWQgdGhlIElCUEIgYW5kIHVzZVxuK1x0XHQgKiBCSEIgY2xlYXIgc2VxdWVuY2UuIFRoZXNlIENQVXMgYXJlIG9ubHkgdnVsbmVyYWJsZSB0byB0aGUgQkhJXG4rXHRcdCAqIHZhcmlhbnQgb2YgdGhlIFZNU0NBUEUgYXR0YWNrLCBhbmQgdGh1cyB0aGV5IGRvIG5vdCByZXF1aXJlIGFcbitcdFx0ICogZnVsbCBwcmVkaWN0b3IgZmx1c2guXG4rXHRcdCAqXG4rXHRcdCAqIE5vdGUsIGluIDMyLWJpdCBtb2RlIEJIQiBjbGVhciBzZXF1ZW5jZSBpcyBub3Qgc3VwcG9ydGVkLlxuK1x0XHQgKi9cbitcdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9CSElfQ1RSTCkgXHUwMDI2XHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX1g4Nl82NCkpXG4rXHRcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI7XG4rXHRcdGVsc2UgaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHRcdGVsc2VcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbitcdFx0YnJlYWs7XG4rXG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbiBcdH1cbiB9XG4gXG5AQCAtMzExMyw3ICszMTU4LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfdXBkYXRlX21pdGlnYXRpb24odm9pZClcbiBzdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4ge1xuIFx0aWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVIpXG4tXHRcdHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpO1xuK1x0XHRzdGF0aWNfY2FsbF91cGRhdGUodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuK1x0ZWxzZSBpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSKVxuK1x0XHRzdGF0aWNfY2FsbF91cGRhdGUodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIGNsZWFyX2JoYl9sb29wX25vZmVuY2UpO1xuIH1cbiBcbiAjdW5kZWYgcHJfZm10XG5AQCAtMzIwMiw5ICszMjQ5LDExIEBAIHZvaWQgY3B1X2J1Z3Nfc210X3VwZGF0ZSh2b2lkKVxuIFx0c3dpdGNoICh2bXNjYXBlX21pdGlnYXRpb24pIHtcbiBcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6XG4gXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuK1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fT046XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVQ6XG4gXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUjpcbitcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI6XG4gXHRcdC8qXG4gXHRcdCAqIEh5cGVydmlzb3JzIGNhbiBiZSBhdHRhY2tlZCBhY3Jvc3MtdGhyZWFkcywgd2FybiBmb3IgU01UIHdoZW5cbiBcdFx0ICogU1RJQlAgaXMgbm90IGFscmVhZHkgZW5hYmxlZCBzeXN0ZW0td2lkZS5cbkBAIC0zMjQyLDYgKzMyOTEsMTUgQEAgdm9pZCBfX2luaXQgY3B1X3NlbGVjdF9taXRpZ2F0aW9ucyh2b2lkKVxuIFx0XHR4ODZfc3BlY19jdHJsX2Jhc2UgXHUwMDI2PSB+U1BFQ19DVFJMX01JVElHQVRJT05TX01BU0s7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogU3dpdGNoIHRvIGxvbmcgQkhCIGNsZWFyIHNlcXVlbmNlIG9uIG5ld2VyIENQVXMgKHdpdGggQkhJX0NUUkxcbitcdCAqIHN1cHBvcnQpLCBzZWUgSW50ZWwncyBCSEkgZ3VpZGFuY2UuXG4rXHQgKi9cbitcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSkge1xuK1x0XHRiaGJfc2VxX291dGVyX2xvb3AgPSAxMjtcbitcdFx0YmhiX3NlcV9pbm5lcl9sb29wID0gNztcbitcdH1cbitcbiBcdHg4Nl9hcmNoX2NhcF9tc3IgPSB4ODZfcmVhZF9hcmNoX2NhcF9tc3IoKTtcbiBcbiBcdGNwdV9wcmludF9hdHRhY2tfdmVjdG9ycygpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMDU1MDM1OWVkNzk4ZmMuLmZjZDYxYzQ3NjUzZmEzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0xMTU1Niw4ICsxMTU1Niw4IEBAIHN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHQgKiBzZXQgZm9yIHRoZSBDUFUgdGhhdCBhY3R1YWxseSByYW4gdGhlIGd1ZXN0LCBhbmQgbm90IHRoZSBDUFUgdGhhdCBpdFxuIFx0ICogbWF5IG1pZ3JhdGUgdG8uXG4gXHQgKi9cbi1cdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0lCUEJfRVhJVF9UT19VU0VSKSlcbi1cdFx0dGhpc19jcHVfd3JpdGUoeDg2X2licGJfZXhpdF90b191c2VyLCB0cnVlKTtcbitcdGlmIChzdGF0aWNfY2FsbF9xdWVyeSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkpXG4rXHRcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCB0cnVlKTtcbiBcbiBcdC8qXG4gXHQgKiBDb25zdW1lIGFueSBwZW5kaW5nIGludGVycnVwdHMsIGluY2x1ZGluZyB0aGUgcG9zc2libGUgc291cmNlIG9mXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCBlYTllNzA3ZThhYmZmYi4uZTZkMTdlYjRkOTQ5ZjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTE2MTksMTEgKzE2MTksMTMgQEAgc3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuIFx0XHRFTUlUMSgweDUxKTsgLyogcHVzaCByY3ggKi9cbiBcdFx0aXAgKz0gMjtcbiBcbi1cdFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wO1xuK1x0XHRmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZTtcbiBcdFx0aXAgKz0geDg2X2NhbGxfZGVwdGhfZW1pdF9hY2NvdW50aW5nKFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcbiBcbiBcdFx0aWYgKGVtaXRfY2FsbChcdTAwMjZwcm9nLCBmdW5jLCBpcCkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdC8qIERvbid0IHNwZWN1bGF0ZSBwYXN0IHRoaXMgdW50aWwgQkhCIGlzIGNsZWFyZWQgKi9cbitcdFx0RU1JVF9MRkVOQ0UoKTtcbiBcdFx0RU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi9cbiBcdFx0RU1JVDEoMHg1OCk7IC8qIHBvcCByYXggKi9cbiBcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxuaW5kZXggYTU2OGQ4ZTZmNGU4MjkuLmJlNjAyZDNmMjg3ZTU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxuQEAgLTEzLDYgKzEzLDggQEBcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgXFxcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcImt2bSxcIiBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBcXFxuK1x0RVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKHN5bWJvbCwgXCJrdm0sXCIgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSlcbiAjZWxzZVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHN5bWJvbClcbiAvKlxuQEAgLTIzLDExICsyNSwxNyBAQFxuICNpZm5kZWYgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNXG4gI2lmIElTX01PRFVMRShDT05GSUdfS1ZNKVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFwia3ZtXCIpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFwia3ZtXCIpXG4gI2Vsc2VcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpXG4gI2VuZGlmIC8qIElTX01PRFVMRShDT05GSUdfS1ZNKSAqL1xuLSNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cbisjZWxzZVxuKyNpZm5kZWYgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk1cbisjZXJyb3IgTXVzdCAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNIGlmICNkZWZpbmluZyBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1cbiAjZW5kaWZcbisjZW5kaWYgLyogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNICovXG4rI2VuZGlmIC8qIEtWTV9TVUJfTU9EVUxFUyAqL1xuIFxuICNpZm5kZWYgX19BU1NFTUJMRVJfX1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaCBiL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaFxuaW5kZXggNzhhNzdhNGFlMGVhODcuLmI2MTBhZmQxZWQ1NTY2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmhcbkBAIC0yMTYsNiArMjE2LDkgQEAgZXh0ZXJuIGxvbmcgX19zdGF0aWNfY2FsbF9yZXR1cm4wKHZvaWQpO1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0XHRcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfVFJBTVAobmFtZSkpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMobmFtZSwgbW9kcylcdFx0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1x0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcbiBcbiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJ3QgY2hhbmdlIHN0YXRpYyBjYWxsIHRhcmdldHM6ICovXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcdFx0XHRcdFx0XFxcbkBAIC0yNzYsNiArMjc5LDkgQEAgZXh0ZXJuIGxvbmcgX19zdGF0aWNfY2FsbF9yZXR1cm4wKHZvaWQpO1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0XHRcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfVFJBTVAobmFtZSkpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMobmFtZSwgbW9kcylcdFx0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1x0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcbiBcbiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJ3QgY2hhbmdlIHN0YXRpYyBjYWxsIHRhcmdldHM6ICovXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcdFx0XHRcdFx0XFxcbkBAIC0zNDYsNiArMzUyLDggQEAgc3RhdGljIGlubGluZSBpbnQgc3RhdGljX2NhbGxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuIFxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMKG5hbWUpXHRFWFBPUlRfU1lNQk9MKFNUQVRJQ19DQUxMX0tFWShuYW1lKSlcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSlcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX0tFWShuYW1lKSlcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVx0XHRcdFxcXG4rXHRFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcylcbiBcbiAjZW5kaWYgLyogQ09ORklHX0hBVkVfU1RBVElDX0NBTEwgKi9cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjA4LjY3ODU0MzQwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MzMyNDU4MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgb24gZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGludHJvZHVjZXMgYW55IG5ldyBzdXJmYWNlIGFyZWEgdGhhdCdzIHdvcnRoIGZ1enppbmcuXG5cbk15IGluaXRpYWwgcmVhZCBpbmRpY2F0ZXMgdGhpcyBpcyBhYm91dCBtaXRpZ2F0aW5nIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHkuIEl0J3MgaW50cm9kdWNpbmcgYSBuZXcgbWl0aWdhdGlvbiBzdHJhdGVneSBpbnZvbHZpbmcgY2xlYXJpbmcgdGhlIEJIQiBiZWZvcmUgZXhpdGluZyB0byB1c2Vyc3BhY2UuIFRoZXkncmUgdXNpbmcgc3RhdGljIGNhbGxzIGZvciBhIHByZWRpY3RvciBmbHVzaC5cblxuSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBzcGFuIGFjcm9zcyBzZXZlcmFsIGNydWNpYWwgYXJlYXM6IGRvY3VtZW50YXRpb24gdXBkYXRlcywgS2NvbmZpZyBtb2RpZmljYXRpb25zLCBhbmQgY29yZSBjb2RlIGluIGBhcmNoL3g4Ni9gLCBpbmNsdWRpbmcgdGhlIGVudHJ5IHBvaW50cywgQ1BVIGJ1ZyBoYW5kbGluZywgS1ZNIGNvZGUsIGFuZCBCUEYgSklUIGNvbXBpbGF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gYW5kIG5vdCBqdXN0IGRvY3VtZW50YXRpb24gb3IgbG9nZ2luZy5cblxuVGhlIGNoYW5nZXMgYXJlIHJlYWNoaW5nIEtWTSBhbmQgQlBGIEpJVCwgYW5kIHRoaXMgaXMgaGFwcGVuaW5nIG9uIGV4aXQgdG8gdXNlciBzcGFjZS4gSXQgY2FuIGJlIGNvbnRyb2xsZWQgYnkgYSBrZXJuZWwgY29tbWFuZCBsaW5lIGB2bXNjYXBlPS4uLmAuXG5cbkknbSB0aGlua2luZyBhYm91dCByZWFjaGFiaWxpdHkuIEtWTSBpcyBjZXJ0YWlubHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHNvIHRoYXQncyBhIHllcy4gQlBGIEpJVCBpcyByZWFjaGFibGUgdG9vLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGluY3JlYXNlIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuVGhlIGJ1bGsgb2YgdGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIGZvY3VzZWQgb24gcmVwbGFjaW5nIGhhcmRjb2RlZCBJQlBCIGluc3RydWN0aW9ucyB3aXRoIHN0YXRpYyBjYWxscyB0byBlaXRoZXIgSUJQQiBvciBCSEIgY2xlYXJpbmcgYW5kIG1pbm9yIGFkanVzdG1lbnRzIHRvIHRoZSBCSEIgY2xlYXJpbmcgbG9vcC4gVGhlIEJQRiBKSVQgY2hhbmdlIGlzIGEgc2ltcGxlIGVtaXNzaW9uIG9mIGFuIGxmZW5jZSBpbnN0cnVjdGlvbi4gVGhlIEtWTSBjb2RlIHVzZXMgYHN0YXRpY19jYWxsX3F1ZXJ5YCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIENQVSBmZWF0dXJlcy4gVGhlIGVudHJ5IGNvZGUgbm93IHVzZXMgYHN0YXRpY19jYWxsX2NvbmRgIGluc3RlYWQgb2YgYW4gaW5kaXJlY3QgYnJhbmNoIHByZWRpY3Rpb24gYmFycmllci5cblxuR2l2ZW4gdGhhdCB0aGVzZSBhcmUgbWl0aWdhdGlvbnMgYW5kIHRoZSBwcmltYXJ5IGNoYW5nZXMgaW52b2x2ZSBzdGF0aWMgY2FsbHMgYW5kIG1pbm9yIGluc3RydWN0aW9uIHJlLWFycmFuZ2VtZW50LCBJJ20gbGVhbmluZyB0b3dhcmQgdGhpcyBub3QgYWRkaW5nICpzaWduaWZpY2FudCogbmV3IGF0dGFjayBzdXJmYWNlLiBJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgbW9yZSwgYnV0IGl0IHNlZW1zIHRoYXQgdGhlc2UgY2hhbmdlcyBtYXkgbm90IGludHJvZHVjZSAqbmV3KiB2dWxuZXJhYmlsaXRpZXMgcGVyIHNlIGJ1dCBhcmUgYWltZWQgYXQgaW1wcm92aW5nIG1pdGlnYXRpb24gZm9yIGV4aXN0aW5nIG9uZXMuXG5cbkkndmUgZ290IHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gYENPTkZJR19NSVRJR0FUSU9OX1ZNU0NBUEVgIGV4aXN0cyBhbmQgZGVwZW5kcyBvbiBgSEFWRV9TVEFUSUNfQ0FMTGAgYW5kIGBLVk1gLiBgQ09ORklHX0tWTWAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCwgYW5kIHNvIGlzIGBDT05GSUdfQlBGX0pJVGAuXG5cbkxldCdzIHVzZSB0aGUgdG9vbHMgdG8gZGV0ZXJtaW5lIG90aGVyIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNzEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDcxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTM6MjYuMDExMDAzODg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NzAzNTc1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUlUSUdBVElPTl9WTVNDQVBFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdD0xMDE9VGhlIG1pdGlnYXRpb24gY2FuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBgYHZtc2NhcGU9YGAgY29tbWFuZCBsaW5lIHBhcmFtZXRlcjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdC0xMTgtICAgQ2hvb3NlIHRoZSBtaXRpZ2F0aW9uIGJhc2VkIG9uIHRoZSBWTVNDQVBFIHZhcmlhbnQgdGhlIENQVSBpcyBhZmZlY3RlZCBieS5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3Q6MTE5OiAgIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdC0xMjAtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTI3MDc9Y29uZmlnIE1JVElHQVRJT05fVFNBXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI3MTYtXFxuYXJjaC94ODYvS2NvbmZpZzoyNzE3OmNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcXG5hcmNoL3g4Ni9LY29uZmlnLTI3MTgtXFx0Ym9vbCBcXFwiTWl0aWdhdGUgVk1TQ0FQRVxcXCJcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jPTMwNzY9c3RhdGljIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB2bXNjYXBlX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYzozMDc3OlxcdElTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRSkgPyBWTVNDQVBFX01JVElHQVRJT05fQVVUTyA6IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FO1xcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMwNzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjI4Ljc4MTM2Njk4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTIwNjc3NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRm9jdXM6IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUgcXVlc3Rpb24gbm93IGlzLCB3aGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBvZmZlciB0aGUgYmVzdCByZXR1cm4gb24gaW52ZXN0bWVudCBmb3IgZnV6emluZz8gTGV0IG1lIHNlZeKApiBJIGhhdmUgdGhyZWUgY2FuZGlkYXRlIGZ1bmN0aW9ucyBmbGFnZ2VkOiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBmcm9tIGBhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNgLCBgdmNwdV9lbnRlcl9ndWVzdGAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AsIGFuZCBgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlYCBpbiBgYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhgLlxuXG5XYWl0IGEgbWludXRlLCBib3RoIGB2Y3B1X2VudGVyX2d1ZXN0YCBhbmQgYGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZWAgYXJlIGRlZmluaXRlbHkgaG90LXBhdGggZnVuY3Rpb25zLCB0aGF0IG1ha2VzIHRoZW0gYSBncmVhdCB0YXJnZXQuIEJ1dCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC4uLiB0aGF0J3MgdXNlZCBkdXJpbmcgQlBGIEpJVCBjb21waWxhdGlvbiwgd2hpY2ggdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGxvYWRlZCwgbm90IGEgcGFydGljdWxhcmx5IGhvdCBwYXRoLiBBbHRob3VnaCwgU3BlY3RyZSBpcyBpbnRlcmVzdGluZy4gSSdtIGdvaW5nIHRvIHNldCBpdCBhc2lkZSBmb3Igbm93LiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2OTEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTM6NDIuMzAyMDQ4NzI1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjkyNDAwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0xNTgwPXN0YXRpYyB2b2lkIGVtaXRfcHJpdl9mcmFtZV9wdHIodTggKipwcHJvZywgdm9pZCBfX3BlcmNwdSAqcHJpdl9mcmFtZV9wdHIpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMTYwOS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MTYxMDpzdGF0aWMgaW50IGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcih1OCAqKnBwcm9nLCB1OCAqaXAsXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTE2MTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2cpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MjE0MT1zdDpcXHRcXHRcXHRpZiAoaXNfaW1tOChpbnNuLVxcdTAwM2VvZmYpKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzctXFx0XFx0XFx0ICAgICFuc19jYXBhYmxlX25vYXVkaXQoXFx1MDAyNmluaXRfdXNlcl9ucywgQ0FQX1NZU19BRE1JTikpIHtcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MjczODpcXHRcXHRcXHRcXHRpZiAoZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKFxcdTAwMjZwcm9nLCBpcCwgYnBmX3Byb2cpKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0yNzM5LVxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1Mzo0NC45MzEyOTQ5OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5Njg4NjUxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1cyBmb3IgU3BlY3RyZSBCSEIgTWl0aWdhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgc2VlbXMgbGlrZSB0aGUgcHJpbWUgY2FuZGlkYXRlIGZvciB0YXJnZXRlZCBmdXp6aW5nLCByaWdodD8gQnV0IHdoYXQgYWJvdXQgdGhlIG90aGVyIG1vZGlmaWNhdGlvbnM/IFRob3NlIGBfX2luaXRgIGZ1bmN0aW9ucyBpbiBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgIOKAkyBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCBhbmQgYHZtc2NhcGVfcGFyc2VfY21kbGluZWAg4oCTIGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBib290LCBzbyB0aGV5IGFyZW4ndCBhIHByaW9yaXR5LiBUaGUgY2hhbmdlcyBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYCAoc3BlY2lmaWNhbGx5IGB2Y3B1X2VudGVyX2d1ZXN0YCkgYW5kIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaGAgKGBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmVgKSBhcmUgaW4gc3VwZXIgaG90IHBhdGhzLCBhbmQgdGhlIGd1aWRhbmNlIGlzIHRvIGF2b2lkIGZ1enppbmcgdGhvc2UgZGlyZWN0bHkuXG5cblNvLCByZWFsbHksIGl0IGFsbCBib2lscyBkb3duIHRvIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBCdXQgaXMgdGhpcyBwYXRjaCBldmVuICp3b3J0aCogZnV6emluZz8gSXQncyBhIGhhcmR3YXJlIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiwgYW5kIHRoZSBjb3JlIGxvZ2ljIHNlZW1zIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkOiBzZXR0aW5nIHVwIHN0YXRpYyBjYWxscyBhbmQgZW1pdHRpbmcgYSBmZXcgYXNzZW1ibHkgaW5zdHJ1Y3Rpb25zLiBGdXp6aW5nIHRoZSBCUEYgSklUIG1pZ2h0IGhpdCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCwgYnV0IGl0J3MganVzdCBlbWl0dGluZyBhIGNhbGwgYW5kIGFuIGBsZmVuY2VgLiBJIGRvbid0IHNlZSBhbnkgb2J2aW91cyBzb3VyY2VzIG9mIGNvbXBsZXggbG9naWMgdGhhdCBjb3VsZCBoaWRlIGJ1Z3MuIFdhaXQsIGJ1dCB0aGUgcGF0Y2ggKmRvZXMqIGNoYW5nZSBgY2xlYXJfYmhiX2xvb3BgIHRvIGBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlYCBhbmQgYWRkcyBhbiBleHBsaWNpdCBgbGZlbmNlYCBpbiBCUEYgSklULiBJdCBhbHNvIHVzZXMgYSBzdGF0aWMgY2FsbCBmb3IgS1ZNIGV4aXQgbWl0aWdhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBgV29ydGhGdXp6aW5nPXRydWVgIHNlZW1zIGFwcHJvcHJpYXRlLlxuXG5MZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZm9jdXNlZCBhdHRlbnRpb24uIE9rYXksIGBicGZfaml0X2NvbXAuY2AsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYGRvX2ppdGAsIGNhbGxzIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBTbyBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyNCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1Mzo1Mi45MDAxNjQ2NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NTA2Mjg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTE1ODA9c3RhdGljIHZvaWQgZW1pdF9wcml2X2ZyYW1lX3B0cih1OCAqKnBwcm9nLCB2b2lkIF9fcGVyY3B1ICpwcml2X2ZyYW1lX3B0cilcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0xNjA5LVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoxNjEwOnN0YXRpYyBpbnQgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKHU4ICoqcHByb2csIHU4ICppcCxcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMTYxMS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0yMTQxPXN0OlxcdFxcdFxcdGlmIChpc19pbW04KGluc24tXFx1MDAzZW9mZikpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjczNy1cXHRcXHRcXHQgICAgIW5zX2NhcGFibGVfbm9hdWRpdChcXHUwMDI2aW5pdF91c2VyX25zLCBDQVBfU1lTX0FETUlOKSkge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoyNzM4OlxcdFxcdFxcdFxcdGlmIChlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIoXFx1MDAyNnByb2csIGlwLCBicGZfcHJvZykpXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzktXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjU1LjY0NTIzMzE1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDcyMzU2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZXMqKlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIHZ1bG5lcmFibGUuIEknbSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgYmV5b25kIHRoZSBpbml0aWFsIGNvbW1hbmQtbGluZSBwYXJzaW5nLCBzaW5jZSBgdm1zY2FwZV9wYXJzZV9jbWRsaW5lYCBpcyBoYW5kbGVkIGVhcmx5IGFuZCB0aGVyZWZvcmUgbm90IGZ1enplZC4gSSdtIG5vdGluZyB0aGF0IGB2bXNjYXBlX3NlbGVjdF9taXRpZ2F0aW9uYCwgYHZtc2NhcGVfYXBwbHlfbWl0aWdhdGlvbmAsIGFuZCBgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbmAgYXJlIGFsbCBpbml0aWFsaXplZCAoYF9faW5pdGApLiBUaGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQsIGJ1dCB0aGV5IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBleHBsb2l0YWJsZS4gTm93LCBoZXJlJ3MgYW4gaW50ZXJlc3Rpbmcgb25lOiBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuIFRoZSBjb21tZW50IGluZGljYXRlcyBpdCdzIHRyaWdnZXJlZCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3IgU01UIGNvbnRyb2wgY2hhbmdlcy4gSG90cGx1ZyBldmVudHMgYW5kIFNNVCB0b2dnbGluZyBhcmUga25vd24gcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLCBzbyBJIHN1c3BlY3QgaXQgbWlnaHQgYmUgcmVhY2hhYmxlLiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzgwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjAwLjI5MjQ3MjA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI4ODMwNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdV9idWdzX3NtdF91cGRhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20vYnVncy5oPTEwPXN0YXRpYyBpbmxpbmUgaW50IHBwcm9fd2l0aF9yYW1fYnVnKHZvaWQpIHsgcmV0dXJuIDA7IH1cXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2J1Z3MuaC0xMi1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWdzLmg6MTM6ZXh0ZXJuIHZvaWQgY3B1X2J1Z3Nfc210X3VwZGF0ZSh2b2lkKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWdzLmgtMTQtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0zMTU4PXN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb24odm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMxNzMtXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MzE3NDp2b2lkIGNwdV9idWdzX3NtdF91cGRhdGUodm9pZClcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMTc1LXtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmM9MjU3Mj12b2lkIGFyY2hfc210X3VwZGF0ZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYy0yNTc0LVxcdC8qIEhhbmRsZSB0aGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uIG1pc2ZlYXR1cmVzICovXFxuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYzoyNTc1OlxcdGNwdV9idWdzX3NtdF91cGRhdGUoKTtcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jLTI1NzYtXFx0LyogQ2hlY2sgd2hldGhlciBJUEkgYnJvYWRjYXN0aW5nIGNhbiBiZSBlbmFibGVkICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjAyLjgyMTMwOTgyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDM0MTAzNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01ULVJlbGF0ZWQgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBjcHVfYnVnc19zbXRfdXBkYXRlYCBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkIGJ5IGBhcmNoX3NtdF91cGRhdGVgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBTTVQgKFNpbXVsdGFuZW91cyBNdWx0aS1UaHJlYWRpbmcpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEl0J3Mgbm90IGluIGEgY3JpdGljYWwgcGVyZm9ybWFuY2UgcGF0aCwgd2hpY2ggaXMgZ29vZC4gQnV0IGl0ICppcyogcmVhY2hhYmxlLCBzbyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZy5cblxuVGhlIGNvZGUgY2hhbmdlIGl0c2VsZiBzZWVtcyBpbmNyZWRpYmx5IG1pbm9yLiBJdCdzIGp1c3QgYSBzaW1wbGUgYWRkaXRpb24gb2YgYSBjb3VwbGUgbW9yZSBjYXNlcyB0byBhIGBzd2l0Y2hgIHN0YXRlbWVudCB3aXRoaW4gYGNwdV9idWdzX3NtdF91cGRhdGVgLiBQcmV0dHkgdHJpdmlhbCwgYWN0dWFsbHksIGp1c3QgZXh0ZW5kaW5nIHRoZSBzY2VuYXJpb3MgY29uc2lkZXJlZCBmb3IgYHZtc2NhcGVfbWl0aWdhdGlvbmAuIE5vIHNpZ25pZmljYW50IGFsZ29yaXRobWljIG1vZGlmaWNhdGlvbnMuIFRoaXMgaXNuJ3Qgd2hlcmUgdGhlIGFjdGlvbiBpcy5cblxuVGhlcmVmb3JlLCB0aGUgc2lnbmlmaWNhbnQgY2hhbmdlIGlzIHJlYWxseSBpbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCB3aGljaCBpcyBhbHNvIGEgbm9uLWhvdCBwYXRoIGZ1bmN0aW9uLiBJIHNob3VsZCB2ZXJpZnkgdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGF0IHRoZSBjb25maWcgb3B0aW9ucy4gVGhlIGtleSBvbmUgaXMgYE1JVElHQVRJT05fVk1TQ0FQRWAuIFRoYXQncyB0aGUgcHJpbWFyeSBkcml2ZXIgaGVyZS4gVGhlbiwgdG8gZW5hYmxlIFZNU0NBUEUsIGBLVk1gIGlzIG5lY2Vzc2FyeS4gQW5kLCBiYXNlZCBvbiB0aGUgbm9uLWhvdC1wYXRoIGZ1bmN0aW9uLCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCwgd2UgbmVlZCBgQlBGX0pJVGAuIEl0IGxvb2tzIGxpa2UgYEhBVkVfU1RBVElDX0NBTExgIGlzIGFsc28gYSBkZXBlbmRlbmN5IGZvciBgTUlUSUdBVElPTl9WTVNDQVBFYC4gVGhlc2UgY2hlY2tzIGFyZSBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBjb2RlIGJlaGF2ZXMgYXMgaW50ZW5kZWQgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgTUlUSUdBVElPTl9WTVNDQVBFYCBpbiBgYXJjaC94ODYvS2NvbmZpZ2AgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgaW4gaXRzIGRlcGVuZGVuY2llcyBvciBpbXBsaWNhdGlvbnMuIEdvdHRhIGRvdCB0aG9zZSBpJ3MgYW5kIGNyb3NzIHRob3NlIHQncywgZXNwZWNpYWxseSB3aXRoIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6MTAuMjU1NDE1OTAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM1ODQ3NTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvS2NvbmZpZz0yNzA3PWNvbmZpZyBNSVRJR0FUSU9OX1RTQVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yNzE2LVxcbmFyY2gveDg2L0tjb25maWc6MjcxNzpjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXFxuYXJjaC94ODYvS2NvbmZpZy0yNzE4LVxcdGJvb2wgXFxcIk1pdGlnYXRlIFZNU0NBUEVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjEyLjY5MTI2OTUxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQyMTM5MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgeDg2IEFyY2hpdGVjdHVyZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGFyY2gveDg2L0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGFpbWluZyBmb3IgYXJvdW5kIGxpbmUgMjcxNy4gSSBrbm93IHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgdG8gZ2V0IHRoZSBzcGVjaWZpYyBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0IEknbSBsb29raW5nIGZvci4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gZmluZCBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzMTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDoxNS43MzM0MTExODdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjcxMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjcxMDpcXHRcXHRkZWZhdWx0IHlcXG4yNzExOlxcdFxcdGhlbHBcXG4yNzEyOlxcdFxcdCAgRW5hYmxlIG1pdGlnYXRpb24gZm9yIFRyYW5zaWVudCBTY2hlZHVsZXIgQXR0YWNrcy4gVFNBIGlzIGEgaGFyZHdhcmVcXG4yNzEzOlxcdFxcdCAgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBvbiBBTUQgQ1BVcyB3aGljaCBjYW4gbGVhZCB0byBmb3J3YXJkaW5nIG9mXFxuMjcxNDpcXHRcXHQgIGludmFsaWQgaW5mbyB0byBzdWJzZXF1ZW50IGluc3RydWN0aW9ucyBhbmQgdGh1cyBjYW4gYWZmZWN0IHRoZWlyXFxuMjcxNTpcXHRcXHQgIHRpbWluZyBhbmQgdGhlcmVieSBjYXVzZSBhIGxlYWthZ2UuXFxuMjcxNjpcXHRcXG4yNzE3OlxcdGNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcXG4yNzE4OlxcdFxcdGJvb2wgXFxcIk1pdGlnYXRlIFZNU0NBUEVcXFwiXFxuMjcxOTpcXHRcXHRkZXBlbmRzIG9uIEtWTVxcbjI3MjA6XFx0XFx0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXFxuMjcyMTpcXHRcXHRkZWZhdWx0IHlcXG4yNzIyOlxcdFxcdGhlbHBcXG4yNzIzOlxcdFxcdCAgRW5hYmxlIG1pdGlnYXRpb24gZm9yIFZNU0NBUEUgYXR0YWNrcy4gVk1TQ0FQRSBpcyBhIGhhcmR3YXJlIHNlY3VyaXR5XFxuMjcyNDpcXHRcXHQgIHZ1bG5lcmFiaWxpdHkgb24gSW50ZWwgYW5kIEFNRCBDUFVzIHRoYXQgbWF5IGFsbG93IGEgZ3Vlc3QgdG8gZG9cXG4yNzI1OlxcdFxcdCAgU3BlY3RyZSB2MiBzdHlsZSBhdHRhY2tzIG9uIHVzZXJzcGFjZSBoeXBlcnZpc29yLlxcbjI3MjY6XFx0ZW5kaWZcXG4yNzI3OlxcdFxcbjI3Mjg6XFx0Y29uZmlnIEFSQ0hfSEFTX0FERF9QQUdFU1xcbjI3Mjk6XFx0XFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDoxNS43MzM2MTYxODdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTM1MTc2MzExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiAgVGhhdCdzIHRoZSBrZXksIHJpZ2h0PyBBbmQsIGhvbGQgb24sIGl0IGRlcGVuZHMgb24gYEtWTWAgYW5kIGBIQVZFX1NUQVRJQ19DQUxMYC4gIFRoYXQgY29uZmlybXMgdGhhdCBlbmFibGluZyBgTUlUSUdBVElPTl9WTVNDQVBFYCBpcyBlc3NlbnRpYWwgaGVyZSwgYW5kIG1ha2VzIHRvdGFsIHNlbnNlIGdpdmVuIHRoZSB2dWxuZXJhYmlsaXR5IGJlaW5nIGFkZHJlc3NlZC4gQW5kIGl0IHNlZW1zIHdlIG5lZWQgYEJQRl9KSVRgIGZvciB0aGUgQlBGIHBhcnQuXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYE1JVElHQVRJT05fVk1TQ0FQRWAgaXMgdGhlICpvbmx5KiBzaWduaWZpY2FudCBjb25maWcgY2hhbmdlLi4uIE5vcGUsIHRoYXQncyBpdC4gR29vZC5cblxuQWxyaWdodCwgdGltZSB0byBzdW1tYXJpemUgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIHRpbWVcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCAtIHRoaXMgbG9va3MgbGlrZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLCBgQlBGX0pJVGAgLSBvYnZpb3VzIGNob2ljZXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGFuZCB0aGUgZGVwZW5kZW5jaWVzXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gZm9yIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHksIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gYW5kIHRoZSBLVk0gVk0tZXhpdCBwYXRocy5cblxuTm93LCBsZXQgbWUgZHJpbGwgZG93biBvbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC4gSXQncyBhIHN0YXRpYyBmdW5jdGlvbiBpbiBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gSXMgaXQgcmVhY2hhYmxlPyBCaW5nbyEgSXQncyBjYWxsZWQgZnJvbSBgZG9faml0YCB3aGVuIGNvbXB1dGluZyBgYnBmX3Byb2ctXHUwMDNlYXV4LVx1MDAzZWppdGVkX2xlbmAgYW5kIHdoZW4gZW1pdHRpbmcgaW5zdHJ1Y3Rpb25zLCBhbmQgaXQgbG9va3MgbGlrZSBhIHVzZXIgY2FuIHRyaWdnZXIgaXQgdGhyb3VnaCBhIEJQRiBwcm9ncmFtLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBpdCBpcyB0aGUgb25seSBmdW5jdGlvbiwgd2hpY2ggSSB3YXMgYWJsZSB0byBkbyEgSSdtIHNlZWluZyBvdGhlciBhc3NlbWJseSBmdW5jdGlvbnMgdGhhdCBhcmUgcmVsYXRlZCwgYnV0IGxpa2VseSBleGVjdXRlZC4gQWxzbywgaXQgbG9va3MgbGlrZSBgdm1zY2FwZV9wcmVkaWN0b3JfZmx1c2hgIGlzIGFsc28gcmVhY2hhYmxlIGJ5IHN0YXRpYyBjYWxscy4gSSBhbHNvIG5vdGljZWQgdGhhdCBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAgaXMgcmVhY2hhYmxlLlxuXG5SaWdodCwgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zLi4uIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZi4uLlwiICBObywgdGhpcyBpcyAqZGVmaW5pdGVseSogbm90IGRvY3VtZW50YXRpb24sIGEgY29tbWVudCwgYSBjb25zdGFudCBjaGFuZ2UsIG9yIHNvbWV0aGluZyBpbXBvc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgaXMgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklULCBLVk0gZXhpdCBoYW5kbGluZykgYW5kIGlzICphYnNvbHV0ZWx5KiByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cblxuVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgc3RheXMgYHRydWVgLiBTbywgZmluYWwgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWVcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYFxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgTUlUSUdBVElPTl9WTVNDQVBFYCwgYEJQRl9KSVRgXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBKSVQgY29tcGlsYXRpb24gYW5kIEtWTSBWTS1leGl0IGhhbmRsaW5nIHRvIGltcGxlbWVudCBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSSB0aGluayBgQlBGX0pJVGAgaXMgdGhlIHJpZ2h0IGNvbmZpZyBuYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc3NCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjI1LjA4NTM4MTI2MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNjkyMzIzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDoyNy40MjIzMTA2MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4Nzk1Mzk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIEJQRiBhbmQgS1ZNIENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gSSdtIHByZXR0eSBzdXJlIGBCUEZfSklUYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ3JlIGxvb2tpbmcgYXQgaGVyZS4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBmbGFnIGZvciB0aGUgQlBGIEp1c3QtSW4tVGltZSBjb21waWxlci4gSXQncyB0aGUgb25lIEkgcmVtZW1iZXIgbmVlZGluZyB0byBlbmFibGUgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgcmVsYXRlZCB0byBCUEYgcHJvZ3JhbXMuXG5cbk5vdywgSSdtIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2tpbmcgbXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEtWTWAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IG5hbWUgZm9yIHRoZSBLVk0tcmVsYXRlZCBjb25maWd1cmF0aW9uLiBNeSBpbnR1aXRpb24gc2F5cyBpdCBpcywgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGNvbmZpZyBuYW1lLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHN1Y2ggZm91bmRhdGlvbmFsIGNvbXBvbmVudHMuIEknbSByZWNhbGxpbmcgdGhlIGdlbmVyYWwgcGF0dGVybnMgYW5kIG5hbWluZyBjb252ZW50aW9ucyB0aGF0IGFyZSB1c3VhbGx5IHVzZWQgc28gSSBjYW4gYmUgc3VyZSBJJ20gdGFsa2luZyBhYm91dCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMTYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDozMS4xMTAyNjY5NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjA3MDEyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIk1haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcXFwiYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00NS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgzOT1zb3VyY2UgXFxcImFyY2gveDg2L3hlbi9LY29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctODQwLVxcbmFyY2gveDg2L0tjb25maWc6ODQxOmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTg0Mi1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTMtXFxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXFxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxcbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXFxudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNDUtXFxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXFxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjEtXFxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjctXFxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzAtXFxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTczLVxcbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy05My1cXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxcbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05OS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDItXFxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6MzMuNDcwOTcyNTc3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4OTg5NTYyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBmaW5hbGl6aW5nIHRoaXMgY29uZmlnLiBJIGtub3cgdGhhdCBgS1ZNYCBpcyB0aGUgYmFzZSwgYnV0IGBNSVRJR0FUSU9OX1ZNU0NBUEVgIGJ1aWxkcyBvbiB0aGF0IGRlcGVuZGVuY3kuIFNvLCByZWFsbHksIHNwZWNpZnlpbmcgYE1JVElHQVRJT05fVk1TQ0FQRWAgYW5kIGBCUEZfSklUYCBzaG91bGQgY292ZXIgZXZlcnl0aGluZyB3ZSBuZWVkLlxuXG5MZXQgbWUgZG8gYSBmaW5hbCBzd2VlcCB0aHJvdWdoIHRoZSBGb2N1c1N5bWJvbHMuIEknbSBub3RpbmcgdGhhdCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGZpbmUsIHdlIGNhbiBzdGlsbCBsaXN0IGl0LiBBbnkgb3RoZXIgZnVuY3Rpb25zIEkgbmVlZCB0byBhZGRyZXNzPyBMZXQncyBzZWUuLi4gSSBoYXZlIGB2bXNjYXBlX3NlbGVjdF9taXRpZ2F0aW9uYCwgYHZtc2NhcGVfYXBwbHlfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX3VwZGF0ZV9taXRpZ2F0aW9uYCwgYHZtc2NhcGVfcGFyc2VfY21kbGluZWAsIGFuZCBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuXG5cbkFscmlnaHQsIEknbGwgaW5jbHVkZSBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBhbmQgYGNwdV9idWdzX3NtdF91cGRhdGVgLlxuXG5XYWl0IGEgc2Vjb25k4oCmIHdhc24ndCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfSklUYD8gRG9lcyBgQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRWAgYWxzbyBpbmZsdWVuY2UgaXRzIGF2YWlsYWJpbGl0eT8gSSBzaG91bGQgY2hlY2sgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODQzLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjQzLjM2OTkzMTA0MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MDA6XFx0I2RlZmluZSBfX0xPQURfVENDX1BUUihvZmYpXFx0XFx0XFx0XFxcXFxcbjE2MDE6XFx0XFx0RU1JVDNfb2ZmMzIoMHg0OCwgMHg4QiwgMHg4NSwgb2ZmKVxcbjE2MDI6XFx0LyogbW92IHJheCwgcXdvcmQgcHRyIFtyYnAgLSByb3VuZGVkX3N0YWNrX2RlcHRoIC0gMTZdICovXFxuMTYwMzpcXHQjZGVmaW5lIExPQURfVEFJTF9DQUxMX0NOVF9QVFIoc3RhY2spXFx0XFx0XFx0XFx0XFxcXFxcbjE2MDQ6XFx0XFx0X19MT0FEX1RDQ19QVFIoQlBGX1RBSUxfQ0FMTF9DTlRfUFRSX1NUQUNLX09GRihzdGFjaykpXFxuMTYwNTpcXHRcXG4xNjA2OlxcdC8qIE1lbW9yeSBzaXplL3ZhbHVlIHRvIHByb3RlY3QgcHJpdmF0ZSBzdGFjayBvdmVyZmxvdy91bmRlcmZsb3cgKi9cXG4xNjA3OlxcdCNkZWZpbmUgUFJJVl9TVEFDS19HVUFSRF9TWiAgICA4XFxuMTYwODpcXHQjZGVmaW5lIFBSSVZfU1RBQ0tfR1VBUkRfVkFMICAgMHhFQjlGMTIzNDU2NzhlYjlmVUxMXFxuMTYwOTpcXHRcXG4xNjEwOlxcdHN0YXRpYyBpbnQgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKHU4ICoqcHByb2csIHU4ICppcCxcXG4xNjExOlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nKVxcbjE2MTI6XFx0e1xcbjE2MTM6XFx0XFx0dTggKnByb2cgPSAqcHByb2c7XFxuMTYxNDpcXHRcXHR1OCAqZnVuYztcXG4xNjE1OlxcdFxcbjE2MTY6XFx0XFx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1ApKSB7XFxuMTYxNzpcXHRcXHRcXHQvKiBUaGUgY2xlYXJpbmcgc2VxdWVuY2UgY2xvYmJlcnMgZWF4IGFuZCBlY3guICovXFxuMTYxODpcXHRcXHRcXHRFTUlUMSgweDUwKTsgLyogcHVzaCByYXggKi9cXG4xNjE5OlxcdFxcdFxcdEVNSVQxKDB4NTEpOyAvKiBwdXNoIHJjeCAqL1xcbjE2MjA6XFx0XFx0XFx0aXAgKz0gMjtcXG4xNjIxOlxcdFxcbjE2MjI6XFx0XFx0XFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wX25vZmVuY2U7XFxuMTYyMzpcXHRcXHRcXHRpcCArPSB4ODZfY2FsbF9kZXB0aF9lbWl0X2FjY291bnRpbmcoXFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcXG4xNjI0OlxcdFxcbjE2MjU6XFx0XFx0XFx0aWYgKGVtaXRfY2FsbChcXHUwMDI2cHJvZywgZnVuYywgaXApKVxcbjE2MjY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTYyNzpcXHRcXHRcXHQvKiBEb24ndCBzcGVjdWxhdGUgcGFzdCB0aGlzIHVudGlsIEJIQiBpcyBjbGVhcmVkICovXFxuMTYyODpcXHRcXHRcXHRFTUlUX0xGRU5DRSgpO1xcbjE2Mjk6XFx0XFx0XFx0RU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6NDMuMzcwMzI1NTAxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MjM1MTg0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEJISSwgVk1TQ0FQRSwgYW5kIHRoZSBCUEYgSklUKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2VlcyBhIGNoZWNrIGZvciBgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUClgLiBUaGF0IHJpbmdzIGEgYmVsbCDigJMgYGNsZWFyX2JoYl9sb29wYCBzb3VuZHMgbGlrZSBpdCBiZWxvbmdzIHRvIEJyYW5jaCBIaXN0b3J5IEluamVjdGlvbiAoQkhJKSwgYXMgc2V0IGJ5IGBiaGlfc2VsZWN0X21pdGlnYXRpb25gLiBCdXQgdGhpcyBwYXRjaCBpcyB0YWdnZWQgYXMgVk1TQ0FQRSwgc28gc29tZXRoaW5nJ3MgYW1pc3MuXG5cbkFoLCBJIHNlZSBpdCBub3cuIFRoZSBwYXRjaCBpc24ndCBkaXJlY3RseSAqYWJvdXQqIFZNU0NBUEUsIGJ1dCByYXRoZXIsIGl0IGFsdGVycyBob3cgdGhlIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIEJIQiBjbGVhcmluZyBmb3IgKmJvdGgqIEJISSBhbmQgVk1TQ0FQRS4gU3BlY2lmaWNhbGx5LCBpdCByZW5hbWVzIGBjbGVhcl9iaGJfbG9vcGAgdG8gYGNsZWFyX2JoYl9sb29wX25vZmVuY2VgIGFuZCB0aGVuIGluamVjdHMgYW4gZXhwbGljaXQgYGxmZW5jZWAgaW5zdHJ1Y3Rpb24gd2l0aGluIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBUaGUgb3JpZ2luYWwgYGxmZW5jZWAgd2FzIHJlbW92ZWQgZnJvbSBgY2xlYXJfYmhiX2xvb3BgLlxuXG5TbywgdGhlIHVuZGVybHlpbmcgYGNsZWFyX2JoYl9sb29wYCBmdW5jdGlvbiBpcyBzaGFyZWQgYnkgYm90aCBCSEkgYW5kIFZNU0NBUEUgbWl0aWdhdGlvbnMsIG1lYW5pbmcgdGhpcyBwYXRjaCBoYXMgYW4gaW50ZXJlc3Rpbmcgc2lkZSBlZmZlY3QuIFRoZSBjb3JlIFZNU0NBUEUgbWl0aWdhdGlvbiBsb2dpYyBpdHNlbGYgaXMgaW4gYHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb25gIGFuZCBgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uYCwgd2hpY2ggYXJlIHVudG91Y2hlZC5cblxuVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0J3MgZWZmZWN0aXZlbHkgaW50cm9kdWNpbmcgYSAqbmV3KiBCSEIgY2xlYXJpbmcgc3RyYXRlZ3kgdGhhdCBpbXBhY3RzIGhvdyBWTVNDQVBFIGlzIGhhbmRsZWQuIEZ1cnRoZXJtb3JlLCB0aGUgbW9kaWZpY2F0aW9ucyB0byBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBhcmUgcmVsZXZhbnQgdG8gdGhlIEJQRiBKSVQgQkhCIGJhcnJpZXIuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYE1JVElHQVRJT05fVk1TQ0FQRWAgYW5kIGBCUEZfSklUYC4gVGhlIHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIChvYnZpb3VzbHkpIGFuZCBwZXJoYXBzIGBjcHVfYnVnc19zbXRfdXBkYXRlYCBhcyBpdCBjb3VsZCBiZSBhZmZlY3RlZCBieSBjaGFuZ2VzIHRvIEJIQiByZWxhdGVkIG1pdGlnYXRpb25zLiBMZXQncyBnZXQgdGhlc2UgcmVzdWx0cyBhbmQgZ2V0IGJhY2sgdG8gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5OTQsIk91dHB1dFRva2VucyI6MTM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6NTAuODkzODQ3NDg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MjMxOTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNSVRJR0FUSU9OX1ZNU0NBUEVcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJcIixcbiAgICBcImNwdV9idWdzX3NtdF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEJIQiBjbGVhcmluZyBtaXRpZ2F0aW9uIGZvciB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCBtb2RpZmllcyBCUEYgSklUIGNvZGUgZ2VuZXJhdGlvbiB0byB1c2UgYSByZWZhY3RvcmVkIEJIQiBjbGVhcmluZyBsb29wIGFuZCB1cGRhdGVzIEtWTSBWTS1leGl0IHBhdGhzIHRvIHVzZSBhIHN0YXRpYyBjYWxsIGZvciBwcmVkaWN0b3IgZmx1c2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNSVRJR0FUSU9OX1ZNU0NBUEVcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJcIixcbiAgICBcImNwdV9idWdzX3NtdF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEJIQiBjbGVhcmluZyBtaXRpZ2F0aW9uIGZvciB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCBtb2RpZmllcyBCUEYgSklUIGNvZGUgZ2VuZXJhdGlvbiB0byB1c2UgYSByZWZhY3RvcmVkIEJIQiBjbGVhcmluZyBsb29wIGFuZCB1cGRhdGVzIEtWTSBWTS1leGl0IHBhdGhzIHRvIHVzZSBhIHN0YXRpYyBjYWxsIGZvciBwcmVkaWN0b3IgZmx1c2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdx5fs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 17:45:37 +0000 UTC FinishedAt: 2026-06-23 17:54:52 +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": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MITIGATION_VMSCAPE", "BPF_JIT" ], "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": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MITIGATION_VMSCAPE", "BPF_JIT" ], "series_id": "6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "kvm", "net" ], "focus_symbols": [ "emit_spectre_bhb_barrier", "cpu_bugs_smt_update" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JVElHQVRJT05fVk1TQ0FQRSYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O2NwdV9idWdzX3NtdF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhOTEzZjZhNjg1Y2E5YjJhYTk1NTEyNTNjNzg2ODkyNTk4M2I5ZGRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTc6NTM6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XG5pbmRleCBkOWI5YTJiNmMxMTRjMC4uMjU1OGE1YzNkOTU2YzMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdFxuQEAgLTg2LDYgJiM0Mzs4NiwxMCBAQCBUaGUgcG9zc2libGUgdmFsdWVzIGluIHRoaXMgZmlsZSBhcmU6XG4gICAgcnVuIGEgcG90ZW50aWFsbHkgbWFsaWNpb3VzIGd1ZXN0IGFuZCBpc3N1ZXMgYW4gSUJQQiBiZWZvcmUgdGhlIGZpcnN0XG4gICAgZXhpdCB0byB1c2Vyc3BhY2UgYWZ0ZXIgVk0tZXhpdC5cbiBcbiYjNDM7ICogJiMzOTtNaXRpZ2F0aW9uOiBDbGVhciBCSEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlJiMzOTs6XG4mIzQzO1xuJiM0MzsgICBBcyBhYm92ZSwgY29uZGl0aW9uYWwgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gaXMgZW5hYmxlZC5cbiYjNDM7XG4gICogJiMzOTtNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCYjMzk7OlxuIFxuICAgIElCUEIgaXMgaXNzdWVkIG9uIGV2ZXJ5IFZNLWV4aXQuIFRoaXMgb2NjdXJzIHdoZW4gb3RoZXIgbWl0aWdhdGlvbnMgbGlrZVxuQEAgLTEwMiw5ICYjNDM7MTA2LDE4IEBAIFRoZSBtaXRpZ2F0aW9uIGNhbiBiZSBjb250cm9sbGVkIHZpYSB0aGUgYGB2bXNjYXBlPWBgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXI6XG4gXG4gICogYGB2bXNjYXBlPWlicGJgYDpcbiBcbi0gICBFbmFibGUgY29uZGl0aW9uYWwgSUJQQiBtaXRpZ2F0aW9uIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KS5cbiYjNDM7ICAgRW5hYmxlIGNvbmRpdGlvbmFsIElCUEIgbWl0aWdhdGlvbi5cbiBcbiAgKiBgYHZtc2NhcGU9Zm9yY2VgYDpcbiBcbiAgICBGb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBldmVuIG9uIHByb2Nlc3NvcnMgdGhhdCBhcmVcbiAgICBub3Qga25vd24gdG8gYmUgYWZmZWN0ZWQuXG4mIzQzO1xuJiM0MzsgKiBgYHZtc2NhcGU9YXV0b2BgOlxuJiM0MztcbiYjNDM7ICAgQ2hvb3NlIHRoZSBtaXRpZ2F0aW9uIGJhc2VkIG9uIHRoZSBWTVNDQVBFIHZhcmlhbnQgdGhlIENQVSBpcyBhZmZlY3RlZCBieS5cbiYjNDM7ICAgKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpXG4mIzQzO1xuJiM0MzsgKiBgYHZtc2NhcGU9b25gYDpcbiYjNDM7XG4mIzQzOyAgIFNhbWUgYXMgYGBhdXRvYGAsIGV4Y2VwdCB0aGF0IGl0IG92ZXJyaWRlcyBhdHRhY2sgdmVjdG9yIGNvbnRyb2xzLlxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4xMzIwYmFmOTI2NGMwNSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuQEAgLTgzMzcsOSAmIzQzOzgzMzcsMTMgQEAgS2VybmVsIHBhcmFtZXRlcnNcbiBcbiBcdFx0XHRvZmZcdFx0LSBkaXNhYmxlIHRoZSBtaXRpZ2F0aW9uXG4gXHRcdFx0aWJwYlx0XHQtIHVzZSBJbmRpcmVjdCBCcmFuY2ggUHJlZGljdGlvbiBCYXJyaWVyXG4tXHRcdFx0XHRcdCAgKElCUEIpIG1pdGlnYXRpb24gKGRlZmF1bHQpXG4mIzQzO1x0XHRcdFx0XHQgIChJQlBCKSBtaXRpZ2F0aW9uXG4gXHRcdFx0Zm9yY2VcdFx0LSBmb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBldmVuIG9uXG4gXHRcdFx0XHRcdCAgdW5hZmZlY3RlZCBwcm9jZXNzb3JzXG4mIzQzO1x0XHRcdGF1dG9cdFx0LSAoZGVmYXVsdCkgdXNlIElCUEIgb3IgQkhCIGNsZWFyXG4mIzQzO1x0XHRcdFx0XHQgIG1pdGlnYXRpb24gYmFzZWQgb24gQ1BVXG4mIzQzO1x0XHRcdG9uXHRcdC0gc2FtZSBhcyBcJiMzNDthdXRvXCYjMzQ7LCBidXQgb3ZlcnJpZGUgYXR0YWNrXG4mIzQzO1x0XHRcdFx0XHQgIHZlY3RvciBjb250cm9sXG4gXG4gXHR2c3lzY2FsbD1cdFtYODYtNjQsRUFSTFldXG4gXHRcdFx0Q29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHZzeXNjYWxscyAoaS5lLiBjYWxscyB0b1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnXG5pbmRleCBmM2Y3Y2IwMWQ2OWQwMi4uYzU5NjViY2YxNGMxZjcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9LY29uZmlnXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnXG5AQCAtMjcxNyw2ICYjNDM7MjcxNyw3IEBAIGNvbmZpZyBNSVRJR0FUSU9OX1RTQVxuIGNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcbiBcdGJvb2wgXCYjMzQ7TWl0aWdhdGUgVk1TQ0FQRVwmIzM0O1xuIFx0ZGVwZW5kcyBvbiBLVk1cbiYjNDM7XHRkZXBlbmRzIG9uIEhBVkVfU1RBVElDX0NBTExcbiBcdGRlZmF1bHQgeVxuIFx0aGVscFxuIFx0ICBFbmFibGUgbWl0aWdhdGlvbiBmb3IgVk1TQ0FQRSBhdHRhY2tzLiBWTVNDQVBFIGlzIGEgaGFyZHdhcmUgc2VjdXJpdHlcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xuaW5kZXggNDI0NDdiMWUxZGZmYTQuLjFmNTZkMDg2ZDMxMmMwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xuQEAgLTE1MjgsMTIgJiM0MzsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZClcbiAgKiByZWZhY3RvcmVkIGluIHRoZSBmdXR1cmUgaWYgbmVlZGVkLiBUaGUgLnNraXBzIGFyZSBmb3Igc2FmZXR5LCB0byBlbnN1cmVcbiAgKiB0aGF0IGFsbCBSRVRzIGFyZSBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgYSBjYWNoZWxpbmUgdG8gbWl0aWdhdGUgSW5kaXJlY3RcbiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLlxuJiM0MzsgKlxuJiM0MzsgKiBOb3RlLCBjYWxsZXJzIHNob3VsZCB1c2UgYSBzcGVjdWxhdGlvbiBiYXJyaWVyIGxpa2UgTEZFTkNFIGltbWVkaWF0ZWx5IGFmdGVyXG4mIzQzOyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuXG4gICovXG4tU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXG4mIzQzO1NZTV9GVU5DX1NUQVJUKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4gXHRBTk5PVEFURV9OT0VOREJSXG4gXHRwdXNoXHQlcmJwXG4gXHRtb3ZcdCVyc3AsICVyYnBcbi1cdG1vdmxcdCQ1LCAlZWN4XG4mIzQzO1xuJiM0MztcdG1vdnpibCAgICBiaGJfc2VxX291dGVyX2xvb3AoJXJpcCksICVlY3hcbiYjNDM7XG4gXHRBTk5PVEFURV9JTlRSQV9GVU5DVElPTl9DQUxMXG4gXHRjYWxsXHQxZlxuIFx0am1wXHQ1ZlxuQEAgLTE1NTMsOCAmIzQzOzE1NTgsOCBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcbiBcdCAqIFRoaXMgc2hvdWxkIGJlIGlkZWFsbHkgYmU6IC5za2lwIDMyIC0gKC5McmV0MiAtIDJmKSwgMHhjY1xuIFx0ICogYnV0IHNvbWUgQ2xhbmcgdmVyc2lvbnMgKGUuZy4gMTgpIGRvbiYjMzk7dCBsaWtlIHRoaXMuXG4gXHQgKi9cbi1cdC5za2lwIDMyIC0gMTgsIDB4Y2Ncbi0yOlx0bW92bFx0JDUsICVlYXhcbiYjNDM7XHQuc2tpcCAzMiAtIDIwLCAweGNjXG4mIzQzOzI6XHRtb3Z6YmwgIGJoYl9zZXFfaW5uZXJfbG9vcCglcmlwKSwgJWVheFxuIDM6XHRqbXBcdDRmXG4gXHRub3BcbiA0Olx0c3ViXHQkMSwgJWVheFxuQEAgLTE1NjIsOSAmIzQzOzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcbiBcdHN1Ylx0JDEsICVlY3hcbiBcdGpuelx0MWJcbiAuTHJldDI6XHRSRVRcbi01Olx0bGZlbmNlXG4mIzQzOzU6XG4gXHRwb3BcdCVyYnBcbiBcdFJFVFxuLVNZTV9GVU5DX0VORChjbGVhcl9iaGJfbG9vcClcbi1FWFBPUlRfU1lNQk9MX0ZPUl9LVk0oY2xlYXJfYmhiX2xvb3ApXG4tU1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wKVxuJiM0MztTWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcbiYjNDM7RVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4mIzQzO1NUQUNLX0ZSQU1FX05PTl9TVEFOREFSRChjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5pbmRleCAxZDUwNmU1ZDZmNDZhYy4uMDlmOTU2YjcyNjM3YzUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXG5AQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNBX1NRX05PXHRcdCgyMSozMiYjNDM7MTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfTDFfTk9cdFx0KDIxKjMyJiM0MzsxMikgLyogQU1EIENQVSBub3QgdnVsbmVyYWJsZSB0byBUU0EtTDEgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0NMRUFSX0NQVV9CVUZfVk1cdCgyMSozMiYjNDM7MTMpIC8qIENsZWFyIENQVSBidWZmZXJzIHVzaW5nIFZFUlcgYmVmb3JlIFZNUlVOICovXG4tI2RlZmluZSBYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUlx0KDIxKjMyJiM0MzsxNCkgLyogVXNlIElCUEIgb24gZXhpdC10by11c2Vyc3BhY2UsIHNlZSBWTVNDQVBFIGJ1ZyAqL1xuJiM0MzsvKiBGcmVlICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9BQk1DXHRcdCgyMSozMiYjNDM7MTUpIC8qIEFzc2lnbmFibGUgQmFuZHdpZHRoIE1vbml0b3JpbmcgQ291bnRlcnMgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX01TUl9JTU1cdFx0KDIxKjMyJiM0MzsxNikgLyogTVNSIGltbWVkaWF0ZSBmb3JtIGluc3RydWN0aW9ucyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk5cdCgyMSozMiYjNDM7MTcpIC8qIFN1cHBvcnQgZm9yIEVOQ0xTW0VVUERBVEVTVk5dIGluc3RydWN0aW9uICovXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuaW5kZXggZWNhMjRiNWUwN2Y0YzYuLmJlZmExNGExOTgxNzNlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oXG5AQCAtNCw2ICYjNDM7NCw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmFuZG9taXplX2tzdGFjay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdXNlci1yZXR1cm4tbm90aWZpZXIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYXNtL25vc3BlYy1icmFuY2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9pb19iaXRtYXAuaFx1MDAzZVxuQEAgLTgyLDExICYjNDM7ODMsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZShzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiBcdGN1cnJlbnRfdGhyZWFkX2luZm8oKS1cdTAwM2VzdGF0dXMgXHUwMDI2PSB+KFRTX0NPTVBBVCB8IFRTX0kzODZfUkVHU19QT0tFRCk7XG4gI2VuZGlmXG4gXG4tXHQvKiBBdm9pZCB1bm5lY2Vzc2FyeSByZWFkcyBvZiAmIzM5O3g4Nl9pYnBiX2V4aXRfdG9fdXNlciYjMzk7ICovXG4tXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikgXHUwMDI2XHUwMDI2XG4tXHQgICAgdGhpc19jcHVfcmVhZCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpKSB7XG4tXHRcdGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIoKTtcbi1cdFx0dGhpc19jcHVfd3JpdGUoeDg2X2licGJfZXhpdF90b191c2VyLCBmYWxzZSk7XG4mIzQzO1x0aWYgKHVubGlrZWx5KHRoaXNfY3B1X3JlYWQoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpKSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFNpbmNlIHRoZSBtaXRpZ2F0aW9uIGlzIGZvciB1c2Vyc3BhY2UsIGFuIGV4cGxpY2l0XG4mIzQzO1x0XHQgKiBzcGVjdWxhdGlvbiBiYXJyaWVyIGlzIG5vdCByZXF1aXJlZCBhZnRlciBmbHVzaC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0c3RhdGljX2NhbGxfY29uZCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkoKTtcbiYjNDM7XHRcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCBmYWxzZSk7XG4gXHR9XG4gfVxuICNkZWZpbmUgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlIGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmhcbmluZGV4IGQ3YzcwNGVkMWJlOWEyLi5iY2VlYWVkMjk0MGU5MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gICogYXQgbGVhc3Qgb25lIHZlbmRvciBtb2R1bGUgaXMgZW5hYmxlZC5cbiAgKi9cbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgS1ZNX0FSQ0hfTlJfT0JKU19QRVJfTUVNT1JZX0NBQ0hFIDQwXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oXG5pbmRleCA0ZjRiNWU4YTE1NzQzMC4uMzg0NzgzODMxMzliNjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxuQEAgLTMzMSwxMSAmIzQzOzMzMSwxMSBAQFxuIFxuICNpZmRlZiBDT05GSUdfWDg2XzY0XG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZXG4tXHRBTFRFUk5BVElWRSBcJiMzNDtcJiMzNDssIFwmIzM0O2NhbGwgY2xlYXJfYmhiX2xvb3BcJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QXG4mIzQzO1x0QUxURVJOQVRJVkUgXCYjMzQ7XCYjMzQ7LCBcJiMzNDtjYWxsIGNsZWFyX2JoYl9sb29wX25vZmVuY2U7IGxmZW5jZVwmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1BcbiAuZW5kbVxuIFxuIC5tYWNybyBDTEVBUl9CUkFOQ0hfSElTVE9SWV9WTUVYSVRcbi1cdEFMVEVSTkFUSVZFIFwmIzM0O1wmIzM0OywgXCYjMzQ7Y2FsbCBjbGVhcl9iaGJfbG9vcFwmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX1ZNRVhJVFxuJiM0MztcdEFMVEVSTkFUSVZFIFwmIzM0O1wmIzM0OywgXCYjMzQ7Y2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9WTUVYSVRcbiAuZW5kbVxuICNlbHNlXG4gI2RlZmluZSBDTEVBUl9CUkFOQ0hfSElTVE9SWVxuQEAgLTM4OSw3ICYjNDM7Mzg5LDkgQEAgZXh0ZXJuIHZvaWQgZW50cnlfdW50cmFpbl9yZXQodm9pZCk7XG4gZXh0ZXJuIHZvaWQgd3JpdGVfaWJwYih2b2lkKTtcbiBcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxuLWV4dGVybiB2b2lkIGNsZWFyX2JoYl9sb29wKHZvaWQpO1xuJiM0MztleHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpO1xuJiM0MzsjZWxzZVxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSh2b2lkKSB7fVxuICNlbmRpZlxuIFxuIGV4dGVybiB2b2lkICgqeDg2X3JldHVybl90aHVuaykodm9pZCk7XG5AQCAtNTMzLDcgJiM0Mzs1MzUsNyBAQCB2b2lkIGFsdGVybmF0aXZlX21zcl93cml0ZSh1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFsLCB1bnNpZ25lZCBpbnQgZmVhdHVyZSlcbiBcdFx0OiBcJiMzNDttZW1vcnlcJiMzNDspO1xuIH1cbiBcbi1ERUNMQVJFX1BFUl9DUFUoYm9vbCwgeDg2X2licGJfZXhpdF90b191c2VyKTtcbiYjNDM7REVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxuIHtcbkBAIC01NDIsMTIgJiM0Mzs1NDQsMTcgQEAgc3RhdGljIGlubGluZSB2b2lkIGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIodm9pZClcbiBcdFx0XHQgICAgOjogXCYjMzQ7cmF4XCYjMzQ7LCBcJiMzNDtyY3hcJiMzNDssIFwmIzM0O3JkeFwmIzM0OywgXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiB9XG4gXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0YXRpY19jYWxsX3R5cGVzLmhcdTAwM2VcbiYjNDM7REVDTEFSRV9TVEFUSUNfQ0FMTCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7XG4mIzQzO1xuIC8qIFRoZSBJbnRlbCBTUEVDIENUUkwgTVNSIGJhc2UgdmFsdWUgY2FjaGUgKi9cbiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0cmxfYmFzZTtcbiBERUNMQVJFX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIGV4dGVybiB2b2lkIHVwZGF0ZV9zcGVjX2N0cmxfY29uZCh1NjQgdmFsKTtcbiBleHRlcm4gdTY0IHNwZWNfY3RybF9jdXJyZW50KHZvaWQpO1xuIFxuJiM0MztleHRlcm4gdTggYmhiX3NlcV9pbm5lcl9sb29wLCBiaGJfc2VxX291dGVyX2xvb3A7XG4mIzQzO1xuIC8qXG4gICogV2l0aCByZXRwb2xpbmUsIHdlIG11c3QgdXNlIElCUlMgdG8gcmVzdHJpY3QgYnJhbmNoIHByZWRpY3Rpb25cbiAgKiBiZWZvcmUgY2FsbGluZyBpbnRvIGZpcm13YXJlLlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbmluZGV4IDgzZjUxY2FiMGIxZTM5Li40ZTBiNzdmYjIxZGQzNCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xuQEAgLTYxLDEyICYjNDM7NjEsMTEgQEAgREVGSU5FX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIEVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3NwZWNfY3RybF9jdXJyZW50KTtcbiBcbiAvKlxuLSAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gQW4gSUJQQiB3aWxsXG4tICogYmUgbmVlZGVkIHRvIGJlZm9yZSBydW5uaW5nIHVzZXJzcGFjZS4gVGhhdCBJQlBCIHdpbGwgZmx1c2ggdGhlIGJyYW5jaFxuLSAqIHByZWRpY3RvciBjb250ZW50LlxuJiM0MzsgKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEluZGljYXRlcyB0aGF0IGFcbiYjNDM7ICogYnJhbmNoIHByZWRpY3RvciBmbHVzaCBpcyBuZWVkZWQgYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLlxuICAqL1xuLURFRklORV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7XG4tRVhQT1JUX1BFUl9DUFVfU1lNQk9MX0dQTCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpO1xuJiM0MztERUZJTkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XG4mIzQzO0VYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpO1xuIFxuIHU2NCB4ODZfcHJlZF9jbWQgX19yb19hZnRlcl9pbml0ID0gUFJFRF9DTURfSUJQQjtcbiBcbkBAIC0xNDQsNiAmIzQzOzE0MywxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChjcHVfYnVmX2lkbGVfY2xlYXIpO1xuICAqL1xuIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHN3aXRjaF9tbV9jb25kX2wxZF9mbHVzaCk7XG4gXG4mIzQzOy8qXG4mIzQzOyAqIENvbnRyb2xzIGhvdyB2bXNjYXBlIGlzIG1pdGlnYXRlZCBlLmcuIHZpYSBJQlBCIG9yIEJIQi1jbGVhclxuJiM0MzsgKiBzZXF1ZW5jZS4gVGhpcyBkZWZhdWx0cyB0byBubyBtaXRpZ2F0aW9uLlxuJiM0MzsgKi9cbiYjNDM7REVGSU5FX1NUQVRJQ19DQUxMX05VTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuJiM0MztFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCk7XG4mIzQzO1xuICN1bmRlZiBwcl9mbXRcbiAjZGVmaW5lIHByX2ZtdChmbXQpXHRcJiMzNDttaXRpZ2F0aW9uczogXCYjMzQ7IGZtdFxuIFxuQEAgLTIwNDcsNiAmIzQzOzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMge1xuIHN0YXRpYyBlbnVtIGJoaV9taXRpZ2F0aW9ucyBiaGlfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxuIFx0SVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGO1xuIFxuJiM0MzsvKiBEZWZhdWx0IHRvIHNob3J0IEJIQiBzZXF1ZW5jZSB2YWx1ZXMgKi9cbiYjNDM7dTggYmhiX3NlcV9vdXRlcl9sb29wIF9fcm9fYWZ0ZXJfaW5pdCA9IDU7XG4mIzQzO3U4IGJoYl9zZXFfaW5uZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xuJiM0MztcbiBzdGF0aWMgaW50IF9faW5pdCBzcGVjdHJlX2JoaV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cilcbiB7XG4gXHRpZiAoIXN0cilcbkBAIC0zMDQ4LDE1ICYjNDM7MzA1OCwxOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgc3Jzb19hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4gZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHtcbiBcdFZNU0NBUEVfTUlUSUdBVElPTl9OT05FLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8sXG4mIzQzO1x0Vk1TQ0FQRV9NSVRJR0FUSU9OX09OLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULFxuJiM0MztcdFZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSLFxuIH07XG4gXG4gc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB2bXNjYXBlX3N0cmluZ3NbXSA9IHtcbi1cdFtWTVNDQVBFX01JVElHQVRJT05fTk9ORV1cdFx0PSBcJiMzNDtWdWxuZXJhYmxlXCYjMzQ7LFxuJiM0MztcdFtWTVNDQVBFX01JVElHQVRJT05fTk9ORV1cdFx0XHQ9IFwmIzM0O1Z1bG5lcmFibGVcJiMzNDssXG4gXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE9dICovXG4tXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSXVx0PSBcJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVwmIzM0Oyxcbi1cdFtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdXHQ9IFwmIzM0O01pdGlnYXRpb246IElCUEIgb24gVk1FWElUXCYjMzQ7LFxuJiM0MztcdC8qIFtWTVNDQVBFX01JVElHQVRJT05fT05dICovXG4mIzQzO1x0W1ZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUl1cdFx0PSBcJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVwmIzM0OyxcbiYjNDM7XHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVx0XHQ9IFwmIzM0O01pdGlnYXRpb246IElCUEIgb24gVk1FWElUXCYjMzQ7LFxuJiM0MztcdFtWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUl1cdD0gXCYjMzQ7TWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVwmIzM0OyxcbiB9O1xuIFxuIHN0YXRpYyBlbnVtIHZtc2NhcGVfbWl0aWdhdGlvbnMgdm1zY2FwZV9taXRpZ2F0aW9uIF9fcm9fYWZ0ZXJfaW5pdCA9XG5AQCAtMzA3Myw2ICYjNDM7MzA4NywxMCBAQCBzdGF0aWMgaW50IF9faW5pdCB2bXNjYXBlX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxuIFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcJiMzNDtmb3JjZVwmIzM0OykpIHtcbiBcdFx0c2V0dXBfZm9yY2VfY3B1X2J1ZyhYODZfQlVHX1ZNU0NBUEUpO1xuJiM0MztcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xuJiM0MztcdH0gZWxzZSBpZiAoIXN0cmNtcChzdHIsIFwmIzM0O29uXCYjMzQ7KSkge1xuJiM0MztcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xuJiM0MztcdH0gZWxzZSBpZiAoIXN0cmNtcChzdHIsIFwmIzM0O2F1dG9cJiMzNDspKSB7XG4gXHRcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPO1xuIFx0fSBlbHNlIHtcbiBcdFx0cHJfZXJyKFwmIzM0O0lnbm9yaW5nIHVua25vd24gdm1zY2FwZT0lcyBvcHRpb24uXFxuXCYjMzQ7LCBzdHIpO1xuQEAgLTMwODQsMTcgJiM0MzszMTAyLDQ0IEBAIGVhcmx5X3BhcmFtKFwmIzM0O3Ztc2NhcGVcJiMzNDssIHZtc2NhcGVfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb24odm9pZClcbiB7XG4tXHRpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSB8fFxuLVx0ICAgICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpIHtcbiYjNDM7XHRpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSkge1xuIFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuLVx0aWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykge1xuLVx0XHRpZiAoc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSlcbiYjNDM7XHRpZiAoKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKVxuJiM0MztcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7XG4mIzQzO1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTpcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUjpcbiYjNDM7XHRcdGlmICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUEIpKVxuJiM0MztcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuJiM0MztcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOlxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIENQVXMgd2l0aCBCSElfQ1RSTChBREwgYW5kIG5ld2VyKSBjYW4gYXZvaWQgdGhlIElCUEIgYW5kIHVzZVxuJiM0MztcdFx0ICogQkhCIGNsZWFyIHNlcXVlbmNlLiBUaGVzZSBDUFVzIGFyZSBvbmx5IHZ1bG5lcmFibGUgdG8gdGhlIEJISVxuJiM0MztcdFx0ICogdmFyaWFudCBvZiB0aGUgVk1TQ0FQRSBhdHRhY2ssIGFuZCB0aHVzIHRoZXkgZG8gbm90IHJlcXVpcmUgYVxuJiM0MztcdFx0ICogZnVsbCBwcmVkaWN0b3IgZmx1c2guXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogTm90ZSwgaW4gMzItYml0IG1vZGUgQkhCIGNsZWFyIHNlcXVlbmNlIGlzIG5vdCBzdXBwb3J0ZWQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQkhJX0NUUkwpIFx1MDAyNlx1MDAyNiBJU19FTkFCTEVEKENPTkZJR19YODZfNjQpKVxuJiM0MztcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUjtcbiYjNDM7XHRcdGVsc2UgaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHRcdGVsc2VcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0YnJlYWs7XG4gXHR9XG4gfVxuIFxuQEAgLTMxMTMsNyAmIzQzOzMxNTgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbih2b2lkKVxuIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb24odm9pZClcbiB7XG4gXHRpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUilcbi1cdFx0c2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUik7XG4mIzQzO1x0XHRzdGF0aWNfY2FsbF91cGRhdGUodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuJiM0MztcdGVsc2UgaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUilcbiYjNDM7XHRcdHN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSk7XG4gfVxuIFxuICN1bmRlZiBwcl9mbXRcbkBAIC0zMjAyLDkgJiM0MzszMjQ5LDExIEBAIHZvaWQgY3B1X2J1Z3Nfc210X3VwZGF0ZSh2b2lkKVxuIFx0c3dpdGNoICh2bXNjYXBlX21pdGlnYXRpb24pIHtcbiBcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6XG4gXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuJiM0MztcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOlxuIFx0XHRicmVhaztcbiBcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUOlxuIFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI6XG4mIzQzO1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUjpcbiBcdFx0LypcbiBcdFx0ICogSHlwZXJ2aXNvcnMgY2FuIGJlIGF0dGFja2VkIGFjcm9zcy10aHJlYWRzLCB3YXJuIGZvciBTTVQgd2hlblxuIFx0XHQgKiBTVElCUCBpcyBub3QgYWxyZWFkeSBlbmFibGVkIHN5c3RlbS13aWRlLlxuQEAgLTMyNDIsNiAmIzQzOzMyOTEsMTUgQEAgdm9pZCBfX2luaXQgY3B1X3NlbGVjdF9taXRpZ2F0aW9ucyh2b2lkKVxuIFx0XHR4ODZfc3BlY19jdHJsX2Jhc2UgXHUwMDI2PSB+U1BFQ19DVFJMX01JVElHQVRJT05TX01BU0s7XG4gXHR9XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBTd2l0Y2ggdG8gbG9uZyBCSEIgY2xlYXIgc2VxdWVuY2Ugb24gbmV3ZXIgQ1BVcyAod2l0aCBCSElfQ1RSTFxuJiM0MztcdCAqIHN1cHBvcnQpLCBzZWUgSW50ZWwmIzM5O3MgQkhJIGd1aWRhbmNlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSkge1xuJiM0MztcdFx0YmhiX3NlcV9vdXRlcl9sb29wID0gMTI7XG4mIzQzO1x0XHRiaGJfc2VxX2lubmVyX2xvb3AgPSA3O1xuJiM0MztcdH1cbiYjNDM7XG4gXHR4ODZfYXJjaF9jYXBfbXNyID0geDg2X3JlYWRfYXJjaF9jYXBfbXNyKCk7XG4gXG4gXHRjcHVfcHJpbnRfYXR0YWNrX3ZlY3RvcnMoKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDA1NTAzNTllZDc5OGZjLi5mY2Q2MWM0NzY1M2ZhMyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTE1NTYsOCAmIzQzOzExNTU2LDggQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdCAqIHNldCBmb3IgdGhlIENQVSB0aGF0IGFjdHVhbGx5IHJhbiB0aGUgZ3Vlc3QsIGFuZCBub3QgdGhlIENQVSB0aGF0IGl0XG4gXHQgKiBtYXkgbWlncmF0ZSB0by5cbiBcdCAqL1xuLVx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpKVxuLVx0XHR0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIHRydWUpO1xuJiM0MztcdGlmIChzdGF0aWNfY2FsbF9xdWVyeSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkpXG4mIzQzO1x0XHR0aGlzX2NwdV93cml0ZSh4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlciwgdHJ1ZSk7XG4gXG4gXHQvKlxuIFx0ICogQ29uc3VtZSBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzLCBpbmNsdWRpbmcgdGhlIHBvc3NpYmxlIHNvdXJjZSBvZlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggZWE5ZTcwN2U4YWJmZmIuLmU2ZDE3ZWI0ZDk0OWY5IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0xNjE5LDExICYjNDM7MTYxOSwxMyBAQCBzdGF0aWMgaW50IGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcih1OCAqKnBwcm9nLCB1OCAqaXAsXG4gXHRcdEVNSVQxKDB4NTEpOyAvKiBwdXNoIHJjeCAqL1xuIFx0XHRpcCAmIzQzOz0gMjtcbiBcbi1cdFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wO1xuJiM0MztcdFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wX25vZmVuY2U7XG4gXHRcdGlwICYjNDM7PSB4ODZfY2FsbF9kZXB0aF9lbWl0X2FjY291bnRpbmcoXHUwMDI2cHJvZywgZnVuYywgaXApO1xuIFxuIFx0XHRpZiAoZW1pdF9jYWxsKFx1MDAyNnByb2csIGZ1bmMsIGlwKSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdC8qIERvbiYjMzk7dCBzcGVjdWxhdGUgcGFzdCB0aGlzIHVudGlsIEJIQiBpcyBjbGVhcmVkICovXG4mIzQzO1x0XHRFTUlUX0xGRU5DRSgpO1xuIFx0XHRFTUlUMSgweDU5KTsgLyogcG9wIHJjeCAqL1xuIFx0XHRFTUlUMSgweDU4KTsgLyogcG9wIHJheCAqL1xuIFx0fVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva3ZtX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXG5pbmRleCBhNTY4ZDhlNmY0ZTgyOS4uYmU2MDJkM2YyODdlNTcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXG5AQCAtMTMsNiAmIzQzOzEzLDggQEBcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgXFxcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcJiMzNDtrdm0sXCYjMzQ7IF9fc3RyaW5naWZ5KEtWTV9TVUJfTU9EVUxFUykpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBcXFxuJiM0MztcdEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFwmIzM0O2t2bSxcJiMzNDsgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSlcbiAjZWxzZVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHN5bWJvbClcbiAvKlxuQEAgLTIzLDExICYjNDM7MjUsMTcgQEBcbiAjaWZuZGVmIEVYUE9SVF9TWU1CT0xfRk9SX0tWTVxuICNpZiBJU19NT0RVTEUoQ09ORklHX0tWTSlcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcJiMzNDtrdm1cJiMzNDspXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMoc3ltYm9sLCBcJiMzNDtrdm1cJiMzNDspXG4gI2Vsc2VcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxuICNlbmRpZiAvKiBJU19NT0RVTEUoQ09ORklHX0tWTSkgKi9cbi0jZW5kaWYgLyogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNICovXG4mIzQzOyNlbHNlXG4mIzQzOyNpZm5kZWYgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk1cbiYjNDM7I2Vycm9yIE11c3QgI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTSBpZiAjZGVmaW5pbmcgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNXG4gI2VuZGlmXG4mIzQzOyNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cbiYjNDM7I2VuZGlmIC8qIEtWTV9TVUJfTU9EVUxFUyAqL1xuIFxuICNpZm5kZWYgX19BU1NFTUJMRVJfX1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaCBiL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaFxuaW5kZXggNzhhNzdhNGFlMGVhODcuLmI2MTBhZmQxZWQ1NTY2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmhcbkBAIC0yMTYsNiAmIzQzOzIxNiw5IEBAIGV4dGVybiBsb25nIF9fc3RhdGljX2NhbGxfcmV0dXJuMCh2b2lkKTtcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSlcdFx0XHRcdFx0XFxcbiBcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX0tFWShuYW1lKSk7XHRcdFx0XFxcbiBcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKVxuJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVx0XHRcdFxcXG4mIzQzO1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1x0XHRcXFxuJiM0MztcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoU1RBVElDX0NBTExfVFJBTVAobmFtZSksIG1vZHMpXG4gXG4gLyogTGVhdmUgdGhlIGtleSB1bmV4cG9ydGVkLCBzbyBtb2R1bGVzIGNhbiYjMzk7dCBjaGFuZ2Ugc3RhdGljIGNhbGwgdGFyZ2V0czogKi9cbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9UUkFNUChuYW1lKVx0XHRcdFx0XHRcXFxuQEAgLTI3Niw2ICYjNDM7Mjc5LDkgQEAgZXh0ZXJuIGxvbmcgX19zdGF0aWNfY2FsbF9yZXR1cm4wKHZvaWQpO1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0XHRcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfVFJBTVAobmFtZSkpXG4mIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKG5hbWUsIG1vZHMpXHRcdFx0XFxcbiYjNDM7XHRFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcyk7XHRcdFxcXG4mIzQzO1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcbiBcbiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJiMzOTt0IGNoYW5nZSBzdGF0aWMgY2FsbCB0YXJnZXRzOiAqL1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX1RSQU1QKG5hbWUpXHRcdFx0XHRcdFxcXG5AQCAtMzQ2LDYgJiM0MzszNTIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBzdGF0aWNfY2FsbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTEwobmFtZSlcdEVYUE9SVF9TWU1CT0woU1RBVElDX0NBTExfS0VZKG5hbWUpKVxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKVxuJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVx0XHRcdFxcXG4mIzQzO1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpXG4gXG4gI2VuZGlmIC8qIENPTkZJR19IQVZFX1NUQVRJQ19DQUxMICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUlUSUdBVElPTl9WTVNDQVBFJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXImIzM0OywKICAgICYjMzQ7Y3B1X2J1Z3Nfc210X3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEJIQiBjbGVhcmluZyBtaXRpZ2F0aW9uIGZvciB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCBtb2RpZmllcyBCUEYgSklUIGNvZGUgZ2VuZXJhdGlvbiB0byB1c2UgYSByZWZhY3RvcmVkIEJIQiBjbGVhcmluZyBsb29wIGFuZCB1cGRhdGVzIEtWTSBWTS1leGl0IHBhdGhzIHRvIHVzZSBhIHN0YXRpYyBjYWxsIGZvciBwcmVkaWN0b3IgZmx1c2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTkxM2Y2YTY4NWNhOWIyYWE5NTUxMjUzYzc4Njg5MjU5ODNiOWRkYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDE3OjUzOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0CmluZGV4IGQ5YjlhMmI2YzExNGMwLi4yNTU4YTVjM2Q5NTZjMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdApAQCAtODYsNiAmIzQzOzg2LDEwIEBAIFRoZSBwb3NzaWJsZSB2YWx1ZXMgaW4gdGhpcyBmaWxlIGFyZToKICAgIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdCBhbmQgaXNzdWVzIGFuIElCUEIgYmVmb3JlIHRoZSBmaXJzdAogICAgZXhpdCB0byB1c2Vyc3BhY2UgYWZ0ZXIgVk0tZXhpdC4KIAomIzQzOyAqICYjMzk7TWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSYjMzk7OgomIzQzOwomIzQzOyAgIEFzIGFib3ZlLCBjb25kaXRpb25hbCBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBpcyBlbmFibGVkLgomIzQzOwogICogJiMzOTtNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCYjMzk7OgogCiAgICBJQlBCIGlzIGlzc3VlZCBvbiBldmVyeSBWTS1leGl0LiBUaGlzIG9jY3VycyB3aGVuIG90aGVyIG1pdGlnYXRpb25zIGxpa2UKQEAgLTEwMiw5ICYjNDM7MTA2LDE4IEBAIFRoZSBtaXRpZ2F0aW9uIGNhbiBiZSBjb250cm9sbGVkIHZpYSB0aGUgYGB2bXNjYXBlPWBgIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXI6CiAKICAqIGBgdm1zY2FwZT1pYnBiYGA6CiAKLSAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24gKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpLgomIzQzOyAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24uCiAKICAqIGBgdm1zY2FwZT1mb3JjZWBgOgogCiAgICBGb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBldmVuIG9uIHByb2Nlc3NvcnMgdGhhdCBhcmUKICAgIG5vdCBrbm93biB0byBiZSBhZmZlY3RlZC4KJiM0MzsKJiM0MzsgKiBgYHZtc2NhcGU9YXV0b2BgOgomIzQzOwomIzQzOyAgIENob29zZSB0aGUgbWl0aWdhdGlvbiBiYXNlZCBvbiB0aGUgVk1TQ0FQRSB2YXJpYW50IHRoZSBDUFUgaXMgYWZmZWN0ZWQgYnkuCiYjNDM7ICAgKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpCiYjNDM7CiYjNDM7ICogYGB2bXNjYXBlPW9uYGA6CiYjNDM7CiYjNDM7ICAgU2FtZSBhcyBgYGF1dG9gYCwgZXhjZXB0IHRoYXQgaXQgb3ZlcnJpZGVzIGF0dGFjayB2ZWN0b3IgY29udHJvbHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4xMzIwYmFmOTI2NGMwNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTgzMzcsOSAmIzQzOzgzMzcsMTMgQEAgS2VybmVsIHBhcmFtZXRlcnMKIAogCQkJb2ZmCQktIGRpc2FibGUgdGhlIG1pdGlnYXRpb24KIAkJCWlicGIJCS0gdXNlIEluZGlyZWN0IEJyYW5jaCBQcmVkaWN0aW9uIEJhcnJpZXIKLQkJCQkJICAoSUJQQikgbWl0aWdhdGlvbiAoZGVmYXVsdCkKJiM0MzsJCQkJCSAgKElCUEIpIG1pdGlnYXRpb24KIAkJCWZvcmNlCQktIGZvcmNlIHZ1bG5lcmFiaWxpdHkgZGV0ZWN0aW9uIGV2ZW4gb24KIAkJCQkJICB1bmFmZmVjdGVkIHByb2Nlc3NvcnMKJiM0MzsJCQlhdXRvCQktIChkZWZhdWx0KSB1c2UgSUJQQiBvciBCSEIgY2xlYXIKJiM0MzsJCQkJCSAgbWl0aWdhdGlvbiBiYXNlZCBvbiBDUFUKJiM0MzsJCQlvbgkJLSBzYW1lIGFzICYjMzQ7YXV0byYjMzQ7LCBidXQgb3ZlcnJpZGUgYXR0YWNrCiYjNDM7CQkJCQkgIHZlY3RvciBjb250cm9sCiAKIAl2c3lzY2FsbD0JW1g4Ni02NCxFQVJMWV0KIAkJCUNvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB2c3lzY2FsbHMgKGkuZS4gY2FsbHMgdG8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IGYzZjdjYjAxZDY5ZDAyLi5jNTk2NWJjZjE0YzFmNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9LY29uZmlnCkBAIC0yNzE3LDYgJiM0MzsyNzE3LDcgQEAgY29uZmlnIE1JVElHQVRJT05fVFNBCiBjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFCiAJYm9vbCAmIzM0O01pdGlnYXRlIFZNU0NBUEUmIzM0OwogCWRlcGVuZHMgb24gS1ZNCiYjNDM7CWRlcGVuZHMgb24gSEFWRV9TVEFUSUNfQ0FMTAogCWRlZmF1bHQgeQogCWhlbHAKIAkgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBWTVNDQVBFIGF0dGFja3MuIFZNU0NBUEUgaXMgYSBoYXJkd2FyZSBzZWN1cml0eQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKaW5kZXggNDI0NDdiMWUxZGZmYTQuLjFmNTZkMDg2ZDMxMmMwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMKQEAgLTE1MjgsMTIgJiM0MzsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZCkKICAqIHJlZmFjdG9yZWQgaW4gdGhlIGZ1dHVyZSBpZiBuZWVkZWQuIFRoZSAuc2tpcHMgYXJlIGZvciBzYWZldHksIHRvIGVuc3VyZQogICogdGhhdCBhbGwgUkVUcyBhcmUgaW4gdGhlIHNlY29uZCBoYWxmIG9mIGEgY2FjaGVsaW5lIHRvIG1pdGlnYXRlIEluZGlyZWN0CiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLgomIzQzOyAqCiYjNDM7ICogTm90ZSwgY2FsbGVycyBzaG91bGQgdXNlIGEgc3BlY3VsYXRpb24gYmFycmllciBsaWtlIExGRU5DRSBpbW1lZGlhdGVseSBhZnRlcgomIzQzOyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuCiAgKi8KLVNZTV9GVU5DX1NUQVJUKGNsZWFyX2JoYl9sb29wKQomIzQzO1NZTV9GVU5DX1NUQVJUKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCiAJQU5OT1RBVEVfTk9FTkRCUgogCXB1c2gJJXJicAogCW1vdgklcnNwLCAlcmJwCi0JbW92bAkkNSwgJWVjeAomIzQzOwomIzQzOwltb3Z6YmwgICAgYmhiX3NlcV9vdXRlcl9sb29wKCVyaXApLCAlZWN4CiYjNDM7CiAJQU5OT1RBVEVfSU5UUkFfRlVOQ1RJT05fQ0FMTAogCWNhbGwJMWYKIAlqbXAJNWYKQEAgLTE1NTMsOCAmIzQzOzE1NTgsOCBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcCkKIAkgKiBUaGlzIHNob3VsZCBiZSBpZGVhbGx5IGJlOiAuc2tpcCAzMiAtICguTHJldDIgLSAyZiksIDB4Y2MKIAkgKiBidXQgc29tZSBDbGFuZyB2ZXJzaW9ucyAoZS5nLiAxOCkgZG9uJiMzOTt0IGxpa2UgdGhpcy4KIAkgKi8KLQkuc2tpcCAzMiAtIDE4LCAweGNjCi0yOgltb3ZsCSQ1LCAlZWF4CiYjNDM7CS5za2lwIDMyIC0gMjAsIDB4Y2MKJiM0MzsyOgltb3Z6YmwgIGJoYl9zZXFfaW5uZXJfbG9vcCglcmlwKSwgJWVheAogMzoJam1wCTRmCiAJbm9wCiA0OglzdWIJJDEsICVlYXgKQEAgLTE1NjIsOSAmIzQzOzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcCkKIAlzdWIJJDEsICVlY3gKIAlqbnoJMWIKIC5McmV0MjoJUkVUCi01OglsZmVuY2UKJiM0Mzs1OgogCXBvcAklcmJwCiAJUkVUCi1TWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3ApCi1FWFBPUlRfU1lNQk9MX0ZPUl9LVk0oY2xlYXJfYmhiX2xvb3ApCi1TVEFDS19GUkFNRV9OT05fU1RBTkRBUkQoY2xlYXJfYmhiX2xvb3ApCiYjNDM7U1lNX0ZVTkNfRU5EKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCiYjNDM7RVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCiYjNDM7U1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaAppbmRleCAxZDUwNmU1ZDZmNDZhYy4uMDlmOTU2YjcyNjM3YzUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaApAQCAtNTA0LDcgJiM0Mzs1MDQsNyBAQAogI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfU1FfTk8JCSgyMSozMiYjNDM7MTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQV9MMV9OTwkJKDIxKjMyJiM0MzsxMikgLyogQU1EIENQVSBub3QgdnVsbmVyYWJsZSB0byBUU0EtTDEgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfQ0xFQVJfQ1BVX0JVRl9WTQkoMjEqMzImIzQzOzEzKSAvKiBDbGVhciBDUFUgYnVmZmVycyB1c2luZyBWRVJXIGJlZm9yZSBWTVJVTiAqLwotI2RlZmluZSBYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUgkoMjEqMzImIzQzOzE0KSAvKiBVc2UgSUJQQiBvbiBleGl0LXRvLXVzZXJzcGFjZSwgc2VlIFZNU0NBUEUgYnVnICovCiYjNDM7LyogRnJlZSAqLwogI2RlZmluZSBYODZfRkVBVFVSRV9BQk1DCQkoMjEqMzImIzQzOzE1KSAvKiBBc3NpZ25hYmxlIEJhbmR3aWR0aCBNb25pdG9yaW5nIENvdW50ZXJzICovCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX01TUl9JTU0JCSgyMSozMiYjNDM7MTYpIC8qIE1TUiBpbW1lZGlhdGUgZm9ybSBpbnN0cnVjdGlvbnMgKi8KICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk4JKDIxKjMyJiM0MzsxNykgLyogU3VwcG9ydCBmb3IgRU5DTFNbRVVQREFURVNWTl0gaW5zdHJ1Y3Rpb24gKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmgKaW5kZXggZWNhMjRiNWUwN2Y0YzYuLmJlZmExNGExOTgxNzNlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaApAQCAtNCw2ICYjNDM7NCw3IEBACiAKICNpbmNsdWRlICZsdDtsaW51eC9yYW5kb21pemVfa3N0YWNrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdXNlci1yZXR1cm4tbm90aWZpZXIuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc3RhdGljX2NhbGxfdHlwZXMuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9ub3NwZWMtYnJhbmNoLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2lvX2JpdG1hcC5oJmd0OwpAQCAtODIsMTEgJiM0Mzs4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCWN1cnJlbnRfdGhyZWFkX2luZm8oKS0mZ3Q7c3RhdHVzICZhbXA7PSB+KFRTX0NPTVBBVCB8IFRTX0kzODZfUkVHU19QT0tFRCk7CiAjZW5kaWYKIAotCS8qIEF2b2lkIHVubmVjZXNzYXJ5IHJlYWRzIG9mICYjMzk7eDg2X2licGJfZXhpdF90b191c2VyJiMzOTsgKi8KLQlpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikgJmFtcDsmYW1wOwotCSAgICB0aGlzX2NwdV9yZWFkKHg4Nl9pYnBiX2V4aXRfdG9fdXNlcikpIHsKLQkJaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcigpOwotCQl0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIGZhbHNlKTsKJiM0MzsJaWYgKHVubGlrZWx5KHRoaXNfY3B1X3JlYWQoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpKSkgewomIzQzOwkJLyoKJiM0MzsJCSAqIFNpbmNlIHRoZSBtaXRpZ2F0aW9uIGlzIGZvciB1c2Vyc3BhY2UsIGFuIGV4cGxpY2l0CiYjNDM7CQkgKiBzcGVjdWxhdGlvbiBiYXJyaWVyIGlzIG5vdCByZXF1aXJlZCBhZnRlciBmbHVzaC4KJiM0MzsJCSAqLwomIzQzOwkJc3RhdGljX2NhbGxfY29uZCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkoKTsKJiM0MzsJCXRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCBmYWxzZSk7CiAJfQogfQogI2RlZmluZSBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmUgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oCmluZGV4IGQ3YzcwNGVkMWJlOWEyLi5iY2VlYWVkMjk0MGU5MCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAgKiBhdCBsZWFzdCBvbmUgdmVuZG9yIG1vZHVsZSBpcyBlbmFibGVkLgogICovCiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpCiYjNDM7I2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpCiAjZW5kaWYKIAogI2RlZmluZSBLVk1fQVJDSF9OUl9PQkpTX1BFUl9NRU1PUllfQ0FDSEUgNDAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaAppbmRleCA0ZjRiNWU4YTE1NzQzMC4uMzg0NzgzODMxMzliNjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgKQEAgLTMzMSwxMSAmIzQzOzMzMSwxMSBAQAogCiAjaWZkZWYgQ09ORklHX1g4Nl82NAogLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZCi0JQUxURVJOQVRJVkUgJiMzNDsmIzM0OywgJiMzNDtjYWxsIGNsZWFyX2JoYl9sb29wJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QCiYjNDM7CUFMVEVSTkFUSVZFICYjMzQ7JiMzNDssICYjMzQ7Y2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2UmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1AKIC5lbmRtCiAKIC5tYWNybyBDTEVBUl9CUkFOQ0hfSElTVE9SWV9WTUVYSVQKLQlBTFRFUk5BVElWRSAmIzM0OyYjMzQ7LCAmIzM0O2NhbGwgY2xlYXJfYmhiX2xvb3AmIzM0OywgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX1ZNRVhJVAomIzQzOwlBTFRFUk5BVElWRSAmIzM0OyYjMzQ7LCAmIzM0O2NhbGwgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZTsgbGZlbmNlJiMzNDssIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9WTUVYSVQKIC5lbmRtCiAjZWxzZQogI2RlZmluZSBDTEVBUl9CUkFOQ0hfSElTVE9SWQpAQCAtMzg5LDcgJiM0MzszODksOSBAQCBleHRlcm4gdm9pZCBlbnRyeV91bnRyYWluX3JldCh2b2lkKTsKIGV4dGVybiB2b2lkIHdyaXRlX2licGIodm9pZCk7CiAKICNpZmRlZiBDT05GSUdfWDg2XzY0Ci1leHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcCh2b2lkKTsKJiM0MztleHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpOwomIzQzOyNlbHNlCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2JoYl9sb29wX25vZmVuY2Uodm9pZCkge30KICNlbmRpZgogCiBleHRlcm4gdm9pZCAoKng4Nl9yZXR1cm5fdGh1bmspKHZvaWQpOwpAQCAtNTMzLDcgJiM0Mzs1MzUsNyBAQCB2b2lkIGFsdGVybmF0aXZlX21zcl93cml0ZSh1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFsLCB1bnNpZ25lZCBpbnQgZmVhdHVyZSkKIAkJOiAmIzM0O21lbW9yeSYjMzQ7KTsKIH0KIAotREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7CiYjNDM7REVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIodm9pZCkKIHsKQEAgLTU0MiwxMiAmIzQzOzU0NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKQogCQkJICAgIDo6ICYjMzQ7cmF4JiMzNDssICYjMzQ7cmN4JiMzNDssICYjMzQ7cmR4JiMzNDssICYjMzQ7bWVtb3J5JiMzNDspOwogfQogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3N0YXRpY19jYWxsX3R5cGVzLmgmZ3Q7CiYjNDM7REVDTEFSRV9TVEFUSUNfQ0FMTCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7CiYjNDM7CiAvKiBUaGUgSW50ZWwgU1BFQyBDVFJMIE1TUiBiYXNlIHZhbHVlIGNhY2hlICovCiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0cmxfYmFzZTsKIERFQ0xBUkVfUEVSX0NQVSh1NjQsIHg4Nl9zcGVjX2N0cmxfY3VycmVudCk7CiBleHRlcm4gdm9pZCB1cGRhdGVfc3BlY19jdHJsX2NvbmQodTY0IHZhbCk7CiBleHRlcm4gdTY0IHNwZWNfY3RybF9jdXJyZW50KHZvaWQpOwogCiYjNDM7ZXh0ZXJuIHU4IGJoYl9zZXFfaW5uZXJfbG9vcCwgYmhiX3NlcV9vdXRlcl9sb29wOwomIzQzOwogLyoKICAqIFdpdGggcmV0cG9saW5lLCB3ZSBtdXN0IHVzZSBJQlJTIHRvIHJlc3RyaWN0IGJyYW5jaCBwcmVkaWN0aW9uCiAgKiBiZWZvcmUgY2FsbGluZyBpbnRvIGZpcm13YXJlLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYwppbmRleCA4M2Y1MWNhYjBiMWUzOS4uNGUwYjc3ZmIyMWRkMzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jCkBAIC02MSwxMiAmIzQzOzYxLDExIEBAIERFRklORV9QRVJfQ1BVKHU2NCwgeDg2X3NwZWNfY3RybF9jdXJyZW50KTsKIEVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3NwZWNfY3RybF9jdXJyZW50KTsKIAogLyoKLSAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gQW4gSUJQQiB3aWxsCi0gKiBiZSBuZWVkZWQgdG8gYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLiBUaGF0IElCUEIgd2lsbCBmbHVzaCB0aGUgYnJhbmNoCi0gKiBwcmVkaWN0b3IgY29udGVudC4KJiM0MzsgKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEluZGljYXRlcyB0aGF0IGEKJiM0MzsgKiBicmFuY2ggcHJlZGljdG9yIGZsdXNoIGlzIG5lZWRlZCBiZWZvcmUgcnVubmluZyB1c2Vyc3BhY2UuCiAgKi8KLURFRklORV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7Ci1FWFBPUlRfUEVSX0NQVV9TWU1CT0xfR1BMKHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7CiYjNDM7REVGSU5FX1BFUl9DUFUoYm9vbCwgeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpOwomIzQzO0VYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpOwogCiB1NjQgeDg2X3ByZWRfY21kIF9fcm9fYWZ0ZXJfaW5pdCA9IFBSRURfQ01EX0lCUEI7CiAKQEAgLTE0NCw2ICYjNDM7MTQzLDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGNwdV9idWZfaWRsZV9jbGVhcik7CiAgKi8KIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHN3aXRjaF9tbV9jb25kX2wxZF9mbHVzaCk7CiAKJiM0MzsvKgomIzQzOyAqIENvbnRyb2xzIGhvdyB2bXNjYXBlIGlzIG1pdGlnYXRlZCBlLmcuIHZpYSBJQlBCIG9yIEJIQi1jbGVhcgomIzQzOyAqIHNlcXVlbmNlLiBUaGlzIGRlZmF1bHRzIHRvIG5vIG1pdGlnYXRpb24uCiYjNDM7ICovCiYjNDM7REVGSU5FX1NUQVRJQ19DQUxMX05VTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpOwomIzQzO0VYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNKHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoKTsKJiM0MzsKICN1bmRlZiBwcl9mbXQKICNkZWZpbmUgcHJfZm10KGZtdCkJJiMzNDttaXRpZ2F0aW9uczogJiMzNDsgZm10CiAKQEAgLTIwNDcsNiAmIzQzOzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMgewogc3RhdGljIGVudW0gYmhpX21pdGlnYXRpb25zIGJoaV9taXRpZ2F0aW9uIF9fcm9fYWZ0ZXJfaW5pdCA9CiAJSVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGOwogCiYjNDM7LyogRGVmYXVsdCB0byBzaG9ydCBCSEIgc2VxdWVuY2UgdmFsdWVzICovCiYjNDM7dTggYmhiX3NlcV9vdXRlcl9sb29wIF9fcm9fYWZ0ZXJfaW5pdCA9IDU7CiYjNDM7dTggYmhiX3NlcV9pbm5lcl9sb29wIF9fcm9fYWZ0ZXJfaW5pdCA9IDU7CiYjNDM7CiBzdGF0aWMgaW50IF9faW5pdCBzcGVjdHJlX2JoaV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cikKIHsKIAlpZiAoIXN0cikKQEAgLTMwNDgsMTUgJiM0MzszMDU4LDE5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcnNvX2FwcGx5X21pdGlnYXRpb24odm9pZCkKIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB7CiAJVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkUsCiAJVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8sCiYjNDM7CVZNU0NBUEVfTUlUSUdBVElPTl9PTiwKIAlWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVIsCiAJVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULAomIzQzOwlWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUiwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgdm1zY2FwZV9zdHJpbmdzW10gPSB7Ci0JW1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXQkJPSAmIzM0O1Z1bG5lcmFibGUmIzM0OywKJiM0MzsJW1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXQkJCT0gJiMzNDtWdWxuZXJhYmxlJiMzNDssCiAJLyogW1ZNU0NBUEVfTUlUSUdBVElPTl9BVVRPXSAqLwotCVtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVJdCT0gJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSYjMzQ7LAotCVtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdCT0gJiMzNDtNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCYjMzQ7LAomIzQzOwkvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX09OXSAqLwomIzQzOwlbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSXQkJPSAmIzM0O01pdGlnYXRpb246IElCUEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlJiMzNDssCiYjNDM7CVtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdCQk9ICYjMzQ7TWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVQmIzM0OywKJiM0MzsJW1ZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSXQk9ICYjMzQ7TWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSYjMzQ7LAogfTsKIAogc3RhdGljIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB2bXNjYXBlX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID0KQEAgLTMwNzMsNiAmIzQzOzMwODcsMTAgQEAgc3RhdGljIGludCBfX2luaXQgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cikKIAkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOwogCX0gZWxzZSBpZiAoIXN0cmNtcChzdHIsICYjMzQ7Zm9yY2UmIzM0OykpIHsKIAkJc2V0dXBfZm9yY2VfY3B1X2J1ZyhYODZfQlVHX1ZNU0NBUEUpOwomIzQzOwkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OOwomIzQzOwl9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCAmIzM0O29uJiMzNDspKSB7CiYjNDM7CQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fT047CiYjNDM7CX0gZWxzZSBpZiAoIXN0cmNtcChzdHIsICYjMzQ7YXV0byYjMzQ7KSkgewogCQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fQVVUTzsKIAl9IGVsc2UgewogCQlwcl9lcnIoJiMzNDtJZ25vcmluZyB1bmtub3duIHZtc2NhcGU9JXMgb3B0aW9uLlxuJiMzNDssIHN0cik7CkBAIC0zMDg0LDE3ICYjNDM7MzEwMiw0NCBAQCBlYXJseV9wYXJhbSgmIzM0O3Ztc2NhcGUmIzM0Oywgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKTsKIAogc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb24odm9pZCkKIHsKLQlpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSB8fAotCSAgICAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUEIpKSB7CiYjNDM7CWlmICghYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX1ZNU0NBUEUpKSB7CiAJCXZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykgewotCQlpZiAoc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSkKJiM0MzsJaWYgKCh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8pICZhbXA7JmFtcDsKJiM0MzsJICAgICFzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKQomIzQzOwkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7CiYjNDM7CiYjNDM7CXN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7CiYjNDM7CWNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6CiYjNDM7CQlicmVhazsKJiM0MzsKJiM0MzsJY2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI6CiYjNDM7CQlpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSkKJiM0MzsJCQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTsKJiM0MzsJCWJyZWFrOwomIzQzOwomIzQzOwljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOgomIzQzOwljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9PTjoKJiM0MzsJCS8qCiYjNDM7CQkgKiBDUFVzIHdpdGggQkhJX0NUUkwoQURMIGFuZCBuZXdlcikgY2FuIGF2b2lkIHRoZSBJQlBCIGFuZCB1c2UKJiM0MzsJCSAqIEJIQiBjbGVhciBzZXF1ZW5jZS4gVGhlc2UgQ1BVcyBhcmUgb25seSB2dWxuZXJhYmxlIHRvIHRoZSBCSEkKJiM0MzsJCSAqIHZhcmlhbnQgb2YgdGhlIFZNU0NBUEUgYXR0YWNrLCBhbmQgdGh1cyB0aGV5IGRvIG5vdCByZXF1aXJlIGEKJiM0MzsJCSAqIGZ1bGwgcHJlZGljdG9yIGZsdXNoLgomIzQzOwkJICoKJiM0MzsJCSAqIE5vdGUsIGluIDMyLWJpdCBtb2RlIEJIQiBjbGVhciBzZXF1ZW5jZSBpcyBub3Qgc3VwcG9ydGVkLgomIzQzOwkJICovCiYjNDM7CQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSAmYW1wOyZhbXA7IElTX0VOQUJMRUQoQ09ORklHX1g4Nl82NCkpCiYjNDM7CQkJdm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI7CiYjNDM7CQllbHNlIGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpCiAJCQl2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7CiAJCWVsc2UKIAkJCXZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOwomIzQzOwkJYnJlYWs7CiYjNDM7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlicmVhazsKIAl9CiB9CiAKQEAgLTMxMTMsNyAmIzQzOzMxNTgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbih2b2lkKQogc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfYXBwbHlfbWl0aWdhdGlvbih2b2lkKQogewogCWlmICh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSKQotCQlzZXR1cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX0lCUEJfRVhJVF9UT19VU0VSKTsKJiM0MzsJCXN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7CiYjNDM7CWVsc2UgaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUikKJiM0MzsJCXN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSk7CiB9CiAKICN1bmRlZiBwcl9mbXQKQEAgLTMyMDIsOSAmIzQzOzMyNDksMTEgQEAgdm9pZCBjcHVfYnVnc19zbXRfdXBkYXRlKHZvaWQpCiAJc3dpdGNoICh2bXNjYXBlX21pdGlnYXRpb24pIHsKIAljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOgogCWNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE86CiYjNDM7CWNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOgogCQlicmVhazsKIAljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX09OX1ZNRVhJVDoKIAljYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUjoKJiM0MzsJY2FzZSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUjoKIAkJLyoKIAkJICogSHlwZXJ2aXNvcnMgY2FuIGJlIGF0dGFja2VkIGFjcm9zcy10aHJlYWRzLCB3YXJuIGZvciBTTVQgd2hlbgogCQkgKiBTVElCUCBpcyBub3QgYWxyZWFkeSBlbmFibGVkIHN5c3RlbS13aWRlLgpAQCAtMzI0Miw2ICYjNDM7MzI5MSwxNSBAQCB2b2lkIF9faW5pdCBjcHVfc2VsZWN0X21pdGlnYXRpb25zKHZvaWQpCiAJCXg4Nl9zcGVjX2N0cmxfYmFzZSAmYW1wOz0gflNQRUNfQ1RSTF9NSVRJR0FUSU9OU19NQVNLOwogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBTd2l0Y2ggdG8gbG9uZyBCSEIgY2xlYXIgc2VxdWVuY2Ugb24gbmV3ZXIgQ1BVcyAod2l0aCBCSElfQ1RSTAomIzQzOwkgKiBzdXBwb3J0KSwgc2VlIEludGVsJiMzOTtzIEJISSBndWlkYW5jZS4KJiM0MzsJICovCiYjNDM7CWlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSkgewomIzQzOwkJYmhiX3NlcV9vdXRlcl9sb29wID0gMTI7CiYjNDM7CQliaGJfc2VxX2lubmVyX2xvb3AgPSA3OwomIzQzOwl9CiYjNDM7CiAJeDg2X2FyY2hfY2FwX21zciA9IHg4Nl9yZWFkX2FyY2hfY2FwX21zcigpOwogCiAJY3B1X3ByaW50X2F0dGFja192ZWN0b3JzKCk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMDU1MDM1OWVkNzk4ZmMuLmZjZDYxYzQ3NjUzZmEzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0xMTU1Niw4ICYjNDM7MTE1NTYsOCBAQCBzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCSAqIHNldCBmb3IgdGhlIENQVSB0aGF0IGFjdHVhbGx5IHJhbiB0aGUgZ3Vlc3QsIGFuZCBub3QgdGhlIENQVSB0aGF0IGl0CiAJICogbWF5IG1pZ3JhdGUgdG8uCiAJICovCi0JaWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpKQotCQl0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIHRydWUpOwomIzQzOwlpZiAoc3RhdGljX2NhbGxfcXVlcnkodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gpKQomIzQzOwkJdGhpc19jcHVfd3JpdGUoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIsIHRydWUpOwogCiAJLyoKIAkgKiBDb25zdW1lIGFueSBwZW5kaW5nIGludGVycnVwdHMsIGluY2x1ZGluZyB0aGUgcG9zc2libGUgc291cmNlIG9mCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggZWE5ZTcwN2U4YWJmZmIuLmU2ZDE3ZWI0ZDk0OWY5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0xNjE5LDExICYjNDM7MTYxOSwxMyBAQCBzdGF0aWMgaW50IGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcih1OCAqKnBwcm9nLCB1OCAqaXAsCiAJCUVNSVQxKDB4NTEpOyAvKiBwdXNoIHJjeCAqLwogCQlpcCAmIzQzOz0gMjsKIAotCQlmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3A7CiYjNDM7CQlmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZTsKIAkJaXAgJiM0Mzs9IHg4Nl9jYWxsX2RlcHRoX2VtaXRfYWNjb3VudGluZygmYW1wO3Byb2csIGZ1bmMsIGlwKTsKIAogCQlpZiAoZW1pdF9jYWxsKCZhbXA7cHJvZywgZnVuYywgaXApKQogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkvKiBEb24mIzM5O3Qgc3BlY3VsYXRlIHBhc3QgdGhpcyB1bnRpbCBCSEIgaXMgY2xlYXJlZCAqLwomIzQzOwkJRU1JVF9MRkVOQ0UoKTsKIAkJRU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi8KIAkJRU1JVDEoMHg1OCk7IC8qIHBvcCByYXggKi8KIAl9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaAppbmRleCBhNTY4ZDhlNmY0ZTgyOS4uYmU2MDJkM2YyODdlNTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtX3R5cGVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaApAQCAtMTMsNiAmIzQzOzEzLDggQEAKIAlFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKHN5bWJvbCwgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSkKICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgXAogCUVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCAmIzM0O2t2bSwmIzM0OyBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKQomIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBcCiYjNDM7CUVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsICYjMzQ7a3ZtLCYjMzQ7IF9fc3RyaW5naWZ5KEtWTV9TVUJfTU9EVUxFUykpCiAjZWxzZQogI2RlZmluZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoc3ltYm9sKQogLyoKQEAgLTIzLDExICYjNDM7MjUsMTcgQEAKICNpZm5kZWYgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNCiAjaWYgSVNfTU9EVUxFKENPTkZJR19LVk0pCiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCAmIzM0O2t2bSYjMzQ7KQomIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMoc3ltYm9sLCAmIzM0O2t2bSYjMzQ7KQogI2Vsc2UKICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkKJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNKHN5bWJvbCkKICNlbmRpZiAvKiBJU19NT0RVTEUoQ09ORklHX0tWTSkgKi8KLSNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi8KJiM0MzsjZWxzZQomIzQzOyNpZm5kZWYgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0KJiM0MzsjZXJyb3IgTXVzdCAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNIGlmICNkZWZpbmluZyBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0KICNlbmRpZgomIzQzOyNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi8KJiM0MzsjZW5kaWYgLyogS1ZNX1NVQl9NT0RVTEVTICovCiAKICNpZm5kZWYgX19BU1NFTUJMRVJfXwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmggYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmgKaW5kZXggNzhhNzdhNGFlMGVhODcuLmI2MTBhZmQxZWQ1NTY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oCkBAIC0yMTYsNiAmIzQzOzIxNiw5IEBAIGV4dGVybiBsb25nIF9fc3RhdGljX2NhbGxfcmV0dXJuMCh2b2lkKTsKICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKQkJCQkJXAogCUVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX0tFWShuYW1lKSk7CQkJXAogCUVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKQomIzQzOyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKG5hbWUsIG1vZHMpCQkJXAomIzQzOwlFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcyk7CQlcCiYjNDM7CUVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoU1RBVElDX0NBTExfVFJBTVAobmFtZSksIG1vZHMpCiAKIC8qIExlYXZlIHRoZSBrZXkgdW5leHBvcnRlZCwgc28gbW9kdWxlcyBjYW4mIzM5O3QgY2hhbmdlIHN0YXRpYyBjYWxsIHRhcmdldHM6ICovCiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9UUkFNUChuYW1lKQkJCQkJXApAQCAtMjc2LDYgJiM0MzsyNzksOSBAQCBleHRlcm4gbG9uZyBfX3N0YXRpY19jYWxsX3JldHVybjAodm9pZCk7CiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSkJCQkJCVwKIAlFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9LRVkobmFtZSkpOwkJCVwKIAlFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSkKJiM0MzsjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKQkJCVwKJiM0MzsJRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpOwkJXAomIzQzOwlFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpLCBtb2RzKQogCiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJiMzOTt0IGNoYW5nZSBzdGF0aWMgY2FsbCB0YXJnZXRzOiAqLwogI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSkJCQkJCVwKQEAgLTM0Niw2ICYjNDM7MzUyLDggQEAgc3RhdGljIGlubGluZSBpbnQgc3RhdGljX2NhbGxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9pZCAqZW5kKQogCiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTChuYW1lKQlFWFBPUlRfU1lNQk9MKFNUQVRJQ19DQUxMX0tFWShuYW1lKSkKICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKQlFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9LRVkobmFtZSkpCiYjNDM7I2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMobmFtZSwgbW9kcykJCQlcCiYjNDM7CUVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoU1RBVElDX0NBTExfS0VZKG5hbWUpLCBtb2RzKQogCiAjZW5kaWYgLyogQ09ORklHX0hBVkVfU1RBVElDX0NBTEwgKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzcxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTQ3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBzZXJpZXMgaXMgZGVmaW5pdGVseSB0b3VjaGluZyBvbiBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaW50cm9kdWNlcyBhbnkgbmV3IHN1cmZhY2UgYXJlYSB0aGF0JiMzOTtzIHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHJlYWQgaW5kaWNhdGVzIHRoaXMgaXMgYWJvdXQgbWl0aWdhdGluZyB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCYjMzk7cyBpbnRyb2R1Y2luZyBhIG5ldyBtaXRpZ2F0aW9uIHN0cmF0ZWd5IGludm9sdmluZyBjbGVhcmluZyB0aGUgQkhCIGJlZm9yZSBleGl0aW5nIHRvIHVzZXJzcGFjZS4gVGhleSYjMzk7cmUgdXNpbmcgc3RhdGljIGNhbGxzIGZvciBhIHByZWRpY3RvciBmbHVzaC4KCkl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZXMgc3BhbiBhY3Jvc3Mgc2V2ZXJhbCBjcnVjaWFsIGFyZWFzOiBkb2N1bWVudGF0aW9uIHVwZGF0ZXMsIEtjb25maWcgbW9kaWZpY2F0aW9ucywgYW5kIGNvcmUgY29kZSBpbiBgYXJjaC94ODYvYCwgaW5jbHVkaW5nIHRoZSBlbnRyeSBwb2ludHMsIENQVSBidWcgaGFuZGxpbmcsIEtWTSBjb2RlLCBhbmQgQlBGIEpJVCBjb21waWxhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIGFuZCBub3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcuCgpUaGUgY2hhbmdlcyBhcmUgcmVhY2hpbmcgS1ZNIGFuZCBCUEYgSklULCBhbmQgdGhpcyBpcyBoYXBwZW5pbmcgb24gZXhpdCB0byB1c2VyIHNwYWNlLiBJdCBjYW4gYmUgY29udHJvbGxlZCBieSBhIGtlcm5lbCBjb21tYW5kIGxpbmUgYHZtc2NhcGU9Li4uYC4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcmVhY2hhYmlsaXR5LiBLVk0gaXMgY2VydGFpbmx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLCBzbyB0aGF0JiMzOTtzIGEgeWVzLiBCUEYgSklUIGlzIHJlYWNoYWJsZSB0b28uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXNlIGNoYW5nZXMgaW5jcmVhc2UgdGhlIGF0dGFjayBzdXJmYWNlLgoKVGhlIGJ1bGsgb2YgdGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIGZvY3VzZWQgb24gcmVwbGFjaW5nIGhhcmRjb2RlZCBJQlBCIGluc3RydWN0aW9ucyB3aXRoIHN0YXRpYyBjYWxscyB0byBlaXRoZXIgSUJQQiBvciBCSEIgY2xlYXJpbmcgYW5kIG1pbm9yIGFkanVzdG1lbnRzIHRvIHRoZSBCSEIgY2xlYXJpbmcgbG9vcC4gVGhlIEJQRiBKSVQgY2hhbmdlIGlzIGEgc2ltcGxlIGVtaXNzaW9uIG9mIGFuIGxmZW5jZSBpbnN0cnVjdGlvbi4gVGhlIEtWTSBjb2RlIHVzZXMgYHN0YXRpY19jYWxsX3F1ZXJ5YCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIENQVSBmZWF0dXJlcy4gVGhlIGVudHJ5IGNvZGUgbm93IHVzZXMgYHN0YXRpY19jYWxsX2NvbmRgIGluc3RlYWQgb2YgYW4gaW5kaXJlY3QgYnJhbmNoIHByZWRpY3Rpb24gYmFycmllci4KCkdpdmVuIHRoYXQgdGhlc2UgYXJlIG1pdGlnYXRpb25zIGFuZCB0aGUgcHJpbWFyeSBjaGFuZ2VzIGludm9sdmUgc3RhdGljIGNhbGxzIGFuZCBtaW5vciBpbnN0cnVjdGlvbiByZS1hcnJhbmdlbWVudCwgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCB0aGlzIG5vdCBhZGRpbmcgKnNpZ25pZmljYW50KiBuZXcgYXR0YWNrIHN1cmZhY2UuIEkgbmVlZCB0byBsb29rIGludG8gdGhpcyBtb3JlLCBidXQgaXQgc2VlbXMgdGhhdCB0aGVzZSBjaGFuZ2VzIG1heSBub3QgaW50cm9kdWNlICpuZXcqIHZ1bG5lcmFiaWxpdGllcyBwZXIgc2UgYnV0IGFyZSBhaW1lZCBhdCBpbXByb3ZpbmcgbWl0aWdhdGlvbiBmb3IgZXhpc3Rpbmcgb25lcy4KCkkmIzM5O3ZlIGdvdCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIGBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFYCBleGlzdHMgYW5kIGRlcGVuZHMgb24gYEhBVkVfU1RBVElDX0NBTExgIGFuZCBgS1ZNYC4gYENPTkZJR19LVk1gIGlzIGRlZmluaXRlbHkgcmVxdWlyZWQsIGFuZCBzbyBpcyBgQ09ORklHX0JQRl9KSVRgLgoKTGV0JiMzOTtzIHVzZSB0aGUgdG9vbHMgdG8gZGV0ZXJtaW5lIG90aGVyIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUlUSUdBVElPTl9WTVNDQVBFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdD0xMDE9VGhlIG1pdGlnYXRpb24gY2FuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBgYHZtc2NhcGU9YGAgY29tbWFuZCBsaW5lIHBhcmFtZXRlcjpcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3QtMTE4LSAgIENob29zZSB0aGUgbWl0aWdhdGlvbiBiYXNlZCBvbiB0aGUgVk1TQ0FQRSB2YXJpYW50IHRoZSBDUFUgaXMgYWZmZWN0ZWQgYnkuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3Q6MTE5OiAgIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0LTEyMC1cbi0tXG5hcmNoL3g4Ni9LY29uZmlnPTI3MDc9Y29uZmlnIE1JVElHQVRJT05fVFNBXG4tLVxuYXJjaC94ODYvS2NvbmZpZy0yNzE2LVxuYXJjaC94ODYvS2NvbmZpZzoyNzE3OmNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcbmFyY2gveDg2L0tjb25maWctMjcxOC1cdGJvb2wgXCYjMzQ7TWl0aWdhdGUgVk1TQ0FQRVwmIzM0O1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jPTMwNzY9c3RhdGljIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB2bXNjYXBlX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jOjMwNzc6XHRJU19FTkFCTEVEKENPTkZJR19NSVRJR0FUSU9OX1ZNU0NBUEUpID8gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8gOiBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMwNzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2OTEKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGb2N1czogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gVGhlIHF1ZXN0aW9uIG5vdyBpcywgd2hhdCBzcGVjaWZpYyBmdW5jdGlvbnMgb2ZmZXIgdGhlIGJlc3QgcmV0dXJuIG9uIGludmVzdG1lbnQgZm9yIGZ1enppbmc/IExldCBtZSBzZWXigKYgSSBoYXZlIHRocmVlIGNhbmRpZGF0ZSBmdW5jdGlvbnMgZmxhZ2dlZDogYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgZnJvbSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCwgYHZjcHVfZW50ZXJfZ3Vlc3RgIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBhbmQgYGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZWAgaW4gYGFyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oYC4KCldhaXQgYSBtaW51dGUsIGJvdGggYHZjcHVfZW50ZXJfZ3Vlc3RgIGFuZCBgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlYCBhcmUgZGVmaW5pdGVseSBob3QtcGF0aCBmdW5jdGlvbnMsIHRoYXQgbWFrZXMgdGhlbSBhIGdyZWF0IHRhcmdldC4gQnV0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLi4uIHRoYXQmIzM5O3MgdXNlZCBkdXJpbmcgQlBGIEpJVCBjb21waWxhdGlvbiwgd2hpY2ggdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGxvYWRlZCwgbm90IGEgcGFydGljdWxhcmx5IGhvdCBwYXRoLiBBbHRob3VnaCwgU3BlY3RyZSBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bSBnb2luZyB0byBzZXQgaXQgYXNpZGUgZm9yIG5vdy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfc3BlY3RyZV9iaGJfYmFycmllciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MTU4MD1zdGF0aWMgdm9pZCBlbWl0X3ByaXZfZnJhbWVfcHRyKHU4ICoqcHByb2csIHZvaWQgX19wZXJjcHUgKnByaXZfZnJhbWVfcHRyKVxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0xNjA5LVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjE2MTA6c3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTE2MTEtXHRcdFx0XHQgICAgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MjE0MT1zdDpcdFx0XHRpZiAoaXNfaW1tOChpbnNuLVx1MDAzZW9mZikpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzctXHRcdFx0ICAgICFuc19jYXBhYmxlX25vYXVkaXQoXHUwMDI2aW5pdF91c2VyX25zLCBDQVBfU1lTX0FETUlOKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjI3Mzg6XHRcdFx0XHRpZiAoZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKFx1MDAyNnByb2csIGlwLCBicGZfcHJvZykpXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjczOS1cdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MjQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGb2N1cyBmb3IgU3BlY3RyZSBCSEIgTWl0aWdhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIHNlZW1zIGxpa2UgdGhlIHByaW1lIGNhbmRpZGF0ZSBmb3IgdGFyZ2V0ZWQgZnV6emluZywgcmlnaHQ/IEJ1dCB3aGF0IGFib3V0IHRoZSBvdGhlciBtb2RpZmljYXRpb25zPyBUaG9zZSBgX19pbml0YCBmdW5jdGlvbnMgaW4gYGFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jYCDigJMgYHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb25gLCBgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uYCwgYW5kIGB2bXNjYXBlX3BhcnNlX2NtZGxpbmVgIOKAkyBhcmUgb25seSBleGVjdXRlZCBkdXJpbmcgYm9vdCwgc28gdGhleSBhcmVuJiMzOTt0IGEgcHJpb3JpdHkuIFRoZSBjaGFuZ2VzIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIChzcGVjaWZpY2FsbHkgYHZjcHVfZW50ZXJfZ3Vlc3RgKSBhbmQgYGFyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oYCAoYGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZWApIGFyZSBpbiBzdXBlciBob3QgcGF0aHMsIGFuZCB0aGUgZ3VpZGFuY2UgaXMgdG8gYXZvaWQgZnV6emluZyB0aG9zZSBkaXJlY3RseS4KClNvLCByZWFsbHksIGl0IGFsbCBib2lscyBkb3duIHRvIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBCdXQgaXMgdGhpcyBwYXRjaCBldmVuICp3b3J0aCogZnV6emluZz8gSXQmIzM5O3MgYSBoYXJkd2FyZSB2dWxuZXJhYmlsaXR5IG1pdGlnYXRpb24sIGFuZCB0aGUgY29yZSBsb2dpYyBzZWVtcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZDogc2V0dGluZyB1cCBzdGF0aWMgY2FsbHMgYW5kIGVtaXR0aW5nIGEgZmV3IGFzc2VtYmx5IGluc3RydWN0aW9ucy4gRnV6emluZyB0aGUgQlBGIEpJVCBtaWdodCBoaXQgYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAsIGJ1dCBpdCYjMzk7cyBqdXN0IGVtaXR0aW5nIGEgY2FsbCBhbmQgYW4gYGxmZW5jZWAuIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBzb3VyY2VzIG9mIGNvbXBsZXggbG9naWMgdGhhdCBjb3VsZCBoaWRlIGJ1Z3MuIFdhaXQsIGJ1dCB0aGUgcGF0Y2ggKmRvZXMqIGNoYW5nZSBgY2xlYXJfYmhiX2xvb3BgIHRvIGBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlYCBhbmQgYWRkcyBhbiBleHBsaWNpdCBgbGZlbmNlYCBpbiBCUEYgSklULiBJdCBhbHNvIHVzZXMgYSBzdGF0aWMgY2FsbCBmb3IgS1ZNIGV4aXQgbWl0aWdhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBgV29ydGhGdXp6aW5nPXRydWVgIHNlZW1zIGFwcHJvcHJpYXRlLgoKTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZm9jdXNlZCBhdHRlbnRpb24uIE9rYXksIGBicGZfaml0X2NvbXAuY2AsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYGRvX2ppdGAsIGNhbGxzIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBTbyBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfc3BlY3RyZV9iaGJfYmFycmllciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MTU4MD1zdGF0aWMgdm9pZCBlbWl0X3ByaXZfZnJhbWVfcHRyKHU4ICoqcHByb2csIHZvaWQgX19wZXJjcHUgKnByaXZfZnJhbWVfcHRyKVxuLS1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0xNjA5LVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjE2MTA6c3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTE2MTEtXHRcdFx0XHQgICAgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MjE0MT1zdDpcdFx0XHRpZiAoaXNfaW1tOChpbnNuLVx1MDAzZW9mZikpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzctXHRcdFx0ICAgICFuc19jYXBhYmxlX25vYXVkaXQoXHUwMDI2aW5pdF91c2VyX25zLCBDQVBfU1lTX0FETUlOKSkge1xuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjI3Mzg6XHRcdFx0XHRpZiAoZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKFx1MDAyNnByb2csIGlwLCBicGZfcHJvZykpXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjczOS1cdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3ODAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZXMqKgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgdnVsbmVyYWJsZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgYmV5b25kIHRoZSBpbml0aWFsIGNvbW1hbmQtbGluZSBwYXJzaW5nLCBzaW5jZSBgdm1zY2FwZV9wYXJzZV9jbWRsaW5lYCBpcyBoYW5kbGVkIGVhcmx5IGFuZCB0aGVyZWZvcmUgbm90IGZ1enplZC4gSSYjMzk7bSBub3RpbmcgdGhhdCBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCBhbmQgYHZtc2NhcGVfdXBkYXRlX21pdGlnYXRpb25gIGFyZSBhbGwgaW5pdGlhbGl6ZWQgKGBfX2luaXRgKS4gVGhhdCYjMzk7cyBnb29kIHRvIGtlZXAgaW4gbWluZCwgYnV0IHRoZXkgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGV4cGxvaXRhYmxlLiBOb3csIGhlcmUmIzM5O3MgYW4gaW50ZXJlc3Rpbmcgb25lOiBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuIFRoZSBjb21tZW50IGluZGljYXRlcyBpdCYjMzk7cyB0cmlnZ2VyZWQgZHVyaW5nIENQVSBob3RwbHVnIG9yIFNNVCBjb250cm9sIGNoYW5nZXMuIEhvdHBsdWcgZXZlbnRzIGFuZCBTTVQgdG9nZ2xpbmcgYXJlIGtub3duIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycywgc28gSSBzdXNwZWN0IGl0IG1pZ2h0IGJlIHJlYWNoYWJsZS4gVGltZSB0byBkaWcgZGVlcGVyIGludG8gYGNwdV9idWdzX3NtdF91cGRhdGVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjcHVfYnVnc19zbXRfdXBkYXRlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Z3MuaD0xMD1zdGF0aWMgaW5saW5lIGludCBwcHJvX3dpdGhfcmFtX2J1Zyh2b2lkKSB7IHJldHVybiAwOyB9XG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vYnVncy5oLTEyLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vYnVncy5oOjEzOmV4dGVybiB2b2lkIGNwdV9idWdzX3NtdF91cGRhdGUodm9pZCk7XG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWdzLmgtMTQtXG4tLVxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM9MzE1OD1zdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4tLVxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmMtMzE3My1cbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jOjMxNzQ6dm9pZCBjcHVfYnVnc19zbXRfdXBkYXRlKHZvaWQpXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMTc1LXtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jPTI1NzI9dm9pZCBhcmNoX3NtdF91cGRhdGUodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jLTI1NzQtXHQvKiBIYW5kbGUgdGhlIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiBtaXNmZWF0dXJlcyAqL1xuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYzoyNTc1Olx0Y3B1X2J1Z3Nfc210X3VwZGF0ZSgpO1xuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYy0yNTc2LVx0LyogQ2hlY2sgd2hldGhlciBJUEkgYnJvYWRjYXN0aW5nIGNhbiBiZSBlbmFibGVkICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDM3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU01ULVJlbGF0ZWQgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGNwdV9idWdzX3NtdF91cGRhdGVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGJ5IGBhcmNoX3NtdF91cGRhdGVgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBTTVQgKFNpbXVsdGFuZW91cyBNdWx0aS1UaHJlYWRpbmcpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEl0JiMzOTtzIG5vdCBpbiBhIGNyaXRpY2FsIHBlcmZvcm1hbmNlIHBhdGgsIHdoaWNoIGlzIGdvb2QuIEJ1dCBpdCAqaXMqIHJlYWNoYWJsZSwgc28gd2UgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKVGhlIGNvZGUgY2hhbmdlIGl0c2VsZiBzZWVtcyBpbmNyZWRpYmx5IG1pbm9yLiBJdCYjMzk7cyBqdXN0IGEgc2ltcGxlIGFkZGl0aW9uIG9mIGEgY291cGxlIG1vcmUgY2FzZXMgdG8gYSBgc3dpdGNoYCBzdGF0ZW1lbnQgd2l0aGluIGBjcHVfYnVnc19zbXRfdXBkYXRlYC4gUHJldHR5IHRyaXZpYWwsIGFjdHVhbGx5LCBqdXN0IGV4dGVuZGluZyB0aGUgc2NlbmFyaW9zIGNvbnNpZGVyZWQgZm9yIGB2bXNjYXBlX21pdGlnYXRpb25gLiBObyBzaWduaWZpY2FudCBhbGdvcml0aG1pYyBtb2RpZmljYXRpb25zLiBUaGlzIGlzbiYjMzk7dCB3aGVyZSB0aGUgYWN0aW9uIGlzLgoKVGhlcmVmb3JlLCB0aGUgc2lnbmlmaWNhbnQgY2hhbmdlIGlzIHJlYWxseSBpbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCB3aGljaCBpcyBhbHNvIGEgbm9uLWhvdCBwYXRoIGZ1bmN0aW9uLiBJIHNob3VsZCB2ZXJpZnkgdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLgoKQWxyaWdodCwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBUaGUga2V5IG9uZSBpcyBgTUlUSUdBVElPTl9WTVNDQVBFYC4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBkcml2ZXIgaGVyZS4gVGhlbiwgdG8gZW5hYmxlIFZNU0NBUEUsIGBLVk1gIGlzIG5lY2Vzc2FyeS4gQW5kLCBiYXNlZCBvbiB0aGUgbm9uLWhvdC1wYXRoIGZ1bmN0aW9uLCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCwgd2UgbmVlZCBgQlBGX0pJVGAuIEl0IGxvb2tzIGxpa2UgYEhBVkVfU1RBVElDX0NBTExgIGlzIGFsc28gYSBkZXBlbmRlbmN5IGZvciBgTUlUSUdBVElPTl9WTVNDQVBFYC4gVGhlc2UgY2hlY2tzIGFyZSBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBjb2RlIGJlaGF2ZXMgYXMgaW50ZW5kZWQgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYE1JVElHQVRJT05fVk1TQ0FQRWAgaW4gYGFyY2gveDg2L0tjb25maWdgIHRvIGJlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBpbiBpdHMgZGVwZW5kZW5jaWVzIG9yIGltcGxpY2F0aW9ucy4gR290dGEgZG90IHRob3NlIGkmIzM5O3MgYW5kIGNyb3NzIHRob3NlIHQmIzM5O3MsIGVzcGVjaWFsbHkgd2l0aCBzZWN1cml0eS1yZWxhdGVkIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZz0yNzA3PWNvbmZpZyBNSVRJR0FUSU9OX1RTQVxuLS1cbmFyY2gveDg2L0tjb25maWctMjcxNi1cbmFyY2gveDg2L0tjb25maWc6MjcxNzpjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXG5hcmNoL3g4Ni9LY29uZmlnLTI3MTgtXHRib29sIFwmIzM0O01pdGlnYXRlIFZNU0NBUEVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzMTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIHg4NiBBcmNoaXRlY3R1cmUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGFyY2gveDg2L0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBhaW1pbmcgZm9yIGFyb3VuZCBsaW5lIDI3MTcuIEkga25vdyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyB0byBnZXQgdGhlIHNwZWNpZmljIHBpZWNlIG9mIGluZm9ybWF0aW9uIHRoYXQgSSYjMzk7bSBsb29raW5nIGZvci4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIGZpbmQgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjcxMDpcdFx0ZGVmYXVsdCB5XG4yNzExOlx0XHRoZWxwXG4yNzEyOlx0XHQgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBUcmFuc2llbnQgU2NoZWR1bGVyIEF0dGFja3MuIFRTQSBpcyBhIGhhcmR3YXJlXG4yNzEzOlx0XHQgIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgb24gQU1EIENQVXMgd2hpY2ggY2FuIGxlYWQgdG8gZm9yd2FyZGluZyBvZlxuMjcxNDpcdFx0ICBpbnZhbGlkIGluZm8gdG8gc3Vic2VxdWVudCBpbnN0cnVjdGlvbnMgYW5kIHRodXMgY2FuIGFmZmVjdCB0aGVpclxuMjcxNTpcdFx0ICB0aW1pbmcgYW5kIHRoZXJlYnkgY2F1c2UgYSBsZWFrYWdlLlxuMjcxNjpcdFxuMjcxNzpcdGNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcbjI3MTg6XHRcdGJvb2wgXCYjMzQ7TWl0aWdhdGUgVk1TQ0FQRVwmIzM0O1xuMjcxOTpcdFx0ZGVwZW5kcyBvbiBLVk1cbjI3MjA6XHRcdGRlcGVuZHMgb24gSEFWRV9TVEFUSUNfQ0FMTFxuMjcyMTpcdFx0ZGVmYXVsdCB5XG4yNzIyOlx0XHRoZWxwXG4yNzIzOlx0XHQgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBWTVNDQVBFIGF0dGFja3MuIFZNU0NBUEUgaXMgYSBoYXJkd2FyZSBzZWN1cml0eVxuMjcyNDpcdFx0ICB2dWxuZXJhYmlsaXR5IG9uIEludGVsIGFuZCBBTUQgQ1BVcyB0aGF0IG1heSBhbGxvdyBhIGd1ZXN0IHRvIGRvXG4yNzI1Olx0XHQgIFNwZWN0cmUgdjIgc3R5bGUgYXR0YWNrcyBvbiB1c2Vyc3BhY2UgaHlwZXJ2aXNvci5cbjI3MjY6XHRlbmRpZlxuMjcyNzpcdFxuMjcyODpcdGNvbmZpZyBBUkNIX0hBU19BRERfUEFHRVNcbjI3Mjk6XHRcdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3NzQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2NjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiAgVGhhdCYjMzk7cyB0aGUga2V5LCByaWdodD8gQW5kLCBob2xkIG9uLCBpdCBkZXBlbmRzIG9uIGBLVk1gIGFuZCBgSEFWRV9TVEFUSUNfQ0FMTGAuICBUaGF0IGNvbmZpcm1zIHRoYXQgZW5hYmxpbmcgYE1JVElHQVRJT05fVk1TQ0FQRWAgaXMgZXNzZW50aWFsIGhlcmUsIGFuZCBtYWtlcyB0b3RhbCBzZW5zZSBnaXZlbiB0aGUgdnVsbmVyYWJpbGl0eSBiZWluZyBhZGRyZXNzZWQuIEFuZCBpdCBzZWVtcyB3ZSBuZWVkIGBCUEZfSklUYCBmb3IgdGhlIEJQRiBwYXJ0LgoKTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgTUlUSUdBVElPTl9WTVNDQVBFYCBpcyB0aGUgKm9ubHkqIHNpZ25pZmljYW50IGNvbmZpZyBjaGFuZ2UuLi4gTm9wZSwgdGhhdCYjMzk7cyBpdC4gR29vZC4KCkFscmlnaHQsIHRpbWUgdG8gc3VtbWFyaXplIHdoYXQgSSYjMzk7dmUgZ290OgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIHRpbWUKKiAgICoqRm9jdXNTeW1ib2xzOioqIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIC0gdGhpcyBsb29rcyBsaWtlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludC4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgTUlUSUdBVElPTl9WTVNDQVBFYCwgYEJQRl9KSVRgIC0gb2J2aW91cyBjaG9pY2VzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBhbmQgdGhlIGRlcGVuZGVuY2llcwoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gZm9yIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHksIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gYW5kIHRoZSBLVk0gVk0tZXhpdCBwYXRocy4KCk5vdywgbGV0IG1lIGRyaWxsIGRvd24gb24gYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAuIEl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uIGluIGBhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNgLiBJcyBpdCByZWFjaGFibGU/IEJpbmdvISBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgZG9faml0YCB3aGVuIGNvbXB1dGluZyBgYnBmX3Byb2ctJmd0O2F1eC0mZ3Q7aml0ZWRfbGVuYCBhbmQgd2hlbiBlbWl0dGluZyBpbnN0cnVjdGlvbnMsIGFuZCBpdCBsb29rcyBsaWtlIGEgdXNlciBjYW4gdHJpZ2dlciBpdCB0aHJvdWdoIGEgQlBGIHByb2dyYW0uCgpJIG5lZWQgdG8gY29uZmlybSBpZiBpdCBpcyB0aGUgb25seSBmdW5jdGlvbiwgd2hpY2ggSSB3YXMgYWJsZSB0byBkbyEgSSYjMzk7bSBzZWVpbmcgb3RoZXIgYXNzZW1ibHkgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGF0ZWQsIGJ1dCBsaWtlbHkgZXhlY3V0ZWQuIEFsc28sIGl0IGxvb2tzIGxpa2UgYHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoYCBpcyBhbHNvIHJlYWNoYWJsZSBieSBzdGF0aWMgY2FsbHMuIEkgYWxzbyBub3RpY2VkIHRoYXQgYGNwdV9idWdzX3NtdF91cGRhdGVgIGlzIHJlYWNoYWJsZS4KClJpZ2h0LCBiYWNrIHRvIHRoZSBpbnN0cnVjdGlvbnMuLi4gJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmLi4uJiMzNDsgIE5vLCB0aGlzIGlzICpkZWZpbml0ZWx5KiBub3QgZG9jdW1lbnRhdGlvbiwgYSBjb21tZW50LCBhIGNvbnN0YW50IGNoYW5nZSwgb3Igc29tZXRoaW5nIGltcG9zc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBpcyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBKSVQsIEtWTSBleGl0IGhhbmRsaW5nKSBhbmQgaXMgKmFic29sdXRlbHkqIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLgoKVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgc3RheXMgYHRydWVgLiBTbywgZmluYWwgc3VtbWFyeToKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlCiogICAqKkZvY3VzU3ltYm9sczoqKiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYAoqICAgKipFbmFibGVDb25maWdzOioqIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLCBgQlBGX0pJVGAKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyBCUEYgSklUIGNvbXBpbGF0aW9uIGFuZCBLVk0gVk0tZXhpdCBoYW5kbGluZyB0byBpbXBsZW1lbnQgYSBuZXcgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gZm9yIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHkuIEkgdGhpbmsgYEJQRl9KSVRgIGlzIHRoZSByaWdodCBjb25maWcgbmFtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMxNgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipDaGVja2luZyBCUEYgYW5kIEtWTSBDb25maWd1cmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXR0eSBzdXJlIGBCUEZfSklUYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJiMzOTtyZSBsb29raW5nIGF0IGhlcmUuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgZmxhZyBmb3IgdGhlIEJQRiBKdXN0LUluLVRpbWUgY29tcGlsZXIuIEl0JiMzOTtzIHRoZSBvbmUgSSByZW1lbWJlciBuZWVkaW5nIHRvIGVuYWJsZSBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyByZWxhdGVkIHRvIEJQRiBwcm9ncmFtcy4KCk5vdywgSSYjMzk7bSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNraW5nIG15IG1lbnRhbCBtYXAgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHNwYWNlLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBLVk1gIGlzIGluZGVlZCB0aGUgY29ycmVjdCBuYW1lIGZvciB0aGUgS1ZNLXJlbGF0ZWQgY29uZmlndXJhdGlvbi4gTXkgaW50dWl0aW9uIHNheXMgaXQgaXMsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgY29uZmlybSB0aGUgZXhhY3QgY29uZmlnIG5hbWUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3VjaCBmb3VuZGF0aW9uYWwgY29tcG9uZW50cy4gSSYjMzk7bSByZWNhbGxpbmcgdGhlIGdlbmVyYWwgcGF0dGVybnMgYW5kIG5hbWluZyBjb252ZW50aW9ucyB0aGF0IGFyZSB1c3VhbGx5IHVzZWQgc28gSSBjYW4gYmUgc3VyZSBJJiMzOTttIHRhbGtpbmcgYWJvdXQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjA6bWVudWNvbmZpZyBLVk1cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjEtXHRib29sIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL21pcHMva3ZtL0tjb25maWctMTctXG5hcmNoL21pcHMva3ZtL0tjb25maWc6MTg6Y29uZmlnIEtWTVxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMwLVxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzItXHRib29sIFwmIzM0O01haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTktXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNjpjb25maWcgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjctXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Mjk6Y29uZmlnIEtWTV9CT09LM1NfMzJfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozNDpjb25maWcgS1ZNX0JPT0szU182NF9IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzUtXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM3LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BPU1NJQkxFXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDQtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00Ni1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjYyOmNvbmZpZyBLVk1fQk9PSzNTXzY0XG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfNjQgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy03OC1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo3OTpjb25maWcgS1ZNX0JPT0szU182NF9IVlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBQT1dFUjcgYW5kIGxhdGVyIHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTk5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEwMS1cdHRyaXN0YXRlIFwmIzM0O0tWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyNjpjb25maWcgS1ZNX0JPT0szU19IVl9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNy1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTI5OmNvbmZpZyBLVk1fQk9PSzNTX0hWX1A5X1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgdGltaW5nIGZvciB0aGUgUDkgZW50cnkgcG9pbnRcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQxLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDMtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE1Nzpjb25maWcgS1ZNX0JPT0szU19IVl9ORVNURURfUE1VX1dPUktBUk9VTkRcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O05lc3RlZCBMMCBob3N0IHdvcmthcm91bmQgZm9yIEwxIEtWTSBob3N0IFBNVSBoYW5kbGluZyBidWdcJiMzNDsgaWYgRVhQRVJUXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE1VXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7SHlwZXJ2aXNvciBQZXJmIGV2ZW50cyBmb3IgS1ZNIEJvb2szcy1IVlwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODMtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODUtXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4Nzpjb25maWcgS1ZNX0VYSVRfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCBleGl0IHRpbWluZ1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xOTctXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTk4OmNvbmZpZyBLVk1fRTUwMFYyXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVx0Ym9vbCBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwdjIgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTItXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE0LVx0Ym9vbCBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fTVBJQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIzMC1cdGJvb2wgXCYjMzQ7S1ZNIGluLWtlcm5lbCBNUElDIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDAtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjQxOmNvbmZpZyBLVk1fWElDU1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cdGJvb2wgXCYjMzQ7S1ZNIGluLWtlcm5lbCBYSUNTIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTAtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1Mi1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc9MjI9c291cmNlIFwmIzM0O2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvbWljcm93YXR0L0tjb25maWdcJiMzNDtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy0yMy1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZzoyNDpjb25maWcgS1ZNX0dVRVNUXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXHRib29sIFwmIzM0O0tWTSBHdWVzdCBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZz0xNz1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTE4LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0yMC1cdGRlZl90cmlzdGF0ZSB5XG4tLVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ1LVxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fUzM5MF9VQ09OVFJPTFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtVc2Vyc3BhY2UgY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzXCYjMzQ7XG4tLVxuYXJjaC94ODYvS2NvbmZpZz04Mzk9c291cmNlIFwmIzM0O2FyY2gveDg2L3hlbi9LY29uZmlnXCYjMzQ7XG5hcmNoL3g4Ni9LY29uZmlnLTg0MC1cbmFyY2gveDg2L0tjb25maWc6ODQxOmNvbmZpZyBLVk1fR1VFU1RcbmFyY2gveDg2L0tjb25maWctODQyLVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuLS1cbnZpcnQva3ZtL0tjb25maWctMy1cbnZpcnQva3ZtL0tjb25maWc6NDpjb25maWcgS1ZNX0NPTU1PTlxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz0zOT1jb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxuLS1cbnZpcnQva3ZtL0tjb25maWctNDItXG52aXJ0L2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fTU1JT1xudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy00NS1cbnZpcnQva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9BU1lOQ19QRlxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWctNDktIyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xudmlydC9rdm0vS2NvbmZpZy01MS0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTYxLVxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cbnZpcnQva3ZtL0tjb25maWctNjMtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTY3LVxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG52aXJ0L2t2bS9LY29uZmlnLTY5LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTcwLVxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxudmlydC9rdm0vS2NvbmZpZy03Mi0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy03My1cbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcbnZpcnQva3ZtL0tjb25maWctNzUtICAgICAgIGRlZl9ib29sIHlcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxuLS1cbnZpcnQva3ZtL0tjb25maWctOTMtXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xudmlydC9rdm0vS2NvbmZpZy05NS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy05Ni1cbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcbnZpcnQva3ZtL0tjb25maWctOTgtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctOTktXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xudmlydC9rdm0vS2NvbmZpZy0xMDEtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctMTAyLVxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG52aXJ0L2t2bS9LY29uZmlnLTEwNC0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy0xMDUtXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXG52aXJ0L2t2bS9LY29uZmlnLTEwNy0gICAgICAgc2VsZWN0IFhBUlJBWV9NVUxUSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg0MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gZmluYWxpemluZyB0aGlzIGNvbmZpZy4gSSBrbm93IHRoYXQgYEtWTWAgaXMgdGhlIGJhc2UsIGJ1dCBgTUlUSUdBVElPTl9WTVNDQVBFYCBidWlsZHMgb24gdGhhdCBkZXBlbmRlbmN5LiBTbywgcmVhbGx5LCBzcGVjaWZ5aW5nIGBNSVRJR0FUSU9OX1ZNU0NBUEVgIGFuZCBgQlBGX0pJVGAgc2hvdWxkIGNvdmVyIGV2ZXJ5dGhpbmcgd2UgbmVlZC4KCkxldCBtZSBkbyBhIGZpbmFsIHN3ZWVwIHRocm91Z2ggdGhlIEZvY3VzU3ltYm9scy4gSSYjMzk7bSBub3RpbmcgdGhhdCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGZpbmUsIHdlIGNhbiBzdGlsbCBsaXN0IGl0LiBBbnkgb3RoZXIgZnVuY3Rpb25zIEkgbmVlZCB0byBhZGRyZXNzPyBMZXQmIzM5O3Mgc2VlLi4uIEkgaGF2ZSBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCBgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX3BhcnNlX2NtZGxpbmVgLCBhbmQgYGNwdV9idWdzX3NtdF91cGRhdGVgLgoKQWxyaWdodCwgSSYjMzk7bGwgaW5jbHVkZSBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBhbmQgYGNwdV9idWdzX3NtdF91cGRhdGVgLgoKV2FpdCBhIHNlY29uZOKApiB3YXNuJiMzOTt0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGRlcGVuZGVudCBvbiBgQ09ORklHX0JQRl9KSVRgPyBEb2VzIGBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFYCBhbHNvIGluZmx1ZW5jZSBpdHMgYXZhaWxhYmlsaXR5PyBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCB0byBjb25maXJtIHRoYXQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2MDA6XHQjZGVmaW5lIF9fTE9BRF9UQ0NfUFRSKG9mZilcdFx0XHRcXFxuMTYwMTpcdFx0RU1JVDNfb2ZmMzIoMHg0OCwgMHg4QiwgMHg4NSwgb2ZmKVxuMTYwMjpcdC8qIG1vdiByYXgsIHF3b3JkIHB0ciBbcmJwIC0gcm91bmRlZF9zdGFja19kZXB0aCAtIDE2XSAqL1xuMTYwMzpcdCNkZWZpbmUgTE9BRF9UQUlMX0NBTExfQ05UX1BUUihzdGFjaylcdFx0XHRcdFxcXG4xNjA0Olx0XHRfX0xPQURfVENDX1BUUihCUEZfVEFJTF9DQUxMX0NOVF9QVFJfU1RBQ0tfT0ZGKHN0YWNrKSlcbjE2MDU6XHRcbjE2MDY6XHQvKiBNZW1vcnkgc2l6ZS92YWx1ZSB0byBwcm90ZWN0IHByaXZhdGUgc3RhY2sgb3ZlcmZsb3cvdW5kZXJmbG93ICovXG4xNjA3Olx0I2RlZmluZSBQUklWX1NUQUNLX0dVQVJEX1NaICAgIDhcbjE2MDg6XHQjZGVmaW5lIFBSSVZfU1RBQ0tfR1VBUkRfVkFMICAgMHhFQjlGMTIzNDU2NzhlYjlmVUxMXG4xNjA5Olx0XG4xNjEwOlx0c3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuMTYxMTpcdFx0XHRcdFx0ICAgIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2cpXG4xNjEyOlx0e1xuMTYxMzpcdFx0dTggKnByb2cgPSAqcHByb2c7XG4xNjE0Olx0XHR1OCAqZnVuYztcbjE2MTU6XHRcbjE2MTY6XHRcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QKSkge1xuMTYxNzpcdFx0XHQvKiBUaGUgY2xlYXJpbmcgc2VxdWVuY2UgY2xvYmJlcnMgZWF4IGFuZCBlY3guICovXG4xNjE4Olx0XHRcdEVNSVQxKDB4NTApOyAvKiBwdXNoIHJheCAqL1xuMTYxOTpcdFx0XHRFTUlUMSgweDUxKTsgLyogcHVzaCByY3ggKi9cbjE2MjA6XHRcdFx0aXAgJiM0Mzs9IDI7XG4xNjIxOlx0XG4xNjIyOlx0XHRcdGZ1bmMgPSAodTggKiljbGVhcl9iaGJfbG9vcF9ub2ZlbmNlO1xuMTYyMzpcdFx0XHRpcCAmIzQzOz0geDg2X2NhbGxfZGVwdGhfZW1pdF9hY2NvdW50aW5nKFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcbjE2MjQ6XHRcbjE2MjU6XHRcdFx0aWYgKGVtaXRfY2FsbChcdTAwMjZwcm9nLCBmdW5jLCBpcCkpXG4xNjI2Olx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNjI3Olx0XHRcdC8qIERvbiYjMzk7dCBzcGVjdWxhdGUgcGFzdCB0aGlzIHVudGlsIEJIQiBpcyBjbGVhcmVkICovXG4xNjI4Olx0XHRcdEVNSVRfTEZFTkNFKCk7XG4xNjI5Olx0XHRcdEVNSVQxKDB4NTkpOyAvKiBwb3AgcmN4ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTk0CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBQYXRjaDogQkhJLCBWTVNDQVBFLCBhbmQgdGhlIEJQRiBKSVQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIHNlZXMgYSBjaGVjayBmb3IgYGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1ApYC4gVGhhdCByaW5ncyBhIGJlbGwg4oCTIGBjbGVhcl9iaGJfbG9vcGAgc291bmRzIGxpa2UgaXQgYmVsb25ncyB0byBCcmFuY2ggSGlzdG9yeSBJbmplY3Rpb24gKEJISSksIGFzIHNldCBieSBgYmhpX3NlbGVjdF9taXRpZ2F0aW9uYC4gQnV0IHRoaXMgcGF0Y2ggaXMgdGFnZ2VkIGFzIFZNU0NBUEUsIHNvIHNvbWV0aGluZyYjMzk7cyBhbWlzcy4KCkFoLCBJIHNlZSBpdCBub3cuIFRoZSBwYXRjaCBpc24mIzM5O3QgZGlyZWN0bHkgKmFib3V0KiBWTVNDQVBFLCBidXQgcmF0aGVyLCBpdCBhbHRlcnMgaG93IHRoZSBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBmdW5jdGlvbiBoYW5kbGVzIHRoZSBCSEIgY2xlYXJpbmcgZm9yICpib3RoKiBCSEkgYW5kIFZNU0NBUEUuIFNwZWNpZmljYWxseSwgaXQgcmVuYW1lcyBgY2xlYXJfYmhiX2xvb3BgIHRvIGBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlYCBhbmQgdGhlbiBpbmplY3RzIGFuIGV4cGxpY2l0IGBsZmVuY2VgIGluc3RydWN0aW9uIHdpdGhpbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC4gVGhlIG9yaWdpbmFsIGBsZmVuY2VgIHdhcyByZW1vdmVkIGZyb20gYGNsZWFyX2JoYl9sb29wYC4KClNvLCB0aGUgdW5kZXJseWluZyBgY2xlYXJfYmhiX2xvb3BgIGZ1bmN0aW9uIGlzIHNoYXJlZCBieSBib3RoIEJISSBhbmQgVk1TQ0FQRSBtaXRpZ2F0aW9ucywgbWVhbmluZyB0aGlzIHBhdGNoIGhhcyBhbiBpbnRlcmVzdGluZyBzaWRlIGVmZmVjdC4gVGhlIGNvcmUgVk1TQ0FQRSBtaXRpZ2F0aW9uIGxvZ2ljIGl0c2VsZiBpcyBpbiBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAgYW5kIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCB3aGljaCBhcmUgdW50b3VjaGVkLgoKVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGVmZmVjdGl2ZWx5IGludHJvZHVjaW5nIGEgKm5ldyogQkhCIGNsZWFyaW5nIHN0cmF0ZWd5IHRoYXQgaW1wYWN0cyBob3cgVk1TQ0FQRSBpcyBoYW5kbGVkLiBGdXJ0aGVybW9yZSwgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgYXJlIHJlbGV2YW50IHRvIHRoZSBCUEYgSklUIEJIQiBiYXJyaWVyLgoKVGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgTUlUSUdBVElPTl9WTVNDQVBFYCBhbmQgYEJQRl9KSVRgLiBUaGUgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgKG9idmlvdXNseSkgYW5kIHBlcmhhcHMgYGNwdV9idWdzX3NtdF91cGRhdGVgIGFzIGl0IGNvdWxkIGJlIGFmZmVjdGVkIGJ5IGNoYW5nZXMgdG8gQkhCIHJlbGF0ZWQgbWl0aWdhdGlvbnMuIExldCYjMzk7cyBnZXQgdGhlc2UgcmVzdWx0cyBhbmQgZ2V0IGJhY2sgdG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JVElHQVRJT05fVk1TQ0FQRSYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O2NwdV9idWdzX3NtdF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JVElHQVRJT05fVk1TQ0FQRSYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyJiMzNDssCiAgICAmIzM0O2NwdV9idWdzX3NtdF91cGRhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1MzowNy43MjQzNjU4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMzMTc3MzE1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlUSUdBVElPTl9WTVNDQVBFXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyXCIsXG4gICAgXCJjcHVfYnVnc19zbXRfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjA3LjcyNDM3MjgzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUzNDc2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTkxM2Y2YTY4NWNhOWIyYWE5NTUxMjUzYzc4Njg5MjU5ODNiOWRkYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxNzo1MzowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3QgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3RcXG5pbmRleCBkOWI5YTJiNmMxMTRjMC4uMjU1OGE1YzNkOTU2YzMgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XFxuQEAgLTg2LDYgKzg2LDEwIEBAIFRoZSBwb3NzaWJsZSB2YWx1ZXMgaW4gdGhpcyBmaWxlIGFyZTpcXG4gICAgcnVuIGEgcG90ZW50aWFsbHkgbWFsaWNpb3VzIGd1ZXN0IGFuZCBpc3N1ZXMgYW4gSUJQQiBiZWZvcmUgdGhlIGZpcnN0XFxuICAgIGV4aXQgdG8gdXNlcnNwYWNlIGFmdGVyIFZNLWV4aXQuXFxuIFxcbisgKiAnTWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZSc6XFxuK1xcbisgICBBcyBhYm92ZSwgY29uZGl0aW9uYWwgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gaXMgZW5hYmxlZC5cXG4rXFxuICAqICdNaXRpZ2F0aW9uOiBJQlBCIG9uIFZNRVhJVCc6XFxuIFxcbiAgICBJQlBCIGlzIGlzc3VlZCBvbiBldmVyeSBWTS1leGl0LiBUaGlzIG9jY3VycyB3aGVuIG90aGVyIG1pdGlnYXRpb25zIGxpa2VcXG5AQCAtMTAyLDkgKzEwNiwxOCBAQCBUaGUgbWl0aWdhdGlvbiBjYW4gYmUgY29udHJvbGxlZCB2aWEgdGhlIGBgdm1zY2FwZT1gYCBjb21tYW5kIGxpbmUgcGFyYW1ldGVyOlxcbiBcXG4gICogYGB2bXNjYXBlPWlicGJgYDpcXG4gXFxuLSAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24gKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpLlxcbisgICBFbmFibGUgY29uZGl0aW9uYWwgSUJQQiBtaXRpZ2F0aW9uLlxcbiBcXG4gICogYGB2bXNjYXBlPWZvcmNlYGA6XFxuIFxcbiAgICBGb3JjZSB2dWxuZXJhYmlsaXR5IGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBldmVuIG9uIHByb2Nlc3NvcnMgdGhhdCBhcmVcXG4gICAgbm90IGtub3duIHRvIGJlIGFmZmVjdGVkLlxcbitcXG4rICogYGB2bXNjYXBlPWF1dG9gYDpcXG4rXFxuKyAgIENob29zZSB0aGUgbWl0aWdhdGlvbiBiYXNlZCBvbiB0aGUgVk1TQ0FQRSB2YXJpYW50IHRoZSBDUFUgaXMgYWZmZWN0ZWQgYnkuXFxuKyAgIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KVxcbitcXG4rICogYGB2bXNjYXBlPW9uYGA6XFxuK1xcbisgICBTYW1lIGFzIGBgYXV0b2BgLCBleGNlcHQgdGhhdCBpdCBvdmVycmlkZXMgYXR0YWNrIHZlY3RvciBjb250cm9scy5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxcbmluZGV4IDk3MDA3ZjRmNjlkNGU4Li4xMzIwYmFmOTI2NGMwNSAxMDA2NDRcXG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxcbisrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XFxuQEAgLTgzMzcsOSArODMzNywxMyBAQCBLZXJuZWwgcGFyYW1ldGVyc1xcbiBcXG4gXFx0XFx0XFx0b2ZmXFx0XFx0LSBkaXNhYmxlIHRoZSBtaXRpZ2F0aW9uXFxuIFxcdFxcdFxcdGlicGJcXHRcXHQtIHVzZSBJbmRpcmVjdCBCcmFuY2ggUHJlZGljdGlvbiBCYXJyaWVyXFxuLVxcdFxcdFxcdFxcdFxcdCAgKElCUEIpIG1pdGlnYXRpb24gKGRlZmF1bHQpXFxuK1xcdFxcdFxcdFxcdFxcdCAgKElCUEIpIG1pdGlnYXRpb25cXG4gXFx0XFx0XFx0Zm9yY2VcXHRcXHQtIGZvcmNlIHZ1bG5lcmFiaWxpdHkgZGV0ZWN0aW9uIGV2ZW4gb25cXG4gXFx0XFx0XFx0XFx0XFx0ICB1bmFmZmVjdGVkIHByb2Nlc3NvcnNcXG4rXFx0XFx0XFx0YXV0b1xcdFxcdC0gKGRlZmF1bHQpIHVzZSBJQlBCIG9yIEJIQiBjbGVhclxcbitcXHRcXHRcXHRcXHRcXHQgIG1pdGlnYXRpb24gYmFzZWQgb24gQ1BVXFxuK1xcdFxcdFxcdG9uXFx0XFx0LSBzYW1lIGFzIFxcXCJhdXRvXFxcIiwgYnV0IG92ZXJyaWRlIGF0dGFja1xcbitcXHRcXHRcXHRcXHRcXHQgIHZlY3RvciBjb250cm9sXFxuIFxcbiBcXHR2c3lzY2FsbD1cXHRbWDg2LTY0LEVBUkxZXVxcbiBcXHRcXHRcXHRDb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdnN5c2NhbGxzIChpLmUuIGNhbGxzIHRvXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnXFxuaW5kZXggZjNmN2NiMDFkNjlkMDIuLmM1OTY1YmNmMTRjMWY3IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L0tjb25maWdcXG4rKysgYi9hcmNoL3g4Ni9LY29uZmlnXFxuQEAgLTI3MTcsNiArMjcxNyw3IEBAIGNvbmZpZyBNSVRJR0FUSU9OX1RTQVxcbiBjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXFxuIFxcdGJvb2wgXFxcIk1pdGlnYXRlIFZNU0NBUEVcXFwiXFxuIFxcdGRlcGVuZHMgb24gS1ZNXFxuK1xcdGRlcGVuZHMgb24gSEFWRV9TVEFUSUNfQ0FMTFxcbiBcXHRkZWZhdWx0IHlcXG4gXFx0aGVscFxcbiBcXHQgIEVuYWJsZSBtaXRpZ2F0aW9uIGZvciBWTVNDQVBFIGF0dGFja3MuIFZNU0NBUEUgaXMgYSBoYXJkd2FyZSBzZWN1cml0eVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xcbmluZGV4IDQyNDQ3YjFlMWRmZmE0Li4xZjU2ZDA4NmQzMTJjMCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TXFxuKysrIGIvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuU1xcbkBAIC0xNTI4LDEyICsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZClcXG4gICogcmVmYWN0b3JlZCBpbiB0aGUgZnV0dXJlIGlmIG5lZWRlZC4gVGhlIC5za2lwcyBhcmUgZm9yIHNhZmV0eSwgdG8gZW5zdXJlXFxuICAqIHRoYXQgYWxsIFJFVHMgYXJlIGluIHRoZSBzZWNvbmQgaGFsZiBvZiBhIGNhY2hlbGluZSB0byBtaXRpZ2F0ZSBJbmRpcmVjdFxcbiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLlxcbisgKlxcbisgKiBOb3RlLCBjYWxsZXJzIHNob3VsZCB1c2UgYSBzcGVjdWxhdGlvbiBiYXJyaWVyIGxpa2UgTEZFTkNFIGltbWVkaWF0ZWx5IGFmdGVyXFxuKyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuXFxuICAqL1xcbi1TWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcXG4rU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcXG4gXFx0QU5OT1RBVEVfTk9FTkRCUlxcbiBcXHRwdXNoXFx0JXJicFxcbiBcXHRtb3ZcXHQlcnNwLCAlcmJwXFxuLVxcdG1vdmxcXHQkNSwgJWVjeFxcbitcXG4rXFx0bW92emJsICAgIGJoYl9zZXFfb3V0ZXJfbG9vcCglcmlwKSwgJWVjeFxcbitcXG4gXFx0QU5OT1RBVEVfSU5UUkFfRlVOQ1RJT05fQ0FMTFxcbiBcXHRjYWxsXFx0MWZcXG4gXFx0am1wXFx0NWZcXG5AQCAtMTU1Myw4ICsxNTU4LDggQEAgU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXFxuIFxcdCAqIFRoaXMgc2hvdWxkIGJlIGlkZWFsbHkgYmU6IC5za2lwIDMyIC0gKC5McmV0MiAtIDJmKSwgMHhjY1xcbiBcXHQgKiBidXQgc29tZSBDbGFuZyB2ZXJzaW9ucyAoZS5nLiAxOCkgZG9uJ3QgbGlrZSB0aGlzLlxcbiBcXHQgKi9cXG4tXFx0LnNraXAgMzIgLSAxOCwgMHhjY1xcbi0yOlxcdG1vdmxcXHQkNSwgJWVheFxcbitcXHQuc2tpcCAzMiAtIDIwLCAweGNjXFxuKzI6XFx0bW92emJsICBiaGJfc2VxX2lubmVyX2xvb3AoJXJpcCksICVlYXhcXG4gMzpcXHRqbXBcXHQ0ZlxcbiBcXHRub3BcXG4gNDpcXHRzdWJcXHQkMSwgJWVheFxcbkBAIC0xNTYyLDkgKzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcXG4gXFx0c3ViXFx0JDEsICVlY3hcXG4gXFx0am56XFx0MWJcXG4gLkxyZXQyOlxcdFJFVFxcbi01OlxcdGxmZW5jZVxcbis1OlxcbiBcXHRwb3BcXHQlcmJwXFxuIFxcdFJFVFxcbi1TWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3ApXFxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTShjbGVhcl9iaGJfbG9vcClcXG4tU1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wKVxcbitTWU1fRlVOQ19FTkQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcXG4rRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXFxuK1NUQUNLX0ZSQU1FX05PTl9TVEFOREFSRChjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbmluZGV4IDFkNTA2ZTVkNmY0NmFjLi4wOWY5NTZiNzI2MzdjNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oXFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaFxcbkBAIC01MDQsNyArNTA0LDcgQEBcXG4gI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfU1FfTk9cXHRcXHQoMjEqMzIrMTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNBX0wxX05PXFx0XFx0KDIxKjMyKzEyKSAvKiBBTUQgQ1BVIG5vdCB2dWxuZXJhYmxlIHRvIFRTQS1MMSAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0NMRUFSX0NQVV9CVUZfVk1cXHQoMjEqMzIrMTMpIC8qIENsZWFyIENQVSBidWZmZXJzIHVzaW5nIFZFUlcgYmVmb3JlIFZNUlVOICovXFxuLSNkZWZpbmUgWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVJcXHQoMjEqMzIrMTQpIC8qIFVzZSBJQlBCIG9uIGV4aXQtdG8tdXNlcnNwYWNlLCBzZWUgVk1TQ0FQRSBidWcgKi9cXG4rLyogRnJlZSAqL1xcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FCTUNcXHRcXHQoMjEqMzIrMTUpIC8qIEFzc2lnbmFibGUgQmFuZHdpZHRoIE1vbml0b3JpbmcgQ291bnRlcnMgKi9cXG4gI2RlZmluZSBYODZfRkVBVFVSRV9NU1JfSU1NXFx0XFx0KDIxKjMyKzE2KSAvKiBNU1IgaW1tZWRpYXRlIGZvcm0gaW5zdHJ1Y3Rpb25zICovXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk5cXHQoMjEqMzIrMTcpIC8qIFN1cHBvcnQgZm9yIEVOQ0xTW0VVUERBVEVTVk5dIGluc3RydWN0aW9uICovXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcXG5pbmRleCBlY2EyNGI1ZTA3ZjRjNi4uYmVmYTE0YTE5ODE3M2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxcbkBAIC00LDYgKzQsNyBAQFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JhbmRvbWl6ZV9rc3RhY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VzZXItcmV0dXJuLW5vdGlmaWVyLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9ub3NwZWMtYnJhbmNoLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vaW9fYml0bWFwLmhcXHUwMDNlXFxuQEAgLTgyLDExICs4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbiBcXHRjdXJyZW50X3RocmVhZF9pbmZvKCktXFx1MDAzZXN0YXR1cyBcXHUwMDI2PSB+KFRTX0NPTVBBVCB8IFRTX0kzODZfUkVHU19QT0tFRCk7XFxuICNlbmRpZlxcbiBcXG4tXFx0LyogQXZvaWQgdW5uZWNlc3NhcnkgcmVhZHMgb2YgJ3g4Nl9pYnBiX2V4aXRfdG9fdXNlcicgKi9cXG4tXFx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICB0aGlzX2NwdV9yZWFkKHg4Nl9pYnBiX2V4aXRfdG9fdXNlcikpIHtcXG4tXFx0XFx0aW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcigpO1xcbi1cXHRcXHR0aGlzX2NwdV93cml0ZSh4ODZfaWJwYl9leGl0X3RvX3VzZXIsIGZhbHNlKTtcXG4rXFx0aWYgKHVubGlrZWx5KHRoaXNfY3B1X3JlYWQoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpKSkge1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBTaW5jZSB0aGUgbWl0aWdhdGlvbiBpcyBmb3IgdXNlcnNwYWNlLCBhbiBleHBsaWNpdFxcbitcXHRcXHQgKiBzcGVjdWxhdGlvbiBiYXJyaWVyIGlzIG5vdCByZXF1aXJlZCBhZnRlciBmbHVzaC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHN0YXRpY19jYWxsX2NvbmQodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gpKCk7XFxuK1xcdFxcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCBmYWxzZSk7XFxuIFxcdH1cXG4gfVxcbiAjZGVmaW5lIGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZSBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmVcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxcbmluZGV4IGQ3YzcwNGVkMWJlOWEyLi5iY2VlYWVkMjk0MGU5MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oXFxuQEAgLTE1LDYgKzE1LDcgQEBcXG4gICogYXQgbGVhc3Qgb25lIHZlbmRvciBtb2R1bGUgaXMgZW5hYmxlZC5cXG4gICovXFxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbClcXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpXFxuICNlbmRpZlxcbiBcXG4gI2RlZmluZSBLVk1fQVJDSF9OUl9PQkpTX1BFUl9NRU1PUllfQ0FDSEUgNDBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oXFxuaW5kZXggNGY0YjVlOGExNTc0MzAuLjM4NDc4MzgzMTM5YjY1IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxcbkBAIC0zMzEsMTEgKzMzMSwxMSBAQFxcbiBcXG4gI2lmZGVmIENPTkZJR19YODZfNjRcXG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZXFxuLVxcdEFMVEVSTkFUSVZFIFxcXCJcXFwiLCBcXFwiY2FsbCBjbGVhcl9iaGJfbG9vcFxcXCIsIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9MT09QXFxuK1xcdEFMVEVSTkFUSVZFIFxcXCJcXFwiLCBcXFwiY2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcXFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUFxcbiAuZW5kbVxcbiBcXG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZX1ZNRVhJVFxcbi1cXHRBTFRFUk5BVElWRSBcXFwiXFxcIiwgXFxcImNhbGwgY2xlYXJfYmhiX2xvb3BcXFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfVk1FWElUXFxuK1xcdEFMVEVSTkFUSVZFIFxcXCJcXFwiLCBcXFwiY2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcXFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfVk1FWElUXFxuIC5lbmRtXFxuICNlbHNlXFxuICNkZWZpbmUgQ0xFQVJfQlJBTkNIX0hJU1RPUllcXG5AQCAtMzg5LDcgKzM4OSw5IEBAIGV4dGVybiB2b2lkIGVudHJ5X3VudHJhaW5fcmV0KHZvaWQpO1xcbiBleHRlcm4gdm9pZCB3cml0ZV9pYnBiKHZvaWQpO1xcbiBcXG4gI2lmZGVmIENPTkZJR19YODZfNjRcXG4tZXh0ZXJuIHZvaWQgY2xlYXJfYmhiX2xvb3Aodm9pZCk7XFxuK2V4dGVybiB2b2lkIGNsZWFyX2JoYl9sb29wX25vZmVuY2Uodm9pZCk7XFxuKyNlbHNlXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpIHt9XFxuICNlbmRpZlxcbiBcXG4gZXh0ZXJuIHZvaWQgKCp4ODZfcmV0dXJuX3RodW5rKSh2b2lkKTtcXG5AQCAtNTMzLDcgKzUzNSw3IEBAIHZvaWQgYWx0ZXJuYXRpdmVfbXNyX3dyaXRlKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIHVuc2lnbmVkIGludCBmZWF0dXJlKVxcbiBcXHRcXHQ6IFxcXCJtZW1vcnlcXFwiKTtcXG4gfVxcbiBcXG4tREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7XFxuK0RFQ0xBUkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XFxuIFxcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxcbiB7XFxuQEAgLTU0MiwxMiArNTQ0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbmRpcmVjdF9icmFuY2hfcHJlZGljdGlvbl9iYXJyaWVyKHZvaWQpXFxuIFxcdFxcdFxcdCAgICA6OiBcXFwicmF4XFxcIiwgXFxcInJjeFxcXCIsIFxcXCJyZHhcXFwiLCBcXFwibWVtb3J5XFxcIik7XFxuIH1cXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXFx1MDAzZVxcbitERUNMQVJFX1NUQVRJQ19DQUxMKHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoLCB3cml0ZV9pYnBiKTtcXG4rXFxuIC8qIFRoZSBJbnRlbCBTUEVDIENUUkwgTVNSIGJhc2UgdmFsdWUgY2FjaGUgKi9cXG4gZXh0ZXJuIHU2NCB4ODZfc3BlY19jdHJsX2Jhc2U7XFxuIERFQ0xBUkVfUEVSX0NQVSh1NjQsIHg4Nl9zcGVjX2N0cmxfY3VycmVudCk7XFxuIGV4dGVybiB2b2lkIHVwZGF0ZV9zcGVjX2N0cmxfY29uZCh1NjQgdmFsKTtcXG4gZXh0ZXJuIHU2NCBzcGVjX2N0cmxfY3VycmVudCh2b2lkKTtcXG4gXFxuK2V4dGVybiB1OCBiaGJfc2VxX2lubmVyX2xvb3AsIGJoYl9zZXFfb3V0ZXJfbG9vcDtcXG4rXFxuIC8qXFxuICAqIFdpdGggcmV0cG9saW5lLCB3ZSBtdXN0IHVzZSBJQlJTIHRvIHJlc3RyaWN0IGJyYW5jaCBwcmVkaWN0aW9uXFxuICAqIGJlZm9yZSBjYWxsaW5nIGludG8gZmlybXdhcmUuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcXG5pbmRleCA4M2Y1MWNhYjBiMWUzOS4uNGUwYjc3ZmIyMWRkMzQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcXG4rKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xcbkBAIC02MSwxMiArNjEsMTEgQEAgREVGSU5FX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xcbiBFWFBPUlRfUEVSX0NQVV9TWU1CT0xfR1BMKHg4Nl9zcGVjX2N0cmxfY3VycmVudCk7XFxuIFxcbiAvKlxcbi0gKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEFuIElCUEIgd2lsbFxcbi0gKiBiZSBuZWVkZWQgdG8gYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLiBUaGF0IElCUEIgd2lsbCBmbHVzaCB0aGUgYnJhbmNoXFxuLSAqIHByZWRpY3RvciBjb250ZW50LlxcbisgKiBTZXQgd2hlbiB0aGUgQ1BVIGhhcyBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QuIEluZGljYXRlcyB0aGF0IGFcXG4rICogYnJhbmNoIHByZWRpY3RvciBmbHVzaCBpcyBuZWVkZWQgYmVmb3JlIHJ1bm5pbmcgdXNlcnNwYWNlLlxcbiAgKi9cXG4tREVGSU5FX1BFUl9DUFUoYm9vbCwgeDg2X2licGJfZXhpdF90b191c2VyKTtcXG4tRVhQT1JUX1BFUl9DUFVfU1lNQk9MX0dQTCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpO1xcbitERUZJTkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XFxuK0VYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIpO1xcbiBcXG4gdTY0IHg4Nl9wcmVkX2NtZCBfX3JvX2FmdGVyX2luaXQgPSBQUkVEX0NNRF9JQlBCO1xcbiBcXG5AQCAtMTQ0LDYgKzE0MywxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChjcHVfYnVmX2lkbGVfY2xlYXIpO1xcbiAgKi9cXG4gREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoc3dpdGNoX21tX2NvbmRfbDFkX2ZsdXNoKTtcXG4gXFxuKy8qXFxuKyAqIENvbnRyb2xzIGhvdyB2bXNjYXBlIGlzIG1pdGlnYXRlZCBlLmcuIHZpYSBJQlBCIG9yIEJIQi1jbGVhclxcbisgKiBzZXF1ZW5jZS4gVGhpcyBkZWZhdWx0cyB0byBubyBtaXRpZ2F0aW9uLlxcbisgKi9cXG4rREVGSU5FX1NUQVRJQ19DQUxMX05VTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xcbitFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCk7XFxuK1xcbiAjdW5kZWYgcHJfZm10XFxuICNkZWZpbmUgcHJfZm10KGZtdClcXHRcXFwibWl0aWdhdGlvbnM6IFxcXCIgZm10XFxuIFxcbkBAIC0yMDQ3LDYgKzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMge1xcbiBzdGF0aWMgZW51bSBiaGlfbWl0aWdhdGlvbnMgYmhpX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID1cXG4gXFx0SVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGO1xcbiBcXG4rLyogRGVmYXVsdCB0byBzaG9ydCBCSEIgc2VxdWVuY2UgdmFsdWVzICovXFxuK3U4IGJoYl9zZXFfb3V0ZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xcbit1OCBiaGJfc2VxX2lubmVyX2xvb3AgX19yb19hZnRlcl9pbml0ID0gNTtcXG4rXFxuIHN0YXRpYyBpbnQgX19pbml0IHNwZWN0cmVfYmhpX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxcbiB7XFxuIFxcdGlmICghc3RyKVxcbkBAIC0zMDQ4LDE1ICszMDU4LDE5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBzcnNvX2FwcGx5X21pdGlnYXRpb24odm9pZClcXG4gZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHtcXG4gXFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX05PTkUsXFxuIFxcdFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPLFxcbitcXHRWTVNDQVBFX01JVElHQVRJT05fT04sXFxuIFxcdFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUixcXG4gXFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULFxcbitcXHRWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUixcXG4gfTtcXG4gXFxuIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgdm1zY2FwZV9zdHJpbmdzW10gPSB7XFxuLVxcdFtWTVNDQVBFX01JVElHQVRJT05fTk9ORV1cXHRcXHQ9IFxcXCJWdWxuZXJhYmxlXFxcIixcXG4rXFx0W1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXVxcdFxcdFxcdD0gXFxcIlZ1bG5lcmFibGVcXFwiLFxcbiBcXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE9dICovXFxuLVxcdFtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVJdXFx0PSBcXFwiTWl0aWdhdGlvbjogSUJQQiBiZWZvcmUgZXhpdCB0byB1c2Vyc3BhY2VcXFwiLFxcbi1cXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVxcdD0gXFxcIk1pdGlnYXRpb246IElCUEIgb24gVk1FWElUXFxcIixcXG4rXFx0LyogW1ZNU0NBUEVfTUlUSUdBVElPTl9PTl0gKi9cXG4rXFx0W1ZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUl1cXHRcXHQ9IFxcXCJNaXRpZ2F0aW9uOiBJQlBCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVxcXCIsXFxuK1xcdFtWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVRdXFx0XFx0PSBcXFwiTWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVRcXFwiLFxcbitcXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVJdXFx0PSBcXFwiTWl0aWdhdGlvbjogQ2xlYXIgQkhCIGJlZm9yZSBleGl0IHRvIHVzZXJzcGFjZVxcXCIsXFxuIH07XFxuIFxcbiBzdGF0aWMgZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHZtc2NhcGVfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxcbkBAIC0zMDczLDYgKzMwODcsMTAgQEAgc3RhdGljIGludCBfX2luaXQgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKGNoYXIgKnN0cilcXG4gXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSO1xcbiBcXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcXFwiZm9yY2VcXFwiKSkge1xcbiBcXHRcXHRzZXR1cF9mb3JjZV9jcHVfYnVnKFg4Nl9CVUdfVk1TQ0FQRSk7XFxuK1xcdFxcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9PTjtcXG4rXFx0fSBlbHNlIGlmICghc3RyY21wKHN0ciwgXFxcIm9uXFxcIikpIHtcXG4rXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xcbitcXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcXFwiYXV0b1xcXCIpKSB7XFxuIFxcdFxcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPO1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRwcl9lcnIoXFxcIklnbm9yaW5nIHVua25vd24gdm1zY2FwZT0lcyBvcHRpb24uXFxcXG5cXFwiLCBzdHIpO1xcbkBAIC0zMDg0LDE3ICszMTAyLDQ0IEBAIGVhcmx5X3BhcmFtKFxcXCJ2bXNjYXBlXFxcIiwgdm1zY2FwZV9wYXJzZV9jbWRsaW5lKTtcXG4gXFxuIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX3NlbGVjdF9taXRpZ2F0aW9uKHZvaWQpXFxuIHtcXG4tXFx0aWYgKCFib290X2NwdV9oYXNfYnVnKFg4Nl9CVUdfVk1TQ0FQRSkgfHxcXG4tXFx0ICAgICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpIHtcXG4rXFx0aWYgKCFib290X2NwdV9oYXNfYnVnKFg4Nl9CVUdfVk1TQ0FQRSkpIHtcXG4gXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQVVUTykge1xcbi1cXHRcXHRpZiAoc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSlcXG4rXFx0aWYgKCh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8pIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhc2hvdWxkX21pdGlnYXRlX3Z1bG4oWDg2X0JVR19WTVNDQVBFKSlcXG4rXFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XFxuK1xcbitcXHRzd2l0Y2ggKHZtc2NhcGVfbWl0aWdhdGlvbikge1xcbitcXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOlxcbitcXHRcXHRicmVhaztcXG4rXFxuK1xcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOlxcbitcXHRcXHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcXG4rXFx0XFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU7XFxuK1xcdFxcdGJyZWFrO1xcbitcXG4rXFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fQVVUTzpcXG4rXFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fT046XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIENQVXMgd2l0aCBCSElfQ1RSTChBREwgYW5kIG5ld2VyKSBjYW4gYXZvaWQgdGhlIElCUEIgYW5kIHVzZVxcbitcXHRcXHQgKiBCSEIgY2xlYXIgc2VxdWVuY2UuIFRoZXNlIENQVXMgYXJlIG9ubHkgdnVsbmVyYWJsZSB0byB0aGUgQkhJXFxuK1xcdFxcdCAqIHZhcmlhbnQgb2YgdGhlIFZNU0NBUEUgYXR0YWNrLCBhbmQgdGh1cyB0aGV5IGRvIG5vdCByZXF1aXJlIGFcXG4rXFx0XFx0ICogZnVsbCBwcmVkaWN0b3IgZmx1c2guXFxuK1xcdFxcdCAqXFxuK1xcdFxcdCAqIE5vdGUsIGluIDMyLWJpdCBtb2RlIEJIQiBjbGVhciBzZXF1ZW5jZSBpcyBub3Qgc3VwcG9ydGVkLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9CSElfQ1RSTCkgXFx1MDAyNlxcdTAwMjYgSVNfRU5BQkxFRChDT05GSUdfWDg2XzY0KSlcXG4rXFx0XFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI7XFxuK1xcdFxcdGVsc2UgaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcXG4gXFx0XFx0XFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FO1xcbitcXHRcXHRicmVhaztcXG4rXFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTMxMTMsNyArMzE1OCw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX3VwZGF0ZV9taXRpZ2F0aW9uKHZvaWQpXFxuIHN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb24odm9pZClcXG4ge1xcbiBcXHRpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUilcXG4tXFx0XFx0c2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUik7XFxuK1xcdFxcdHN0YXRpY19jYWxsX3VwZGF0ZSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7XFxuK1xcdGVsc2UgaWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUilcXG4rXFx0XFx0c3RhdGljX2NhbGxfdXBkYXRlKHZtc2NhcGVfcHJlZGljdG9yX2ZsdXNoLCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKTtcXG4gfVxcbiBcXG4gI3VuZGVmIHByX2ZtdFxcbkBAIC0zMjAyLDkgKzMyNDksMTEgQEAgdm9pZCBjcHVfYnVnc19zbXRfdXBkYXRlKHZvaWQpXFxuIFxcdHN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7XFxuIFxcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6XFxuIFxcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE86XFxuK1xcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX09OOlxcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVQ6XFxuIFxcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOlxcbitcXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSOlxcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBIeXBlcnZpc29ycyBjYW4gYmUgYXR0YWNrZWQgYWNyb3NzLXRocmVhZHMsIHdhcm4gZm9yIFNNVCB3aGVuXFxuIFxcdFxcdCAqIFNUSUJQIGlzIG5vdCBhbHJlYWR5IGVuYWJsZWQgc3lzdGVtLXdpZGUuXFxuQEAgLTMyNDIsNiArMzI5MSwxNSBAQCB2b2lkIF9faW5pdCBjcHVfc2VsZWN0X21pdGlnYXRpb25zKHZvaWQpXFxuIFxcdFxcdHg4Nl9zcGVjX2N0cmxfYmFzZSBcXHUwMDI2PSB+U1BFQ19DVFJMX01JVElHQVRJT05TX01BU0s7XFxuIFxcdH1cXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFN3aXRjaCB0byBsb25nIEJIQiBjbGVhciBzZXF1ZW5jZSBvbiBuZXdlciBDUFVzICh3aXRoIEJISV9DVFJMXFxuK1xcdCAqIHN1cHBvcnQpLCBzZWUgSW50ZWwncyBCSEkgZ3VpZGFuY2UuXFxuK1xcdCAqL1xcbitcXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9CSElfQ1RSTCkpIHtcXG4rXFx0XFx0YmhiX3NlcV9vdXRlcl9sb29wID0gMTI7XFxuK1xcdFxcdGJoYl9zZXFfaW5uZXJfbG9vcCA9IDc7XFxuK1xcdH1cXG4rXFxuIFxcdHg4Nl9hcmNoX2NhcF9tc3IgPSB4ODZfcmVhZF9hcmNoX2NhcF9tc3IoKTtcXG4gXFxuIFxcdGNwdV9wcmludF9hdHRhY2tfdmVjdG9ycygpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCAwNTUwMzU5ZWQ3OThmYy4uZmNkNjFjNDc2NTNmYTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuQEAgLTExNTU2LDggKzExNTU2LDggQEAgc3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0ICogc2V0IGZvciB0aGUgQ1BVIHRoYXQgYWN0dWFsbHkgcmFuIHRoZSBndWVzdCwgYW5kIG5vdCB0aGUgQ1BVIHRoYXQgaXRcXG4gXFx0ICogbWF5IG1pZ3JhdGUgdG8uXFxuIFxcdCAqL1xcbi1cXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikpXFxuLVxcdFxcdHRoaXNfY3B1X3dyaXRlKHg4Nl9pYnBiX2V4aXRfdG9fdXNlciwgdHJ1ZSk7XFxuK1xcdGlmIChzdGF0aWNfY2FsbF9xdWVyeSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkpXFxuK1xcdFxcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCB0cnVlKTtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIENvbnN1bWUgYW55IHBlbmRpbmcgaW50ZXJydXB0cywgaW5jbHVkaW5nIHRoZSBwb3NzaWJsZSBzb3VyY2Ugb2ZcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggZWE5ZTcwN2U4YWJmZmIuLmU2ZDE3ZWI0ZDk0OWY5IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0xNjE5LDExICsxNjE5LDEzIEBAIHN0YXRpYyBpbnQgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKHU4ICoqcHByb2csIHU4ICppcCxcXG4gXFx0XFx0RU1JVDEoMHg1MSk7IC8qIHB1c2ggcmN4ICovXFxuIFxcdFxcdGlwICs9IDI7XFxuIFxcbi1cXHRcXHRmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3A7XFxuK1xcdFxcdGZ1bmMgPSAodTggKiljbGVhcl9iaGJfbG9vcF9ub2ZlbmNlO1xcbiBcXHRcXHRpcCArPSB4ODZfY2FsbF9kZXB0aF9lbWl0X2FjY291bnRpbmcoXFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcXG4gXFxuIFxcdFxcdGlmIChlbWl0X2NhbGwoXFx1MDAyNnByb2csIGZ1bmMsIGlwKSlcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdC8qIERvbid0IHNwZWN1bGF0ZSBwYXN0IHRoaXMgdW50aWwgQkhCIGlzIGNsZWFyZWQgKi9cXG4rXFx0XFx0RU1JVF9MRkVOQ0UoKTtcXG4gXFx0XFx0RU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi9cXG4gXFx0XFx0RU1JVDEoMHg1OCk7IC8qIHBvcCByYXggKi9cXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxcbmluZGV4IGE1NjhkOGU2ZjRlODI5Li5iZTYwMmQzZjI4N2U1NyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxcbkBAIC0xMyw2ICsxMyw4IEBAXFxuIFxcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIFxcXFxcXG4gXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFxcXCJrdm0sXFxcIiBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNKHN5bWJvbCkgXFxcXFxcbitcXHRFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMoc3ltYm9sLCBcXFwia3ZtLFxcXCIgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSlcXG4gI2Vsc2VcXG4gI2RlZmluZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoc3ltYm9sKVxcbiAvKlxcbkBAIC0yMywxMSArMjUsMTcgQEBcXG4gI2lmbmRlZiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1cXG4gI2lmIElTX01PRFVMRShDT05GSUdfS1ZNKVxcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcXFwia3ZtXFxcIilcXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFxcXCJrdm1cXFwiKVxcbiAjZWxzZVxcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXFxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxcbiAjZW5kaWYgLyogSVNfTU9EVUxFKENPTkZJR19LVk0pICovXFxuLSNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cXG4rI2Vsc2VcXG4rI2lmbmRlZiBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTVxcbisjZXJyb3IgTXVzdCAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNIGlmICNkZWZpbmluZyBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1cXG4gI2VuZGlmXFxuKyNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cXG4rI2VuZGlmIC8qIEtWTV9TVUJfTU9EVUxFUyAqL1xcbiBcXG4gI2lmbmRlZiBfX0FTU0VNQkxFUl9fXFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmggYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmhcXG5pbmRleCA3OGE3N2E0YWUwZWE4Ny4uYjYxMGFmZDFlZDU1NjYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXFxuQEAgLTIxNiw2ICsyMTYsOSBAQCBleHRlcm4gbG9uZyBfX3N0YXRpY19jYWxsX3JldHVybjAodm9pZCk7XFxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcXHRcXHRcXHRcXFxcXFxuIFxcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKVxcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVxcdFxcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1xcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcXG4gXFxuIC8qIExlYXZlIHRoZSBrZXkgdW5leHBvcnRlZCwgc28gbW9kdWxlcyBjYW4ndCBjaGFuZ2Ugc3RhdGljIGNhbGwgdGFyZ2V0czogKi9cXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTI3Niw2ICsyNzksOSBAQCBleHRlcm4gbG9uZyBfX3N0YXRpY19jYWxsX3JldHVybjAodm9pZCk7XFxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcXHRcXHRcXHRcXFxcXFxuIFxcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX1RSQU1QKG5hbWUpKVxcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVxcdFxcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1xcdFxcdFxcXFxcXG4rXFx0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcXG4gXFxuIC8qIExlYXZlIHRoZSBrZXkgdW5leHBvcnRlZCwgc28gbW9kdWxlcyBjYW4ndCBjaGFuZ2Ugc3RhdGljIGNhbGwgdGFyZ2V0czogKi9cXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTM0Niw2ICszNTIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBzdGF0aWNfY2FsbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXFxuIFxcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTChuYW1lKVxcdEVYUE9SVF9TWU1CT0woU1RBVElDX0NBTExfS0VZKG5hbWUpKVxcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSlcXHRFWFBPUlRfU1lNQk9MX0dQTChTVEFUSUNfQ0FMTF9LRVkobmFtZSkpXFxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKG5hbWUsIG1vZHMpXFx0XFx0XFx0XFxcXFxcbitcXHRFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcylcXG4gXFxuICNlbmRpZiAvKiBDT05GSUdfSEFWRV9TVEFUSUNfQ0FMTCAqL1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTM6MDguNjc4NTQxNzI2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIzNjM1NDMxNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlUSUdBVElPTl9WTVNDQVBFXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyXCIsXG4gICAgXCJjcHVfYnVnc19zbXRfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSXQgbW9kaWZpZXMgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gdG8gdXNlIGEgcmVmYWN0b3JlZCBCSEIgY2xlYXJpbmcgbG9vcCBhbmQgdXBkYXRlcyBLVk0gVk0tZXhpdCBwYXRocyB0byB1c2UgYSBzdGF0aWMgY2FsbCBmb3IgcHJlZGljdG9yIGZsdXNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYXJlIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTkxM2Y2YTY4NWNhOWIyYWE5NTUxMjUzYzc4Njg5MjU5ODNiOWRkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE3OjUzOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0IGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ody12dWxuL3Ztc2NhcGUucnN0XG5pbmRleCBkOWI5YTJiNmMxMTRjMC4uMjU1OGE1YzNkOTU2YzMgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdFxuQEAgLTg2LDYgKzg2LDEwIEBAIFRoZSBwb3NzaWJsZSB2YWx1ZXMgaW4gdGhpcyBmaWxlIGFyZTpcbiAgICBydW4gYSBwb3RlbnRpYWxseSBtYWxpY2lvdXMgZ3Vlc3QgYW5kIGlzc3VlcyBhbiBJQlBCIGJlZm9yZSB0aGUgZmlyc3RcbiAgICBleGl0IHRvIHVzZXJzcGFjZSBhZnRlciBWTS1leGl0LlxuIFxuKyAqICdNaXRpZ2F0aW9uOiBDbGVhciBCSEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlJzpcbitcbisgICBBcyBhYm92ZSwgY29uZGl0aW9uYWwgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gaXMgZW5hYmxlZC5cbitcbiAgKiAnTWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVQnOlxuIFxuICAgIElCUEIgaXMgaXNzdWVkIG9uIGV2ZXJ5IFZNLWV4aXQuIFRoaXMgb2NjdXJzIHdoZW4gb3RoZXIgbWl0aWdhdGlvbnMgbGlrZVxuQEAgLTEwMiw5ICsxMDYsMTggQEAgVGhlIG1pdGlnYXRpb24gY2FuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBgYHZtc2NhcGU9YGAgY29tbWFuZCBsaW5lIHBhcmFtZXRlcjpcbiBcbiAgKiBgYHZtc2NhcGU9aWJwYmBgOlxuIFxuLSAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24gKGRlZmF1bHQgd2hlbiBDT05GSUdfTUlUSUdBVElPTl9WTVNDQVBFPXkpLlxuKyAgIEVuYWJsZSBjb25kaXRpb25hbCBJQlBCIG1pdGlnYXRpb24uXG4gXG4gICogYGB2bXNjYXBlPWZvcmNlYGA6XG4gXG4gICAgRm9yY2UgdnVsbmVyYWJpbGl0eSBkZXRlY3Rpb24gYW5kIG1pdGlnYXRpb24gZXZlbiBvbiBwcm9jZXNzb3JzIHRoYXQgYXJlXG4gICAgbm90IGtub3duIHRvIGJlIGFmZmVjdGVkLlxuK1xuKyAqIGBgdm1zY2FwZT1hdXRvYGA6XG4rXG4rICAgQ2hvb3NlIHRoZSBtaXRpZ2F0aW9uIGJhc2VkIG9uIHRoZSBWTVNDQVBFIHZhcmlhbnQgdGhlIENQVSBpcyBhZmZlY3RlZCBieS5cbisgICAoZGVmYXVsdCB3aGVuIENPTkZJR19NSVRJR0FUSU9OX1ZNU0NBUEU9eSlcbitcbisgKiBgYHZtc2NhcGU9b25gYDpcbitcbisgICBTYW1lIGFzIGBgYXV0b2BgLCBleGNlcHQgdGhhdCBpdCBvdmVycmlkZXMgYXR0YWNrIHZlY3RvciBjb250cm9scy5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0XG5pbmRleCA5NzAwN2Y0ZjY5ZDRlOC4uMTMyMGJhZjkyNjRjMDUgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dFxuKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHRcbkBAIC04MzM3LDkgKzgzMzcsMTMgQEAgS2VybmVsIHBhcmFtZXRlcnNcbiBcbiBcdFx0XHRvZmZcdFx0LSBkaXNhYmxlIHRoZSBtaXRpZ2F0aW9uXG4gXHRcdFx0aWJwYlx0XHQtIHVzZSBJbmRpcmVjdCBCcmFuY2ggUHJlZGljdGlvbiBCYXJyaWVyXG4tXHRcdFx0XHRcdCAgKElCUEIpIG1pdGlnYXRpb24gKGRlZmF1bHQpXG4rXHRcdFx0XHRcdCAgKElCUEIpIG1pdGlnYXRpb25cbiBcdFx0XHRmb3JjZVx0XHQtIGZvcmNlIHZ1bG5lcmFiaWxpdHkgZGV0ZWN0aW9uIGV2ZW4gb25cbiBcdFx0XHRcdFx0ICB1bmFmZmVjdGVkIHByb2Nlc3NvcnNcbitcdFx0XHRhdXRvXHRcdC0gKGRlZmF1bHQpIHVzZSBJQlBCIG9yIEJIQiBjbGVhclxuK1x0XHRcdFx0XHQgIG1pdGlnYXRpb24gYmFzZWQgb24gQ1BVXG4rXHRcdFx0b25cdFx0LSBzYW1lIGFzIFwiYXV0b1wiLCBidXQgb3ZlcnJpZGUgYXR0YWNrXG4rXHRcdFx0XHRcdCAgdmVjdG9yIGNvbnRyb2xcbiBcbiBcdHZzeXNjYWxsPVx0W1g4Ni02NCxFQVJMWV1cbiBcdFx0XHRDb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdnN5c2NhbGxzIChpLmUuIGNhbGxzIHRvXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gveDg2L0tjb25maWdcbmluZGV4IGYzZjdjYjAxZDY5ZDAyLi5jNTk2NWJjZjE0YzFmNyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L0tjb25maWdcbisrKyBiL2FyY2gveDg2L0tjb25maWdcbkBAIC0yNzE3LDYgKzI3MTcsNyBAQCBjb25maWcgTUlUSUdBVElPTl9UU0FcbiBjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXG4gXHRib29sIFwiTWl0aWdhdGUgVk1TQ0FQRVwiXG4gXHRkZXBlbmRzIG9uIEtWTVxuK1x0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXG4gXHRkZWZhdWx0IHlcbiBcdGhlbHBcbiBcdCAgRW5hYmxlIG1pdGlnYXRpb24gZm9yIFZNU0NBUEUgYXR0YWNrcy4gVk1TQ0FQRSBpcyBhIGhhcmR3YXJlIHNlY3VyaXR5XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlNcbmluZGV4IDQyNDQ3YjFlMWRmZmE0Li4xZjU2ZDA4NmQzMTJjMCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlNcbisrKyBiL2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlNcbkBAIC0xNTI4LDEyICsxNTI4LDE3IEBAIFNZTV9DT0RFX0VORChyZXdpbmRfc3RhY2tfYW5kX21ha2VfZGVhZClcbiAgKiByZWZhY3RvcmVkIGluIHRoZSBmdXR1cmUgaWYgbmVlZGVkLiBUaGUgLnNraXBzIGFyZSBmb3Igc2FmZXR5LCB0byBlbnN1cmVcbiAgKiB0aGF0IGFsbCBSRVRzIGFyZSBpbiB0aGUgc2Vjb25kIGhhbGYgb2YgYSBjYWNoZWxpbmUgdG8gbWl0aWdhdGUgSW5kaXJlY3RcbiAgKiBUYXJnZXQgU2VsZWN0aW9uLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlIHNsb3dwYXRoIHZpYSBpdHNfcmV0dXJuX3RodW5rLlxuKyAqXG4rICogTm90ZSwgY2FsbGVycyBzaG91bGQgdXNlIGEgc3BlY3VsYXRpb24gYmFycmllciBsaWtlIExGRU5DRSBpbW1lZGlhdGVseSBhZnRlclxuKyAqIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRvIGVuc3VyZSBCSEIgaXMgY2xlYXJlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoZXMuXG4gICovXG4tU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXG4rU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZSlcbiBcdEFOTk9UQVRFX05PRU5EQlJcbiBcdHB1c2hcdCVyYnBcbiBcdG1vdlx0JXJzcCwgJXJicFxuLVx0bW92bFx0JDUsICVlY3hcbitcbitcdG1vdnpibCAgICBiaGJfc2VxX291dGVyX2xvb3AoJXJpcCksICVlY3hcbitcbiBcdEFOTk9UQVRFX0lOVFJBX0ZVTkNUSU9OX0NBTExcbiBcdGNhbGxcdDFmXG4gXHRqbXBcdDVmXG5AQCAtMTU1Myw4ICsxNTU4LDggQEAgU1lNX0ZVTkNfU1RBUlQoY2xlYXJfYmhiX2xvb3ApXG4gXHQgKiBUaGlzIHNob3VsZCBiZSBpZGVhbGx5IGJlOiAuc2tpcCAzMiAtICguTHJldDIgLSAyZiksIDB4Y2NcbiBcdCAqIGJ1dCBzb21lIENsYW5nIHZlcnNpb25zIChlLmcuIDE4KSBkb24ndCBsaWtlIHRoaXMuXG4gXHQgKi9cbi1cdC5za2lwIDMyIC0gMTgsIDB4Y2Ncbi0yOlx0bW92bFx0JDUsICVlYXhcbitcdC5za2lwIDMyIC0gMjAsIDB4Y2NcbisyOlx0bW92emJsICBiaGJfc2VxX2lubmVyX2xvb3AoJXJpcCksICVlYXhcbiAzOlx0am1wXHQ0ZlxuIFx0bm9wXG4gNDpcdHN1Ylx0JDEsICVlYXhcbkBAIC0xNTYyLDkgKzE1NjcsOSBAQCBTWU1fRlVOQ19TVEFSVChjbGVhcl9iaGJfbG9vcClcbiBcdHN1Ylx0JDEsICVlY3hcbiBcdGpuelx0MWJcbiAuTHJldDI6XHRSRVRcbi01Olx0bGZlbmNlXG4rNTpcbiBcdHBvcFx0JXJicFxuIFx0UkVUXG4tU1lNX0ZVTkNfRU5EKGNsZWFyX2JoYl9sb29wKVxuLUVYUE9SVF9TWU1CT0xfRk9SX0tWTShjbGVhcl9iaGJfbG9vcClcbi1TVEFDS19GUkFNRV9OT05fU1RBTkRBUkQoY2xlYXJfYmhiX2xvb3ApXG4rU1lNX0ZVTkNfRU5EKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4rRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG4rU1RBQ0tfRlJBTUVfTk9OX1NUQU5EQVJEKGNsZWFyX2JoYl9sb29wX25vZmVuY2UpXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbmluZGV4IDFkNTA2ZTVkNmY0NmFjLi4wOWY5NTZiNzI2MzdjNSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmhcbkBAIC01MDQsNyArNTA0LDcgQEBcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQV9TUV9OT1x0XHQoMjEqMzIrMTEpIC8qIEFNRCBDUFUgbm90IHZ1bG5lcmFibGUgdG8gVFNBLVNRICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9UU0FfTDFfTk9cdFx0KDIxKjMyKzEyKSAvKiBBTUQgQ1BVIG5vdCB2dWxuZXJhYmxlIHRvIFRTQS1MMSAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfQ0xFQVJfQ1BVX0JVRl9WTVx0KDIxKjMyKzEzKSAvKiBDbGVhciBDUFUgYnVmZmVycyB1c2luZyBWRVJXIGJlZm9yZSBWTVJVTiAqL1xuLSNkZWZpbmUgWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVJcdCgyMSozMisxNCkgLyogVXNlIElCUEIgb24gZXhpdC10by11c2Vyc3BhY2UsIHNlZSBWTVNDQVBFIGJ1ZyAqL1xuKy8qIEZyZWUgKi9cbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX0FCTUNcdFx0KDIxKjMyKzE1KSAvKiBBc3NpZ25hYmxlIEJhbmR3aWR0aCBNb25pdG9yaW5nIENvdW50ZXJzICovXG4gI2RlZmluZSBYODZfRkVBVFVSRV9NU1JfSU1NXHRcdCgyMSozMisxNikgLyogTVNSIGltbWVkaWF0ZSBmb3JtIGluc3RydWN0aW9ucyAqL1xuICNkZWZpbmUgWDg2X0ZFQVRVUkVfU0dYX0VVUERBVEVTVk5cdCgyMSozMisxNykgLyogU3VwcG9ydCBmb3IgRU5DTFNbRVVQREFURVNWTl0gaW5zdHJ1Y3Rpb24gKi9cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2VudHJ5LWNvbW1vbi5oXG5pbmRleCBlY2EyNGI1ZTA3ZjRjNi4uYmVmYTE0YTE5ODE3M2UgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhcbkBAIC00LDYgKzQsNyBAQFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JhbmRvbWl6ZV9rc3RhY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzZXItcmV0dXJuLW5vdGlmaWVyLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9zdGF0aWNfY2FsbF90eXBlcy5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjYXNtL25vc3BlYy1icmFuY2guaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9pb19iaXRtYXAuaFx1MDAzZVxuQEAgLTgyLDExICs4MywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlKHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuIFx0Y3VycmVudF90aHJlYWRfaW5mbygpLVx1MDAzZXN0YXR1cyBcdTAwMjY9IH4oVFNfQ09NUEFUIHwgVFNfSTM4Nl9SRUdTX1BPS0VEKTtcbiAjZW5kaWZcbiBcbi1cdC8qIEF2b2lkIHVubmVjZXNzYXJ5IHJlYWRzIG9mICd4ODZfaWJwYl9leGl0X3RvX3VzZXInICovXG4tXHRpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9JQlBCX0VYSVRfVE9fVVNFUikgXHUwMDI2XHUwMDI2XG4tXHQgICAgdGhpc19jcHVfcmVhZCh4ODZfaWJwYl9leGl0X3RvX3VzZXIpKSB7XG4tXHRcdGluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIoKTtcbi1cdFx0dGhpc19jcHVfd3JpdGUoeDg2X2licGJfZXhpdF90b191c2VyLCBmYWxzZSk7XG4rXHRpZiAodW5saWtlbHkodGhpc19jcHVfcmVhZCh4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcikpKSB7XG4rXHRcdC8qXG4rXHRcdCAqIFNpbmNlIHRoZSBtaXRpZ2F0aW9uIGlzIGZvciB1c2Vyc3BhY2UsIGFuIGV4cGxpY2l0XG4rXHRcdCAqIHNwZWN1bGF0aW9uIGJhcnJpZXIgaXMgbm90IHJlcXVpcmVkIGFmdGVyIGZsdXNoLlxuK1x0XHQgKi9cbitcdFx0c3RhdGljX2NhbGxfY29uZCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkoKTtcbitcdFx0dGhpc19jcHVfd3JpdGUoeDg2X3ByZWRpY3Rvcl9mbHVzaF9leGl0X3RvX3VzZXIsIGZhbHNlKTtcbiBcdH1cbiB9XG4gI2RlZmluZSBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmUgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1fdHlwZXMuaFxuaW5kZXggZDdjNzA0ZWQxYmU5YTIuLmJjZWVhZWQyOTQwZTkwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX3R5cGVzLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV90eXBlcy5oXG5AQCAtMTUsNiArMTUsNyBAQFxuICAqIGF0IGxlYXN0IG9uZSB2ZW5kb3IgbW9kdWxlIGlzIGVuYWJsZWQuXG4gICovXG4gI2RlZmluZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0oc3ltYm9sKVxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKVxuICNlbmRpZlxuIFxuICNkZWZpbmUgS1ZNX0FSQ0hfTlJfT0JKU19QRVJfTUVNT1JZX0NBQ0hFIDQwXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oXG5pbmRleCA0ZjRiNWU4YTE1NzQzMC4uMzg0NzgzODMxMzliNjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmhcbisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaFxuQEAgLTMzMSwxMSArMzMxLDExIEBAXG4gXG4gI2lmZGVmIENPTkZJR19YODZfNjRcbiAubWFjcm8gQ0xFQVJfQlJBTkNIX0hJU1RPUllcbi1cdEFMVEVSTkFUSVZFIFwiXCIsIFwiY2FsbCBjbGVhcl9iaGJfbG9vcFwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUFxuK1x0QUxURVJOQVRJVkUgXCJcIiwgXCJjYWxsIGNsZWFyX2JoYl9sb29wX25vZmVuY2U7IGxmZW5jZVwiLCBYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUFxuIC5lbmRtXG4gXG4gLm1hY3JvIENMRUFSX0JSQU5DSF9ISVNUT1JZX1ZNRVhJVFxuLVx0QUxURVJOQVRJVkUgXCJcIiwgXCJjYWxsIGNsZWFyX2JoYl9sb29wXCIsIFg4Nl9GRUFUVVJFX0NMRUFSX0JIQl9WTUVYSVRcbitcdEFMVEVSTkFUSVZFIFwiXCIsIFwiY2FsbCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlOyBsZmVuY2VcIiwgWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX1ZNRVhJVFxuIC5lbmRtXG4gI2Vsc2VcbiAjZGVmaW5lIENMRUFSX0JSQU5DSF9ISVNUT1JZXG5AQCAtMzg5LDcgKzM4OSw5IEBAIGV4dGVybiB2b2lkIGVudHJ5X3VudHJhaW5fcmV0KHZvaWQpO1xuIGV4dGVybiB2b2lkIHdyaXRlX2licGIodm9pZCk7XG4gXG4gI2lmZGVmIENPTkZJR19YODZfNjRcbi1leHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcCh2b2lkKTtcbitleHRlcm4gdm9pZCBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlKHZvaWQpO1xuKyNlbHNlXG4rc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2JoYl9sb29wX25vZmVuY2Uodm9pZCkge31cbiAjZW5kaWZcbiBcbiBleHRlcm4gdm9pZCAoKng4Nl9yZXR1cm5fdGh1bmspKHZvaWQpO1xuQEAgLTUzMyw3ICs1MzUsNyBAQCB2b2lkIGFsdGVybmF0aXZlX21zcl93cml0ZSh1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFsLCB1bnNpZ25lZCBpbnQgZmVhdHVyZSlcbiBcdFx0OiBcIm1lbW9yeVwiKTtcbiB9XG4gXG4tREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9pYnBiX2V4aXRfdG9fdXNlcik7XG4rREVDTEFSRV9QRVJfQ1BVKGJvb2wsIHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyKTtcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxuIHtcbkBAIC01NDIsMTIgKzU0NCwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lkKVxuIFx0XHRcdCAgICA6OiBcInJheFwiLCBcInJjeFwiLCBcInJkeFwiLCBcIm1lbW9yeVwiKTtcbiB9XG4gXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvc3RhdGljX2NhbGxfdHlwZXMuaFx1MDAzZVxuK0RFQ0xBUkVfU1RBVElDX0NBTEwodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuK1xuIC8qIFRoZSBJbnRlbCBTUEVDIENUUkwgTVNSIGJhc2UgdmFsdWUgY2FjaGUgKi9cbiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0cmxfYmFzZTtcbiBERUNMQVJFX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIGV4dGVybiB2b2lkIHVwZGF0ZV9zcGVjX2N0cmxfY29uZCh1NjQgdmFsKTtcbiBleHRlcm4gdTY0IHNwZWNfY3RybF9jdXJyZW50KHZvaWQpO1xuIFxuK2V4dGVybiB1OCBiaGJfc2VxX2lubmVyX2xvb3AsIGJoYl9zZXFfb3V0ZXJfbG9vcDtcbitcbiAvKlxuICAqIFdpdGggcmV0cG9saW5lLCB3ZSBtdXN0IHVzZSBJQlJTIHRvIHJlc3RyaWN0IGJyYW5jaCBwcmVkaWN0aW9uXG4gICogYmVmb3JlIGNhbGxpbmcgaW50byBmaXJtd2FyZS5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jXG5pbmRleCA4M2Y1MWNhYjBiMWUzOS4uNGUwYjc3ZmIyMWRkMzQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuY1xuKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNcbkBAIC02MSwxMiArNjEsMTEgQEAgREVGSU5FX1BFUl9DUFUodTY0LCB4ODZfc3BlY19jdHJsX2N1cnJlbnQpO1xuIEVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X3NwZWNfY3RybF9jdXJyZW50KTtcbiBcbiAvKlxuLSAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gQW4gSUJQQiB3aWxsXG4tICogYmUgbmVlZGVkIHRvIGJlZm9yZSBydW5uaW5nIHVzZXJzcGFjZS4gVGhhdCBJQlBCIHdpbGwgZmx1c2ggdGhlIGJyYW5jaFxuLSAqIHByZWRpY3RvciBjb250ZW50LlxuKyAqIFNldCB3aGVuIHRoZSBDUFUgaGFzIHJ1biBhIHBvdGVudGlhbGx5IG1hbGljaW91cyBndWVzdC4gSW5kaWNhdGVzIHRoYXQgYVxuKyAqIGJyYW5jaCBwcmVkaWN0b3IgZmx1c2ggaXMgbmVlZGVkIGJlZm9yZSBydW5uaW5nIHVzZXJzcGFjZS5cbiAgKi9cbi1ERUZJTkVfUEVSX0NQVShib29sLCB4ODZfaWJwYl9leGl0X3RvX3VzZXIpO1xuLUVYUE9SVF9QRVJfQ1BVX1NZTUJPTF9HUEwoeDg2X2licGJfZXhpdF90b191c2VyKTtcbitERUZJTkVfUEVSX0NQVShib29sLCB4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XG4rRVhQT1JUX1BFUl9DUFVfU1lNQk9MX0dQTCh4ODZfcHJlZGljdG9yX2ZsdXNoX2V4aXRfdG9fdXNlcik7XG4gXG4gdTY0IHg4Nl9wcmVkX2NtZCBfX3JvX2FmdGVyX2luaXQgPSBQUkVEX0NNRF9JQlBCO1xuIFxuQEAgLTE0NCw2ICsxNDMsMTMgQEAgRVhQT1JUX1NZTUJPTF9HUEwoY3B1X2J1Zl9pZGxlX2NsZWFyKTtcbiAgKi9cbiBERUZJTkVfU1RBVElDX0tFWV9GQUxTRShzd2l0Y2hfbW1fY29uZF9sMWRfZmx1c2gpO1xuIFxuKy8qXG4rICogQ29udHJvbHMgaG93IHZtc2NhcGUgaXMgbWl0aWdhdGVkIGUuZy4gdmlhIElCUEIgb3IgQkhCLWNsZWFyXG4rICogc2VxdWVuY2UuIFRoaXMgZGVmYXVsdHMgdG8gbm8gbWl0aWdhdGlvbi5cbisgKi9cbitERUZJTkVfU1RBVElDX0NBTExfTlVMTCh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCwgd3JpdGVfaWJwYik7XG4rRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0odm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gpO1xuK1xuICN1bmRlZiBwcl9mbXRcbiAjZGVmaW5lIHByX2ZtdChmbXQpXHRcIm1pdGlnYXRpb25zOiBcIiBmbXRcbiBcbkBAIC0yMDQ3LDYgKzIwNTMsMTAgQEAgZW51bSBiaGlfbWl0aWdhdGlvbnMge1xuIHN0YXRpYyBlbnVtIGJoaV9taXRpZ2F0aW9ucyBiaGlfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxuIFx0SVNfRU5BQkxFRChDT05GSUdfTUlUSUdBVElPTl9TUEVDVFJFX0JISSkgPyBCSElfTUlUSUdBVElPTl9BVVRPIDogQkhJX01JVElHQVRJT05fT0ZGO1xuIFxuKy8qIERlZmF1bHQgdG8gc2hvcnQgQkhCIHNlcXVlbmNlIHZhbHVlcyAqL1xuK3U4IGJoYl9zZXFfb3V0ZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xuK3U4IGJoYl9zZXFfaW5uZXJfbG9vcCBfX3JvX2FmdGVyX2luaXQgPSA1O1xuK1xuIHN0YXRpYyBpbnQgX19pbml0IHNwZWN0cmVfYmhpX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxuIHtcbiBcdGlmICghc3RyKVxuQEAgLTMwNDgsMTUgKzMwNTgsMTkgQEAgc3RhdGljIHZvaWQgX19pbml0IHNyc29fYXBwbHlfbWl0aWdhdGlvbih2b2lkKVxuIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB7XG4gXHRWTVNDQVBFX01JVElHQVRJT05fTk9ORSxcbiBcdFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPLFxuK1x0Vk1TQ0FQRV9NSVRJR0FUSU9OX09OLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSLFxuIFx0Vk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElULFxuK1x0Vk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVIsXG4gfTtcbiBcbiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHZtc2NhcGVfc3RyaW5nc1tdID0ge1xuLVx0W1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXVx0XHQ9IFwiVnVsbmVyYWJsZVwiLFxuK1x0W1ZNU0NBUEVfTUlUSUdBVElPTl9OT05FXVx0XHRcdD0gXCJWdWxuZXJhYmxlXCIsXG4gXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE9dICovXG4tXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSXVx0PSBcIk1pdGlnYXRpb246IElCUEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlXCIsXG4tXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVx0PSBcIk1pdGlnYXRpb246IElCUEIgb24gVk1FWElUXCIsXG4rXHQvKiBbVk1TQ0FQRV9NSVRJR0FUSU9OX09OXSAqL1xuK1x0W1ZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUl1cdFx0PSBcIk1pdGlnYXRpb246IElCUEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlXCIsXG4rXHRbVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfT05fVk1FWElUXVx0XHQ9IFwiTWl0aWdhdGlvbjogSUJQQiBvbiBWTUVYSVRcIixcbitcdFtWTVNDQVBFX01JVElHQVRJT05fQkhCX0NMRUFSX0VYSVRfVE9fVVNFUl1cdD0gXCJNaXRpZ2F0aW9uOiBDbGVhciBCSEIgYmVmb3JlIGV4aXQgdG8gdXNlcnNwYWNlXCIsXG4gfTtcbiBcbiBzdGF0aWMgZW51bSB2bXNjYXBlX21pdGlnYXRpb25zIHZtc2NhcGVfbWl0aWdhdGlvbiBfX3JvX2FmdGVyX2luaXQgPVxuQEAgLTMwNzMsNiArMzA4NywxMCBAQCBzdGF0aWMgaW50IF9faW5pdCB2bXNjYXBlX3BhcnNlX2NtZGxpbmUoY2hhciAqc3RyKVxuIFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcImZvcmNlXCIpKSB7XG4gXHRcdHNldHVwX2ZvcmNlX2NwdV9idWcoWDg2X0JVR19WTVNDQVBFKTtcbitcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX09OO1xuK1x0fSBlbHNlIGlmICghc3RyY21wKHN0ciwgXCJvblwiKSkge1xuK1x0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fT047XG4rXHR9IGVsc2UgaWYgKCFzdHJjbXAoc3RyLCBcImF1dG9cIikpIHtcbiBcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE87XG4gXHR9IGVsc2Uge1xuIFx0XHRwcl9lcnIoXCJJZ25vcmluZyB1bmtub3duIHZtc2NhcGU9JXMgb3B0aW9uLlxcblwiLCBzdHIpO1xuQEAgLTMwODQsMTcgKzMxMDIsNDQgQEAgZWFybHlfcGFyYW0oXCJ2bXNjYXBlXCIsIHZtc2NhcGVfcGFyc2VfY21kbGluZSk7XG4gXG4gc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb24odm9pZClcbiB7XG4tXHRpZiAoIWJvb3RfY3B1X2hhc19idWcoWDg2X0JVR19WTVNDQVBFKSB8fFxuLVx0ICAgICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpIHtcbitcdGlmICghYm9vdF9jcHVfaGFzX2J1ZyhYODZfQlVHX1ZNU0NBUEUpKSB7XG4gXHRcdHZtc2NhcGVfbWl0aWdhdGlvbiA9IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPKSB7XG4tXHRcdGlmIChzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKVxuK1x0aWYgKCh2bXNjYXBlX21pdGlnYXRpb24gPT0gVk1TQ0FQRV9NSVRJR0FUSU9OX0FVVE8pIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFzaG91bGRfbWl0aWdhdGVfdnVsbihYODZfQlVHX1ZNU0NBUEUpKVxuK1x0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbitcbitcdHN3aXRjaCAodm1zY2FwZV9taXRpZ2F0aW9uKSB7XG4rXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9OT05FOlxuK1x0XHRicmVhaztcbitcbitcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0lCUEJfRVhJVF9UT19VU0VSOlxuK1x0XHRpZiAoIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcbitcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbitcdFx0YnJlYWs7XG4rXG4rXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuK1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fT046XG4rXHRcdC8qXG4rXHRcdCAqIENQVXMgd2l0aCBCSElfQ1RSTChBREwgYW5kIG5ld2VyKSBjYW4gYXZvaWQgdGhlIElCUEIgYW5kIHVzZVxuK1x0XHQgKiBCSEIgY2xlYXIgc2VxdWVuY2UuIFRoZXNlIENQVXMgYXJlIG9ubHkgdnVsbmVyYWJsZSB0byB0aGUgQkhJXG4rXHRcdCAqIHZhcmlhbnQgb2YgdGhlIFZNU0NBUEUgYXR0YWNrLCBhbmQgdGh1cyB0aGV5IGRvIG5vdCByZXF1aXJlIGFcbitcdFx0ICogZnVsbCBwcmVkaWN0b3IgZmx1c2guXG4rXHRcdCAqXG4rXHRcdCAqIE5vdGUsIGluIDMyLWJpdCBtb2RlIEJIQiBjbGVhciBzZXF1ZW5jZSBpcyBub3Qgc3VwcG9ydGVkLlxuK1x0XHQgKi9cbitcdFx0aWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9CSElfQ1RSTCkgXHUwMDI2XHUwMDI2IElTX0VOQUJMRUQoQ09ORklHX1g4Nl82NCkpXG4rXHRcdFx0dm1zY2FwZV9taXRpZ2F0aW9uID0gVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI7XG4rXHRcdGVsc2UgaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlBCKSlcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVI7XG4gXHRcdGVsc2VcbiBcdFx0XHR2bXNjYXBlX21pdGlnYXRpb24gPSBWTVNDQVBFX01JVElHQVRJT05fTk9ORTtcbitcdFx0YnJlYWs7XG4rXG4rXHRkZWZhdWx0OlxuK1x0XHRicmVhaztcbiBcdH1cbiB9XG4gXG5AQCAtMzExMyw3ICszMTU4LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHZtc2NhcGVfdXBkYXRlX21pdGlnYXRpb24odm9pZClcbiBzdGF0aWMgdm9pZCBfX2luaXQgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uKHZvaWQpXG4ge1xuIFx0aWYgKHZtc2NhcGVfbWl0aWdhdGlvbiA9PSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9FWElUX1RPX1VTRVIpXG4tXHRcdHNldHVwX2ZvcmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSUJQQl9FWElUX1RPX1VTRVIpO1xuK1x0XHRzdGF0aWNfY2FsbF91cGRhdGUodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIHdyaXRlX2licGIpO1xuK1x0ZWxzZSBpZiAodm1zY2FwZV9taXRpZ2F0aW9uID09IFZNU0NBUEVfTUlUSUdBVElPTl9CSEJfQ0xFQVJfRVhJVF9UT19VU0VSKVxuK1x0XHRzdGF0aWNfY2FsbF91cGRhdGUodm1zY2FwZV9wcmVkaWN0b3JfZmx1c2gsIGNsZWFyX2JoYl9sb29wX25vZmVuY2UpO1xuIH1cbiBcbiAjdW5kZWYgcHJfZm10XG5AQCAtMzIwMiw5ICszMjQ5LDExIEBAIHZvaWQgY3B1X2J1Z3Nfc210X3VwZGF0ZSh2b2lkKVxuIFx0c3dpdGNoICh2bXNjYXBlX21pdGlnYXRpb24pIHtcbiBcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX05PTkU6XG4gXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9BVVRPOlxuK1x0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fT046XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBWTVNDQVBFX01JVElHQVRJT05fSUJQQl9PTl9WTUVYSVQ6XG4gXHRjYXNlIFZNU0NBUEVfTUlUSUdBVElPTl9JQlBCX0VYSVRfVE9fVVNFUjpcbitcdGNhc2UgVk1TQ0FQRV9NSVRJR0FUSU9OX0JIQl9DTEVBUl9FWElUX1RPX1VTRVI6XG4gXHRcdC8qXG4gXHRcdCAqIEh5cGVydmlzb3JzIGNhbiBiZSBhdHRhY2tlZCBhY3Jvc3MtdGhyZWFkcywgd2FybiBmb3IgU01UIHdoZW5cbiBcdFx0ICogU1RJQlAgaXMgbm90IGFscmVhZHkgZW5hYmxlZCBzeXN0ZW0td2lkZS5cbkBAIC0zMjQyLDYgKzMyOTEsMTUgQEAgdm9pZCBfX2luaXQgY3B1X3NlbGVjdF9taXRpZ2F0aW9ucyh2b2lkKVxuIFx0XHR4ODZfc3BlY19jdHJsX2Jhc2UgXHUwMDI2PSB+U1BFQ19DVFJMX01JVElHQVRJT05TX01BU0s7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogU3dpdGNoIHRvIGxvbmcgQkhCIGNsZWFyIHNlcXVlbmNlIG9uIG5ld2VyIENQVXMgKHdpdGggQkhJX0NUUkxcbitcdCAqIHN1cHBvcnQpLCBzZWUgSW50ZWwncyBCSEkgZ3VpZGFuY2UuXG4rXHQgKi9cbitcdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0JISV9DVFJMKSkge1xuK1x0XHRiaGJfc2VxX291dGVyX2xvb3AgPSAxMjtcbitcdFx0YmhiX3NlcV9pbm5lcl9sb29wID0gNztcbitcdH1cbitcbiBcdHg4Nl9hcmNoX2NhcF9tc3IgPSB4ODZfcmVhZF9hcmNoX2NhcF9tc3IoKTtcbiBcbiBcdGNwdV9wcmludF9hdHRhY2tfdmVjdG9ycygpO1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMDU1MDM1OWVkNzk4ZmMuLmZjZDYxYzQ3NjUzZmEzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0xMTU1Niw4ICsxMTU1Niw4IEBAIHN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHQgKiBzZXQgZm9yIHRoZSBDUFUgdGhhdCBhY3R1YWxseSByYW4gdGhlIGd1ZXN0LCBhbmQgbm90IHRoZSBDUFUgdGhhdCBpdFxuIFx0ICogbWF5IG1pZ3JhdGUgdG8uXG4gXHQgKi9cbi1cdGlmIChjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX0lCUEJfRVhJVF9UT19VU0VSKSlcbi1cdFx0dGhpc19jcHVfd3JpdGUoeDg2X2licGJfZXhpdF90b191c2VyLCB0cnVlKTtcbitcdGlmIChzdGF0aWNfY2FsbF9xdWVyeSh2bXNjYXBlX3ByZWRpY3Rvcl9mbHVzaCkpXG4rXHRcdHRoaXNfY3B1X3dyaXRlKHg4Nl9wcmVkaWN0b3JfZmx1c2hfZXhpdF90b191c2VyLCB0cnVlKTtcbiBcbiBcdC8qXG4gXHQgKiBDb25zdW1lIGFueSBwZW5kaW5nIGludGVycnVwdHMsIGluY2x1ZGluZyB0aGUgcG9zc2libGUgc291cmNlIG9mXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCBlYTllNzA3ZThhYmZmYi4uZTZkMTdlYjRkOTQ5ZjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTE2MTksMTEgKzE2MTksMTMgQEAgc3RhdGljIGludCBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIodTggKipwcHJvZywgdTggKmlwLFxuIFx0XHRFTUlUMSgweDUxKTsgLyogcHVzaCByY3ggKi9cbiBcdFx0aXAgKz0gMjtcbiBcbi1cdFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wO1xuK1x0XHRmdW5jID0gKHU4ICopY2xlYXJfYmhiX2xvb3Bfbm9mZW5jZTtcbiBcdFx0aXAgKz0geDg2X2NhbGxfZGVwdGhfZW1pdF9hY2NvdW50aW5nKFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcbiBcbiBcdFx0aWYgKGVtaXRfY2FsbChcdTAwMjZwcm9nLCBmdW5jLCBpcCkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdC8qIERvbid0IHNwZWN1bGF0ZSBwYXN0IHRoaXMgdW50aWwgQkhCIGlzIGNsZWFyZWQgKi9cbitcdFx0RU1JVF9MRkVOQ0UoKTtcbiBcdFx0RU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi9cbiBcdFx0RU1JVDEoMHg1OCk7IC8qIHBvcCByYXggKi9cbiBcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxuaW5kZXggYTU2OGQ4ZTZmNGU4MjkuLmJlNjAyZDNmMjg3ZTU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxuKysrIGIvaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaFxuQEAgLTEzLDYgKzEzLDggQEBcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgXFxcbiBcdEVYUE9SVF9TWU1CT0xfRk9SX01PRFVMRVMoc3ltYm9sLCBcImt2bSxcIiBfX3N0cmluZ2lmeShLVk1fU1VCX01PRFVMRVMpKVxuKyNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk0oc3ltYm9sKSBcXFxuK1x0RVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9NT0RVTEVTKHN5bWJvbCwgXCJrdm0sXCIgX19zdHJpbmdpZnkoS1ZNX1NVQl9NT0RVTEVTKSlcbiAjZWxzZVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKHN5bWJvbClcbiAvKlxuQEAgLTIzLDExICsyNSwxNyBAQFxuICNpZm5kZWYgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNXG4gI2lmIElTX01PRFVMRShDT05GSUdfS1ZNKVxuICNkZWZpbmUgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNKHN5bWJvbCkgRVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFwia3ZtXCIpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhzeW1ib2wsIFwia3ZtXCIpXG4gI2Vsc2VcbiAjZGVmaW5lIEVYUE9SVF9TWU1CT0xfRk9SX0tWTShzeW1ib2wpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX0tWTShzeW1ib2wpXG4gI2VuZGlmIC8qIElTX01PRFVMRShDT05GSUdfS1ZNKSAqL1xuLSNlbmRpZiAvKiBFWFBPUlRfU1lNQk9MX0ZPUl9LVk0gKi9cbisjZWxzZVxuKyNpZm5kZWYgRVhQT1JUX1NUQVRJQ19DQUxMX0ZPUl9LVk1cbisjZXJyb3IgTXVzdCAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfS1ZNIGlmICNkZWZpbmluZyBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1cbiAjZW5kaWZcbisjZW5kaWYgLyogRVhQT1JUX1NZTUJPTF9GT1JfS1ZNICovXG4rI2VuZGlmIC8qIEtWTV9TVUJfTU9EVUxFUyAqL1xuIFxuICNpZm5kZWYgX19BU1NFTUJMRVJfX1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaCBiL2luY2x1ZGUvbGludXgvc3RhdGljX2NhbGwuaFxuaW5kZXggNzhhNzdhNGFlMGVhODcuLmI2MTBhZmQxZWQ1NTY2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdGF0aWNfY2FsbC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3N0YXRpY19jYWxsLmhcbkBAIC0yMTYsNiArMjE2LDkgQEAgZXh0ZXJuIGxvbmcgX19zdGF0aWNfY2FsbF9yZXR1cm4wKHZvaWQpO1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0XHRcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfVFJBTVAobmFtZSkpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMobmFtZSwgbW9kcylcdFx0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1x0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcbiBcbiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJ3QgY2hhbmdlIHN0YXRpYyBjYWxsIHRhcmdldHM6ICovXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcdFx0XHRcdFx0XFxcbkBAIC0yNzYsNiArMjc5LDkgQEAgZXh0ZXJuIGxvbmcgX19zdGF0aWNfY2FsbF9yZXR1cm4wKHZvaWQpO1xuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMX0dQTChuYW1lKVx0XHRcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfS0VZKG5hbWUpKTtcdFx0XHRcXFxuIFx0RVhQT1JUX1NZTUJPTF9HUEwoU1RBVElDX0NBTExfVFJBTVAobmFtZSkpXG4rI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfRk9SX01PRFVMRVMobmFtZSwgbW9kcylcdFx0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9LRVkobmFtZSksIG1vZHMpO1x0XHRcXFxuK1x0RVhQT1JUX1NZTUJPTF9GT1JfTU9EVUxFUyhTVEFUSUNfQ0FMTF9UUkFNUChuYW1lKSwgbW9kcylcbiBcbiAvKiBMZWF2ZSB0aGUga2V5IHVuZXhwb3J0ZWQsIHNvIG1vZHVsZXMgY2FuJ3QgY2hhbmdlIHN0YXRpYyBjYWxsIHRhcmdldHM6ICovXG4gI2RlZmluZSBFWFBPUlRfU1RBVElDX0NBTExfVFJBTVAobmFtZSlcdFx0XHRcdFx0XFxcbkBAIC0zNDYsNiArMzUyLDggQEAgc3RhdGljIGlubGluZSBpbnQgc3RhdGljX2NhbGxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuIFxuICNkZWZpbmUgRVhQT1JUX1NUQVRJQ19DQUxMKG5hbWUpXHRFWFBPUlRfU1lNQk9MKFNUQVRJQ19DQUxMX0tFWShuYW1lKSlcbiAjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9HUEwobmFtZSlcdEVYUE9SVF9TWU1CT0xfR1BMKFNUQVRJQ19DQUxMX0tFWShuYW1lKSlcbisjZGVmaW5lIEVYUE9SVF9TVEFUSUNfQ0FMTF9GT1JfTU9EVUxFUyhuYW1lLCBtb2RzKVx0XHRcdFxcXG4rXHRFWFBPUlRfU1lNQk9MX0ZPUl9NT0RVTEVTKFNUQVRJQ19DQUxMX0tFWShuYW1lKSwgbW9kcylcbiBcbiAjZW5kaWYgLyogQ09ORklHX0hBVkVfU1RBVElDX0NBTEwgKi9cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjA4LjY3ODU0MzQwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MzMyNDU4MzU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgb24gZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGludHJvZHVjZXMgYW55IG5ldyBzdXJmYWNlIGFyZWEgdGhhdCdzIHdvcnRoIGZ1enppbmcuXG5cbk15IGluaXRpYWwgcmVhZCBpbmRpY2F0ZXMgdGhpcyBpcyBhYm91dCBtaXRpZ2F0aW5nIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHkuIEl0J3MgaW50cm9kdWNpbmcgYSBuZXcgbWl0aWdhdGlvbiBzdHJhdGVneSBpbnZvbHZpbmcgY2xlYXJpbmcgdGhlIEJIQiBiZWZvcmUgZXhpdGluZyB0byB1c2Vyc3BhY2UuIFRoZXkncmUgdXNpbmcgc3RhdGljIGNhbGxzIGZvciBhIHByZWRpY3RvciBmbHVzaC5cblxuSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBzcGFuIGFjcm9zcyBzZXZlcmFsIGNydWNpYWwgYXJlYXM6IGRvY3VtZW50YXRpb24gdXBkYXRlcywgS2NvbmZpZyBtb2RpZmljYXRpb25zLCBhbmQgY29yZSBjb2RlIGluIGBhcmNoL3g4Ni9gLCBpbmNsdWRpbmcgdGhlIGVudHJ5IHBvaW50cywgQ1BVIGJ1ZyBoYW5kbGluZywgS1ZNIGNvZGUsIGFuZCBCUEYgSklUIGNvbXBpbGF0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gYW5kIG5vdCBqdXN0IGRvY3VtZW50YXRpb24gb3IgbG9nZ2luZy5cblxuVGhlIGNoYW5nZXMgYXJlIHJlYWNoaW5nIEtWTSBhbmQgQlBGIEpJVCwgYW5kIHRoaXMgaXMgaGFwcGVuaW5nIG9uIGV4aXQgdG8gdXNlciBzcGFjZS4gSXQgY2FuIGJlIGNvbnRyb2xsZWQgYnkgYSBrZXJuZWwgY29tbWFuZCBsaW5lIGB2bXNjYXBlPS4uLmAuXG5cbkknbSB0aGlua2luZyBhYm91dCByZWFjaGFiaWxpdHkuIEtWTSBpcyBjZXJ0YWlubHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUsIHNvIHRoYXQncyBhIHllcy4gQlBGIEpJVCBpcyByZWFjaGFibGUgdG9vLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGluY3JlYXNlIHRoZSBhdHRhY2sgc3VyZmFjZS5cblxuVGhlIGJ1bGsgb2YgdGhlIGNoYW5nZXMgYXBwZWFyIHRvIGJlIGZvY3VzZWQgb24gcmVwbGFjaW5nIGhhcmRjb2RlZCBJQlBCIGluc3RydWN0aW9ucyB3aXRoIHN0YXRpYyBjYWxscyB0byBlaXRoZXIgSUJQQiBvciBCSEIgY2xlYXJpbmcgYW5kIG1pbm9yIGFkanVzdG1lbnRzIHRvIHRoZSBCSEIgY2xlYXJpbmcgbG9vcC4gVGhlIEJQRiBKSVQgY2hhbmdlIGlzIGEgc2ltcGxlIGVtaXNzaW9uIG9mIGFuIGxmZW5jZSBpbnN0cnVjdGlvbi4gVGhlIEtWTSBjb2RlIHVzZXMgYHN0YXRpY19jYWxsX3F1ZXJ5YCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIENQVSBmZWF0dXJlcy4gVGhlIGVudHJ5IGNvZGUgbm93IHVzZXMgYHN0YXRpY19jYWxsX2NvbmRgIGluc3RlYWQgb2YgYW4gaW5kaXJlY3QgYnJhbmNoIHByZWRpY3Rpb24gYmFycmllci5cblxuR2l2ZW4gdGhhdCB0aGVzZSBhcmUgbWl0aWdhdGlvbnMgYW5kIHRoZSBwcmltYXJ5IGNoYW5nZXMgaW52b2x2ZSBzdGF0aWMgY2FsbHMgYW5kIG1pbm9yIGluc3RydWN0aW9uIHJlLWFycmFuZ2VtZW50LCBJJ20gbGVhbmluZyB0b3dhcmQgdGhpcyBub3QgYWRkaW5nICpzaWduaWZpY2FudCogbmV3IGF0dGFjayBzdXJmYWNlLiBJIG5lZWQgdG8gbG9vayBpbnRvIHRoaXMgbW9yZSwgYnV0IGl0IHNlZW1zIHRoYXQgdGhlc2UgY2hhbmdlcyBtYXkgbm90IGludHJvZHVjZSAqbmV3KiB2dWxuZXJhYmlsaXRpZXMgcGVyIHNlIGJ1dCBhcmUgYWltZWQgYXQgaW1wcm92aW5nIG1pdGlnYXRpb24gZm9yIGV4aXN0aW5nIG9uZXMuXG5cbkkndmUgZ290IHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gYENPTkZJR19NSVRJR0FUSU9OX1ZNU0NBUEVgIGV4aXN0cyBhbmQgZGVwZW5kcyBvbiBgSEFWRV9TVEFUSUNfQ0FMTGAgYW5kIGBLVk1gLiBgQ09ORklHX0tWTWAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCwgYW5kIHNvIGlzIGBDT05GSUdfQlBGX0pJVGAuXG5cbkxldCdzIHVzZSB0aGUgdG9vbHMgdG8gZGV0ZXJtaW5lIG90aGVyIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNzEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDcxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTM6MjYuMDExMDAzODg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NzAzNTc1MjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUlUSUdBVElPTl9WTVNDQVBFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdD0xMDE9VGhlIG1pdGlnYXRpb24gY2FuIGJlIGNvbnRyb2xsZWQgdmlhIHRoZSBgYHZtc2NhcGU9YGAgY29tbWFuZCBsaW5lIHBhcmFtZXRlcjpcXG4tLVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdC0xMTgtICAgQ2hvb3NlIHRoZSBtaXRpZ2F0aW9uIGJhc2VkIG9uIHRoZSBWTVNDQVBFIHZhcmlhbnQgdGhlIENQVSBpcyBhZmZlY3RlZCBieS5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1bG4vdm1zY2FwZS5yc3Q6MTE5OiAgIChkZWZhdWx0IHdoZW4gQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRT15KVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvaHctdnVsbi92bXNjYXBlLnJzdC0xMjAtXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTI3MDc9Y29uZmlnIE1JVElHQVRJT05fVFNBXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTI3MTYtXFxuYXJjaC94ODYvS2NvbmZpZzoyNzE3OmNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcXG5hcmNoL3g4Ni9LY29uZmlnLTI3MTgtXFx0Ym9vbCBcXFwiTWl0aWdhdGUgVk1TQ0FQRVxcXCJcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jPTMwNzY9c3RhdGljIGVudW0gdm1zY2FwZV9taXRpZ2F0aW9ucyB2bXNjYXBlX21pdGlnYXRpb24gX19yb19hZnRlcl9pbml0ID1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYzozMDc3OlxcdElTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRSkgPyBWTVNDQVBFX01JVElHQVRJT05fQVVUTyA6IFZNU0NBUEVfTUlUSUdBVElPTl9OT05FO1xcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMwNzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjI4Ljc4MTM2Njk4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTIwNjc3NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRm9jdXM6IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiBUaGF0J3MgZ29vZCB0byBrbm93LiBUaGUgcXVlc3Rpb24gbm93IGlzLCB3aGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBvZmZlciB0aGUgYmVzdCByZXR1cm4gb24gaW52ZXN0bWVudCBmb3IgZnV6emluZz8gTGV0IG1lIHNlZeKApiBJIGhhdmUgdGhyZWUgY2FuZGlkYXRlIGZ1bmN0aW9ucyBmbGFnZ2VkOiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBmcm9tIGBhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNgLCBgdmNwdV9lbnRlcl9ndWVzdGAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AsIGFuZCBgYXJjaF9leGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJlYCBpbiBgYXJjaC94ODYvaW5jbHVkZS9hc20vZW50cnktY29tbW9uLmhgLlxuXG5XYWl0IGEgbWludXRlLCBib3RoIGB2Y3B1X2VudGVyX2d1ZXN0YCBhbmQgYGFyY2hfZXhpdF90b191c2VyX21vZGVfcHJlcGFyZWAgYXJlIGRlZmluaXRlbHkgaG90LXBhdGggZnVuY3Rpb25zLCB0aGF0IG1ha2VzIHRoZW0gYSBncmVhdCB0YXJnZXQuIEJ1dCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC4uLiB0aGF0J3MgdXNlZCBkdXJpbmcgQlBGIEpJVCBjb21waWxhdGlvbiwgd2hpY2ggdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGxvYWRlZCwgbm90IGEgcGFydGljdWxhcmx5IGhvdCBwYXRoLiBBbHRob3VnaCwgU3BlY3RyZSBpcyBpbnRlcmVzdGluZy4gSSdtIGdvaW5nIHRvIHNldCBpdCBhc2lkZSBmb3Igbm93LiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2OTEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTM6NDIuMzAyMDQ4NzI1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjkyNDAwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0xNTgwPXN0YXRpYyB2b2lkIGVtaXRfcHJpdl9mcmFtZV9wdHIodTggKipwcHJvZywgdm9pZCBfX3BlcmNwdSAqcHJpdl9mcmFtZV9wdHIpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMTYwOS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MTYxMDpzdGF0aWMgaW50IGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcih1OCAqKnBwcm9nLCB1OCAqaXAsXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTE2MTEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2cpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9MjE0MT1zdDpcXHRcXHRcXHRpZiAoaXNfaW1tOChpbnNuLVxcdTAwM2VvZmYpKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzctXFx0XFx0XFx0ICAgICFuc19jYXBhYmxlX25vYXVkaXQoXFx1MDAyNmluaXRfdXNlcl9ucywgQ0FQX1NZU19BRE1JTikpIHtcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MjczODpcXHRcXHRcXHRcXHRpZiAoZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKFxcdTAwMjZwcm9nLCBpcCwgYnBmX3Byb2cpKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0yNzM5LVxcdFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1Mzo0NC45MzEyOTQ5OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5Njg4NjUxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1cyBmb3IgU3BlY3RyZSBCSEIgTWl0aWdhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYGVtaXRfc3BlY3RyZV9iaGJfYmFycmllcmAgc2VlbXMgbGlrZSB0aGUgcHJpbWUgY2FuZGlkYXRlIGZvciB0YXJnZXRlZCBmdXp6aW5nLCByaWdodD8gQnV0IHdoYXQgYWJvdXQgdGhlIG90aGVyIG1vZGlmaWNhdGlvbnM/IFRob3NlIGBfX2luaXRgIGZ1bmN0aW9ucyBpbiBgYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmNgIOKAkyBgdm1zY2FwZV9zZWxlY3RfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb25gLCBhbmQgYHZtc2NhcGVfcGFyc2VfY21kbGluZWAg4oCTIGFyZSBvbmx5IGV4ZWN1dGVkIGR1cmluZyBib290LCBzbyB0aGV5IGFyZW4ndCBhIHByaW9yaXR5LiBUaGUgY2hhbmdlcyBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYCAoc3BlY2lmaWNhbGx5IGB2Y3B1X2VudGVyX2d1ZXN0YCkgYW5kIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9lbnRyeS1jb21tb24uaGAgKGBhcmNoX2V4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmVgKSBhcmUgaW4gc3VwZXIgaG90IHBhdGhzLCBhbmQgdGhlIGd1aWRhbmNlIGlzIHRvIGF2b2lkIGZ1enppbmcgdGhvc2UgZGlyZWN0bHkuXG5cblNvLCByZWFsbHksIGl0IGFsbCBib2lscyBkb3duIHRvIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBCdXQgaXMgdGhpcyBwYXRjaCBldmVuICp3b3J0aCogZnV6emluZz8gSXQncyBhIGhhcmR3YXJlIHZ1bG5lcmFiaWxpdHkgbWl0aWdhdGlvbiwgYW5kIHRoZSBjb3JlIGxvZ2ljIHNlZW1zIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkOiBzZXR0aW5nIHVwIHN0YXRpYyBjYWxscyBhbmQgZW1pdHRpbmcgYSBmZXcgYXNzZW1ibHkgaW5zdHJ1Y3Rpb25zLiBGdXp6aW5nIHRoZSBCUEYgSklUIG1pZ2h0IGhpdCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCwgYnV0IGl0J3MganVzdCBlbWl0dGluZyBhIGNhbGwgYW5kIGFuIGBsZmVuY2VgLiBJIGRvbid0IHNlZSBhbnkgb2J2aW91cyBzb3VyY2VzIG9mIGNvbXBsZXggbG9naWMgdGhhdCBjb3VsZCBoaWRlIGJ1Z3MuIFdhaXQsIGJ1dCB0aGUgcGF0Y2ggKmRvZXMqIGNoYW5nZSBgY2xlYXJfYmhiX2xvb3BgIHRvIGBjbGVhcl9iaGJfbG9vcF9ub2ZlbmNlYCBhbmQgYWRkcyBhbiBleHBsaWNpdCBgbGZlbmNlYCBpbiBCUEYgSklULiBJdCBhbHNvIHVzZXMgYSBzdGF0aWMgY2FsbCBmb3IgS1ZNIGV4aXQgbWl0aWdhdGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBgV29ydGhGdXp6aW5nPXRydWVgIHNlZW1zIGFwcHJvcHJpYXRlLlxuXG5MZXQncyBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgbmVlZHMgZm9jdXNlZCBhdHRlbnRpb24uIE9rYXksIGBicGZfaml0X2NvbXAuY2AsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYGRvX2ppdGAsIGNhbGxzIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBTbyBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyNCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1Mzo1Mi45MDAxNjQ2NzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NTA2Mjg0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTE1ODA9c3RhdGljIHZvaWQgZW1pdF9wcml2X2ZyYW1lX3B0cih1OCAqKnBwcm9nLCB2b2lkIF9fcGVyY3B1ICpwcml2X2ZyYW1lX3B0cilcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0xNjA5LVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoxNjEwOnN0YXRpYyBpbnQgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKHU4ICoqcHByb2csIHU4ICppcCxcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMTYxMS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGJwZl9wcm9nICpicGZfcHJvZylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0yMTQxPXN0OlxcdFxcdFxcdGlmIChpc19pbW04KGluc24tXFx1MDAzZW9mZikpXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMjczNy1cXHRcXHRcXHQgICAgIW5zX2NhcGFibGVfbm9hdWRpdChcXHUwMDI2aW5pdF91c2VyX25zLCBDQVBfU1lTX0FETUlOKSkge1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzoyNzM4OlxcdFxcdFxcdFxcdGlmIChlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXIoXFx1MDAyNnByb2csIGlwLCBicGZfcHJvZykpXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTI3MzktXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjUzOjU1LjY0NTIzMzE1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDcyMzU2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZXMqKlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIHZ1bG5lcmFibGUuIEknbSBmb2N1c2luZyBvbiBmdW5jdGlvbnMgYmV5b25kIHRoZSBpbml0aWFsIGNvbW1hbmQtbGluZSBwYXJzaW5nLCBzaW5jZSBgdm1zY2FwZV9wYXJzZV9jbWRsaW5lYCBpcyBoYW5kbGVkIGVhcmx5IGFuZCB0aGVyZWZvcmUgbm90IGZ1enplZC4gSSdtIG5vdGluZyB0aGF0IGB2bXNjYXBlX3NlbGVjdF9taXRpZ2F0aW9uYCwgYHZtc2NhcGVfYXBwbHlfbWl0aWdhdGlvbmAsIGFuZCBgdm1zY2FwZV91cGRhdGVfbWl0aWdhdGlvbmAgYXJlIGFsbCBpbml0aWFsaXplZCAoYF9faW5pdGApLiBUaGF0J3MgZ29vZCB0byBrZWVwIGluIG1pbmQsIGJ1dCB0aGV5IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBleHBsb2l0YWJsZS4gTm93LCBoZXJlJ3MgYW4gaW50ZXJlc3Rpbmcgb25lOiBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuIFRoZSBjb21tZW50IGluZGljYXRlcyBpdCdzIHRyaWdnZXJlZCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3IgU01UIGNvbnRyb2wgY2hhbmdlcy4gSG90cGx1ZyBldmVudHMgYW5kIFNNVCB0b2dnbGluZyBhcmUga25vd24gcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLCBzbyBJIHN1c3BlY3QgaXQgbWlnaHQgYmUgcmVhY2hhYmxlLiBUaW1lIHRvIGRpZyBkZWVwZXIgaW50byBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzgwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjAwLjI5MjQ3MjA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI4ODMwNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdV9idWdzX3NtdF91cGRhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvaW5jbHVkZS9hc20vYnVncy5oPTEwPXN0YXRpYyBpbmxpbmUgaW50IHBwcm9fd2l0aF9yYW1fYnVnKHZvaWQpIHsgcmV0dXJuIDA7IH1cXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2J1Z3MuaC0xMi1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWdzLmg6MTM6ZXh0ZXJuIHZvaWQgY3B1X2J1Z3Nfc210X3VwZGF0ZSh2b2lkKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWdzLmgtMTQtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYz0zMTU4PXN0YXRpYyB2b2lkIF9faW5pdCB2bXNjYXBlX2FwcGx5X21pdGlnYXRpb24odm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvYnVncy5jLTMxNzMtXFxuYXJjaC94ODYva2VybmVsL2NwdS9idWdzLmM6MzE3NDp2b2lkIGNwdV9idWdzX3NtdF91cGRhdGUodm9pZClcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2J1Z3MuYy0zMTc1LXtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmM9MjU3Mj12b2lkIGFyY2hfc210X3VwZGF0ZSh2b2lkKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYy0yNTc0LVxcdC8qIEhhbmRsZSB0aGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uIG1pc2ZlYXR1cmVzICovXFxuYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYzoyNTc1OlxcdGNwdV9idWdzX3NtdF91cGRhdGUoKTtcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jLTI1NzYtXFx0LyogQ2hlY2sgd2hldGhlciBJUEkgYnJvYWRjYXN0aW5nIGNhbiBiZSBlbmFibGVkICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjAyLjgyMTMwOTgyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NDM0MTAzNTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU01ULVJlbGF0ZWQgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBjcHVfYnVnc19zbXRfdXBkYXRlYCBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgY2FsbGVkIGJ5IGBhcmNoX3NtdF91cGRhdGVgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBTTVQgKFNpbXVsdGFuZW91cyBNdWx0aS1UaHJlYWRpbmcpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIEl0J3Mgbm90IGluIGEgY3JpdGljYWwgcGVyZm9ybWFuY2UgcGF0aCwgd2hpY2ggaXMgZ29vZC4gQnV0IGl0ICppcyogcmVhY2hhYmxlLCBzbyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZy5cblxuVGhlIGNvZGUgY2hhbmdlIGl0c2VsZiBzZWVtcyBpbmNyZWRpYmx5IG1pbm9yLiBJdCdzIGp1c3QgYSBzaW1wbGUgYWRkaXRpb24gb2YgYSBjb3VwbGUgbW9yZSBjYXNlcyB0byBhIGBzd2l0Y2hgIHN0YXRlbWVudCB3aXRoaW4gYGNwdV9idWdzX3NtdF91cGRhdGVgLiBQcmV0dHkgdHJpdmlhbCwgYWN0dWFsbHksIGp1c3QgZXh0ZW5kaW5nIHRoZSBzY2VuYXJpb3MgY29uc2lkZXJlZCBmb3IgYHZtc2NhcGVfbWl0aWdhdGlvbmAuIE5vIHNpZ25pZmljYW50IGFsZ29yaXRobWljIG1vZGlmaWNhdGlvbnMuIFRoaXMgaXNuJ3Qgd2hlcmUgdGhlIGFjdGlvbiBpcy5cblxuVGhlcmVmb3JlLCB0aGUgc2lnbmlmaWNhbnQgY2hhbmdlIGlzIHJlYWxseSBpbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCB3aGljaCBpcyBhbHNvIGEgbm9uLWhvdCBwYXRoIGZ1bmN0aW9uLiBJIHNob3VsZCB2ZXJpZnkgdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLlxuXG5BbHJpZ2h0LCBsZXQncyBsb29rIGF0IHRoZSBjb25maWcgb3B0aW9ucy4gVGhlIGtleSBvbmUgaXMgYE1JVElHQVRJT05fVk1TQ0FQRWAuIFRoYXQncyB0aGUgcHJpbWFyeSBkcml2ZXIgaGVyZS4gVGhlbiwgdG8gZW5hYmxlIFZNU0NBUEUsIGBLVk1gIGlzIG5lY2Vzc2FyeS4gQW5kLCBiYXNlZCBvbiB0aGUgbm9uLWhvdC1wYXRoIGZ1bmN0aW9uLCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCwgd2UgbmVlZCBgQlBGX0pJVGAuIEl0IGxvb2tzIGxpa2UgYEhBVkVfU1RBVElDX0NBTExgIGlzIGFsc28gYSBkZXBlbmRlbmN5IGZvciBgTUlUSUdBVElPTl9WTVNDQVBFYC4gVGhlc2UgY2hlY2tzIGFyZSBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSBjb2RlIGJlaGF2ZXMgYXMgaW50ZW5kZWQgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgTUlUSUdBVElPTl9WTVNDQVBFYCBpbiBgYXJjaC94ODYvS2NvbmZpZ2AgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgaW4gaXRzIGRlcGVuZGVuY2llcyBvciBpbXBsaWNhdGlvbnMuIEdvdHRhIGRvdCB0aG9zZSBpJ3MgYW5kIGNyb3NzIHRob3NlIHQncywgZXNwZWNpYWxseSB3aXRoIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6MTAuMjU1NDE1OTAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM1ODQ3NTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvS2NvbmZpZz0yNzA3PWNvbmZpZyBNSVRJR0FUSU9OX1RTQVxcbi0tXFxuYXJjaC94ODYvS2NvbmZpZy0yNzE2LVxcbmFyY2gveDg2L0tjb25maWc6MjcxNzpjb25maWcgTUlUSUdBVElPTl9WTVNDQVBFXFxuYXJjaC94ODYvS2NvbmZpZy0yNzE4LVxcdGJvb2wgXFxcIk1pdGlnYXRlIFZNU0NBUEVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjEyLjY5MTI2OTUxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDQyMTM5MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgeDg2IEFyY2hpdGVjdHVyZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGFyY2gveDg2L0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGFpbWluZyBmb3IgYXJvdW5kIGxpbmUgMjcxNy4gSSBrbm93IHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgdG8gZ2V0IHRoZSBzcGVjaWZpYyBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0IEknbSBsb29raW5nIGZvci4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gZmluZCBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzMTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDoxNS43MzM0MTExODdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyNDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjcxMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjcxMDpcXHRcXHRkZWZhdWx0IHlcXG4yNzExOlxcdFxcdGhlbHBcXG4yNzEyOlxcdFxcdCAgRW5hYmxlIG1pdGlnYXRpb24gZm9yIFRyYW5zaWVudCBTY2hlZHVsZXIgQXR0YWNrcy4gVFNBIGlzIGEgaGFyZHdhcmVcXG4yNzEzOlxcdFxcdCAgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBvbiBBTUQgQ1BVcyB3aGljaCBjYW4gbGVhZCB0byBmb3J3YXJkaW5nIG9mXFxuMjcxNDpcXHRcXHQgIGludmFsaWQgaW5mbyB0byBzdWJzZXF1ZW50IGluc3RydWN0aW9ucyBhbmQgdGh1cyBjYW4gYWZmZWN0IHRoZWlyXFxuMjcxNTpcXHRcXHQgIHRpbWluZyBhbmQgdGhlcmVieSBjYXVzZSBhIGxlYWthZ2UuXFxuMjcxNjpcXHRcXG4yNzE3OlxcdGNvbmZpZyBNSVRJR0FUSU9OX1ZNU0NBUEVcXG4yNzE4OlxcdFxcdGJvb2wgXFxcIk1pdGlnYXRlIFZNU0NBUEVcXFwiXFxuMjcxOTpcXHRcXHRkZXBlbmRzIG9uIEtWTVxcbjI3MjA6XFx0XFx0ZGVwZW5kcyBvbiBIQVZFX1NUQVRJQ19DQUxMXFxuMjcyMTpcXHRcXHRkZWZhdWx0IHlcXG4yNzIyOlxcdFxcdGhlbHBcXG4yNzIzOlxcdFxcdCAgRW5hYmxlIG1pdGlnYXRpb24gZm9yIFZNU0NBUEUgYXR0YWNrcy4gVk1TQ0FQRSBpcyBhIGhhcmR3YXJlIHNlY3VyaXR5XFxuMjcyNDpcXHRcXHQgIHZ1bG5lcmFiaWxpdHkgb24gSW50ZWwgYW5kIEFNRCBDUFVzIHRoYXQgbWF5IGFsbG93IGEgZ3Vlc3QgdG8gZG9cXG4yNzI1OlxcdFxcdCAgU3BlY3RyZSB2MiBzdHlsZSBhdHRhY2tzIG9uIHVzZXJzcGFjZSBoeXBlcnZpc29yLlxcbjI3MjY6XFx0ZW5kaWZcXG4yNzI3OlxcdFxcbjI3Mjg6XFx0Y29uZmlnIEFSQ0hfSEFTX0FERF9QQUdFU1xcbjI3Mjk6XFx0XFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDoxNS43MzM2MTYxODdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTM1MTc2MzExNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLiAgVGhhdCdzIHRoZSBrZXksIHJpZ2h0PyBBbmQsIGhvbGQgb24sIGl0IGRlcGVuZHMgb24gYEtWTWAgYW5kIGBIQVZFX1NUQVRJQ19DQUxMYC4gIFRoYXQgY29uZmlybXMgdGhhdCBlbmFibGluZyBgTUlUSUdBVElPTl9WTVNDQVBFYCBpcyBlc3NlbnRpYWwgaGVyZSwgYW5kIG1ha2VzIHRvdGFsIHNlbnNlIGdpdmVuIHRoZSB2dWxuZXJhYmlsaXR5IGJlaW5nIGFkZHJlc3NlZC4gQW5kIGl0IHNlZW1zIHdlIG5lZWQgYEJQRl9KSVRgIGZvciB0aGUgQlBGIHBhcnQuXG5cbk5vdywgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYE1JVElHQVRJT05fVk1TQ0FQRWAgaXMgdGhlICpvbmx5KiBzaWduaWZpY2FudCBjb25maWcgY2hhbmdlLi4uIE5vcGUsIHRoYXQncyBpdC4gR29vZC5cblxuQWxyaWdodCwgdGltZSB0byBzdW1tYXJpemUgd2hhdCBJJ3ZlIGdvdDpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggb3VyIHRpbWVcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCAtIHRoaXMgbG9va3MgbGlrZSB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBNSVRJR0FUSU9OX1ZNU0NBUEVgLCBgQlBGX0pJVGAgLSBvYnZpb3VzIGNob2ljZXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGFuZCB0aGUgZGVwZW5kZW5jaWVzXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQkhCIGNsZWFyaW5nIG1pdGlnYXRpb24gZm9yIHRoZSBWTVNDQVBFIHZ1bG5lcmFiaWxpdHksIHNwZWNpZmljYWxseSBtb2RpZnlpbmcgQlBGIEpJVCBjb2RlIGdlbmVyYXRpb24gYW5kIHRoZSBLVk0gVk0tZXhpdCBwYXRocy5cblxuTm93LCBsZXQgbWUgZHJpbGwgZG93biBvbiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYC4gSXQncyBhIHN0YXRpYyBmdW5jdGlvbiBpbiBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gSXMgaXQgcmVhY2hhYmxlPyBCaW5nbyEgSXQncyBjYWxsZWQgZnJvbSBgZG9faml0YCB3aGVuIGNvbXB1dGluZyBgYnBmX3Byb2ctXHUwMDNlYXV4LVx1MDAzZWppdGVkX2xlbmAgYW5kIHdoZW4gZW1pdHRpbmcgaW5zdHJ1Y3Rpb25zLCBhbmQgaXQgbG9va3MgbGlrZSBhIHVzZXIgY2FuIHRyaWdnZXIgaXQgdGhyb3VnaCBhIEJQRiBwcm9ncmFtLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBpdCBpcyB0aGUgb25seSBmdW5jdGlvbiwgd2hpY2ggSSB3YXMgYWJsZSB0byBkbyEgSSdtIHNlZWluZyBvdGhlciBhc3NlbWJseSBmdW5jdGlvbnMgdGhhdCBhcmUgcmVsYXRlZCwgYnV0IGxpa2VseSBleGVjdXRlZC4gQWxzbywgaXQgbG9va3MgbGlrZSBgdm1zY2FwZV9wcmVkaWN0b3JfZmx1c2hgIGlzIGFsc28gcmVhY2hhYmxlIGJ5IHN0YXRpYyBjYWxscy4gSSBhbHNvIG5vdGljZWQgdGhhdCBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAgaXMgcmVhY2hhYmxlLlxuXG5SaWdodCwgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zLi4uIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZi4uLlwiICBObywgdGhpcyBpcyAqZGVmaW5pdGVseSogbm90IGRvY3VtZW50YXRpb24sIGEgY29tbWVudCwgYSBjb25zdGFudCBjaGFuZ2UsIG9yIHNvbWV0aGluZyBpbXBvc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoaXMgaXMgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgSklULCBLVk0gZXhpdCBoYW5kbGluZykgYW5kIGlzICphYnNvbHV0ZWx5KiByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS5cblxuVGhlcmVmb3JlLCBXb3J0aEZ1enppbmcgc3RheXMgYHRydWVgLiBTbywgZmluYWwgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWVcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYFxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgTUlUSUdBVElPTl9WTVNDQVBFYCwgYEJQRl9KSVRgXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBKSVQgY29tcGlsYXRpb24gYW5kIEtWTSBWTS1leGl0IGhhbmRsaW5nIHRvIGltcGxlbWVudCBhIG5ldyBCSEIgY2xlYXJpbmcgbWl0aWdhdGlvbiBmb3IgdGhlIFZNU0NBUEUgdnVsbmVyYWJpbGl0eS4gSSB0aGluayBgQlBGX0pJVGAgaXMgdGhlIHJpZ2h0IGNvbmZpZyBuYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc3NCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjI1LjA4NTM4MTI2MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNjkyMzIzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDoyNy40MjIzMTA2MTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4Nzk1Mzk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIEJQRiBhbmQgS1ZNIENvbmZpZ3VyYXRpb25zKipcblxuT2theSwgc28gSSdtIHByZXR0eSBzdXJlIGBCUEZfSklUYCBpcyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHdlJ3JlIGxvb2tpbmcgYXQgaGVyZS4gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBmbGFnIGZvciB0aGUgQlBGIEp1c3QtSW4tVGltZSBjb21waWxlci4gSXQncyB0aGUgb25lIEkgcmVtZW1iZXIgbmVlZGluZyB0byBlbmFibGUgZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgcmVsYXRlZCB0byBCUEYgcHJvZ3JhbXMuXG5cbk5vdywgSSdtIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2tpbmcgbXkgbWVudGFsIG1hcCBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYEtWTWAgaXMgaW5kZWVkIHRoZSBjb3JyZWN0IG5hbWUgZm9yIHRoZSBLVk0tcmVsYXRlZCBjb25maWd1cmF0aW9uLiBNeSBpbnR1aXRpb24gc2F5cyBpdCBpcywgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvbmZpcm0gdGhlIGV4YWN0IGNvbmZpZyBuYW1lLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHN1Y2ggZm91bmRhdGlvbmFsIGNvbXBvbmVudHMuIEknbSByZWNhbGxpbmcgdGhlIGdlbmVyYWwgcGF0dGVybnMgYW5kIG5hbWluZyBjb252ZW50aW9ucyB0aGF0IGFyZSB1c3VhbGx5IHVzZWQgc28gSSBjYW4gYmUgc3VyZSBJJ20gdGFsa2luZyBhYm91dCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTczMTYsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzo1NDozMS4xMTAyNjY5NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjA3MDEyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIk1haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcXFwiYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00NS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDY6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgzOT1zb3VyY2UgXFxcImFyY2gveDg2L3hlbi9LY29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctODQwLVxcbmFyY2gveDg2L0tjb25maWc6ODQxOmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTg0Mi1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTMtXFxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXFxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxcbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXFxudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNDUtXFxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXFxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjEtXFxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjctXFxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzAtXFxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTczLVxcbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy05My1cXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxcbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05OS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDItXFxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6MzMuNDcwOTcyNTc3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4OTg5NTYyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBmaW5hbGl6aW5nIHRoaXMgY29uZmlnLiBJIGtub3cgdGhhdCBgS1ZNYCBpcyB0aGUgYmFzZSwgYnV0IGBNSVRJR0FUSU9OX1ZNU0NBUEVgIGJ1aWxkcyBvbiB0aGF0IGRlcGVuZGVuY3kuIFNvLCByZWFsbHksIHNwZWNpZnlpbmcgYE1JVElHQVRJT05fVk1TQ0FQRWAgYW5kIGBCUEZfSklUYCBzaG91bGQgY292ZXIgZXZlcnl0aGluZyB3ZSBuZWVkLlxuXG5MZXQgbWUgZG8gYSBmaW5hbCBzd2VlcCB0aHJvdWdoIHRoZSBGb2N1c1N5bWJvbHMuIEknbSBub3RpbmcgdGhhdCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBpcyBzdGF0aWMsIHdoaWNoIGlzIGZpbmUsIHdlIGNhbiBzdGlsbCBsaXN0IGl0LiBBbnkgb3RoZXIgZnVuY3Rpb25zIEkgbmVlZCB0byBhZGRyZXNzPyBMZXQncyBzZWUuLi4gSSBoYXZlIGB2bXNjYXBlX3NlbGVjdF9taXRpZ2F0aW9uYCwgYHZtc2NhcGVfYXBwbHlfbWl0aWdhdGlvbmAsIGB2bXNjYXBlX3VwZGF0ZV9taXRpZ2F0aW9uYCwgYHZtc2NhcGVfcGFyc2VfY21kbGluZWAsIGFuZCBgY3B1X2J1Z3Nfc210X3VwZGF0ZWAuXG5cbkFscmlnaHQsIEknbGwgaW5jbHVkZSBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBhbmQgYGNwdV9idWdzX3NtdF91cGRhdGVgLlxuXG5XYWl0IGEgc2Vjb25k4oCmIHdhc24ndCBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfSklUYD8gRG9lcyBgQ09ORklHX01JVElHQVRJT05fVk1TQ0FQRWAgYWxzbyBpbmZsdWVuY2UgaXRzIGF2YWlsYWJpbGl0eT8gSSBzaG91bGQgY2hlY2sgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AgdG8gY29uZmlybSB0aGF0IGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODQzLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjU0OjQzLjM2OTkzMTA0MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTIyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MDA6XFx0I2RlZmluZSBfX0xPQURfVENDX1BUUihvZmYpXFx0XFx0XFx0XFxcXFxcbjE2MDE6XFx0XFx0RU1JVDNfb2ZmMzIoMHg0OCwgMHg4QiwgMHg4NSwgb2ZmKVxcbjE2MDI6XFx0LyogbW92IHJheCwgcXdvcmQgcHRyIFtyYnAgLSByb3VuZGVkX3N0YWNrX2RlcHRoIC0gMTZdICovXFxuMTYwMzpcXHQjZGVmaW5lIExPQURfVEFJTF9DQUxMX0NOVF9QVFIoc3RhY2spXFx0XFx0XFx0XFx0XFxcXFxcbjE2MDQ6XFx0XFx0X19MT0FEX1RDQ19QVFIoQlBGX1RBSUxfQ0FMTF9DTlRfUFRSX1NUQUNLX09GRihzdGFjaykpXFxuMTYwNTpcXHRcXG4xNjA2OlxcdC8qIE1lbW9yeSBzaXplL3ZhbHVlIHRvIHByb3RlY3QgcHJpdmF0ZSBzdGFjayBvdmVyZmxvdy91bmRlcmZsb3cgKi9cXG4xNjA3OlxcdCNkZWZpbmUgUFJJVl9TVEFDS19HVUFSRF9TWiAgICA4XFxuMTYwODpcXHQjZGVmaW5lIFBSSVZfU1RBQ0tfR1VBUkRfVkFMICAgMHhFQjlGMTIzNDU2NzhlYjlmVUxMXFxuMTYwOTpcXHRcXG4xNjEwOlxcdHN0YXRpYyBpbnQgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyKHU4ICoqcHByb2csIHU4ICppcCxcXG4xNjExOlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9wcm9nKVxcbjE2MTI6XFx0e1xcbjE2MTM6XFx0XFx0dTggKnByb2cgPSAqcHByb2c7XFxuMTYxNDpcXHRcXHR1OCAqZnVuYztcXG4xNjE1OlxcdFxcbjE2MTY6XFx0XFx0aWYgKGNwdV9mZWF0dXJlX2VuYWJsZWQoWDg2X0ZFQVRVUkVfQ0xFQVJfQkhCX0xPT1ApKSB7XFxuMTYxNzpcXHRcXHRcXHQvKiBUaGUgY2xlYXJpbmcgc2VxdWVuY2UgY2xvYmJlcnMgZWF4IGFuZCBlY3guICovXFxuMTYxODpcXHRcXHRcXHRFTUlUMSgweDUwKTsgLyogcHVzaCByYXggKi9cXG4xNjE5OlxcdFxcdFxcdEVNSVQxKDB4NTEpOyAvKiBwdXNoIHJjeCAqL1xcbjE2MjA6XFx0XFx0XFx0aXAgKz0gMjtcXG4xNjIxOlxcdFxcbjE2MjI6XFx0XFx0XFx0ZnVuYyA9ICh1OCAqKWNsZWFyX2JoYl9sb29wX25vZmVuY2U7XFxuMTYyMzpcXHRcXHRcXHRpcCArPSB4ODZfY2FsbF9kZXB0aF9lbWl0X2FjY291bnRpbmcoXFx1MDAyNnByb2csIGZ1bmMsIGlwKTtcXG4xNjI0OlxcdFxcbjE2MjU6XFx0XFx0XFx0aWYgKGVtaXRfY2FsbChcXHUwMDI2cHJvZywgZnVuYywgaXApKVxcbjE2MjY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTYyNzpcXHRcXHRcXHQvKiBEb24ndCBzcGVjdWxhdGUgcGFzdCB0aGlzIHVudGlsIEJIQiBpcyBjbGVhcmVkICovXFxuMTYyODpcXHRcXHRcXHRFTUlUX0xGRU5DRSgpO1xcbjE2Mjk6XFx0XFx0XFx0RU1JVDEoMHg1OSk7IC8qIHBvcCByY3ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6NDMuMzcwMzI1NTAxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MjM1MTg0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEJISSwgVk1TQ0FQRSwgYW5kIHRoZSBCUEYgSklUKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2VlcyBhIGNoZWNrIGZvciBgY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVSRV9DTEVBUl9CSEJfTE9PUClgLiBUaGF0IHJpbmdzIGEgYmVsbCDigJMgYGNsZWFyX2JoYl9sb29wYCBzb3VuZHMgbGlrZSBpdCBiZWxvbmdzIHRvIEJyYW5jaCBIaXN0b3J5IEluamVjdGlvbiAoQkhJKSwgYXMgc2V0IGJ5IGBiaGlfc2VsZWN0X21pdGlnYXRpb25gLiBCdXQgdGhpcyBwYXRjaCBpcyB0YWdnZWQgYXMgVk1TQ0FQRSwgc28gc29tZXRoaW5nJ3MgYW1pc3MuXG5cbkFoLCBJIHNlZSBpdCBub3cuIFRoZSBwYXRjaCBpc24ndCBkaXJlY3RseSAqYWJvdXQqIFZNU0NBUEUsIGJ1dCByYXRoZXIsIGl0IGFsdGVycyBob3cgdGhlIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIEJIQiBjbGVhcmluZyBmb3IgKmJvdGgqIEJISSBhbmQgVk1TQ0FQRS4gU3BlY2lmaWNhbGx5LCBpdCByZW5hbWVzIGBjbGVhcl9iaGJfbG9vcGAgdG8gYGNsZWFyX2JoYl9sb29wX25vZmVuY2VgIGFuZCB0aGVuIGluamVjdHMgYW4gZXhwbGljaXQgYGxmZW5jZWAgaW5zdHJ1Y3Rpb24gd2l0aGluIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgLiBUaGUgb3JpZ2luYWwgYGxmZW5jZWAgd2FzIHJlbW92ZWQgZnJvbSBgY2xlYXJfYmhiX2xvb3BgLlxuXG5TbywgdGhlIHVuZGVybHlpbmcgYGNsZWFyX2JoYl9sb29wYCBmdW5jdGlvbiBpcyBzaGFyZWQgYnkgYm90aCBCSEkgYW5kIFZNU0NBUEUgbWl0aWdhdGlvbnMsIG1lYW5pbmcgdGhpcyBwYXRjaCBoYXMgYW4gaW50ZXJlc3Rpbmcgc2lkZSBlZmZlY3QuIFRoZSBjb3JlIFZNU0NBUEUgbWl0aWdhdGlvbiBsb2dpYyBpdHNlbGYgaXMgaW4gYHZtc2NhcGVfc2VsZWN0X21pdGlnYXRpb25gIGFuZCBgdm1zY2FwZV9hcHBseV9taXRpZ2F0aW9uYCwgd2hpY2ggYXJlIHVudG91Y2hlZC5cblxuVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIEl0J3MgZWZmZWN0aXZlbHkgaW50cm9kdWNpbmcgYSAqbmV3KiBCSEIgY2xlYXJpbmcgc3RyYXRlZ3kgdGhhdCBpbXBhY3RzIGhvdyBWTVNDQVBFIGlzIGhhbmRsZWQuIEZ1cnRoZXJtb3JlLCB0aGUgbW9kaWZpY2F0aW9ucyB0byBgZW1pdF9zcGVjdHJlX2JoYl9iYXJyaWVyYCBhcmUgcmVsZXZhbnQgdG8gdGhlIEJQRiBKSVQgQkhCIGJhcnJpZXIuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYE1JVElHQVRJT05fVk1TQ0FQRWAgYW5kIGBCUEZfSklUYC4gVGhlIHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGBlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJgIChvYnZpb3VzbHkpIGFuZCBwZXJoYXBzIGBjcHVfYnVnc19zbXRfdXBkYXRlYCBhcyBpdCBjb3VsZCBiZSBhZmZlY3RlZCBieSBjaGFuZ2VzIHRvIEJIQiByZWxhdGVkIG1pdGlnYXRpb25zLiBMZXQncyBnZXQgdGhlc2UgcmVzdWx0cyBhbmQgZ2V0IGJhY2sgdG8gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5OTQsIk91dHB1dFRva2VucyI6MTM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6NTQ6NTAuODkzODQ3NDg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MjMxOTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNSVRJR0FUSU9OX1ZNU0NBUEVcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJcIixcbiAgICBcImNwdV9idWdzX3NtdF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEJIQiBjbGVhcmluZyBtaXRpZ2F0aW9uIGZvciB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCBtb2RpZmllcyBCUEYgSklUIGNvZGUgZ2VuZXJhdGlvbiB0byB1c2UgYSByZWZhY3RvcmVkIEJIQiBjbGVhcmluZyBsb29wIGFuZCB1cGRhdGVzIEtWTSBWTS1leGl0IHBhdGhzIHRvIHVzZSBhIHN0YXRpYyBjYWxsIGZvciBwcmVkaWN0b3IgZmx1c2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNSVRJR0FUSU9OX1ZNU0NBUEVcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X3NwZWN0cmVfYmhiX2JhcnJpZXJcIixcbiAgICBcImNwdV9idWdzX3NtdF91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEJIQiBjbGVhcmluZyBtaXRpZ2F0aW9uIGZvciB0aGUgVk1TQ0FQRSB2dWxuZXJhYmlsaXR5LiBJdCBtb2RpZmllcyBCUEYgSklUIGNvZGUgZ2VuZXJhdGlvbiB0byB1c2UgYSByZWZhY3RvcmVkIEJIQiBjbGVhcmluZyBsb29wIGFuZCB1cGRhdGVzIEtWTSBWTS1leGl0IHBhdGhzIHRvIHVzZSBhIHN0YXRpYyBjYWxsIGZvciBwcmVkaWN0b3IgZmx1c2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdx5fs[1] Phase: Succeeded StartedAt: 2026-06-23 17:55:02 +0000 UTC FinishedAt: 2026-06-23 17:55:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 17:55:02 +0000 UTC FinishedAt: 2026-06-23 17:55:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2] Phase: Succeeded StartedAt: 2026-06-23 17:55:02 +0000 UTC FinishedAt: 2026-06-23 21:54:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-06-23 17:55:02 +0000 UTC FinishedAt: 2026-06-23 21:54:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 17:55:02 +0000 UTC FinishedAt: 2026-06-23 17:55:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 17:55:02 +0000 UTC FinishedAt: 2026-06-23 17:55:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-workflowdx5fs/series-workflowdx5fs-convert-artifact-456834046/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 17:55:35 +0000 UTC FinishedAt: 2026-06-23 18:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 17:55:35 +0000 UTC FinishedAt: 2026-06-23 18:20:02 +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:*e66de12c-f7b2-4245-bf97-c274cd206f2e,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-workflowdx5fs/series-workflowdx5fs-convert-artifact-456834046/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": "0d5e7f7b-e55f-4b5e-b297-767c9151d997", "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-workflowdx5fs/series-workflowdx5fs-build-action-4020872164/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 17:55:35 +0000 UTC FinishedAt: 2026-06-23 18:18:47 +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:*e66de12c-f7b2-4245-bf97-c274cd206f2e,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-workflowdx5fs/series-workflowdx5fs-convert-artifact-456834046/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": "0d5e7f7b-e55f-4b5e-b297-767c9151d997", "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-workflowdx5fs/series-workflowdx5fs-build-action-4020872164/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 18:20:02 +0000 UTC FinishedAt: 2026-06-23 18:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 18:20:02 +0000 UTC FinishedAt: 2026-06-23 18:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 18:20:02 +0000 UTC FinishedAt: 2026-06-23 18:20:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 18:20:02 +0000 UTC FinishedAt: 2026-06-23 18:20:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-workflowdx5fs/series-workflowdx5fs-convert-artifact-903307057/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 18:20:22 +0000 UTC FinishedAt: 2026-06-23 18:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 18:20:22 +0000 UTC FinishedAt: 2026-06-23 18:22:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d5e7f7b-e55f-4b5e-b297-767c9151d997,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-workflowdx5fs/series-workflowdx5fs-build-action-4020872164/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-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 18:22:20 +0000 UTC FinishedAt: 2026-06-23 18:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 18:22:20 +0000 UTC FinishedAt: 2026-06-23 18:22:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 18:22:20 +0000 UTC FinishedAt: 2026-06-23 18:50:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 18:22:20 +0000 UTC FinishedAt: 2026-06-23 18:50:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e66de12c-f7b2-4245-bf97-c274cd206f2e,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-workflowdx5fs/series-workflowdx5fs-convert-artifact-903307057/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": "ef8288b0-f908-4c6f-b294-5a3aaef32642", "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-workflowdx5fs/series-workflowdx5fs-build-action-3038420221/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 18:22:20 +0000 UTC FinishedAt: 2026-06-23 18:50:13 +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:*e66de12c-f7b2-4245-bf97-c274cd206f2e,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-workflowdx5fs/series-workflowdx5fs-convert-artifact-903307057/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": "ef8288b0-f908-4c6f-b294-5a3aaef32642", "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-workflowdx5fs/series-workflowdx5fs-build-action-3038420221/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 18:50:23 +0000 UTC FinishedAt: 2026-06-23 18:50:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 18:50:23 +0000 UTC FinishedAt: 2026-06-23 18:50:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 18:50:23 +0000 UTC FinishedAt: 2026-06-23 18:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 18:50:23 +0000 UTC FinishedAt: 2026-06-23 18:52:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef8288b0-f908-4c6f-b294-5a3aaef32642,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-workflowdx5fs/series-workflowdx5fs-build-action-3038420221/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-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 21:54:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 21:54: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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"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:*0d5e7f7b-e55f-4b5e-b297-767c9151d997,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef8288b0-f908-4c6f-b294-5a3aaef32642,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-workflowdx5fs/series-workflowdx5fs-build-action-4020872164/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-workflowdx5fs/series-workflowdx5fs-build-action-3038420221/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 18:52:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 18:52:44 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"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-workflowdx5fs/series-workflowdx5fs-convert-artifact-1012712934/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 18:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 18:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 18:52:27 +0000 UTC FinishedAt: 2026-06-23 18:52:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-06-23 18:52:51 +0000 UTC FinishedAt: 2026-06-23 21:54:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdx5fs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","kvm","net"],"focus_symbols":["emit_spectre_bhb_barrier","cpu_bugs_smt_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MITIGATION_VMSCAPE","BPF_JIT"],"series_id":"6ac99ec7-ca73-416d-afe1-0d75c8dcc7c1","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-06-23 18:52:51 +0000 UTC FinishedAt: 2026-06-23 21:54:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0d5e7f7b-e55f-4b5e-b297-767c9151d997,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef8288b0-f908-4c6f-b294-5a3aaef32642,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-workflowdx5fs/series-workflowdx5fs-build-action-4020872164/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-workflowdx5fs/series-workflowdx5fs-build-action-3038420221/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-workflowdx5fs/series-workflowdx5fs-convert-artifact-1012712934/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,}