Name: series-workflow8wdw7 Phase: Succeeded StartedAt: 2026-07-02 09:56:25 +0000 UTC FinishedAt: 2026-07-02 11:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[0] Phase: Succeeded StartedAt: 2026-07-02 09:56:25 +0000 UTC FinishedAt: 2026-07-02 10:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 09:56:25 +0000 UTC FinishedAt: 2026-07-02 10:09:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bc7b086a45521a986a49045907f017e3e46c763e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bc7b086a45521a986a49045907f017e3e46c763e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "6270fdd3-9aad-420c-b454-ac41dcdad2ec" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "bpf_jit_emit_insn" ], "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" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNDRmYzlmZjI1YzQ0ZDM3ZGRlOTcyNWQ5MGQwMDE1Y2FhZWQyOWZlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMDowNDo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxuaW5kZXggZTllOGJhODNlNjMyZjkuLjEzN2E0OTQ4ODMyNWU0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxuQEAgLTkxLDExICYjNDM7OTEsNyBAQFxuIFxuICNpZmRlZiBDT05GSUdfU01QXG4gLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wXG4tXHRsdyAgICBcXHRtcCwgVEFTS19USV9DUFVfTlVNKHRwKVxuLVx0c2xsaSAgXFx0bXAsIFxcdG1wLCBSSVNDVl9MR1BUUlxuLVx0bGEgICAgXFxkc3QsIF9fcGVyX2NwdV9vZmZzZXRcbi1cdGFkZCAgIFxcZHN0LCBcXGRzdCwgXFx0bXBcbi1cdFJFR19MIFxcdG1wLCAwKFxcZHN0KVxuJiM0MztcdFJFR19MIFxcdG1wLCBUQVNLX1RJX1BDUFVfT0ZGU0VUKHRwKVxuIFx0bGEgICAgXFxkc3QsIFxcc3ltXG4gXHRhZGQgICBcXGRzdCwgXFxkc3QsIFxcdG1wXG4gLmVuZG1cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhcbmluZGV4IDA5YmI1ZjU3YTlkMzQ2Li45MmQ1ZjgzMWYzNDk1YSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXG5AQCAtMTAyLDEyICYjNDM7MTAyLDE0IEBAIF9faW9fcmVhZHNfaW5zKHJlYWRzLCB1MzIsIGwsIF9faW9fYnIoKSwgX19pb19hcihhZGRyKSlcbiAjZGVmaW5lIHJlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX3JlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgcmVhZHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpXG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxuIF9faW9fcmVhZHNfaW5zKGlucywgIHU4LCBiLCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSlcbiBfX2lvX3JlYWRzX2lucyhpbnMsIHUxNiwgdywgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXG4gX19pb19yZWFkc19pbnMoaW5zLCB1MzIsIGwsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxuICNkZWZpbmUgaW5zYihhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc2IoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSBpbnN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zdyhQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudClcbiAjZGVmaW5lIGluc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNsKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuJiM0MzsjZW5kaWZcbiBcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgIHU4LCBiLCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTE2LCB3LCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbkBAIC0xMTYsMjYgJiM0MzsxMTgsMzIgQEAgX19pb193cml0ZXNfb3V0cyh3cml0ZXMsIHUzMiwgbCwgX19pb19idygpLCBfX2lvX2F3KCkpXG4gI2RlZmluZSB3cml0ZXN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzdyhhZGRyLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc2woYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCAgdTgsIGIsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MTYsIHcsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MzIsIGwsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXG4gI2RlZmluZSBvdXRzYihhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNiKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgb3V0c3coYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzdyhQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudClcbiAjZGVmaW5lIG91dHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c2woUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4mIzQzOyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfNjRCSVRcbiBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTY0LCBxLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpXG4gI2RlZmluZSByZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXG4gX19pb19yZWFkc19pbnMoaW5zLCB1NjQsIHEsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxuICNkZWZpbmUgaW5zcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3EoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4mIzQzOyNlbmRpZlxuIFxuIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1NjQsIHEsIF9faW9fYncoKSwgX19pb19hdygpKVxuICNkZWZpbmUgd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1NjQsIHEsIF9faW9fcGJyKCksIF9faW9fcGF3KCkpXG4gI2RlZmluZSBvdXRzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNxKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNlbmRpZlxuJiM0MzsjZW5kaWZcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20tZ2VuZXJpYy9pby5oXHUwMDNlXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWJmOWY0Y2Y0Y2E1YWFcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhcbkBAIC0wLDAgJiM0MzsxLDMwMCBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xuJiM0MztcbiYjNDM7I2lmbmRlZiBfX0FTTV9QRVJDUFVfSFxuJiM0MzsjZGVmaW5lIF9fQVNNX1BFUkNQVV9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZW1wdC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vYWx0ZXJuYXRpdmUtbWFjcm9zLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2NtcHhjaGcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS1tYWNyb3MuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vY3VycmVudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS9od2NhcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS90aHJlYWRfaW5mby5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFBFUkNQVV9SV19PUFMoc3opXHRcdFx0XHRcdFx0XFxcbiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fcGVyY3B1X3JlYWRfIyNzeih2b2lkICpwdHIpXHRcdFxcXG4mIzQzO3tcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHJldHVybiBSRUFEX09OQ0UoKih1IyNzeiAqKXB0cik7XHRcdFx0XHRcXFxuJiM0Mzt9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1X3dyaXRlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFxcXG4mIzQzO3tcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFdSSVRFX09OQ0UoKih1IyNzeiAqKXB0ciwgKHUjI3N6KXZhbCk7XHRcdFx0XHRcXFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztQRVJDUFVfUldfT1BTKDgpXG4mIzQzO1BFUkNQVV9SV19PUFMoMTYpXG4mIzQzO1BFUkNQVV9SV19PUFMoMzIpXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzO1BFUkNQVV9SV19PUFMoNjQpXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2RlZmluZSBfX1BFUkNQVV9BTU9fT1BfQ0FTRShzZngsIG5hbWUsIHN6LCBhbW9faW5zbilcdFx0XHRcXFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO19fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFx0XFxcbiYjNDM7e1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDthbW9cJiMzNDsgI2Ftb19pbnNuICNzZnggXCYjMzQ7IHplcm8sICVbdmFsXSwgJVtwdHJdXCYjMzQ7XHRcdFxcXG4mIzQzO1x0XHQ6IFtwdHJdIFwmIzM0OyYjNDM7QVwmIzM0OyAoKih1IyNzeiAqKXB0cilcdFx0XHRcdFxcXG4mIzQzO1x0XHQ6IFt2YWxdIFwmIzM0O3JcJiMzNDsgKCh1IyNzeikodmFsKSlcdFx0XHRcdFxcXG4mIzQzO1x0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XFxcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIFBFUkNQVV9PUChuYW1lLCBhbW9faW5zbilcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKVx0XHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX09QX0NBU0UoLmQsIG5hbWUsIDY0LCBhbW9faW5zbilcbiYjNDM7I2Vsc2VcbiYjNDM7I2RlZmluZSBQRVJDUFVfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztQRVJDUFVfT1AoYWRkLCBhZGQpXG4mIzQzO1BFUkNQVV9PUChhbmQsIGFuZClcbiYjNDM7UEVSQ1BVX09QKG9yLCBvcilcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLFxuJiM0MzsgKiBhbmQgdGhlIFBFUkNQVV9SRVRfT1AoKSBkb2VzIG5vdCBhY2NvdW50IGZvciBvdGhlciBvcGVyYXRpb25zLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pXHRcdFxcXG4mIzQzO3N0YXRpYyBpbmxpbmUgdSMjc3pcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO19fcGVyY3B1XyMjbmFtZSMjX3JldHVybl9hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXHRcXFxuJiM0Mzt7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZWdpc3RlciB1IyNzeiByZXQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0O2Ftb1wmIzM0OyAjYW1vX2luc24gI3NmeCBcJiMzNDsgJVtyZXRdLCAlW3ZhbF0sICVbcHRyXVwmIzM0O1x0XHRcXFxuJiM0MztcdFx0OiBbcHRyXSBcJiMzNDsmIzQzO0FcJiMzNDsgKCoodSMjc3ogKilwdHIpLCBbcmV0XSBcJiMzNDs9clwmIzM0OyAocmV0KVx0XHRcXFxuJiM0MztcdFx0OiBbdmFsXSBcJiMzNDtyXCYjMzQ7ICgodSMjc3opKHZhbCkpXHRcdFx0XHRcXFxuJiM0MztcdFx0OiBcJiMzNDttZW1vcnlcJiMzNDspO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0dXJuIHJldCAmIzQzOyB2YWw7XHRcdFx0XHRcdFx0XFxcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC53LCBuYW1lLCAzMiwgYW1vX2luc24pXHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC5kLCBuYW1lLCA2NCwgYW1vX2luc24pXG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgUEVSQ1BVX1JFVF9PUChuYW1lLCBhbW9faW5zbilcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztQRVJDUFVfUkVUX09QKGFkZCwgYWRkKVxuJiM0MztcbiYjNDM7I2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKVx0KCgodW5zaWduZWQgbG9uZykocHRyKSBcdTAwMjYgMHgzKSAqIEJJVFNfUEVSX0JZVEUpXG4mIzQzOyNkZWZpbmUgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opXHRHRU5NQVNLKChzeikgLSAxLCAwKVxuJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpXHQoKHUzMiAqKSgodW5zaWduZWQgbG9uZykocHRyKSBcdTAwMjYgfjB4MykpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X09QKG5hbWUsIGFtb19pbnNuLCBzeiwgc2Z4LCB2YWxfdHlwZSwgbmV3X3ZhbF9leHByLCBhc21fb3ApXHRcdFx0XFxcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFx0XFxcbiYjNDM7e1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9aQUJIQSkgXHUwMDI2XHUwMDI2XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHtcdFx0XHRcdFxcXG4mIzQzO1x0XHRhc20gdm9sYXRpbGUgKFwmIzM0O2Ftb1wmIzM0OyAjYW1vX2luc24gI3NmeCBcJiMzNDsgemVybywgJVt2YWxdLCAlW3B0cl1cJiMzNDtcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFtwdHJdIFwmIzM0OyYjNDM7QVwmIzM0OygqKHZhbF90eXBlICopcHRyKVx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdDogW3ZhbF0gXCYjMzQ7clwmIzM0OygodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpKVx0XFxcbiYjNDM7XHRcdFx0OiBcJiMzNDttZW1vcnlcJiMzNDspO1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH0gZWxzZSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0dTMyICpwdHIzMiA9IFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpO1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpO1x0XHRcdFx0XFxcbiYjNDM7XHRcdGNvbnN0IHUzMiBtYXNrID0gUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFx1MDAzY1x1MDAzYyBzaGlmdDtcdFx0XHRcdFxcXG4mIzQzO1x0XHRjb25zdCB2YWxfdHlwZSB2YWxfdHJ1bmMgPSAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpXHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0ICAgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XHRcdFx0XHRcXFxuJiM0MztcdFx0dTMyIG9sZCwgbmV3O1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR2YWxfdHlwZSBmaWVsZDtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0YXNtIHZvbGF0aWxlIChcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDswOiBsci53ICUwLCAlMlxcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7YW5kICUzLCAlMCwgJTRcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O3NybCAlMywgJTMsICU1XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHQjYXNtX29wIFwmIzM0OyAlMywgJTMsICU2XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDthbmQgJTMsICUzLCAlOFxcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7c2xsICUzLCAlMywgJTVcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2FuZCAlMSwgJTAsICU3XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtvciAlMSwgJTEsICUzXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtzYy53ICUxLCAlMSwgJTJcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JuZXogJTEsIDBiXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7PVx1MDAyNnJcJiMzNDsob2xkKSwgXCYjMzQ7PVx1MDAyNnJcJiMzNDsobmV3KSwgXCYjMzQ7JiM0MztBXCYjMzQ7KCpwdHIzMiksIFwmIzM0Oz1cdTAwMjZyXCYjMzQ7KGZpZWxkKVx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7clwmIzM0OyhtYXNrKSwgXCYjMzQ7clwmIzM0OyhzaGlmdCksIFwmIzM0O3JcJiMzNDsodmFsX3RydW5jKSwgXCYjMzQ7clwmIzM0Oyh+bWFzayksXHRcdFx0XFxcbiYjNDM7XHRcdFx0ICBcJiMzNDtyXCYjMzQ7KFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSlcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcClcdFx0XHRcXFxuJiM0MztcdFBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCA4LCAuYiwgdTgsIGV4cHIsIGZpbmFsX29wKTtcdFx0XFxcbiYjNDM7XHRQRVJDUFVfOF8xNl9PUChvcF9uYW1lLCBvcCwgMTYsIC5oLCB1MTYsIGV4cHIsIGZpbmFsX29wKVxuJiM0MztcbiYjNDM7UEVSQ1BVX09QXzhfMTYoYWRkLCBhZGQsIHZhbCwgYWRkKVxuJiM0MztQRVJDUFVfT1BfOF8xNihhbmQsIGFuZCwgdmFsLCBhbmQpXG4mIzQzO1BFUkNQVV9PUF84XzE2KG9yLCBvciwgdmFsLCBvcilcbiYjNDM7XG4mIzQzOyNkZWZpbmUgUEVSQ1BVXzhfMTZfUkVUX09QKG5hbWUsIGFtb19pbnNuLCBzeiwgc2Z4LCB2YWxfdHlwZSwgbmV3X3ZhbF9leHByKVx0XHRcdFxcXG4mIzQzO3N0YXRpYyBpbmxpbmUgdmFsX3R5cGUgX19wZXJjcHVfIyNuYW1lIyNfcmV0dXJuX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFxcXG4mIzQzO3tcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmIChJU19FTkFCTEVEKENPTkZJR19SSVNDVl9JU0FfWkFCSEEpIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfWkFCSEEpKSB7XHRcdFx0XHRcXFxuJiM0MztcdFx0cmVnaXN0ZXIgdmFsX3R5cGUgcmV0O1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0YXNtIHZvbGF0aWxlIChcJiMzNDthbW9cJiMzNDsgI2Ftb19pbnNuICNzZnggXCYjMzQ7ICVbcmV0XSwgJVt2YWxdLCAlW3B0cl1cJiMzNDtcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFtwdHJdIFwmIzM0OyYjNDM7QVwmIzM0OygqKHZhbF90eXBlICopcHRyKSwgW3JldF0gXCYjMzQ7PXJcJiMzNDsocmV0KVx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0OiBbdmFsXSBcJiMzNDtyXCYjMzQ7KCh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkpXHRcXFxuJiM0MztcdFx0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyZXR1cm4gcmV0ICYjNDM7ICh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XHRcdFxcXG4mIzQzO1x0fSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR1MzIgKnB0cjMyID0gUEVSQ1BVXzhfMTZfR0VUX1BUUjMyKHB0cik7XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRjb25zdCB1bnNpZ25lZCBsb25nIHNoaWZ0ID0gUEVSQ1BVXzhfMTZfR0VUX1NISUZUKHB0cik7XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdTMyIG1hc2sgPSAoUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFx1MDAzY1x1MDAzYyBzaGlmdCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdTMyIGludl9tYXNrID0gfm1hc2s7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKVx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdCAgIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1x0XHRcdFx0XFxcbiYjNDM7XHRcdHUzMiBvbGQsIG5ldywgZmllbGQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0OzA6IGxyLncgJTAsICUzXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDthbmQgJTEsICUwLCAlNFxcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7c3JsICUxLCAlMSwgJTVcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2FkZCAlMSwgJTEsICU2XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDthbmQgJTEsICUxLCAlN1xcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7c2xsICUxLCAlMSwgJTVcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2FuZCAlMiwgJTAsICU4XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtvciAlMiwgJTIsICUxXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtzYy53ICUyLCAlMiwgJTNcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JuZXogJTIsIDBiXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7PVx1MDAyNnJcJiMzNDsob2xkKSwgXCYjMzQ7PVx1MDAyNnJcJiMzNDsoZmllbGQpLCBcJiMzNDs9XHUwMDI2clwmIzM0OyhuZXcpLCBcJiMzNDsmIzQzO0FcJiMzNDsoKnB0cjMyKVx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7clwmIzM0OyhtYXNrKSwgXCYjMzQ7clwmIzM0OyhzaGlmdCksIFwmIzM0O3JcJiMzNDsodmFsX3RydW5jKSwgXCYjMzQ7clwmIzM0OyhQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpLCBcXFxuJiM0MztcdFx0XHRcJiMzNDtyXCYjMzQ7KGludl9tYXNrKVx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyZXR1cm4gKHZhbF90eXBlKShmaWVsZCBcdTAwM2VcdTAwM2Ugc2hpZnQpO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0fVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDgsIC5iLCB1OCwgdmFsKVxuJiM0MztQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDE2LCAuaCwgdTE2LCB2YWwpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIF9wY3BfcHJvdGVjdChvcCwgcGNwLCAuLi4pXHRcdFx0XHRcdFxcXG4mIzQzOyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRwcmVlbXB0X2Rpc2FibGVfbm90cmFjZSgpO1x0XHRcdFx0XHRcXFxuJiM0MztcdG9wKHJhd19jcHVfcHRyKFx1MDAyNihwY3ApKSwgX19WQV9BUkdTX18pO1x0XHRcdFx0XFxcbiYjNDM7XHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO30pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIF9wY3BfcHJvdGVjdF9yZXR1cm4ob3AsIHBjcCwgYXJncy4uLilcdFx0XHRcdFxcXG4mIzQzOyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR0eXBlb2YocGNwKSBfX3JldHZhbDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0X19yZXR2YWwgPSAodHlwZW9mKHBjcCkpb3AocmF3X2NwdV9wdHIoXHUwMDI2KHBjcCkpLCAjI2FyZ3MpO1x0XFxcbiYjNDM7XHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0X19yZXR2YWw7XHRcdFx0XHRcdFx0XHRcXFxuJiM0Mzt9KVxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9yZWFkXzEocGNwKVx0XHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfOCwgcGNwKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMihwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8xNiwgcGNwKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfNChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8zMiwgcGNwKVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfOChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF82NCwgcGNwKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV84LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV8yKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzE2LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV80KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzMyLCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfNjRCSVRcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV84KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzY0LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF8xKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV84LCBwY3AsIHZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF80KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV8zMiwgcGNwLCB2YWwpXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfYWRkXzgocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzY0LCBwY3AsIHZhbClcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fMShwY3AsIHZhbClcdFx0XFxcbiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzIocGNwLCB2YWwpXHRcdFxcXG4mIzQzO19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV8xNiwgcGNwLCB2YWwpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fNChwY3AsIHZhbClcdFx0XFxcbiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfNjRCSVRcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzgocGNwLCB2YWwpXHRcdFxcXG4mIzQzO19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hbmRfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfYW5kXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzE2LCBwY3AsIHZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hbmRfNChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FuZF84KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FuZF9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9vcl8xKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X29yX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzgocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ18xKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3hjaGdfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdF9yZXR1cm4oeGNoZ19yZWxheGVkLCBwY3AsIHZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV94Y2hnXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ184KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18xKHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18yKHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ180KHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ184KHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGc2NChwY3AsIG8sIG4pXHR0aGlzX2NwdV9jbXB4Y2hnXzgocGNwLCBvLCBuKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNpZmRlZiBzeXN0ZW1faGFzX2NtcHhjaGcxMjhcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnMTI4KHBjcCwgbywgbilcdFx0XHRcdFx0XFxcbiYjNDM7KHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHUxMjggcmV0X187XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHR5cGVvZihwY3ApICpwdHJfXztcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cHRyX18gPSByYXdfY3B1X3B0cihcdTAwMjYocGNwKSk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKHN5c3RlbV9oYXNfY21weGNoZzEyOCgpKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0X18gPSBjbXB4Y2hnMTI4X2xvY2FsKHB0cl9fLCAobyksIChuKSk7XHRcdFxcXG4mIzQzO1x0ZWxzZVx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0X18gPSB0aGlzX2NwdV9nZW5lcmljX2NtcHhjaGcocGNwLCAobyksIChuKSk7XHRcXFxuJiM0MztcdHByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZXRfXztcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7fSlcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjZGVmaW5lIF9fbXlfY3B1X29mZnNldCAoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKiljdXJyZW50KS1cdTAwM2VwY3B1X29mZnNldClcbiYjNDM7XG4mIzQzOyN1bmRlZiBQRVJDUFVfUldfT1BTXG4mIzQzOyN1bmRlZiBfX1BFUkNQVV9BTU9fT1BfQ0FTRVxuJiM0MzsjdW5kZWYgUEVSQ1BVX09QXG4mIzQzOyN1bmRlZiBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0VcbiYjNDM7I3VuZGVmIFBFUkNQVV9SRVRfT1BcbiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X0dFVF9TSElGVFxuJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX01BU0tcbiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X0dFVF9QVFIzMlxuJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfT1BcbiYjNDM7I3VuZGVmIFBFUkNQVV9PUF84XzE2XG4mIzQzOyN1bmRlZiBQRVJDUFVfOF8xNl9SRVRfT1BcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS1nZW5lcmljL3BlcmNwdS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX19BU01fUEVSQ1BVX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxuaW5kZXggMGU3MWViODJmOTIwY2EuLjczM2I2Y2QzMDZlNDBmIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxuQEAgLTg4LDYgJiM0Mzs4OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZW52Y2ZnKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbiBcdFx0XHQ6OiBcJiMzNDtyXCYjMzQ7IChuZXh0LVx1MDAzZXRocmVhZC5lbnZjZmcpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF90b19wY3B1X29mZnNldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7I2lmZGVmIENPTkZJR19TTVBcbiYjNDM7XHRuZXh0LVx1MDAzZXRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0ID0gX19teV9jcHVfb2Zmc2V0O1xuJiM0MzsjZW5kaWZcbiYjNDM7fVxuJiM0MztcbiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7XG4gXG5AQCAtMTIyLDYgJiM0MzsxMjksNyBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHN3aXRjaF90b19zaG91bGRfZmx1c2hfaWNhY2hlKF9fbmV4dCkpXHRcXFxuIFx0XHRsb2NhbF9mbHVzaF9pY2FjaGVfYWxsKCk7XHRcdFxcXG4gXHRfX3N3aXRjaF90b19lbnZjZmcoX19uZXh0KTtcdFx0XHRcXFxuJiM0MztcdF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KF9fbmV4dCk7XHRcdFxcXG4gXHQoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTtcdFx0XFxcbiB9IHdoaWxlICgwKVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuaW5kZXggNTUwMTlmZGZhOWVjYWEuLmYxMGJhNjJiNjEwMTY0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbkBAIC01Myw2ICYjNDM7NTMsNyBAQFxuIHN0cnVjdCB0aHJlYWRfaW5mbyB7XG4gXHR1bnNpZ25lZCBsb25nXHRcdGZsYWdzO1x0XHQvKiBsb3cgbGV2ZWwgZmxhZ3MgKi9cbiBcdGludCAgICAgICAgICAgICAgICAgICAgIHByZWVtcHRfY291bnQ7ICAvKiAwPVx1MDAzZXByZWVtcHRpYmxlLCBcdTAwM2MwPVx1MDAzZUJVRyAqL1xuJiM0MztcdGludFx0XHRcdGNwdTtcbiBcdC8qXG4gXHQgKiBUaGVzZSBzdGFjayBwb2ludGVycyBhcmUgb3ZlcndyaXR0ZW4gb24gZXZlcnkgc3lzdGVtIGNhbGwgb3JcbiBcdCAqIGV4Y2VwdGlvbi4gIFNQIGlzIGFsc28gc2F2ZWQgdG8gdGhlIHN0YWNrIGl0IGNhbiBiZSByZWNvdmVyZWQgd2hlblxuQEAgLTYwLDggJiM0Mzs2MSw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7XG4gXHQgKi9cbiBcdGxvbmdcdFx0XHRrZXJuZWxfc3A7XHQvKiBLZXJuZWwgc3RhY2sgcG9pbnRlciAqL1xuIFx0bG9uZ1x0XHRcdHVzZXJfc3A7XHQvKiBVc2VyIHN0YWNrIHBvaW50ZXIgKi9cbi1cdGludFx0XHRcdGNwdTtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0c3lzY2FsbF93b3JrO1x0LyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xuJiM0MztcdHVuc2lnbmVkIGxvbmdcdFx0cGNwdV9vZmZzZXQ7XG4gI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDS1xuIFx0dm9pZFx0XHRcdCpzY3NfYmFzZTtcbiBcdHZvaWRcdFx0XHQqc2NzX3NwO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXG5pbmRleCBhNzVmMGNmZWExZTlmYS4uMjBkNDZjMjhmZGRlOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXG5AQCAtMzgsNiAmIzQzOzM4LDcgQEAgdm9pZCBhc21fb2Zmc2V0cyh2b2lkKVxuIFx0T0ZGU0VUKFRBU0tfVEhSRUFEX1NVTSwgdGFza19zdHJ1Y3QsIHRocmVhZC5zdW0pO1xuIFxuIFx0T0ZGU0VUKFRBU0tfVElfQ1BVLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8uY3B1KTtcbiYjNDM7XHRPRkZTRVQoVEFTS19USV9QQ1BVX09GRlNFVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0KTtcbiBcdE9GRlNFVChUQVNLX1RJX1BSRUVNUFRfQ09VTlQsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5wcmVlbXB0X2NvdW50KTtcbiBcdE9GRlNFVChUQVNLX1RJX0tFUk5FTF9TUCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmtlcm5lbF9zcCk7XG4gXHRPRkZTRVQoVEFTS19USV9VU0VSX1NQLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8udXNlcl9zcCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jXG5pbmRleCBmNmVmNTc5MzBiNTBhOC4uNzg3Njg1NGQxNjI3OTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuY1xuQEAgLTE5MSw2ICYjNDM7MTkxLDcgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRpZGxlLVx1MDAzZXRocmVhZF9pbmZvLmNwdSA9IGNwdTtcbiYjNDM7XHR0aWRsZS1cdTAwM2V0aHJlYWRfaW5mby5wY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KGNwdSk7XG4gXG4gXHRyZXQgPSBzdGFydF9zZWNvbmRhcnlfY3B1KGNwdSwgdGlkbGUpO1xuIFx0aWYgKCFyZXQpIHtcbkBAIC0yMDgsNiAmIzQzOzIwOSwxMSBAQCBpbnQgX19jcHVfdXAodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHRhc2tfc3RydWN0ICp0aWRsZSlcbiB9XG4gI2VuZGlmXG4gXG4mIzQzO3ZvaWQgX19pbml0IHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgX19pbml0IHNtcF9jcHVzX2RvbmUodW5zaWduZWQgaW50IG1heF9jcHVzKVxuIHtcbiB9XG5AQCAtMjMzLDYgJiM0MzsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZClcbiBcdG1tZ3JhYihtbSk7XG4gXHRjdXJyZW50LVx1MDAzZWFjdGl2ZV9tbSA9IG1tO1xuIFxuJiM0MztcdF9fbXlfY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSk7XG4mIzQzO1xuICNpZmRlZiBDT05GSUdfSE9UUExVR19QQVJBTExFTFxuIFx0Y3B1aHBfYXBfc3luY19hbGl2ZSgpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBjMDNjMWRlMTZiNzlhYy4uZWFiOTNkNTI1OGU5ZTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTM5NSwxNSAmIzQzOzEzOTUsOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRpZiAocmQgIT0gcnMpXG4gXHRcdFx0XHRlbWl0X212KHJkLCBycywgY3R4KTtcbiAjaWZkZWYgQ09ORklHX1NNUFxuLVx0XHRcdC8qIExvYWQgY3VycmVudCBDUFUgbnVtYmVyIGluIFQxICovXG4tXHRcdFx0ZW1pdF9sdyhSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgY3B1KSxcbiYjNDM7XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgcGNwdV9vZmZzZXQpLFxuIFx0XHRcdFx0UlZfUkVHX1RQLCBjdHgpO1xuLVx0XHRcdC8qIExvYWQgYWRkcmVzcyBvZiBfX3Blcl9jcHVfb2Zmc2V0IGFycmF5IGluIFQyICovXG4tXHRcdFx0ZW1pdF9hZGRyKFJWX1JFR19UMiwgKHU2NClcdTAwMjZfX3Blcl9jcHVfb2Zmc2V0LCBleHRyYV9wYXNzLCBjdHgpO1xuLVx0XHRcdC8qIEdldCBhZGRyZXNzIG9mIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xuLVx0XHRcdGVtaXRfc2gzYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfVDIsIGN0eCk7XG4tXHRcdFx0LyogTG9hZCBfX3Blcl9jcHVfb2Zmc2V0W2NwdV0gaW4gVDEgKi9cbi1cdFx0XHRlbWl0X2xkKFJWX1JFR19UMSwgMCwgUlZfUkVHX1QxLCBjdHgpO1xuIFx0XHRcdC8qIEFkZCB0aGUgb2Zmc2V0IHRvIFJkICovXG4gXHRcdFx0ZW1pdF9hZGQocmQsIHJkLCBSVl9SRUdfVDEsIGN0eCk7XG4gI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjQ0ZmM5ZmYyNWM0NGQzN2RkZTk3MjVkOTBkMDAxNWNhYWVkMjlmZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMTA6MDQ6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaAppbmRleCBlOWU4YmE4M2U2MzJmOS4uMTM3YTQ5NDg4MzI1ZTQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaApAQCAtOTEsMTEgJiM0Mzs5MSw3IEBACiAKICNpZmRlZiBDT05GSUdfU01QCiAubWFjcm8gYXNtX3Blcl9jcHUgZHN0IHN5bSB0bXAKLQlsdyAgICBcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApCi0Jc2xsaSAgXHRtcCwgXHRtcCwgUklTQ1ZfTEdQVFIKLQlsYSAgICBcZHN0LCBfX3Blcl9jcHVfb2Zmc2V0Ci0JYWRkICAgXGRzdCwgXGRzdCwgXHRtcAotCVJFR19MIFx0bXAsIDAoXGRzdCkKJiM0MzsJUkVHX0wgXHRtcCwgVEFTS19USV9QQ1BVX09GRlNFVCh0cCkKIAlsYSAgICBcZHN0LCBcc3ltCiAJYWRkICAgXGRzdCwgXGRzdCwgXHRtcAogLmVuZG0KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaAppbmRleCAwOWJiNWY1N2E5ZDM0Ni4uOTJkNWY4MzFmMzQ5NWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmgKQEAgLTEwMiwxMiAmIzQzOzEwMiwxNCBAQCBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTMyLCBsLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpCiAjZGVmaW5lIHJlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX3JlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KQogI2RlZmluZSByZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkKIAomIzQzOyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVAogX19pb19yZWFkc19pbnMoaW5zLCAgdTgsIGIsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKQogX19pb19yZWFkc19pbnMoaW5zLCB1MTYsIHcsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKQogX19pb19yZWFkc19pbnMoaW5zLCB1MzIsIGwsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKQogI2RlZmluZSBpbnNiKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zYihQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudCkKICNkZWZpbmUgaW5zdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3coUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiAjZGVmaW5lIGluc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNsKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KQomIzQzOyNlbmRpZgogCiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgIHU4LCBiLCBfX2lvX2J3KCksIF9faW9fYXcoKSkKIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1MTYsIHcsIF9faW9fYncoKSwgX19pb19hdygpKQpAQCAtMTE2LDI2ICYjNDM7MTE4LDMyIEBAIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1MzIsIGwsIF9faW9fYncoKSwgX19pb19hdygpKQogI2RlZmluZSB3cml0ZXN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzdyhhZGRyLCBidWZmZXIsIGNvdW50KQogI2RlZmluZSB3cml0ZXNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KQogCiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUCiBfX2lvX3dyaXRlc19vdXRzKG91dHMsICB1OCwgYiwgX19pb19wYncoKSwgX19pb19wYXcoKSkKIF9faW9fd3JpdGVzX291dHMob3V0cywgdTE2LCB3LCBfX2lvX3BidygpLCBfX2lvX3BhdygpKQogX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MzIsIGwsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpCiAjZGVmaW5lIG91dHNiKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c2IoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiAjZGVmaW5lIG91dHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c3coUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiAjZGVmaW5lIG91dHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c2woUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiYjNDM7I2VuZGlmCiAKICNpZmRlZiBDT05GSUdfNjRCSVQKIF9faW9fcmVhZHNfaW5zKHJlYWRzLCB1NjQsIHEsIF9faW9fYnIoKSwgX19pb19hcihhZGRyKSkKICNkZWZpbmUgcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpCiAKJiM0MzsjaWZkZWYgQ09ORklHX0hBU19JT1BPUlQKIF9faW9fcmVhZHNfaW5zKGlucywgdTY0LCBxLCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSkKICNkZWZpbmUgaW5zcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3EoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiYjNDM7I2VuZGlmCiAKIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1NjQsIHEsIF9faW9fYncoKSwgX19pb19hdygpKQogI2RlZmluZSB3cml0ZXNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KQogCiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUCiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXcoKSkKICNkZWZpbmUgb3V0c3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzcShQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudCkKICNlbmRpZgomIzQzOyNlbmRpZgogCiAjaW5jbHVkZSAmbHQ7YXNtLWdlbmVyaWMvaW8uaCZndDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjliZjlmNGNmNGNhNWFhCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaApAQCAtMCwwICYjNDM7MSwzMDAgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwomIzQzOwomIzQzOyNpZm5kZWYgX19BU01fUEVSQ1BVX0gKJiM0MzsjZGVmaW5lIF9fQVNNX1BFUkNQVV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdHMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJlZW1wdC5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDthc20vYWx0ZXJuYXRpdmUtbWFjcm9zLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS9jbXB4Y2hnLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLW1hY3Jvcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vY3VycmVudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vaHdjYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YXNtL3RocmVhZF9pbmZvLmgmZ3Q7CiYjNDM7CiYjNDM7I2RlZmluZSBQRVJDUFVfUldfT1BTKHN6KQkJCQkJCVwKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19wZXJjcHVfcmVhZF8jI3N6KHZvaWQgKnB0cikJCVwKJiM0Mzt7CQkJCQkJCQkJXAomIzQzOwlyZXR1cm4gUkVBRF9PTkNFKCoodSMjc3ogKilwdHIpOwkJCQlcCiYjNDM7fQkJCQkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1X3dyaXRlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbCkJXAomIzQzO3sJCQkJCQkJCQlcCiYjNDM7CVdSSVRFX09OQ0UoKih1IyNzeiAqKXB0ciwgKHUjI3N6KXZhbCk7CQkJCVwKJiM0Mzt9CiYjNDM7CiYjNDM7UEVSQ1BVX1JXX09QUyg4KQomIzQzO1BFUkNQVV9SV19PUFMoMTYpCiYjNDM7UEVSQ1BVX1JXX09QUygzMikKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7UEVSQ1BVX1JXX09QUyg2NCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIF9fUEVSQ1BVX0FNT19PUF9DQVNFKHNmeCwgbmFtZSwgc3osIGFtb19pbnNuKQkJCVwKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQJCQkJCQkJXAomIzQzO19fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbCkJCVwKJiM0Mzt7CQkJCQkJCQkJXAomIzQzOwlhc20gdm9sYXRpbGUgKAkJCQkJCQlcCiYjNDM7CQkmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7IHplcm8sICVbdmFsXSwgJVtwdHJdJiMzNDsJCVwKJiM0MzsJCTogW3B0cl0gJiMzNDsmIzQzO0EmIzM0OyAoKih1IyNzeiAqKXB0cikJCQkJXAomIzQzOwkJOiBbdmFsXSAmIzM0O3ImIzM0OyAoKHUjI3N6KSh2YWwpKQkJCQlcCiYjNDM7CQk6ICYjMzQ7bWVtb3J5JiMzNDspOwkJCQkJCVwKJiM0Mzt9CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR182NEJJVAomIzQzOyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKQkJCQkJXAomIzQzOwlfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKQkJCVwKJiM0MzsJX19QRVJDUFVfQU1PX09QX0NBU0UoLmQsIG5hbWUsIDY0LCBhbW9faW5zbikKJiM0MzsjZWxzZQomIzQzOyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKQkJCQkJXAomIzQzOwlfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKQomIzQzOyNlbmRpZgomIzQzOwomIzQzO1BFUkNQVV9PUChhZGQsIGFkZCkKJiM0MztQRVJDUFVfT1AoYW5kLCBhbmQpCiYjNDM7UEVSQ1BVX09QKG9yLCBvcikKJiM0MzsKJiM0MzsvKgomIzQzOyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLAomIzQzOyAqIGFuZCB0aGUgUEVSQ1BVX1JFVF9PUCgpIGRvZXMgbm90IGFjY291bnQgZm9yIG90aGVyIG9wZXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pCQlcCiYjNDM7c3RhdGljIGlubGluZSB1IyNzegkJCQkJCQlcCiYjNDM7X19wZXJjcHVfIyNuYW1lIyNfcmV0dXJuX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbCkJXAomIzQzO3sJCQkJCQkJCQlcCiYjNDM7CXJlZ2lzdGVyIHUjI3N6IHJldDsJCQkJCQlcCiYjNDM7CQkJCQkJCQkJXAomIzQzOwlhc20gdm9sYXRpbGUgKAkJCQkJCQlcCiYjNDM7CQkmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7ICVbcmV0XSwgJVt2YWxdLCAlW3B0cl0mIzM0OwkJXAomIzQzOwkJOiBbcHRyXSAmIzM0OyYjNDM7QSYjMzQ7ICgqKHUjI3N6ICopcHRyKSwgW3JldF0gJiMzNDs9ciYjMzQ7IChyZXQpCQlcCiYjNDM7CQk6IFt2YWxdICYjMzQ7ciYjMzQ7ICgodSMjc3opKHZhbCkpCQkJCVwKJiM0MzsJCTogJiMzNDttZW1vcnkmIzM0Oyk7CQkJCQkJXAomIzQzOwkJCQkJCQkJCVwKJiM0MzsJcmV0dXJuIHJldCAmIzQzOyB2YWw7CQkJCQkJXAomIzQzO30KJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7I2RlZmluZSBQRVJDUFVfUkVUX09QKG5hbWUsIGFtb19pbnNuKQkJCQkJXAomIzQzOwlfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbikJCVwKJiM0MzsJX19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC5kLCBuYW1lLCA2NCwgYW1vX2luc24pCiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pCQkJCQlcCiYjNDM7CV9fUEVSQ1BVX0FNT19SRVRfT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKQomIzQzOyNlbmRpZgomIzQzOwomIzQzO1BFUkNQVV9SRVRfT1AoYWRkLCBhZGQpCiYjNDM7CiYjNDM7I2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKQkoKCh1bnNpZ25lZCBsb25nKShwdHIpICZhbXA7IDB4MykgKiBCSVRTX1BFUl9CWVRFKQomIzQzOyNkZWZpbmUgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opCUdFTk1BU0soKHN6KSAtIDEsIDApCiYjNDM7I2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKQkoKHUzMiAqKSgodW5zaWduZWQgbG9uZykocHRyKSAmYW1wOyB+MHgzKSkKJiM0MzsKJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X09QKG5hbWUsIGFtb19pbnNuLCBzeiwgc2Z4LCB2YWxfdHlwZSwgbmV3X3ZhbF9leHByLCBhc21fb3ApCQkJXAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBfX3BlcmNwdV8jI25hbWUjI19hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpCQlcCiYjNDM7ewkJCQkJCQkJCQkJCVwKJiM0MzsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9aQUJIQSkgJmFtcDsmYW1wOwkJCQkJCVwKJiM0MzsJCXJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHsJCQkJXAomIzQzOwkJYXNtIHZvbGF0aWxlICgmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7IHplcm8sICVbdmFsXSwgJVtwdHJdJiMzNDsJCQlcCiYjNDM7CQkJOiBbcHRyXSAmIzM0OyYjNDM7QSYjMzQ7KCoodmFsX3R5cGUgKilwdHIpCQkJCQkJXAomIzQzOwkJCTogW3ZhbF0gJiMzNDtyJiMzNDsoKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKSAmYW1wOyBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpKQlcCiYjNDM7CQkJOiAmIzM0O21lbW9yeSYjMzQ7KTsJCQkJCQkJCVwKJiM0MzsJfSBlbHNlIHsJCQkJCQkJCQkJXAomIzQzOwkJdTMyICpwdHIzMiA9IFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpOwkJCQkJXAomIzQzOwkJY29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpOwkJCQlcCiYjNDM7CQljb25zdCB1MzIgbWFzayA9IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSAmbHQ7Jmx0OyBzaGlmdDsJCQkJXAomIzQzOwkJY29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKQkJCQlcCiYjNDM7CQkJCQkgICAmYW1wOyBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpOwkJCQlcCiYjNDM7CQl1MzIgb2xkLCBuZXc7CQkJCQkJCQkJXAomIzQzOwkJdmFsX3R5cGUgZmllbGQ7CQkJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQkJCVwKJiM0MzsJCWFzbSB2b2xhdGlsZSAoCQkJCQkJCQkJXAomIzQzOwkJCSYjMzQ7MDogbHIudyAlMCwgJTJcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O2FuZCAlMywgJTAsICU0XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtzcmwgJTMsICUzLCAlNVxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSNhc21fb3AgJiMzNDsgJTMsICUzLCAlNlxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7YW5kICUzLCAlMywgJThcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O3NsbCAlMywgJTMsICU1XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDthbmQgJTEsICUwLCAlN1xuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7b3IgJTEsICUxLCAlM1xuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7c2MudyAlMSwgJTEsICUyXG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtibmV6ICUxLCAwYlxuJiMzNDsJCQkJCQkJCVwKJiM0MzsJCQk6ICYjMzQ7PSZhbXA7ciYjMzQ7KG9sZCksICYjMzQ7PSZhbXA7ciYjMzQ7KG5ldyksICYjMzQ7JiM0MztBJiMzNDsoKnB0cjMyKSwgJiMzNDs9JmFtcDtyJiMzNDsoZmllbGQpCQkJXAomIzQzOwkJCTogJiMzNDtyJiMzNDsobWFzayksICYjMzQ7ciYjMzQ7KHNoaWZ0KSwgJiMzNDtyJiMzNDsodmFsX3RydW5jKSwgJiMzNDtyJiMzNDsofm1hc2spLAkJCVwKJiM0MzsJCQkgICYjMzQ7ciYjMzQ7KFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkJCQkJCQlcCiYjNDM7CQkJOiAmIzM0O21lbW9yeSYjMzQ7KTsJCQkJCQkJCVwKJiM0MzsJCX0JCQkJCQkJCQkJXAomIzQzO30KJiM0MzsKJiM0MzsjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcCkJCQlcCiYjNDM7CVBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCA4LCAuYiwgdTgsIGV4cHIsIGZpbmFsX29wKTsJCVwKJiM0MzsJUEVSQ1BVXzhfMTZfT1Aob3BfbmFtZSwgb3AsIDE2LCAuaCwgdTE2LCBleHByLCBmaW5hbF9vcCkKJiM0MzsKJiM0MztQRVJDUFVfT1BfOF8xNihhZGQsIGFkZCwgdmFsLCBhZGQpCiYjNDM7UEVSQ1BVX09QXzhfMTYoYW5kLCBhbmQsIHZhbCwgYW5kKQomIzQzO1BFUkNQVV9PUF84XzE2KG9yLCBvciwgdmFsLCBvcikKJiM0MzsKJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X1JFVF9PUChuYW1lLCBhbW9faW5zbiwgc3osIHNmeCwgdmFsX3R5cGUsIG5ld192YWxfZXhwcikJCQlcCiYjNDM7c3RhdGljIGlubGluZSB2YWxfdHlwZSBfX3BlcmNwdV8jI25hbWUjI19yZXR1cm5fYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKQlcCiYjNDM7ewkJCQkJCQkJCQkJCVwKJiM0MzsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9aQUJIQSkgJmFtcDsmYW1wOwkJCQkJCVwKJiM0MzsJCXJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHsJCQkJXAomIzQzOwkJcmVnaXN0ZXIgdmFsX3R5cGUgcmV0OwkJCQkJCQkJXAomIzQzOwkJYXNtIHZvbGF0aWxlICgmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7ICVbcmV0XSwgJVt2YWxdLCAlW3B0cl0mIzM0OwkJCVwKJiM0MzsJCQk6IFtwdHJdICYjMzQ7JiM0MztBJiMzNDsoKih2YWxfdHlwZSAqKXB0ciksIFtyZXRdICYjMzQ7PXImIzM0OyhyZXQpCQkJCVwKJiM0MzsJCQk6IFt2YWxdICYjMzQ7ciYjMzQ7KCh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgJmFtcDsgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKSkJXAomIzQzOwkJCTogJiMzNDttZW1vcnkmIzM0Oyk7CQkJCQkJCQlcCiYjNDM7CQlyZXR1cm4gcmV0ICYjNDM7ICh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgJmFtcDsgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKTsJCVwKJiM0MzsJfSBlbHNlIHsJCQkJCQkJCQkJXAomIzQzOwkJdTMyICpwdHIzMiA9IFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpOwkJCQkJXAomIzQzOwkJY29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpOwkJCQlcCiYjNDM7CQljb25zdCB1MzIgbWFzayA9IChQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikgJmx0OyZsdDsgc2hpZnQpOwkJCQlcCiYjNDM7CQljb25zdCB1MzIgaW52X21hc2sgPSB+bWFzazsJCQkJCQkJXAomIzQzOwkJY29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKQkJCQlcCiYjNDM7CQkJCQkgICAmYW1wOyBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpOwkJCQlcCiYjNDM7CQl1MzIgb2xkLCBuZXcsIGZpZWxkOwkJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQkJCVwKJiM0MzsJCWFzbSB2b2xhdGlsZSAoCQkJCQkJCQkJXAomIzQzOwkJCSYjMzQ7MDogbHIudyAlMCwgJTNcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O2FuZCAlMSwgJTAsICU0XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtzcmwgJTEsICUxLCAlNVxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7YWRkICUxLCAlMSwgJTZcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O2FuZCAlMSwgJTEsICU3XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtzbGwgJTEsICUxLCAlNVxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7YW5kICUyLCAlMCwgJThcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O29yICUyLCAlMiwgJTFcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O3NjLncgJTIsICUyLCAlM1xuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7Ym5leiAlMiwgMGJcbiYjMzQ7CQkJCQkJCQlcCiYjNDM7CQkJOiAmIzM0Oz0mYW1wO3ImIzM0OyhvbGQpLCAmIzM0Oz0mYW1wO3ImIzM0OyhmaWVsZCksICYjMzQ7PSZhbXA7ciYjMzQ7KG5ldyksICYjMzQ7JiM0MztBJiMzNDsoKnB0cjMyKQkJCVwKJiM0MzsJCQk6ICYjMzQ7ciYjMzQ7KG1hc2spLCAmIzM0O3ImIzM0OyhzaGlmdCksICYjMzQ7ciYjMzQ7KHZhbF90cnVuYyksICYjMzQ7ciYjMzQ7KFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSksIFwKJiM0MzsJCQkmIzM0O3ImIzM0OyhpbnZfbWFzaykJCQkJCQkJCVwKJiM0MzsJCQk6ICYjMzQ7bWVtb3J5JiMzNDspOwkJCQkJCQkJXAomIzQzOwkJcmV0dXJuICh2YWxfdHlwZSkoZmllbGQgJmd0OyZndDsgc2hpZnQpOwkJCQkJCVwKJiM0MzsJfQkJCQkJCQkJCQkJXAomIzQzO30KJiM0MzsKJiM0MztQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDgsIC5iLCB1OCwgdmFsKQomIzQzO1BFUkNQVV84XzE2X1JFVF9PUChhZGQsIGFkZCwgMTYsIC5oLCB1MTYsIHZhbCkKJiM0MzsKJiM0MzsjZGVmaW5lIF9wY3BfcHJvdGVjdChvcCwgcGNwLCAuLi4pCQkJCQlcCiYjNDM7KHsJCQkJCQkJCQlcCiYjNDM7CXByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CW9wKHJhd19jcHVfcHRyKCZhbXA7KHBjcCkpLCBfX1ZBX0FSR1NfXyk7CQkJCVwKJiM0MzsJcHJlZW1wdF9lbmFibGVfbm90cmFjZSgpOwkJCQkJXAomIzQzO30pCiYjNDM7CiYjNDM7I2RlZmluZSBfcGNwX3Byb3RlY3RfcmV0dXJuKG9wLCBwY3AsIGFyZ3MuLi4pCQkJCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJdHlwZW9mKHBjcCkgX19yZXR2YWw7CQkJCQkJXAomIzQzOwlwcmVlbXB0X2Rpc2FibGVfbm90cmFjZSgpOwkJCQkJXAomIzQzOwlfX3JldHZhbCA9ICh0eXBlb2YocGNwKSlvcChyYXdfY3B1X3B0cigmYW1wOyhwY3ApKSwgIyNhcmdzKTsJXAomIzQzOwlwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CV9fcmV0dmFsOwkJCQkJCQlcCiYjNDM7fSkKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMShwY3ApCQlfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfOCwgcGNwKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfcmVhZF8yKHBjcCkJCV9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8xNiwgcGNwKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfcmVhZF80KHBjcCkJCV9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8zMiwgcGNwKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfOChwY3ApCQlfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfNjQsIHBjcCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzEocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV84LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzIocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV8xNiwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpCiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV80KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfMzIsIHBjcCwgKHVuc2lnbmVkIGxvbmcpdmFsKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzgocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV82NCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfMShwY3AsIHZhbCkJX3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV84LCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF8yKHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzE2LCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF80KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzMyLCBwY3AsIHZhbCkKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfOChwY3AsIHZhbCkJX3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV82NCwgcGNwLCB2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzEocGNwLCB2YWwpCQlcCiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzgsIHBjcCwgdmFsKQomIzQzOwomIzQzOyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl8yKHBjcCwgdmFsKQkJXAomIzQzO19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV8xNiwgcGNwLCB2YWwpCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzQocGNwLCB2YWwpCQlcCiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzMyLCBwY3AsIHZhbCkKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzgocGNwLCB2YWwpCQlcCiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzY0LCBwY3AsIHZhbCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FuZF8xKHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzgsIHBjcCwgdmFsKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfYW5kXzIocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfYW5kXzQocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FuZF84KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzY0LCBwY3AsIHZhbCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzEocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV84LCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzIocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV8xNiwgcGNwLCB2YWwpCiYjNDM7I2RlZmluZSB0aGlzX2NwdV9vcl80KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzgocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV94Y2hnXzEocGNwLCB2YWwpCV9wY3BfcHJvdGVjdF9yZXR1cm4oeGNoZ19yZWxheGVkLCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3hjaGdfMihwY3AsIHZhbCkJX3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ180KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpCiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR182NEJJVAomIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ184KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnXzEocGNwLCBvLCBuKQlfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18yKHBjcCwgbywgbikJX3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbikKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfNChwY3AsIG8sIG4pCV9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pCiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR182NEJJVAomIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ184KHBjcCwgbywgbikJX3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbikKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGc2NChwY3AsIG8sIG4pCXRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2lmZGVmIHN5c3RlbV9oYXNfY21weGNoZzEyOAomIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZzEyOChwY3AsIG8sIG4pCQkJCQlcCiYjNDM7KHsJCQkJCQkJCQlcCiYjNDM7CXUxMjggcmV0X187CQkJCQkJCVwKJiM0MzsJdHlwZW9mKHBjcCkgKnB0cl9fOwkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7CXByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CXB0cl9fID0gcmF3X2NwdV9wdHIoJmFtcDsocGNwKSk7CQkJCQlcCiYjNDM7CWlmIChzeXN0ZW1faGFzX2NtcHhjaGcxMjgoKSkJCQkJCVwKJiM0MzsJCXJldF9fID0gY21weGNoZzEyOF9sb2NhbChwdHJfXywgKG8pLCAobikpOwkJXAomIzQzOwllbHNlCQkJCQkJCQlcCiYjNDM7CQlyZXRfXyA9IHRoaXNfY3B1X2dlbmVyaWNfY21weGNoZyhwY3AsIChvKSwgKG4pKTsJXAomIzQzOwlwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CXJldF9fOwkJCQkJCQkJXAomIzQzO30pCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSBfX215X2NwdV9vZmZzZXQgKCgoc3RydWN0IHRocmVhZF9pbmZvICopY3VycmVudCktJmd0O3BjcHVfb2Zmc2V0KQomIzQzOwomIzQzOyN1bmRlZiBQRVJDUFVfUldfT1BTCiYjNDM7I3VuZGVmIF9fUEVSQ1BVX0FNT19PUF9DQVNFCiYjNDM7I3VuZGVmIFBFUkNQVV9PUAomIzQzOyN1bmRlZiBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UKJiM0MzsjdW5kZWYgUEVSQ1BVX1JFVF9PUAomIzQzOyN1bmRlZiBQRVJDUFVfOF8xNl9HRVRfU0hJRlQKJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX01BU0sKJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX1BUUjMyCiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X09QCiYjNDM7I3VuZGVmIFBFUkNQVV9PUF84XzE2CiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X1JFVF9PUAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDthc20tZ2VuZXJpYy9wZXJjcHUuaCZndDsKJiM0MzsKJiM0MzsjZW5kaWYgLyogX19BU01fUEVSQ1BVX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oCmluZGV4IDBlNzFlYjgyZjkyMGNhLi43MzNiNmNkMzA2ZTQwZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oCkBAIC04OCw2ICYjNDM7ODgsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX2VudmNmZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiAJCQk6OiAmIzM0O3ImIzM0OyAobmV4dC0mZ3Q7dGhyZWFkLmVudmNmZykgOiAmIzM0O21lbW9yeSYjMzQ7KTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF90b19wY3B1X29mZnNldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOyNpZmRlZiBDT05GSUdfU01QCiYjNDM7CW5leHQtJmd0O3RocmVhZF9pbmZvLnBjcHVfb2Zmc2V0ID0gX19teV9jcHVfb2Zmc2V0OwomIzQzOyNlbmRpZgomIzQzO30KJiM0MzsKIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqLAogCQkJCSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CiAKQEAgLTEyMiw2ICYjNDM7MTI5LDcgQEAgZG8gewkJCQkJCQlcCiAJaWYgKHN3aXRjaF90b19zaG91bGRfZmx1c2hfaWNhY2hlKF9fbmV4dCkpCVwKIAkJbG9jYWxfZmx1c2hfaWNhY2hlX2FsbCgpOwkJXAogCV9fc3dpdGNoX3RvX2VudmNmZyhfX25leHQpOwkJCVwKJiM0MzsJX19zd2l0Y2hfdG9fcGNwdV9vZmZzZXQoX19uZXh0KTsJCVwKIAkoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTsJCVwKIH0gd2hpbGUgKDApCiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCA1NTAxOWZkZmE5ZWNhYS4uZjEwYmE2MmI2MTAxNjQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKQEAgLTUzLDYgJiM0Mzs1Myw3IEBACiBzdHJ1Y3QgdGhyZWFkX2luZm8gewogCXVuc2lnbmVkIGxvbmcJCWZsYWdzOwkJLyogbG93IGxldmVsIGZsYWdzICovCiAJaW50ICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdF9jb3VudDsgIC8qIDA9Jmd0O3ByZWVtcHRpYmxlLCAmbHQ7MD0mZ3Q7QlVHICovCiYjNDM7CWludAkJCWNwdTsKIAkvKgogCSAqIFRoZXNlIHN0YWNrIHBvaW50ZXJzIGFyZSBvdmVyd3JpdHRlbiBvbiBldmVyeSBzeXN0ZW0gY2FsbCBvcgogCSAqIGV4Y2VwdGlvbi4gIFNQIGlzIGFsc28gc2F2ZWQgdG8gdGhlIHN0YWNrIGl0IGNhbiBiZSByZWNvdmVyZWQgd2hlbgpAQCAtNjAsOCAmIzQzOzYxLDggQEAgc3RydWN0IHRocmVhZF9pbmZvIHsKIAkgKi8KIAlsb25nCQkJa2VybmVsX3NwOwkvKiBLZXJuZWwgc3RhY2sgcG9pbnRlciAqLwogCWxvbmcJCQl1c2VyX3NwOwkvKiBVc2VyIHN0YWNrIHBvaW50ZXIgKi8KLQlpbnQJCQljcHU7CiAJdW5zaWduZWQgbG9uZwkJc3lzY2FsbF93b3JrOwkvKiBTWVNDQUxMX1dPUktfIGZsYWdzICovCiYjNDM7CXVuc2lnbmVkIGxvbmcJCXBjcHVfb2Zmc2V0OwogI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDSwogCXZvaWQJCQkqc2NzX2Jhc2U7CiAJdm9pZAkJCSpzY3Nfc3A7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCBhNzVmMGNmZWExZTlmYS4uMjBkNDZjMjhmZGRlOTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwpAQCAtMzgsNiAmIzQzOzM4LDcgQEAgdm9pZCBhc21fb2Zmc2V0cyh2b2lkKQogCU9GRlNFVChUQVNLX1RIUkVBRF9TVU0sIHRhc2tfc3RydWN0LCB0aHJlYWQuc3VtKTsKIAogCU9GRlNFVChUQVNLX1RJX0NQVSwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmNwdSk7CiYjNDM7CU9GRlNFVChUQVNLX1RJX1BDUFVfT0ZGU0VULCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8ucGNwdV9vZmZzZXQpOwogCU9GRlNFVChUQVNLX1RJX1BSRUVNUFRfQ09VTlQsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5wcmVlbXB0X2NvdW50KTsKIAlPRkZTRVQoVEFTS19USV9LRVJORUxfU1AsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5rZXJuZWxfc3ApOwogCU9GRlNFVChUQVNLX1RJX1VTRVJfU1AsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby51c2VyX3NwKTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYwppbmRleCBmNmVmNTc5MzBiNTBhOC4uNzg3Njg1NGQxNjI3OTAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmMKQEAgLTE5MSw2ICYjNDM7MTkxLDcgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpCiB7CiAJaW50IHJldDsKIAl0aWRsZS0mZ3Q7dGhyZWFkX2luZm8uY3B1ID0gY3B1OwomIzQzOwl0aWRsZS0mZ3Q7dGhyZWFkX2luZm8ucGNwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChjcHUpOwogCiAJcmV0ID0gc3RhcnRfc2Vjb25kYXJ5X2NwdShjcHUsIHRpZGxlKTsKIAlpZiAoIXJldCkgewpAQCAtMjA4LDYgJiM0MzsyMDksMTEgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpCiB9CiAjZW5kaWYKIAomIzQzO3ZvaWQgX19pbml0IHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpCiYjNDM7ewomIzQzOwlfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpOwomIzQzO30KJiM0MzsKIHZvaWQgX19pbml0IHNtcF9jcHVzX2RvbmUodW5zaWduZWQgaW50IG1heF9jcHVzKQogewogfQpAQCAtMjMzLDYgJiM0MzsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZCkKIAltbWdyYWIobW0pOwogCWN1cnJlbnQtJmd0O2FjdGl2ZV9tbSA9IG1tOwogCiYjNDM7CV9fbXlfY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSk7CiYjNDM7CiAjaWZkZWYgQ09ORklHX0hPVFBMVUdfUEFSQUxMRUwKIAljcHVocF9hcF9zeW5jX2FsaXZlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGMwM2MxZGUxNmI3OWFjLi5lYWI5M2Q1MjU4ZTllNCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xMzk1LDE1ICYjNDM7MTM5NSw4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCQkJaWYgKHJkICE9IHJzKQogCQkJCWVtaXRfbXYocmQsIHJzLCBjdHgpOwogI2lmZGVmIENPTkZJR19TTVAKLQkJCS8qIExvYWQgY3VycmVudCBDUFUgbnVtYmVyIGluIFQxICovCi0JCQllbWl0X2x3KFJWX1JFR19UMSwgb2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBjcHUpLAomIzQzOwkJCWVtaXRfbGQoUlZfUkVHX1QxLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIHBjcHVfb2Zmc2V0KSwKIAkJCQlSVl9SRUdfVFAsIGN0eCk7Ci0JCQkvKiBMb2FkIGFkZHJlc3Mgb2YgX19wZXJfY3B1X29mZnNldCBhcnJheSBpbiBUMiAqLwotCQkJZW1pdF9hZGRyKFJWX1JFR19UMiwgKHU2NCkmYW1wO19fcGVyX2NwdV9vZmZzZXQsIGV4dHJhX3Bhc3MsIGN0eCk7Ci0JCQkvKiBHZXQgYWRkcmVzcyBvZiBfX3Blcl9jcHVfb2Zmc2V0W2NwdV0gaW4gVDEgKi8KLQkJCWVtaXRfc2gzYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfVDIsIGN0eCk7Ci0JCQkvKiBMb2FkIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqLwotCQkJZW1pdF9sZChSVl9SRUdfVDEsIDAsIFJWX1JFR19UMSwgY3R4KTsKIAkJCS8qIEFkZCB0aGUgb2Zmc2V0IHRvIFJkICovCiAJCQllbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgLSBSSVNDLVYgUGVyLUNQVSBPZmZzZXQgT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0YXJnZXRpbmcgUklTQy1WLCBhbmQgaXQmIzM5O3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gaG93IHdlIGhhbmRsZSBwZXItQ1BVIG9mZnNldHMuIEZpcnN0IG9mZiwgdGhlcmUmIzM5O3MgYSBuZXcgYGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhgIGZpbGUsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2Qgc2lnbi4gSXQgc2VlbXMgdG8gaW1wbGVtZW50IG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMsIHdoaWNoIGxpa2VseSBpbnZvbHZlIGF0b21pYyBtZW1vcnkgb3BlcmF0aW9ucyAoQU1PcykuIFRoZXkmIzM5O3JlIGludHJvZHVjaW5nIGBUQVNLX1RJX1BDUFVfT0ZGU0VUKHRwKWAgdG8gcmVwbGFjZSB0aGUgb2xkZXIsIGxlc3MgZWZmaWNpZW50IGBUQVNLX1RJX0NQVV9OVU0odHApYC1iYXNlZCBsb29rdXBzLiBUaGlzIGxvb2tzIHRvIHVwZGF0ZSBgc3RydWN0IHRocmVhZF9pbmZvYCB0byBpbmNsdWRlIGBwY3B1X29mZnNldGAsIGFuZCB0aGVuIGBfX3N3aXRjaF90b19wY3B1X29mZnNldGAgYW5kIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGUgQlBGIEpJVCBpcyBhbHNvIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIGBwY3B1X29mZnNldGAgaW5zdGVhZCBvZiB0aGUgb2xkIG1ldGhvZC4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgY29uZGl0aW9uYWwgYCNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVGAgYmxvY2sgYXJvdW5kIHNvbWUgSS9PIG9wZXJhdGlvbnMuCgpUaGUgcGVyLWNwdSBvcGVyYXRpb25zIHRoZW1zZWx2ZXMgbG9vayBxdWl0ZSBpbnZvbHZlZCwgZW1wbG95aW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIGEgZmFsbGJhY2sgdXNpbmcgYGxyLndgL2BzYy53YCBmb3Igc21hbGxlciBzaXplcyBpZiBaQUJIQSBpc24mIzM5O3QgYXZhaWxhYmxlLiBUaGlzIGlzIGltcG9ydGFudDogWkFCSEEgaXMgYW4gb3B0aW9uYWwgUklTQy1WIGV4dGVuc2lvbi4gSXQgbWFrZXMgbWUgd29uZGVyIGlmIHRoaXMgaXMgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6PyBBYnNvbHV0ZWx5LiBUaGlzIHRvdWNoZXMgY29yZSBhcmNoaXRlY3R1cmUgbG9naWMg4oCTIHBlci1jcHUgb3BlcmF0aW9ucyDigJMgYW5kIGFsc28gdGhlIEJQRiBKSVQsIHdoaWNoIGlzIGFscmVhZHkgYSBmdXp6aW5nIHRhcmdldC4KCkJ1dCwgaXMgdGhpcyByZWFjaGFibGU/IFRoZSBrZXkgaGVyZSBpcywgdGhpcyBpcyBSSVNDLVYgc3BlY2lmaWMuIENhbiB3ZSBmdXp6IFJJU0MtVj8gWWVzLCBzeXprYWxsZXIgc3VwcG9ydHMgUklTQy1WLCBzbyB0aGF0JiMzOTtzIGEgY2hlY2suIFRoZSBwcm9tcHQgZ2l2ZXMgdXMgdGhlIHVzdWFsIGNhdmVhdCBhYm91dCBiZWluZyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gQnV0LCB3YWl0Li4uIHdlICpjYW4qIHJ1biBSSVNDLVYgaW4gUUVNVSwgc28gdGhhdCBzaG91bGRuJiMzOTt0IGJlIGEgcHJvYmxlbS4gVGhpcyAqZG9lcyogbWFrZSBmdW5jdGlvbmFsIGNoYW5nZXMuIEl0IG1vZGlmaWVzIGhvdyBwZXItY3B1IHZhcmlhYmxlcyBhcmUgYWNjZXNzZWQgYW5kIG1vZGlmaWVkIG9uIFJJU0MtVi4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIHBvc2l0aXZlIHNpZ25hbC4KCkRpdmluZyBkZWVwZXIsIHRoZSBCUEYgSklUIGNoYW5nZXMgbG9vayBkaXJlY3RseSByZWFjaGFibGUgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHdpdGhpbiBgYnBmX2ppdF9lbWl0X2luc25gLiBUaGVzZSBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfUklTQ1ZfSVNBX1pBQkhBYCwgYENPTkZJR19IQVNfSU9QT1JUYCwgYW5kIGBDT05GSUdfU01QYCBhcmUgdXNlZC4KClNvLCBvdmVyYWxsLCB0aGlzIGlzIGEgY2xlYXIgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSSVNDVl9JU0FfWkFCSEEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9LY29uZmlnPTY3Nj1jb25maWcgVE9PTENIQUlOX0hBU19aQUJIQVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy02ODItXG5hcmNoL3Jpc2N2L0tjb25maWc6NjgzOmNvbmZpZyBSSVNDVl9JU0FfWkFCSEFcbmFyY2gvcmlzY3YvS2NvbmZpZy02ODQtXHRib29sIFwmIzM0O1phYmhhIGV4dGVuc2lvbiBzdXBwb3J0IGZvciBhdG9taWMgYnl0ZS9oYWxmd29yZCBvcGVyYXRpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgdGhlIHN5c3RlbSYjMzk7cyB0ZWxsaW5nIG1lIGBSSVNDVl9JU0FfWkFCSEFgIGlzIGEgbGVnaXRpbWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gQWxyaWdodCwgdGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQWgsIHllcywgdGhlIGBDT05GSUdfQlBGX0pJVGAgZm9yIHRob3NlIEJQRiBtb2RpZmljYXRpb25zLiBUaGF0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSBrZXkuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uIHdpdGggcmVzcGVjdCB0byBCUEYgSklUIGNvbXBpbGF0aW9uIGZvciA2NC1iaXQgUklTQy1WLiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gaW1wb3J0YW50IGRldGFpbHMgcmVsYXRlZCB0byB0aGlzIGludGVyc2VjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNjUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBPcHRpbWl6YXRpb24gVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB3aGVyZSB3ZSBjYW4gbWFrZSBhIGRpZmZlcmVuY2UuIFRoZSBpbml0aWFsIG1vZGlmaWNhdGlvbiBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIGBicGZfaml0X2VtaXRfaW5zbmAgZnVuY3Rpb24sIGJ1dCB0aGF0JiMzOTtzIGEgcHJldHR5IGJyb2FkIGVudHJ5IHBvaW50LiBUaGlua2luZyBhYm91dCB3aGVyZSB0aGlzIGlzIGxpa2VseSAqdXNlZCogbW9zdCwgYGJwZl9pbnRfaml0X2NvbXBpbGVgIG1pZ2h0IGJlIG1vcmUgc3BlY2lmaWMgdG8gb3VyIGltbWVkaWF0ZSBjb25jZXJuLgoKV2FpdCwgaG9sZCBvbiwgcGVyY3B1IG9wZXJhdGlvbnMgb24gUklTQy1WIGFyZSBpbmxpbmUsIGRlZmluZWQgaW4gYGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhgLiBBbmQgdGhleSYjMzk7cmUgKmV2ZXJ5d2hlcmUqLiBUaGF0IG1ha2VzIG1lIHRoaW5rIGFib3V0IGNhbGxzIGxpa2UgYF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0YCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgX19zd2l0Y2hfdG9gIGFuZCB0aGF0IGlzIGEgbWFqb3IgaG90IHBhdGguIFRoYXQgbG9va3MgcHJvbWlzaW5nLgoKVGhlbiBhZ2FpbiwgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBhcmUgYWxsIGJvb3QvaG90cGx1ZyByZWxhdGVkLCB3aGljaCBjb3VsZCBhbHNvIGJlIHJlbGV2YW50IGluIGEgZGlmZmVyZW50IGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlc2UgZm9yIG90aGVyIGludmVzdGlnYXRpb25zLgoKQWxyaWdodCwgYmFjayB0byB0aGUgQlBGIEpJVCBjaGFuZ2VzIGFuZCBgYnBmX2ppdF9lbWl0X2luc25gLiBJIHNob3VsZCBjaGVjayBgYnBmX2ludF9qaXRfY29tcGlsZWAgYXMgd2VsbC4gUGVyaGFwcyBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gaG93IGl0JiMzOTtzIHVzZWQgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGNvdWxkIGJlIGEgYmV0dGVyIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTM5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkZpbmRpbmcgdGhlIEJQRiBKSVQgRW50cnkgUG9pbnQgaW4gUklTQy1WKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBCUEYgSklUIGNvZGUga2lja3Mgb2ZmIGluIGEgUklTQy1WIGNvbnRleHQuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGEgc3RyYWlnaHRmb3J3YXJkIGh1bnQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgdGhlIEJQRiB2ZXJpZmllciBpbnRlcmFjdHMgd2l0aCB0aGUgaW5zdHJ1Y3Rpb24gZ2VuZXJhdGlvbi4gSSBrbm93IHRoZSBnZW5lcmFsIGFyY2hpdGVjdHVyZSwgYnV0IEkgbmVlZCB0byBnZXQgZG93biBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFJJU0MtViBpbXBsZW1lbnRhdGlvbi4KCkZpcnN0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgb2J2aW91cyBwbGFjZXM6IGtlcm5lbCBzb3VyY2UuIEkmIzM5O2xsIGxpa2VseSBuZWVkIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIEJQRiBzdWJzeXN0ZW0sIGxvb2tpbmcgZm9yIFJJU0MtViBzcGVjaWZpYyBmaWxlcyBvciBmdW5jdGlvbiBjYWxscy4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgY29yZSBCUEYgSklUIGZpbGVzIGFuZCB0aGVuIGZpbHRlciBieSBhbnkgUklTQy1WIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBvbmVzLgoKSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBrZXl3b3JkcyBsaWtlICYjMzQ7SklULCYjMzQ7ICYjMzQ7UklTQ1YsJiMzNDsgJiMzNDtpbnN0cnVjdGlvbiwmIzM0OyAmIzM0O2dlbmVyYXRpb24sJiMzNDsgJiMzNDtlbWl0LCYjMzQ7IG9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gY29kZSBnZW5lcmF0aW9uIG9yIG1hY2hpbmUgY29kZSB0cmFuc2xhdGlvbi4gSSBleHBlY3QgdG8gYmUgZGlnZ2luZyBhcm91bmQgaW4gdGhlIHBhcnRzIG9mIHRoZSBjb2RlIHRoYXQgaGFuZGxlIHRoZSBpbnN0cnVjdGlvbiBzZXQgYXJjaGl0ZWN0dXJlLCBvciBJU0EsIHRyYW5zbGF0aW9uLiBJIGJldCB0aGVyZSYjMzk7cyBhIHN0cnVjdHVyZSBvciBhIHNlcmllcyBvZiBmdW5jdGlvbnMgdGhhdCBtYXAgQlBGIGluc3RydWN0aW9ucyB0byBSSVNDLVYgaW5zdHJ1Y3Rpb25zLiBUaGF0IGlzIHByb2JhYmx5IHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcy4KCkkgd2lsbCBoYXZlIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIG1haWxpbmcgbGlzdHMgdG9vLCBqdXN0IGluIGNhc2UgdGhpcyBlbnRyeSBwb2ludCBpcyBkb2N1bWVudGVkIHNvbWV3aGVyZS4gVGhpcyBpcyBhIHRhc2sgdGhhdCYjMzk7bGwgcmVxdWlyZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMzNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBDb21waWxlcioqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCBzbyBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBvdXQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIEpJVCBjb21waWxhdGlvbiBmdW5jdGlvbnMgdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciB0aGluZ3MgbGlrZSB0aGUgY29kZSBnZW5lcmF0aW9uIHJvdXRpbmVzLCB0aGUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBsb2dpYyAoaWYgaXQmIzM5O3Mgbm90IGhhbmRsZWQgYnkgdGhlIGJhY2tlbmQpLCBhbmQgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgdHJhbnNsYXRlcyB0aGUgQlBGIGJ5dGVjb2RlIGludG8gUklTQy1WIG1hY2hpbmUgY29kZSwgY29uc2lkZXJpbmcgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUmIzM5O3MgaW5zdHJ1Y3Rpb24gc2V0LCByZWdpc3RlciBjb25zdHJhaW50cywgYW5kIHBvdGVudGlhbCBBQkkgY29uc2lkZXJhdGlvbnMgZm9yIGtlcm5lbC1sZXZlbCBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb24gbmFtZXMgYW5kIHRoZWlyIHNpZ25hdHVyZXMgdG8gaWRlbnRpZnkgdGhlIGtleSBjb21wb25lbnRzLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGRyaWxsIGRvd24gaW50byB0aGUgbW9zdCByZWxldmFudCBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGl0cyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0cnVjdCBicGZfcHJvZyBcXCpicGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jPTM5PWJvb2wgYnBmX2ppdF9uZWVkc196ZXh0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDMtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzo0NDpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc2NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBtZW50YWwgZ2VhcnMgYXJlIHR1cm5pbmcuLi4KCioqVHJhY2tpbmcgRG93biB0aGUgQlBGIEpJVCBDb21waWxhdGlvbiBQYXRoKioKCkFscmlnaHQsIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGZvciB0aGUgQlBGIEpJVC4gSSBrbm93IGBicGZfaW50X2ppdF9jb21waWxlYCByZXNpZGVzIHdpdGhpbiBgYnBmX2ppdF9jb3JlLmNgIOKAkyB0aGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBrZXkgZnVuY3Rpb24gaW52b2x2ZWQgaW4gZW1pdHRpbmcgaW5zdHJ1Y3Rpb25zIGFwcGVhcnMgdG8gYmUgYGJwZl9qaXRfZW1pdF9pbnNuYC4gSSBiZWxpZXZlIHRoYXQgdGhlIG1vZGlmaWVkIGBicGZfaml0X2VtaXRfaW5zbmAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW4gdGhlIGBicGZfaml0X2NvbXA2NC5jYCBmaWxlLiBSaWdodCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBMZXQgbWUgY29uZmlybSB0aGF0IGJ5IG5vdyBsb29raW5nIGRpcmVjdGx5IGF0IGBicGZfaml0X2VtaXRfaW5zbmAgbG9jYXRlZCBpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgdG8gc2VlIGhvdyBpdCBzcGVjaWZpY2FsbHkgaGFuZGxlcyB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTMzMj1pbnQgYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpyb19pbWFnZSxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjgtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzNjk6aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNzAtXHRcdCAgICAgIGJvb2wgZXh0cmFfcGFzcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNzYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gQlBGIEpJVCBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIGRpcmVjdCBteSBhdHRlbnRpb24gZm9yIHRoaXMgQlBGIHdvcmsuIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZW1pdF9pbnNuYCBzZWVtIGxpa2UgZ29vZCBjYW5kaWRhdGVzIHRvIHN0YXJ0IHdpdGguIGBicGZfaml0X2VtaXRfaW5zbmAgaXMgY2FsbGVkIGZvciAqZXZlcnkqIEJQRiBpbnN0cnVjdGlvbiBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLCBzbyBpdCAqY291bGQqIGJlIGEgaG90IHNwb3QgZHVyaW5nIGNvbXBpbGF0aW9uLiBIb3dldmVyLCBKSVQgY29tcGlsYXRpb24gaXRzZWxmIGlzbiYjMzk7dCBhIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGjigJRpdCBvbmx5IGhhcHBlbnMgb25jZSB3aGVuIGEgcHJvZ3JhbSBpcyBsb2FkZWQuIFRoZXJlZm9yZSwgYm90aCBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBicGZfaml0X2VtaXRfaW5zbmAgYXJlIGRlZmluaXRlbHkgd29ydGggZXhwbG9yaW5nIGZ1cnRoZXIuCgpOb3csIHdoYXQgYWJvdXQgdGhvc2UgcGVyY3B1IGNoYW5nZXM/IFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCByaWdodD8gTWVhbmluZyB0aGV5IGFyZSBnb2luZyB0byBnZXQgZXhlcmNpc2VkIGJ5IGFueSBhbmQgYWxsIGNvZGUgdGhhdCB1c2VzIHBlcmNwdSB2YXJpYWJsZXMuIFNvIEkgcHJvYmFibHkgZG9uJiMzOTt0IG5lZWQgYSBzcGVjaWZpYyBmb2N1cyBzeW1ib2wgZm9yIHRob3NlLCBhcyB0aGUgdGVzdGluZyB3aWxsIGJlIGNvbXByZWhlbnNpdmUgYnkgZGVmYXVsdC4KCkJ1dCBob2xkIG9uLCB0aGlzIEJQRiBKSVQgY2hhbmdlIGlzIGxpa2VseSBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBgQlBGX0xEWCB8IEJQRl9QRVJDUFUgfCBCUEZfV2Agb3Igc2ltaWxhciBwZXJjcHUgaW5zdHJ1Y3Rpb25zLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiBgYnBmX2ppdF9lbWl0X2luc25gIHdpdGhpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0IGluc3RydWN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQgdG8gZW5zdXJlIEkgY2FuIGJlc3QgdW5kZXJzdGFuZCB0aGUgZWZmZWN0cy4gVGhpcyBpcyB0aGUgcmlnaHQgd2F5IHRvIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM4MDpcdFx0aW5pdF9yZWdzKFx1MDAyNnJkLCBcdTAwMjZycywgaW5zbiwgY3R4KTtcbjEzODE6XHRcbjEzODI6XHRcdHN3aXRjaCAoY29kZSkge1xuMTM4MzpcdFx0LyogZHN0ID0gc3JjICovXG4xMzg0Olx0XHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9WIHwgQlBGX1g6XG4xMzg1Olx0XHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcbjEzODY6XHRcdFx0aWYgKGluc25faXNfY2FzdF91c2VyKGluc24pKSB7XG4xMzg3Olx0XHRcdFx0ZW1pdF9tdihSVl9SRUdfVDEsIHJzLCBjdHgpO1xuMTM4ODpcdFx0XHRcdGVtaXRfemV4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7XG4xMzg5Olx0XHRcdFx0ZW1pdF9pbW0ocmQsIChjdHgtXHUwMDNldXNlcl92bV9zdGFydCBcdTAwM2VcdTAwM2UgMzIpIFx1MDAzY1x1MDAzYyAzMiwgY3R4KTtcbjEzOTA6XHRcdFx0XHRlbWl0KHJ2X2JlcShSVl9SRUdfVDEsIFJWX1JFR19aRVJPLCA0KSwgY3R4KTtcbjEzOTE6XHRcdFx0XHRlbWl0X29yKFJWX1JFR19UMSwgcmQsIFJWX1JFR19UMSwgY3R4KTtcbjEzOTI6XHRcdFx0XHRlbWl0X212KHJkLCBSVl9SRUdfVDEsIGN0eCk7XG4xMzkzOlx0XHRcdFx0YnJlYWs7XG4xMzk0Olx0XHRcdH0gZWxzZSBpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcbjEzOTU6XHRcdFx0XHRpZiAocmQgIT0gcnMpXG4xMzk2Olx0XHRcdFx0XHRlbWl0X212KHJkLCBycywgY3R4KTtcbjEzOTc6XHQjaWZkZWYgQ09ORklHX1NNUFxuMTM5ODpcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIHBjcHVfb2Zmc2V0KSxcbjEzOTk6XHRcdFx0XHRcdFJWX1JFR19UUCwgY3R4KTtcbjE0MDA6XHRcdFx0XHQvKiBBZGQgdGhlIG9mZnNldCB0byBSZCAqL1xuMTQwMTpcdFx0XHRcdGVtaXRfYWRkKHJkLCByZCwgUlZfUkVHX1QxLCBjdHgpO1xuMTQwMjpcdCNlbmRpZlxuMTQwMzpcdFx0XHR9XG4xNDA0Olx0XHRcdGlmIChpbW0gPT0gMSkge1xuMTQwNTpcdFx0XHRcdC8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi9cbjE0MDY6XHRcdFx0XHRlbWl0X3pleHR3KHJkLCByZCwgY3R4KTtcbjE0MDc6XHRcdFx0XHRicmVhaztcbjE0MDg6XHRcdFx0fVxuMTQwOTpcdFx0XHRzd2l0Y2ggKGluc24tXHUwMDNlb2ZmKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDMyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQW5hbHlzaXMgb2YgdGhlIENvZGUmIzM5O3MgRnV6emluZyBTdHJhdGVneSoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSwgd2UmIzM5O3JlIGZvY3VzaW5nIG9uIGBpbnNuX2lzX21vdl9wZXJjcHVfYWRkcihpbnNuKWAuIFRoYXQgcmluZ3MgYSBiZWxsLCBpdCYjMzk7cyByZWxhdGVkIHRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGVyY3B1IHZhcmlhYmxlcyB3aGVuIHVzZWQgd2l0aGluIEJQRiBwcm9ncmFtcy4gVGhhdCYjMzk7cyBhIGdvb2QgbGVhZCBmb3Igb3VyIGZ1enppbmcgZWZmb3J0cyDigJMgdGFyZ2V0aW5nIEJQRiBwcm9ncmFtcyBtYWtlcyBwZXJmZWN0IHNlbnNlIHRvIGV4ZXJjaXNlIHRoaXMgZnVuY3Rpb24uIEkmIzM5O2xsIGFkZCBgYnBmX2ludF9qaXRfY29tcGlsZWAgdG8gYEZvY3VzU3ltYm9sc2AuIFRoYXQgc2hvdWxkIGhlbHAgdXMgaG9uZSBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy4KCk5vdywgSSYjMzk7bSBzcG90dGluZyBgQ09ORklHX1JJU0NWX0lTQV9aQUJIQWAuIFRoYXQmIzM5O3MgYSBSSVNDLVYgc3BlY2lmaWMgY29uZmlnLCBpc24mIzM5O3QgaXQ/IExldCYjMzk7cyBhZGQgdGhhdCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gZXhwYW5kIG91ciBjb3ZlcmFnZS4gQnV0LCBoYW5nIG9uLi4uIGlzIGBSSVNDVl9JU0FfWkFCSEFgIGFjdHVhbGx5ICphdmFpbGFibGUqIGluIHRoZSBrZXJuZWwgdmVyc2lvbiB3ZSYjMzk7cmUgY3VycmVudGx5IHRlc3Rpbmc/IFdlIG5lZWQgdG8gYmUgc3VyZS4gT2theSwgSSYjMzk7dmUgY2hlY2tlZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVmaW5lZCBpbiBgYXJjaC9yaXNjdi9LY29uZmlnYC4gRXhjZWxsZW50LiBBbHNvLCBJJiMzOTt2ZSBub3RpY2VkIGBIQVNfSU9QT1JUYCBiZWluZyB1c2VkIGluIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhgLiBMZXQmIzM5O3MgY29uZmlybSBgSEFTX0lPUE9SVGAgaXMgYSB2YWxpZCBjb25maWcgb3B0aW9uIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIHZhbGlkIGFuZCB3aWxsIHRyaWdnZXIgdGhlIGRlc2lyZWQgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhBU19JT1BPUlQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWc9Mzc1PWNvbmZpZyBIQVNfSU9NRU1cbi0tXG5saWIvS2NvbmZpZy0zNzktXG5saWIvS2NvbmZpZzozODA6Y29uZmlnIEhBU19JT1BPUlRcbmxpYi9LY29uZmlnLTM4MS1cdGJvb2xcbmxpYi9LY29uZmlnLTM4Mi1cbmxpYi9LY29uZmlnOjM4Mzpjb25maWcgSEFTX0lPUE9SVF9NQVBcbmxpYi9LY29uZmlnLTM4NC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNzYKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogNTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IFJJU0MtViBQZXItQ1BVIE9wZXJhdGlvbnMgYW5kIEJQRiBKSVQqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGBIQVNfSU9QT1JUYCBpcyBhIHZhbGlkIGNvbmZpZywgYnV0IGl0JiMzOTtzIGluZGlyZWN0bHkgc2VsZWN0ZWQg4oCTIG5vdCBzb21ldGhpbmcgd2UgY2FuIGRpcmVjdGx5IGVuYWJsZSBpbiBgbWVudWNvbmZpZ2AuIEl0JiMzOTtzIHR5cGljYWxseSBjaG9zZW4gYnkgYXJjaGl0ZWN0dXJlIG9yIGJ1cyBjb25maWdzLCBzbyBsaXN0aW5nIGl0IGRpcmVjdGx5IGlzIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBhcHByb2FjaC4gIEhvd2V2ZXIsIHRoaXMgbGVkIG1lIHRvIHRoaW5rIGFib3V0IHdoYXQgKnNob3VsZCogYmUgbGlzdGVkLiAgYFJJU0NWX0lTQV9aQUJIQWAgYW5kIGBCUEZfSklUYCBhcmUgZGVmaW5pdGVseSB3b3J0aCBtZW50aW9uaW5nLiBgQlBGX0pJVGAgaXMgZ2VuZXJhbGx5IGVuYWJsZWQsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGJlIGV4cGxpY2l0LiBMaXN0aW5nIGBIQVNfSU9QT1JUYCBpc24mIzM5O3QgdmVyeSB1c2VmdWwsIGl0IGJlaW5nIGhpZGRlbi4KClRoZW4gSSBzYXcgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZTogdGhlIHBhdGNoIG1vZGlmaWVzIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BlcmNwdS5oYC4gSXQgaW1wbGVtZW50cyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIHVzaW5nIGBhbW9gIGluc3RydWN0aW9ucy4gICpUaGF0KiBpcyBhIHNpZ25pZmljYW50LCBmdW5kYW1lbnRhbCBjaGFuZ2UgZm9yIFJJU0MtVi4gIFRoaXMgaXMgYSBiaWcgZnVuY3Rpb25hbCBjaGFuZ2UsIHdvcnRoIGZ1enppbmcgZm9yIGNvcnJlY3RuZXNzLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhpdCB0aGlzIGhhcmQuCgpTbywgaGVyZSYjMzk7cyB0aGUgcGxhbjoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gdGhpcyBpcyBhIGNydWNpYWwgYXJlYS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJwZl9qaXRfZW1pdF9pbnNuYCAtIHRoaXMgY292ZXJzIHRoZSBCUEYgSklUIGFzcGVjdCBvZiB0aGUgcGF0Y2ggaW4gbW9yZSBkZXRhaWwuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFJJU0NWX0lTQV9aQUJIQWAsIGBCUEZfSklUYCAtIEVuc3VyaW5nIHRoZXNlIGFyZSBleHBsaWNpdGx5IGVuYWJsZWQuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi4KCkkgZGlkIGEgcXVpY2sgc2NhbiBmb3Igb3RoZXIgaW50ZXJlc3Rpbmcgc3ltYm9scy4gYF9fc3dpdGNoX3RvYCBpcyBhIGhvdCBwYXRoLCBidXQgaW5jbHVkaW5nIGl0IHdvdWxkIGludHJvZHVjZSBhIGxvdCBvZiBub2lzZS4gU2ltaWxhcmx5LCBib290L2hvdHBsdWcgZnVuY3Rpb25zIGxpa2UgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBtYXkgc2VlbSByZWxldmFudCwgYnV0IFN5emthbGxlciBhbHJlYWR5IGhhbmRsZXMgaG90cGx1ZyB0ZXN0aW5nIGlmIGVuYWJsZWQuIFNvLCBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgbGlrZSB0aGUgb3B0aW1hbCBzeW1ib2wgZm9yIHRoZSBCUEYgSklUIHRlc3RpbmcuIEl0IGlzIHRoZSBlbnRyeSBwb2ludCwgc28gdGhhdCYjMzk7cyB0aGUgY29ycmVjdCBuYW1lLiAgYFJJU0NWX0lTQV9aQUJIQWAgc2VlbXMgdG8gYmUgdGhlIG9ubHkgbmV3IGNvbmZpZy4KCkFscmlnaHQsIHRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZXNwb25zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBSSVNDVl9JU0FfWkFCSEE8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UklTQ1ZfSVNBX1pBQkhBJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDt0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogUklTQ1ZfSVNBX1pBQkhBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQxMAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAyMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgQ29uZmlndXJhdGlvbiBEaXNjcmVwYW5jeSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcmIzM5O3Mgbm90IHJpZ2h0IGhlcmUuIFRoZSBzeXN0ZW0gaXMgY2xhaW1pbmcgdGhhdCBgUklTQ1ZfSVNBX1pBQkhBYCBkb2VzbiYjMzk7dCBleGlzdCwgYnV0IG15IGdyZXAgc2VhcmNoICpjbGVhcmx5KiBzaG93cyBpdCBkZWZpbmVkIGluIGBhcmNoL3Jpc2N2L0tjb25maWc6NjgzYC4gVGhhdCYjMzk7cyB3aGVyZSBpdCBzaG91bGQgYmUhCgpXYWl0LCBjb3VsZCBpdCBiZSBhIG5hbWluZyBpc3N1ZT8gSSB2YWd1ZWx5IHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGBUT09MQ0hBSU5fSEFTX1pBQkhBYC4uLiBMZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBncmVwIG91dHB1dCBhZ2Fpbi4gT2theSwgaXQgbG9va3MgbGlrZSBgYXJjaC9yaXNjdi9LY29uZmlnOjY3NmAgaGFzIGBjb25maWcgVE9PTENIQUlOX0hBU19aQUJIQWAsIGFuZCB0aGUgdmVyeSBuZXh0IGxpbmVzLCBzaG93IGBSSVNDVl9JU0FfWkFCSEFgLgoKU28sICp3aHkqIGRpZCB0aGUgYHNldC1yZXN1bHRzYCB1dGlsaXR5IGNsYWltIGl0JiMzOTtzIG1pc3Npbmc/IFRoYXQmIzM5O3MgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uIFBlcmhhcHMgdGhpcyB0b29sIGlzbiYjMzk7dCBjb21wcmVoZW5zaXZlLiBNYXliZSBpdCYjMzk7cyBjaGVja2luZyBhZ2FpbnN0IGEgaGFyZGNvZGVkIGxpc3QsIG9yIGl0cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY2hlY2tzIGFyZSBjdXJyZW50bHkgbG9va2luZyBhdCB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgYW5kIG5vdCB0aGUgUklTQy1WIG9uZSBJJiMzOTttIHdvcmtpbmcgd2l0aC4gSXQgd291bGRuJiMzOTt0IGJlIHRoZSBmaXJzdCB0aW1lIEkmIzM5O3ZlIGVuY291bnRlcmVkIHRoYXQga2luZCBvZiBsaW1pdGF0aW9uLiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8ganVzdCBieXBhc3MgdGhlIGlzc3VlLCBhbmQgdXNlIHRoZSBtb3JlIGNvbW1vbiBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMgZm9yIFJJU0MtViB1c2luZyBBTU8gaW5zdHJ1Y3Rpb25zIGFuZCBtb2RpZmllcyB0aGUgQlBGIEpJVCB0byB1c2UgdGhlIG5ldyBgcGNwdV9vZmZzZXRgIGluIGB0aHJlYWRfaW5mb2AuIFRoZXNlIGFyZSBjb3JlIGFyY2hpdGVjdHVyYWwgYW5kIEJQRiBKSVQgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHRoZSBCUEYgSklUIGdlbmVyYXRpb24gZm9yIHBlci1jcHUgYWRkcmVzcyByZXNvbHV0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMgZm9yIFJJU0MtViB1c2luZyBBTU8gaW5zdHJ1Y3Rpb25zIGFuZCBtb2RpZmllcyB0aGUgQlBGIEpJVCB0byB1c2UgdGhlIG5ldyBgcGNwdV9vZmZzZXRgIGluIGB0aHJlYWRfaW5mb2AuIFRoZXNlIGFyZSBjb3JlIGFyY2hpdGVjdHVyYWwgYW5kIEJQRiBKSVQgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHRoZSBCUEYgSklUIGdlbmVyYXRpb24gZm9yIHBlci1jcHUgYWRkcmVzcyByZXNvbHV0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDQ6NDEuNjAwMTQxNjY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5Njk0NjU0OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDQ6NDEuNjAwMTQ5MDU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTg0NzUyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNDRmYzlmZjI1YzQ0ZDM3ZGRlOTcyNWQ5MGQwMDE1Y2FhZWQyOWZlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTA6MDQ6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmhcXG5pbmRleCBlOWU4YmE4M2U2MzJmOS4uMTM3YTQ5NDg4MzI1ZTQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmhcXG5AQCAtOTEsMTEgKzkxLDcgQEBcXG4gXFxuICNpZmRlZiBDT05GSUdfU01QXFxuIC5tYWNybyBhc21fcGVyX2NwdSBkc3Qgc3ltIHRtcFxcbi1cXHRsdyAgICBcXFxcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApXFxuLVxcdHNsbGkgIFxcXFx0bXAsIFxcXFx0bXAsIFJJU0NWX0xHUFRSXFxuLVxcdGxhICAgIFxcXFxkc3QsIF9fcGVyX2NwdV9vZmZzZXRcXG4tXFx0YWRkICAgXFxcXGRzdCwgXFxcXGRzdCwgXFxcXHRtcFxcbi1cXHRSRUdfTCBcXFxcdG1wLCAwKFxcXFxkc3QpXFxuK1xcdFJFR19MIFxcXFx0bXAsIFRBU0tfVElfUENQVV9PRkZTRVQodHApXFxuIFxcdGxhICAgIFxcXFxkc3QsIFxcXFxzeW1cXG4gXFx0YWRkICAgXFxcXGRzdCwgXFxcXGRzdCwgXFxcXHRtcFxcbiAuZW5kbVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhcXG5pbmRleCAwOWJiNWY1N2E5ZDM0Ni4uOTJkNWY4MzFmMzQ5NWEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXFxuQEAgLTEwMiwxMiArMTAyLDE0IEBAIF9faW9fcmVhZHNfaW5zKHJlYWRzLCB1MzIsIGwsIF9faW9fYnIoKSwgX19pb19hcihhZGRyKSlcXG4gI2RlZmluZSByZWFkc3coYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc3coYWRkciwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSByZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudClcXG4gXFxuKyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxcbiBfX2lvX3JlYWRzX2lucyhpbnMsICB1OCwgYiwgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXFxuIF9faW9fcmVhZHNfaW5zKGlucywgdTE2LCB3LCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSlcXG4gX19pb19yZWFkc19pbnMoaW5zLCB1MzIsIGwsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxcbiAjZGVmaW5lIGluc2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNiKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuICNkZWZpbmUgaW5zdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3coUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSBpbnNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zbChQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxcbisjZW5kaWZcXG4gXFxuIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCAgdTgsIGIsIF9faW9fYncoKSwgX19pb19hdygpKVxcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTE2LCB3LCBfX2lvX2J3KCksIF9faW9fYXcoKSlcXG5AQCAtMTE2LDI2ICsxMTgsMzIgQEAgX19pb193cml0ZXNfb3V0cyh3cml0ZXMsIHUzMiwgbCwgX19pb19idygpLCBfX2lvX2F3KCkpXFxuICNkZWZpbmUgd3JpdGVzdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3coYWRkciwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSB3cml0ZXNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KVxcbiBcXG4rI2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXFxuIF9faW9fd3JpdGVzX291dHMob3V0cywgIHU4LCBiLCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxcbiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHUxNiwgdywgX19pb19wYncoKSwgX19pb19wYXcoKSlcXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MzIsIGwsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXFxuICNkZWZpbmUgb3V0c2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzYihQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxcbiAjZGVmaW5lIG91dHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c3coUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSBvdXRzbChhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNsKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuKyNlbmRpZlxcbiBcXG4gI2lmZGVmIENPTkZJR182NEJJVFxcbiBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTY0LCBxLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpXFxuICNkZWZpbmUgcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpXFxuIFxcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcXG4gX19pb19yZWFkc19pbnMoaW5zLCB1NjQsIHEsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxcbiAjZGVmaW5lIGluc3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNxKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuKyNlbmRpZlxcbiBcXG4gX19pb193cml0ZXNfb3V0cyh3cml0ZXMsIHU2NCwgcSwgX19pb19idygpLCBfX2lvX2F3KCkpXFxuICNkZWZpbmUgd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3EoYWRkciwgYnVmZmVyLCBjb3VudClcXG4gXFxuKyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxcbiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXcoKSlcXG4gI2RlZmluZSBvdXRzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNxKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuICNlbmRpZlxcbisjZW5kaWZcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20tZ2VuZXJpYy9pby5oXFx1MDAzZVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YmY5ZjRjZjRjYTVhYVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BlcmNwdS5oXFxuQEAgLTAsMCArMSwzMDAgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cXG4rXFxuKyNpZm5kZWYgX19BU01fUEVSQ1BVX0hcXG4rI2RlZmluZSBfX0FTTV9QRVJDUFVfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdHMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByZWVtcHQuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYWx0ZXJuYXRpdmUtbWFjcm9zLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vY21weGNoZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUtbWFjcm9zLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vY3VycmVudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2h3Y2FwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vdGhyZWFkX2luZm8uaFxcdTAwM2VcXG4rXFxuKyNkZWZpbmUgUEVSQ1BVX1JXX09QUyhzeilcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3BlcmNwdV9yZWFkXyMjc3oodm9pZCAqcHRyKVxcdFxcdFxcXFxcXG4re1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0dXJuIFJFQURfT05DRSgqKHUjI3N6ICopcHRyKTtcXHRcXHRcXHRcXHRcXFxcXFxuK31cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rc3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1X3dyaXRlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcXHRcXFxcXFxuK3tcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFdSSVRFX09OQ0UoKih1IyNzeiAqKXB0ciwgKHUjI3N6KXZhbCk7XFx0XFx0XFx0XFx0XFxcXFxcbit9XFxuK1xcbitQRVJDUFVfUldfT1BTKDgpXFxuK1BFUkNQVV9SV19PUFMoMTYpXFxuK1BFUkNQVV9SV19PUFMoMzIpXFxuK1xcbisjaWZkZWYgQ09ORklHXzY0QklUXFxuK1BFUkNQVV9SV19PUFMoNjQpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fT1BfQ0FTRShzZngsIG5hbWUsIHN6LCBhbW9faW5zbilcXHRcXHRcXHRcXFxcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rX19wZXJjcHVfIyNuYW1lIyNfYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKVxcdFxcdFxcXFxcXG4re1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0YXNtIHZvbGF0aWxlIChcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCJhbW9cXFwiICNhbW9faW5zbiAjc2Z4IFxcXCIgemVybywgJVt2YWxdLCAlW3B0cl1cXFwiXFx0XFx0XFxcXFxcbitcXHRcXHQ6IFtwdHJdIFxcXCIrQVxcXCIgKCoodSMjc3ogKilwdHIpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQ6IFt2YWxdIFxcXCJyXFxcIiAoKHUjI3N6KSh2YWwpKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0OiBcXFwibWVtb3J5XFxcIik7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9XFxuK1xcbisjaWZkZWYgQ09ORklHXzY0QklUXFxuKyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19QRVJDUFVfQU1PX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXHRcXHRcXHRcXFxcXFxuK1xcdF9fUEVSQ1BVX0FNT19PUF9DQVNFKC5kLCBuYW1lLCA2NCwgYW1vX2luc24pXFxuKyNlbHNlXFxuKyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19QRVJDUFVfQU1PX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXG4rI2VuZGlmXFxuK1xcbitQRVJDUFVfT1AoYWRkLCBhZGQpXFxuK1BFUkNQVV9PUChhbmQsIGFuZClcXG4rUEVSQ1BVX09QKG9yLCBvcilcXG4rXFxuKy8qXFxuKyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLFxcbisgKiBhbmQgdGhlIFBFUkNQVV9SRVRfT1AoKSBkb2VzIG5vdCBhY2NvdW50IGZvciBvdGhlciBvcGVyYXRpb25zLlxcbisgKi9cXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pXFx0XFx0XFxcXFxcbitzdGF0aWMgaW5saW5lIHUjI3N6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitfX3BlcmNwdV8jI25hbWUjI19yZXR1cm5fYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKVxcdFxcXFxcXG4re1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmVnaXN0ZXIgdSMjc3ogcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRhc20gdm9sYXRpbGUgKFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFxcImFtb1xcXCIgI2Ftb19pbnNuICNzZnggXFxcIiAlW3JldF0sICVbdmFsXSwgJVtwdHJdXFxcIlxcdFxcdFxcXFxcXG4rXFx0XFx0OiBbcHRyXSBcXFwiK0FcXFwiICgqKHUjI3N6ICopcHRyKSwgW3JldF0gXFxcIj1yXFxcIiAocmV0KVxcdFxcdFxcXFxcXG4rXFx0XFx0OiBbdmFsXSBcXFwiclxcXCIgKCh1IyNzeikodmFsKSlcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyZXR1cm4gcmV0ICsgdmFsO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXHRcXHRcXFxcXFxuK1xcdF9fUEVSQ1BVX0FNT19SRVRfT1BfQ0FTRSguZCwgbmFtZSwgNjQsIGFtb19pbnNuKVxcbisjZWxzZVxcbisjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXG4rI2VuZGlmXFxuK1xcbitQRVJDUFVfUkVUX09QKGFkZCwgYWRkKVxcbitcXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKVxcdCgoKHVuc2lnbmVkIGxvbmcpKHB0cikgXFx1MDAyNiAweDMpICogQklUU19QRVJfQllURSlcXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeilcXHRHRU5NQVNLKChzeikgLSAxLCAwKVxcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpXFx0KCh1MzIgKikoKHVuc2lnbmVkIGxvbmcpKHB0cikgXFx1MDAyNiB+MHgzKSlcXG4rXFxuKyNkZWZpbmUgUEVSQ1BVXzhfMTZfT1AobmFtZSwgYW1vX2luc24sIHN6LCBzZngsIHZhbF90eXBlLCBuZXdfdmFsX2V4cHIsIGFzbV9vcClcXHRcXHRcXHRcXFxcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3BlcmNwdV8jI25hbWUjI19hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXFx0XFx0XFxcXFxcbit7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1pBQkhBKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1pBQkhBKSkge1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXNtIHZvbGF0aWxlIChcXFwiYW1vXFxcIiAjYW1vX2luc24gI3NmeCBcXFwiIHplcm8sICVbdmFsXSwgJVtwdHJdXFxcIlxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBbcHRyXSBcXFwiK0FcXFwiKCoodmFsX3R5cGUgKilwdHIpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFt2YWxdIFxcXCJyXFxcIigodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFxcdTAwMjYgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKSlcXHRcXFxcXFxuK1xcdFxcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fSBlbHNlIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHUzMiAqcHRyMzIgPSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgc2hpZnQgPSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNvbnN0IHUzMiBtYXNrID0gUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFxcdTAwM2NcXHUwMDNjIHNoaWZ0O1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dTMyIG9sZCwgbmV3O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dmFsX3R5cGUgZmllbGQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGFzbSB2b2xhdGlsZSAoXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwiMDogbHIudyAlMCwgJTJcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJhbmQgJTMsICUwLCAlNFxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcInNybCAlMywgJTMsICU1XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQjYXNtX29wIFxcXCIgJTMsICUzLCAlNlxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImFuZCAlMywgJTMsICU4XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwic2xsICUzLCAlMywgJTVcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJhbmQgJTEsICUwLCAlN1xcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcIm9yICUxLCAlMSwgJTNcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJzYy53ICUxLCAlMSwgJTJcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJibmV6ICUxLCAwYlxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBcXFwiPVxcdTAwMjZyXFxcIihvbGQpLCBcXFwiPVxcdTAwMjZyXFxcIihuZXcpLCBcXFwiK0FcXFwiKCpwdHIzMiksIFxcXCI9XFx1MDAyNnJcXFwiKGZpZWxkKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBcXFwiclxcXCIobWFzayksIFxcXCJyXFxcIihzaGlmdCksIFxcXCJyXFxcIih2YWxfdHJ1bmMpLCBcXFwiclxcXCIofm1hc2spLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ICBcXFwiclxcXCIoUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBcXFwibWVtb3J5XFxcIik7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9XFxuK1xcbisjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcClcXHRcXHRcXHRcXFxcXFxuK1xcdFBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCA4LCAuYiwgdTgsIGV4cHIsIGZpbmFsX29wKTtcXHRcXHRcXFxcXFxuK1xcdFBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCAxNiwgLmgsIHUxNiwgZXhwciwgZmluYWxfb3ApXFxuK1xcbitQRVJDUFVfT1BfOF8xNihhZGQsIGFkZCwgdmFsLCBhZGQpXFxuK1BFUkNQVV9PUF84XzE2KGFuZCwgYW5kLCB2YWwsIGFuZClcXG4rUEVSQ1BVX09QXzhfMTYob3IsIG9yLCB2YWwsIG9yKVxcbitcXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9SRVRfT1AobmFtZSwgYW1vX2luc24sIHN6LCBzZngsIHZhbF90eXBlLCBuZXdfdmFsX2V4cHIpXFx0XFx0XFx0XFxcXFxcbitzdGF0aWMgaW5saW5lIHZhbF90eXBlIF9fcGVyY3B1XyMjbmFtZSMjX3JldHVybl9hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXFx0XFxcXFxcbit7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1pBQkhBKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1pBQkhBKSkge1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmVnaXN0ZXIgdmFsX3R5cGUgcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXNtIHZvbGF0aWxlIChcXFwiYW1vXFxcIiAjYW1vX2luc24gI3NmeCBcXFwiICVbcmV0XSwgJVt2YWxdLCAlW3B0cl1cXFwiXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFtwdHJdIFxcXCIrQVxcXCIoKih2YWxfdHlwZSAqKXB0ciksIFtyZXRdIFxcXCI9clxcXCIocmV0KVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBbdmFsXSBcXFwiclxcXCIoKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKSBcXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkpXFx0XFxcXFxcbitcXHRcXHRcXHQ6IFxcXCJtZW1vcnlcXFwiKTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHJldHVybiByZXQgKyAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFxcdTAwMjYgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKTtcXHRcXHRcXFxcXFxuK1xcdH0gZWxzZSB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR1MzIgKnB0cjMyID0gUEVSQ1BVXzhfMTZfR0VUX1BUUjMyKHB0cik7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjb25zdCB1bnNpZ25lZCBsb25nIHNoaWZ0ID0gUEVSQ1BVXzhfMTZfR0VUX1NISUZUKHB0cik7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjb25zdCB1MzIgbWFzayA9IChQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikgXFx1MDAzY1xcdTAwM2Mgc2hpZnQpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y29uc3QgdTMyIGludl9tYXNrID0gfm1hc2s7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjb25zdCB2YWxfdHlwZSB2YWxfdHJ1bmMgPSAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR1MzIgb2xkLCBuZXcsIGZpZWxkO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRhc20gdm9sYXRpbGUgKFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcIjA6IGxyLncgJTAsICUzXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwiYW5kICUxLCAlMCwgJTRcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJzcmwgJTEsICUxLCAlNVxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImFkZCAlMSwgJTEsICU2XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwiYW5kICUxLCAlMSwgJTdcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJzbGwgJTEsICUxLCAlNVxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImFuZCAlMiwgJTAsICU4XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwib3IgJTIsICUyLCAlMVxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcInNjLncgJTIsICUyLCAlM1xcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImJuZXogJTIsIDBiXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFxcXCI9XFx1MDAyNnJcXFwiKG9sZCksIFxcXCI9XFx1MDAyNnJcXFwiKGZpZWxkKSwgXFxcIj1cXHUwMDI2clxcXCIobmV3KSwgXFxcIitBXFxcIigqcHRyMzIpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFxcXCJyXFxcIihtYXNrKSwgXFxcInJcXFwiKHNoaWZ0KSwgXFxcInJcXFwiKHZhbF90cnVuYyksIFxcXCJyXFxcIihQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpLCBcXFxcXFxuK1xcdFxcdFxcdFxcXCJyXFxcIihpbnZfbWFzaylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmV0dXJuICh2YWxfdHlwZSkoZmllbGQgXFx1MDAzZVxcdTAwM2Ugc2hpZnQpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfVxcbitcXG4rUEVSQ1BVXzhfMTZfUkVUX09QKGFkZCwgYWRkLCA4LCAuYiwgdTgsIHZhbClcXG4rUEVSQ1BVXzhfMTZfUkVUX09QKGFkZCwgYWRkLCAxNiwgLmgsIHUxNiwgdmFsKVxcbitcXG4rI2RlZmluZSBfcGNwX3Byb3RlY3Qob3AsIHBjcCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRvcChyYXdfY3B1X3B0cihcXHUwMDI2KHBjcCkpLCBfX1ZBX0FSR1NfXyk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9KVxcbitcXG4rI2RlZmluZSBfcGNwX3Byb3RlY3RfcmV0dXJuKG9wLCBwY3AsIGFyZ3MuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbisoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0dHlwZW9mKHBjcCkgX19yZXR2YWw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRwcmVlbXB0X2Rpc2FibGVfbm90cmFjZSgpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19yZXR2YWwgPSAodHlwZW9mKHBjcCkpb3AocmF3X2NwdV9wdHIoXFx1MDAyNihwY3ApKSwgIyNhcmdzKTtcXHRcXFxcXFxuK1xcdHByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fcmV0dmFsO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfSlcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfcmVhZF8xKHBjcClcXHRcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfOCwgcGNwKVxcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMihwY3ApXFx0XFx0X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9yZWFkXzE2LCBwY3ApXFxuKyNkZWZpbmUgdGhpc19jcHVfcmVhZF80KHBjcClcXHRcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfMzIsIHBjcClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV9yZWFkXzgocGNwKVxcdFxcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF82NCwgcGNwKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfOCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXFxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMihwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfMTYsIHBjcCwgKHVuc2lnbmVkIGxvbmcpdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzQocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzMyLCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV93cml0ZV84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV82NCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF8yKHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF80KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl8xKHBjcCwgdmFsKVxcdFxcdFxcXFxcXG4rX3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzIocGNwLCB2YWwpXFx0XFx0XFxcXFxcbitfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X2FkZF9yZXR1cm5fYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzQocGNwLCB2YWwpXFx0XFx0XFxcXFxcbitfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X2FkZF9yZXR1cm5fYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fOChwY3AsIHZhbClcXHRcXHRcXFxcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FuZF8yKHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FuZF80KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIHRoaXNfY3B1X2FuZF84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfb3JfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXFxuKyNkZWZpbmUgdGhpc19jcHVfb3JfMihwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X29yXzQocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X29yX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV9vcl84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzEocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X3hjaGdfMihwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXFxuKyNkZWZpbmUgdGhpc19jcHVfeGNoZ180KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdF9yZXR1cm4oeGNoZ19yZWxheGVkLCBwY3AsIHZhbClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzgocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18xKHBjcCwgbywgbilcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfMihwY3AsIG8sIG4pXFx0X3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbilcXG4rI2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnXzQocGNwLCBvLCBuKVxcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXFxuK1xcbisjaWZkZWYgQ09ORklHXzY0QklUXFxuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ184KHBjcCwgbywgbilcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnNjQocGNwLCBvLCBuKVxcdHRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pXFxuKyNlbmRpZlxcbitcXG4rI2lmZGVmIHN5c3RlbV9oYXNfY21weGNoZzEyOFxcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGcxMjgocGNwLCBvLCBuKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHUxMjggcmV0X187XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR0eXBlb2YocGNwKSAqcHRyX187XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRwdHJfXyA9IHJhd19jcHVfcHRyKFxcdTAwMjYocGNwKSk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoc3lzdGVtX2hhc19jbXB4Y2hnMTI4KCkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyZXRfXyA9IGNtcHhjaGcxMjhfbG9jYWwocHRyX18sIChvKSwgKG4pKTtcXHRcXHRcXFxcXFxuK1xcdGVsc2VcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHJldF9fID0gdGhpc19jcHVfZ2VuZXJpY19jbXB4Y2hnKHBjcCwgKG8pLCAobikpO1xcdFxcXFxcXG4rXFx0cHJlZW1wdF9lbmFibGVfbm90cmFjZSgpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0X187XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9KVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgX19teV9jcHVfb2Zmc2V0ICgoKHN0cnVjdCB0aHJlYWRfaW5mbyAqKWN1cnJlbnQpLVxcdTAwM2VwY3B1X29mZnNldClcXG4rXFxuKyN1bmRlZiBQRVJDUFVfUldfT1BTXFxuKyN1bmRlZiBfX1BFUkNQVV9BTU9fT1BfQ0FTRVxcbisjdW5kZWYgUEVSQ1BVX09QXFxuKyN1bmRlZiBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0VcXG4rI3VuZGVmIFBFUkNQVV9SRVRfT1BcXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9TSElGVFxcbisjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX01BU0tcXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9QVFIzMlxcbisjdW5kZWYgUEVSQ1BVXzhfMTZfT1BcXG4rI3VuZGVmIFBFUkNQVV9PUF84XzE2XFxuKyN1bmRlZiBQRVJDUFVfOF8xNl9SRVRfT1BcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20tZ2VuZXJpYy9wZXJjcHUuaFxcdTAwM2VcXG4rXFxuKyNlbmRpZiAvKiBfX0FTTV9QRVJDUFVfSCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxcbmluZGV4IDBlNzFlYjgyZjkyMGNhLi43MzNiNmNkMzA2ZTQwZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxcbkBAIC04OCw2ICs4OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZW52Y2ZnKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4gXFx0XFx0XFx0OjogXFxcInJcXFwiIChuZXh0LVxcdTAwM2V0aHJlYWQuZW52Y2ZnKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4re1xcbisjaWZkZWYgQ09ORklHX1NNUFxcbitcXHRuZXh0LVxcdTAwM2V0aHJlYWRfaW5mby5wY3B1X29mZnNldCA9IF9fbXlfY3B1X29mZnNldDtcXG4rI2VuZGlmXFxuK31cXG4rXFxuIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICopO1xcbiBcXG5AQCAtMTIyLDYgKzEyOSw3IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmIChzd2l0Y2hfdG9fc2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKVxcdFxcXFxcXG4gXFx0XFx0bG9jYWxfZmx1c2hfaWNhY2hlX2FsbCgpO1xcdFxcdFxcXFxcXG4gXFx0X19zd2l0Y2hfdG9fZW52Y2ZnKF9fbmV4dCk7XFx0XFx0XFx0XFxcXFxcbitcXHRfX3N3aXRjaF90b19wY3B1X29mZnNldChfX25leHQpO1xcdFxcdFxcXFxcXG4gXFx0KChsYXN0KSA9IF9fc3dpdGNoX3RvKF9fcHJldiwgX19uZXh0KSk7XFx0XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXFxuaW5kZXggNTUwMTlmZGZhOWVjYWEuLmYxMGJhNjJiNjEwMTY0IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxcbkBAIC01Myw2ICs1Myw3IEBAXFxuIHN0cnVjdCB0aHJlYWRfaW5mbyB7XFxuIFxcdHVuc2lnbmVkIGxvbmdcXHRcXHRmbGFncztcXHRcXHQvKiBsb3cgbGV2ZWwgZmxhZ3MgKi9cXG4gXFx0aW50ICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdF9jb3VudDsgIC8qIDA9XFx1MDAzZXByZWVtcHRpYmxlLCBcXHUwMDNjMD1cXHUwMDNlQlVHICovXFxuK1xcdGludFxcdFxcdFxcdGNwdTtcXG4gXFx0LypcXG4gXFx0ICogVGhlc2Ugc3RhY2sgcG9pbnRlcnMgYXJlIG92ZXJ3cml0dGVuIG9uIGV2ZXJ5IHN5c3RlbSBjYWxsIG9yXFxuIFxcdCAqIGV4Y2VwdGlvbi4gIFNQIGlzIGFsc28gc2F2ZWQgdG8gdGhlIHN0YWNrIGl0IGNhbiBiZSByZWNvdmVyZWQgd2hlblxcbkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7XFxuIFxcdCAqL1xcbiBcXHRsb25nXFx0XFx0XFx0a2VybmVsX3NwO1xcdC8qIEtlcm5lbCBzdGFjayBwb2ludGVyICovXFxuIFxcdGxvbmdcXHRcXHRcXHR1c2VyX3NwO1xcdC8qIFVzZXIgc3RhY2sgcG9pbnRlciAqL1xcbi1cXHRpbnRcXHRcXHRcXHRjcHU7XFxuIFxcdHVuc2lnbmVkIGxvbmdcXHRcXHRzeXNjYWxsX3dvcms7XFx0LyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xcbitcXHR1bnNpZ25lZCBsb25nXFx0XFx0cGNwdV9vZmZzZXQ7XFxuICNpZmRlZiBDT05GSUdfU0hBRE9XX0NBTExfU1RBQ0tcXG4gXFx0dm9pZFxcdFxcdFxcdCpzY3NfYmFzZTtcXG4gXFx0dm9pZFxcdFxcdFxcdCpzY3Nfc3A7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXFxuaW5kZXggYTc1ZjBjZmVhMWU5ZmEuLjIwZDQ2YzI4ZmRkZTk3IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXFxuQEAgLTM4LDYgKzM4LDcgQEAgdm9pZCBhc21fb2Zmc2V0cyh2b2lkKVxcbiBcXHRPRkZTRVQoVEFTS19USFJFQURfU1VNLCB0YXNrX3N0cnVjdCwgdGhyZWFkLnN1bSk7XFxuIFxcbiBcXHRPRkZTRVQoVEFTS19USV9DUFUsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5jcHUpO1xcbitcXHRPRkZTRVQoVEFTS19USV9QQ1BVX09GRlNFVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0KTtcXG4gXFx0T0ZGU0VUKFRBU0tfVElfUFJFRU1QVF9DT1VOVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnByZWVtcHRfY291bnQpO1xcbiBcXHRPRkZTRVQoVEFTS19USV9LRVJORUxfU1AsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5rZXJuZWxfc3ApO1xcbiBcXHRPRkZTRVQoVEFTS19USV9VU0VSX1NQLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8udXNlcl9zcCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuY1xcbmluZGV4IGY2ZWY1NzkzMGI1MGE4Li43ODc2ODU0ZDE2Mjc5MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcXG5AQCAtMTkxLDYgKzE5MSw3IEBAIGludCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRpZGxlLVxcdTAwM2V0aHJlYWRfaW5mby5jcHUgPSBjcHU7XFxuK1xcdHRpZGxlLVxcdTAwM2V0aHJlYWRfaW5mby5wY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KGNwdSk7XFxuIFxcbiBcXHRyZXQgPSBzdGFydF9zZWNvbmRhcnlfY3B1KGNwdSwgdGlkbGUpO1xcbiBcXHRpZiAoIXJldCkge1xcbkBAIC0yMDgsNiArMjA5LDExIEBAIGludCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKVxcbiB9XFxuICNlbmRpZlxcbiBcXG4rdm9pZCBfX2luaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZClcXG4re1xcbitcXHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xcbit9XFxuK1xcbiB2b2lkIF9faW5pdCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cylcXG4ge1xcbiB9XFxuQEAgLTIzMyw2ICsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZClcXG4gXFx0bW1ncmFiKG1tKTtcXG4gXFx0Y3VycmVudC1cXHUwMDNlYWN0aXZlX21tID0gbW07XFxuIFxcbitcXHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xcbitcXG4gI2lmZGVmIENPTkZJR19IT1RQTFVHX1BBUkFMTEVMXFxuIFxcdGNwdWhwX2FwX3N5bmNfYWxpdmUoKTtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggYzAzYzFkZTE2Yjc5YWMuLmVhYjkzZDUyNThlOWU0IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTEzOTUsMTUgKzEzOTUsOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0XFx0aWYgKHJkICE9IHJzKVxcbiBcXHRcXHRcXHRcXHRlbWl0X212KHJkLCBycywgY3R4KTtcXG4gI2lmZGVmIENPTkZJR19TTVBcXG4tXFx0XFx0XFx0LyogTG9hZCBjdXJyZW50IENQVSBudW1iZXIgaW4gVDEgKi9cXG4tXFx0XFx0XFx0ZW1pdF9sdyhSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgY3B1KSxcXG4rXFx0XFx0XFx0ZW1pdF9sZChSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgcGNwdV9vZmZzZXQpLFxcbiBcXHRcXHRcXHRcXHRSVl9SRUdfVFAsIGN0eCk7XFxuLVxcdFxcdFxcdC8qIExvYWQgYWRkcmVzcyBvZiBfX3Blcl9jcHVfb2Zmc2V0IGFycmF5IGluIFQyICovXFxuLVxcdFxcdFxcdGVtaXRfYWRkcihSVl9SRUdfVDIsICh1NjQpXFx1MDAyNl9fcGVyX2NwdV9vZmZzZXQsIGV4dHJhX3Bhc3MsIGN0eCk7XFxuLVxcdFxcdFxcdC8qIEdldCBhZGRyZXNzIG9mIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xcbi1cXHRcXHRcXHRlbWl0X3NoM2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX1QyLCBjdHgpO1xcbi1cXHRcXHRcXHQvKiBMb2FkIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xcbi1cXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgMCwgUlZfUkVHX1QxLCBjdHgpO1xcbiBcXHRcXHRcXHQvKiBBZGQgdGhlIG9mZnNldCB0byBSZCAqL1xcbiBcXHRcXHRcXHRlbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTtcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA0OjQyLjMxOTU2NTA4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYyNTAwMzI1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNDRmYzlmZjI1YzQ0ZDM3ZGRlOTcyNWQ5MGQwMDE1Y2FhZWQyOWZlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMDowNDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oXG5pbmRleCBlOWU4YmE4M2U2MzJmOS4uMTM3YTQ5NDg4MzI1ZTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oXG5AQCAtOTEsMTEgKzkxLDcgQEBcbiBcbiAjaWZkZWYgQ09ORklHX1NNUFxuIC5tYWNybyBhc21fcGVyX2NwdSBkc3Qgc3ltIHRtcFxuLVx0bHcgICAgXFx0bXAsIFRBU0tfVElfQ1BVX05VTSh0cClcbi1cdHNsbGkgIFxcdG1wLCBcXHRtcCwgUklTQ1ZfTEdQVFJcbi1cdGxhICAgIFxcZHN0LCBfX3Blcl9jcHVfb2Zmc2V0XG4tXHRhZGQgICBcXGRzdCwgXFxkc3QsIFxcdG1wXG4tXHRSRUdfTCBcXHRtcCwgMChcXGRzdClcbitcdFJFR19MIFxcdG1wLCBUQVNLX1RJX1BDUFVfT0ZGU0VUKHRwKVxuIFx0bGEgICAgXFxkc3QsIFxcc3ltXG4gXHRhZGQgICBcXGRzdCwgXFxkc3QsIFxcdG1wXG4gLmVuZG1cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhcbmluZGV4IDA5YmI1ZjU3YTlkMzQ2Li45MmQ1ZjgzMWYzNDk1YSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXG5AQCAtMTAyLDEyICsxMDIsMTQgQEAgX19pb19yZWFkc19pbnMocmVhZHMsIHUzMiwgbCwgX19pb19icigpLCBfX2lvX2FyKGFkZHIpKVxuICNkZWZpbmUgcmVhZHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSByZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcbiBfX2lvX3JlYWRzX2lucyhpbnMsICB1OCwgYiwgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXG4gX19pb19yZWFkc19pbnMoaW5zLCB1MTYsIHcsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxuIF9faW9fcmVhZHNfaW5zKGlucywgdTMyLCBsLCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSlcbiAjZGVmaW5lIGluc2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNiKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSBpbnN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zdyhQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgaW5zbChhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc2woUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcbisjZW5kaWZcbiBcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgIHU4LCBiLCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTE2LCB3LCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbkBAIC0xMTYsMjYgKzExOCwzMiBAQCBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTMyLCBsLCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbiAjZGVmaW5lIHdyaXRlc3coYWRkciwgYnVmZmVyLCBjb3VudCkgX193cml0ZXN3KGFkZHIsIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSB3cml0ZXNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KVxuIFxuKyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxuIF9faW9fd3JpdGVzX291dHMob3V0cywgIHU4LCBiLCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxuIF9faW9fd3JpdGVzX291dHMob3V0cywgdTE2LCB3LCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxuIF9faW9fd3JpdGVzX291dHMob3V0cywgdTMyLCBsLCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxuICNkZWZpbmUgb3V0c2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzYihQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgb3V0c3coYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzdyhQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgb3V0c2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzbChQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuKyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfNjRCSVRcbiBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTY0LCBxLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpXG4gI2RlZmluZSByZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcbiBfX2lvX3JlYWRzX2lucyhpbnMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXG4gI2RlZmluZSBpbnNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zcShQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuKyNlbmRpZlxuIFxuIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1NjQsIHEsIF9faW9fYncoKSwgX19pb19hdygpKVxuICNkZWZpbmUgd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcbiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXcoKSlcbiAjZGVmaW5lIG91dHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c3EoUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcbiAjZW5kaWZcbisjZW5kaWZcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20tZ2VuZXJpYy9pby5oXHUwMDNlXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWJmOWY0Y2Y0Y2E1YWFcbi0tLSAvZGV2L251bGxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhcbkBAIC0wLDAgKzEsMzAwIEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cbitcbisjaWZuZGVmIF9fQVNNX1BFUkNQVV9IXG4rI2RlZmluZSBfX0FTTV9QRVJDUFVfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3ByZWVtcHQuaFx1MDAzZVxuK1xuKyNpbmNsdWRlIFx1MDAzY2FzbS9hbHRlcm5hdGl2ZS1tYWNyb3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9jbXB4Y2hnLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS1tYWNyb3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9jdXJyZW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vaHdjYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS90aHJlYWRfaW5mby5oXHUwMDNlXG4rXG4rI2RlZmluZSBQRVJDUFVfUldfT1BTKHN6KVx0XHRcdFx0XHRcdFxcXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fcGVyY3B1X3JlYWRfIyNzeih2b2lkICpwdHIpXHRcdFxcXG4re1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRyZXR1cm4gUkVBRF9PTkNFKCoodSMjc3ogKilwdHIpO1x0XHRcdFx0XFxcbit9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3BlcmNwdV93cml0ZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXHRcXFxuK3tcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0V1JJVEVfT05DRSgqKHUjI3N6ICopcHRyLCAodSMjc3opdmFsKTtcdFx0XHRcdFxcXG4rfVxuK1xuK1BFUkNQVV9SV19PUFMoOClcbitQRVJDUFVfUldfT1BTKDE2KVxuK1BFUkNQVV9SV19PUFMoMzIpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuK1BFUkNQVV9SV19PUFMoNjQpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fT1BfQ0FTRShzZngsIG5hbWUsIHN6LCBhbW9faW5zbilcdFx0XHRcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZFx0XHRcdFx0XHRcdFx0XFxcbitfX3BlcmNwdV8jI25hbWUjI19hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXHRcdFxcXG4re1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiB6ZXJvLCAlW3ZhbF0sICVbcHRyXVwiXHRcdFxcXG4rXHRcdDogW3B0cl0gXCIrQVwiICgqKHUjI3N6ICopcHRyKVx0XHRcdFx0XFxcbitcdFx0OiBbdmFsXSBcInJcIiAoKHUjI3N6KSh2YWwpKVx0XHRcdFx0XFxcbitcdFx0OiBcIm1lbW9yeVwiKTtcdFx0XHRcdFx0XHRcXFxuK31cbitcbisjaWZkZWYgQ09ORklHXzY0QklUXG4rI2RlZmluZSBQRVJDUFVfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKVx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSguZCwgbmFtZSwgNjQsIGFtb19pbnNuKVxuKyNlbHNlXG4rI2RlZmluZSBQRVJDUFVfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKVxuKyNlbmRpZlxuK1xuK1BFUkNQVV9PUChhZGQsIGFkZClcbitQRVJDUFVfT1AoYW5kLCBhbmQpXG4rUEVSQ1BVX09QKG9yLCBvcilcbitcbisvKlxuKyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLFxuKyAqIGFuZCB0aGUgUEVSQ1BVX1JFVF9PUCgpIGRvZXMgbm90IGFjY291bnQgZm9yIG90aGVyIG9wZXJhdGlvbnMuXG4rICovXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pXHRcdFxcXG4rc3RhdGljIGlubGluZSB1IyNzelx0XHRcdFx0XHRcdFx0XFxcbitfX3BlcmNwdV8jI25hbWUjI19yZXR1cm5fYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKVx0XFxcbit7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdHJlZ2lzdGVyIHUjI3N6IHJldDtcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiAlW3JldF0sICVbdmFsXSwgJVtwdHJdXCJcdFx0XFxcbitcdFx0OiBbcHRyXSBcIitBXCIgKCoodSMjc3ogKilwdHIpLCBbcmV0XSBcIj1yXCIgKHJldClcdFx0XFxcbitcdFx0OiBbdmFsXSBcInJcIiAoKHUjI3N6KSh2YWwpKVx0XHRcdFx0XFxcbitcdFx0OiBcIm1lbW9yeVwiKTtcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRyZXR1cm4gcmV0ICsgdmFsO1x0XHRcdFx0XHRcdFxcXG4rfVxuK1xuKyNpZmRlZiBDT05GSUdfNjRCSVRcbisjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcdFx0XFxcbitcdF9fUEVSQ1BVX0FNT19SRVRfT1BfQ0FTRSguZCwgbmFtZSwgNjQsIGFtb19pbnNuKVxuKyNlbHNlXG4rI2RlZmluZSBQRVJDUFVfUkVUX09QKG5hbWUsIGFtb19pbnNuKVx0XHRcdFx0XHRcXFxuK1x0X19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC53LCBuYW1lLCAzMiwgYW1vX2luc24pXG4rI2VuZGlmXG4rXG4rUEVSQ1BVX1JFVF9PUChhZGQsIGFkZClcbitcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpXHQoKCh1bnNpZ25lZCBsb25nKShwdHIpIFx1MDAyNiAweDMpICogQklUU19QRVJfQllURSlcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KVx0R0VOTUFTSygoc3opIC0gMSwgMClcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpXHQoKHUzMiAqKSgodW5zaWduZWQgbG9uZykocHRyKSBcdTAwMjYgfjB4MykpXG4rXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9PUChuYW1lLCBhbW9faW5zbiwgc3osIHNmeCwgdmFsX3R5cGUsIG5ld192YWxfZXhwciwgYXNtX29wKVx0XHRcdFxcXG4rc3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFx0XFxcbit7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGlmIChJU19FTkFCTEVEKENPTkZJR19SSVNDVl9JU0FfWkFCSEEpIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG4rXHRcdHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHtcdFx0XHRcdFxcXG4rXHRcdGFzbSB2b2xhdGlsZSAoXCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiB6ZXJvLCAlW3ZhbF0sICVbcHRyXVwiXHRcdFx0XFxcbitcdFx0XHQ6IFtwdHJdIFwiK0FcIigqKHZhbF90eXBlICopcHRyKVx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0OiBbdmFsXSBcInJcIigodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpKVx0XFxcbitcdFx0XHQ6IFwibWVtb3J5XCIpO1x0XHRcdFx0XHRcdFx0XHRcXFxuK1x0fSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdHUzMiAqcHRyMzIgPSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKTtcdFx0XHRcdFx0XFxcbitcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpO1x0XHRcdFx0XFxcbitcdFx0Y29uc3QgdTMyIG1hc2sgPSBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikgXHUwMDNjXHUwMDNjIHNoaWZ0O1x0XHRcdFx0XFxcbitcdFx0Y29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKVx0XHRcdFx0XFxcbitcdFx0XHRcdFx0ICAgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XHRcdFx0XHRcXFxuK1x0XHR1MzIgb2xkLCBuZXc7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0dmFsX3R5cGUgZmllbGQ7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCIwOiBsci53ICUwLCAlMlxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwiYW5kICUzLCAlMCwgJTRcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcInNybCAlMywgJTMsICU1XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0I2FzbV9vcCBcIiAlMywgJTMsICU2XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJhbmQgJTMsICUzLCAlOFxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwic2xsICUzLCAlMywgJTVcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcImFuZCAlMSwgJTAsICU3XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJvciAlMSwgJTEsICUzXFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJzYy53ICUxLCAlMSwgJTJcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcImJuZXogJTEsIDBiXFxuXCJcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHQ6IFwiPVx1MDAyNnJcIihvbGQpLCBcIj1cdTAwMjZyXCIobmV3KSwgXCIrQVwiKCpwdHIzMiksIFwiPVx1MDAyNnJcIihmaWVsZClcdFx0XHRcXFxuK1x0XHRcdDogXCJyXCIobWFzayksIFwiclwiKHNoaWZ0KSwgXCJyXCIodmFsX3RydW5jKSwgXCJyXCIofm1hc2spLFx0XHRcdFxcXG4rXHRcdFx0ICBcInJcIihQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpXHRcdFx0XHRcdFx0XFxcbitcdFx0XHQ6IFwibWVtb3J5XCIpO1x0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK31cbitcbisjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcClcdFx0XHRcXFxuK1x0UEVSQ1BVXzhfMTZfT1Aob3BfbmFtZSwgb3AsIDgsIC5iLCB1OCwgZXhwciwgZmluYWxfb3ApO1x0XHRcXFxuK1x0UEVSQ1BVXzhfMTZfT1Aob3BfbmFtZSwgb3AsIDE2LCAuaCwgdTE2LCBleHByLCBmaW5hbF9vcClcbitcbitQRVJDUFVfT1BfOF8xNihhZGQsIGFkZCwgdmFsLCBhZGQpXG4rUEVSQ1BVX09QXzhfMTYoYW5kLCBhbmQsIHZhbCwgYW5kKVxuK1BFUkNQVV9PUF84XzE2KG9yLCBvciwgdmFsLCBvcilcbitcbisjZGVmaW5lIFBFUkNQVV84XzE2X1JFVF9PUChuYW1lLCBhbW9faW5zbiwgc3osIHNmeCwgdmFsX3R5cGUsIG5ld192YWxfZXhwcilcdFx0XHRcXFxuK3N0YXRpYyBpbmxpbmUgdmFsX3R5cGUgX19wZXJjcHVfIyNuYW1lIyNfcmV0dXJuX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFxcXG4re1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1pBQkhBKSBcdTAwMjZcdTAwMjZcdFx0XHRcdFx0XHRcXFxuK1x0XHRyaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfWkFCSEEpKSB7XHRcdFx0XHRcXFxuK1x0XHRyZWdpc3RlciB2YWxfdHlwZSByZXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGFzbSB2b2xhdGlsZSAoXCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiAlW3JldF0sICVbdmFsXSwgJVtwdHJdXCJcdFx0XHRcXFxuK1x0XHRcdDogW3B0cl0gXCIrQVwiKCoodmFsX3R5cGUgKilwdHIpLCBbcmV0XSBcIj1yXCIocmV0KVx0XHRcdFx0XFxcbitcdFx0XHQ6IFt2YWxdIFwiclwiKCh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkpXHRcXFxuK1x0XHRcdDogXCJtZW1vcnlcIik7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdHJldHVybiByZXQgKyAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1x0XHRcXFxuK1x0fSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdHUzMiAqcHRyMzIgPSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKTtcdFx0XHRcdFx0XFxcbitcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpO1x0XHRcdFx0XFxcbitcdFx0Y29uc3QgdTMyIG1hc2sgPSAoUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFx1MDAzY1x1MDAzYyBzaGlmdCk7XHRcdFx0XHRcXFxuK1x0XHRjb25zdCB1MzIgaW52X21hc2sgPSB+bWFzaztcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGNvbnN0IHZhbF90eXBlIHZhbF90cnVuYyA9ICh2YWxfdHlwZSkoKG5ld192YWxfZXhwcilcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdCAgIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1x0XHRcdFx0XFxcbitcdFx0dTMyIG9sZCwgbmV3LCBmaWVsZDtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCIwOiBsci53ICUwLCAlM1xcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwiYW5kICUxLCAlMCwgJTRcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcInNybCAlMSwgJTEsICU1XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJhZGQgJTEsICUxLCAlNlxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwiYW5kICUxLCAlMSwgJTdcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcInNsbCAlMSwgJTEsICU1XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJhbmQgJTIsICUwLCAlOFxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwib3IgJTIsICUyLCAlMVxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwic2MudyAlMiwgJTIsICUzXFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJibmV6ICUyLCAwYlxcblwiXHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0OiBcIj1cdTAwMjZyXCIob2xkKSwgXCI9XHUwMDI2clwiKGZpZWxkKSwgXCI9XHUwMDI2clwiKG5ldyksIFwiK0FcIigqcHRyMzIpXHRcdFx0XFxcbitcdFx0XHQ6IFwiclwiKG1hc2spLCBcInJcIihzaGlmdCksIFwiclwiKHZhbF90cnVuYyksIFwiclwiKFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSksIFxcXG4rXHRcdFx0XCJyXCIoaW52X21hc2spXHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0OiBcIm1lbW9yeVwiKTtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0cmV0dXJuICh2YWxfdHlwZSkoZmllbGQgXHUwMDNlXHUwMDNlIHNoaWZ0KTtcdFx0XHRcdFx0XHRcXFxuK1x0fVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK31cbitcbitQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDgsIC5iLCB1OCwgdmFsKVxuK1BFUkNQVV84XzE2X1JFVF9PUChhZGQsIGFkZCwgMTYsIC5oLCB1MTYsIHZhbClcbitcbisjZGVmaW5lIF9wY3BfcHJvdGVjdChvcCwgcGNwLCAuLi4pXHRcdFx0XHRcdFxcXG4rKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0cHJlZW1wdF9kaXNhYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbitcdG9wKHJhd19jcHVfcHRyKFx1MDAyNihwY3ApKSwgX19WQV9BUkdTX18pO1x0XHRcdFx0XFxcbitcdHByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbit9KVxuK1xuKyNkZWZpbmUgX3BjcF9wcm90ZWN0X3JldHVybihvcCwgcGNwLCBhcmdzLi4uKVx0XHRcdFx0XFxcbisoe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHR0eXBlb2YocGNwKSBfX3JldHZhbDtcdFx0XHRcdFx0XHRcXFxuK1x0cHJlZW1wdF9kaXNhYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbitcdF9fcmV0dmFsID0gKHR5cGVvZihwY3ApKW9wKHJhd19jcHVfcHRyKFx1MDAyNihwY3ApKSwgIyNhcmdzKTtcdFxcXG4rXHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4rXHRfX3JldHZhbDtcdFx0XHRcdFx0XHRcdFxcXG4rfSlcbitcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMShwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF84LCBwY3ApXG4rI2RlZmluZSB0aGlzX2NwdV9yZWFkXzIocGNwKVx0XHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfMTYsIHBjcClcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfNChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8zMiwgcGNwKVxuK1xuKyNpZmRlZiBDT05GSUdfNjRCSVRcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfOChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF82NCwgcGNwKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV84LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbisjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfMTYsIHBjcCwgKHVuc2lnbmVkIGxvbmcpdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfNChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV8zMiwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV82NCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfYWRkXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcbitcbisjaWZkZWYgQ09ORklHXzY0QklUXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl8xKHBjcCwgdmFsKVx0XHRcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV84LCBwY3AsIHZhbClcbitcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fMihwY3AsIHZhbClcdFx0XFxcbitfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X2FkZF9yZXR1cm5fYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuK1xuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl80KHBjcCwgdmFsKVx0XHRcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV8zMiwgcGNwLCB2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl84KHBjcCwgdmFsKVx0XHRcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfYW5kXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcbitcbisjaWZkZWYgQ09ORklHXzY0QklUXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfb3JfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV84LCBwY3AsIHZhbClcbisjZGVmaW5lIHRoaXNfY3B1X29yXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfb3JfNChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV8zMiwgcGNwLCB2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfb3JfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzEocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfeGNoZ184KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18xKHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4rI2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnXzIocGNwLCBvLCBuKVx0X3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbilcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfNChwY3AsIG8sIG4pXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxuK1xuKyNpZmRlZiBDT05GSUdfNjRCSVRcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxuK1xuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZzY0KHBjcCwgbywgbilcdHRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pXG4rI2VuZGlmXG4rXG4rI2lmZGVmIHN5c3RlbV9oYXNfY21weGNoZzEyOFxuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZzEyOChwY3AsIG8sIG4pXHRcdFx0XHRcdFxcXG4rKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0dTEyOCByZXRfXztcdFx0XHRcdFx0XHRcdFxcXG4rXHR0eXBlb2YocGNwKSAqcHRyX187XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0cHJlZW1wdF9kaXNhYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbitcdHB0cl9fID0gcmF3X2NwdV9wdHIoXHUwMDI2KHBjcCkpO1x0XHRcdFx0XHRcXFxuK1x0aWYgKHN5c3RlbV9oYXNfY21weGNoZzEyOCgpKVx0XHRcdFx0XHRcXFxuK1x0XHRyZXRfXyA9IGNtcHhjaGcxMjhfbG9jYWwocHRyX18sIChvKSwgKG4pKTtcdFx0XFxcbitcdGVsc2VcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0cmV0X18gPSB0aGlzX2NwdV9nZW5lcmljX2NtcHhjaGcocGNwLCAobyksIChuKSk7XHRcXFxuK1x0cHJlZW1wdF9lbmFibGVfbm90cmFjZSgpO1x0XHRcdFx0XHRcXFxuK1x0cmV0X187XHRcdFx0XHRcdFx0XHRcdFxcXG4rfSlcbisjZW5kaWZcbitcbisjZGVmaW5lIF9fbXlfY3B1X29mZnNldCAoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKiljdXJyZW50KS1cdTAwM2VwY3B1X29mZnNldClcbitcbisjdW5kZWYgUEVSQ1BVX1JXX09QU1xuKyN1bmRlZiBfX1BFUkNQVV9BTU9fT1BfQ0FTRVxuKyN1bmRlZiBQRVJDUFVfT1BcbisjdW5kZWYgX19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFXG4rI3VuZGVmIFBFUkNQVV9SRVRfT1BcbisjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX1NISUZUXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9NQVNLXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9QVFIzMlxuKyN1bmRlZiBQRVJDUFVfOF8xNl9PUFxuKyN1bmRlZiBQRVJDUFVfT1BfOF8xNlxuKyN1bmRlZiBQRVJDUFVfOF8xNl9SRVRfT1BcbitcbisjaW5jbHVkZSBcdTAwM2Nhc20tZ2VuZXJpYy9wZXJjcHUuaFx1MDAzZVxuK1xuKyNlbmRpZiAvKiBfX0FTTV9QRVJDUFVfSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXG5pbmRleCAwZTcxZWI4MmY5MjBjYS4uNzMzYjZjZDMwNmU0MGYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXG5AQCAtODgsNiArODgsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX2VudmNmZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4gXHRcdFx0OjogXCJyXCIgKG5leHQtXHUwMDNldGhyZWFkLmVudmNmZykgOiBcIm1lbW9yeVwiKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbit7XG4rI2lmZGVmIENPTkZJR19TTVBcbitcdG5leHQtXHUwMDNldGhyZWFkX2luZm8ucGNwdV9vZmZzZXQgPSBfX215X2NwdV9vZmZzZXQ7XG4rI2VuZGlmXG4rfVxuK1xuIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTtcbiBcbkBAIC0xMjIsNiArMTI5LDcgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChzd2l0Y2hfdG9fc2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKVx0XFxcbiBcdFx0bG9jYWxfZmx1c2hfaWNhY2hlX2FsbCgpO1x0XHRcXFxuIFx0X19zd2l0Y2hfdG9fZW52Y2ZnKF9fbmV4dCk7XHRcdFx0XFxcbitcdF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KF9fbmV4dCk7XHRcdFxcXG4gXHQoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTtcdFx0XFxcbiB9IHdoaWxlICgwKVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuaW5kZXggNTUwMTlmZGZhOWVjYWEuLmYxMGJhNjJiNjEwMTY0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbkBAIC01Myw2ICs1Myw3IEBAXG4gc3RydWN0IHRocmVhZF9pbmZvIHtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0ZmxhZ3M7XHRcdC8qIGxvdyBsZXZlbCBmbGFncyAqL1xuIFx0aW50ICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdF9jb3VudDsgIC8qIDA9XHUwMDNlcHJlZW1wdGlibGUsIFx1MDAzYzA9XHUwMDNlQlVHICovXG4rXHRpbnRcdFx0XHRjcHU7XG4gXHQvKlxuIFx0ICogVGhlc2Ugc3RhY2sgcG9pbnRlcnMgYXJlIG92ZXJ3cml0dGVuIG9uIGV2ZXJ5IHN5c3RlbSBjYWxsIG9yXG4gXHQgKiBleGNlcHRpb24uICBTUCBpcyBhbHNvIHNhdmVkIHRvIHRoZSBzdGFjayBpdCBjYW4gYmUgcmVjb3ZlcmVkIHdoZW5cbkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7XG4gXHQgKi9cbiBcdGxvbmdcdFx0XHRrZXJuZWxfc3A7XHQvKiBLZXJuZWwgc3RhY2sgcG9pbnRlciAqL1xuIFx0bG9uZ1x0XHRcdHVzZXJfc3A7XHQvKiBVc2VyIHN0YWNrIHBvaW50ZXIgKi9cbi1cdGludFx0XHRcdGNwdTtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0c3lzY2FsbF93b3JrO1x0LyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xuK1x0dW5zaWduZWQgbG9uZ1x0XHRwY3B1X29mZnNldDtcbiAjaWZkZWYgQ09ORklHX1NIQURPV19DQUxMX1NUQUNLXG4gXHR2b2lkXHRcdFx0KnNjc19iYXNlO1xuIFx0dm9pZFx0XHRcdCpzY3Nfc3A7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYyBiL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcbmluZGV4IGE3NWYwY2ZlYTFlOWZhLi4yMGQ0NmMyOGZkZGU5NyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcbisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcbkBAIC0zOCw2ICszOCw3IEBAIHZvaWQgYXNtX29mZnNldHModm9pZClcbiBcdE9GRlNFVChUQVNLX1RIUkVBRF9TVU0sIHRhc2tfc3RydWN0LCB0aHJlYWQuc3VtKTtcbiBcbiBcdE9GRlNFVChUQVNLX1RJX0NQVSwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmNwdSk7XG4rXHRPRkZTRVQoVEFTS19USV9QQ1BVX09GRlNFVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0KTtcbiBcdE9GRlNFVChUQVNLX1RJX1BSRUVNUFRfQ09VTlQsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5wcmVlbXB0X2NvdW50KTtcbiBcdE9GRlNFVChUQVNLX1RJX0tFUk5FTF9TUCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmtlcm5lbF9zcCk7XG4gXHRPRkZTRVQoVEFTS19USV9VU0VSX1NQLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8udXNlcl9zcCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jXG5pbmRleCBmNmVmNTc5MzBiNTBhOC4uNzg3Njg1NGQxNjI3OTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcbisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuY1xuQEAgLTE5MSw2ICsxOTEsNyBAQCBpbnQgX19jcHVfdXAodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHRhc2tfc3RydWN0ICp0aWRsZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dGlkbGUtXHUwMDNldGhyZWFkX2luZm8uY3B1ID0gY3B1O1xuK1x0dGlkbGUtXHUwMDNldGhyZWFkX2luZm8ucGNwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChjcHUpO1xuIFxuIFx0cmV0ID0gc3RhcnRfc2Vjb25kYXJ5X2NwdShjcHUsIHRpZGxlKTtcbiBcdGlmICghcmV0KSB7XG5AQCAtMjA4LDYgKzIwOSwxMSBAQCBpbnQgX19jcHVfdXAodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHRhc2tfc3RydWN0ICp0aWRsZSlcbiB9XG4gI2VuZGlmXG4gXG4rdm9pZCBfX2luaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZClcbit7XG4rXHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xuK31cbitcbiB2b2lkIF9faW5pdCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cylcbiB7XG4gfVxuQEAgLTIzMyw2ICsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZClcbiBcdG1tZ3JhYihtbSk7XG4gXHRjdXJyZW50LVx1MDAzZWFjdGl2ZV9tbSA9IG1tO1xuIFxuK1x0X19teV9jcHVfb2Zmc2V0ID0gcGVyX2NwdV9vZmZzZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTtcbitcbiAjaWZkZWYgQ09ORklHX0hPVFBMVUdfUEFSQUxMRUxcbiBcdGNwdWhwX2FwX3N5bmNfYWxpdmUoKTtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggYzAzYzFkZTE2Yjc5YWMuLmVhYjkzZDUyNThlOWU0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTEzOTUsMTUgKzEzOTUsOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRpZiAocmQgIT0gcnMpXG4gXHRcdFx0XHRlbWl0X212KHJkLCBycywgY3R4KTtcbiAjaWZkZWYgQ09ORklHX1NNUFxuLVx0XHRcdC8qIExvYWQgY3VycmVudCBDUFUgbnVtYmVyIGluIFQxICovXG4tXHRcdFx0ZW1pdF9sdyhSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgY3B1KSxcbitcdFx0XHRlbWl0X2xkKFJWX1JFR19UMSwgb2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBwY3B1X29mZnNldCksXG4gXHRcdFx0XHRSVl9SRUdfVFAsIGN0eCk7XG4tXHRcdFx0LyogTG9hZCBhZGRyZXNzIG9mIF9fcGVyX2NwdV9vZmZzZXQgYXJyYXkgaW4gVDIgKi9cbi1cdFx0XHRlbWl0X2FkZHIoUlZfUkVHX1QyLCAodTY0KVx1MDAyNl9fcGVyX2NwdV9vZmZzZXQsIGV4dHJhX3Bhc3MsIGN0eCk7XG4tXHRcdFx0LyogR2V0IGFkZHJlc3Mgb2YgX19wZXJfY3B1X29mZnNldFtjcHVdIGluIFQxICovXG4tXHRcdFx0ZW1pdF9zaDNhZGQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIFJWX1JFR19UMiwgY3R4KTtcbi1cdFx0XHQvKiBMb2FkIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xuLVx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCAwLCBSVl9SRUdfVDEsIGN0eCk7XG4gXHRcdFx0LyogQWRkIHRoZSBvZmZzZXQgdG8gUmQgKi9cbiBcdFx0XHRlbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTtcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA0OjQyLjMxOTU2OTY1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTAyNzA4Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgLSBSSVNDLVYgUGVyLUNQVSBPZmZzZXQgT3B0aW1pemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIFJJU0MtViwgYW5kIGl0J3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gaG93IHdlIGhhbmRsZSBwZXItQ1BVIG9mZnNldHMuIEZpcnN0IG9mZiwgdGhlcmUncyBhIG5ldyBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaGAgZmlsZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzaWduLiBJdCBzZWVtcyB0byBpbXBsZW1lbnQgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucywgd2hpY2ggbGlrZWx5IGludm9sdmUgYXRvbWljIG1lbW9yeSBvcGVyYXRpb25zIChBTU9zKS4gVGhleSdyZSBpbnRyb2R1Y2luZyBgVEFTS19USV9QQ1BVX09GRlNFVCh0cClgIHRvIHJlcGxhY2UgdGhlIG9sZGVyLCBsZXNzIGVmZmljaWVudCBgVEFTS19USV9DUFVfTlVNKHRwKWAtYmFzZWQgbG9va3Vwcy4gVGhpcyBsb29rcyB0byB1cGRhdGUgYHN0cnVjdCB0aHJlYWRfaW5mb2AgdG8gaW5jbHVkZSBgcGNwdV9vZmZzZXRgLCBhbmQgdGhlbiBgX19zd2l0Y2hfdG9fcGNwdV9vZmZzZXRgIGFuZCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gVGhlIEJQRiBKSVQgaXMgYWxzbyBiZWluZyB1cGRhdGVkIHRvIHVzZSBgcGNwdV9vZmZzZXRgIGluc3RlYWQgb2YgdGhlIG9sZCBtZXRob2QuIEl0IGFsc28gbG9va3MgbGlrZSB0aGVyZSdzIGEgY29uZGl0aW9uYWwgYCNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVGAgYmxvY2sgYXJvdW5kIHNvbWUgSS9PIG9wZXJhdGlvbnMuXG5cblRoZSBwZXItY3B1IG9wZXJhdGlvbnMgdGhlbXNlbHZlcyBsb29rIHF1aXRlIGludm9sdmVkLCBlbXBsb3lpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgYSBmYWxsYmFjayB1c2luZyBgbHIud2AvYHNjLndgIGZvciBzbWFsbGVyIHNpemVzIGlmIFpBQkhBIGlzbid0IGF2YWlsYWJsZS4gVGhpcyBpcyBpbXBvcnRhbnQ6IFpBQkhBIGlzIGFuIG9wdGlvbmFsIFJJU0MtViBleHRlbnNpb24uIEl0IG1ha2VzIG1lIHdvbmRlciBpZiB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6ej8gQWJzb2x1dGVseS4gVGhpcyB0b3VjaGVzIGNvcmUgYXJjaGl0ZWN0dXJlIGxvZ2ljIOKAkyBwZXItY3B1IG9wZXJhdGlvbnMg4oCTIGFuZCBhbHNvIHRoZSBCUEYgSklULCB3aGljaCBpcyBhbHJlYWR5IGEgZnV6emluZyB0YXJnZXQuXG5cbkJ1dCwgaXMgdGhpcyByZWFjaGFibGU/IFRoZSBrZXkgaGVyZSBpcywgdGhpcyBpcyBSSVNDLVYgc3BlY2lmaWMuIENhbiB3ZSBmdXp6IFJJU0MtVj8gWWVzLCBzeXprYWxsZXIgc3VwcG9ydHMgUklTQy1WLCBzbyB0aGF0J3MgYSBjaGVjay4gVGhlIHByb21wdCBnaXZlcyB1cyB0aGUgdXN1YWwgY2F2ZWF0IGFib3V0IGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBCdXQsIHdhaXQuLi4gd2UgKmNhbiogcnVuIFJJU0MtViBpbiBRRU1VLCBzbyB0aGF0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0uIFRoaXMgKmRvZXMqIG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzLiBJdCBtb2RpZmllcyBob3cgcGVyLWNwdSB2YXJpYWJsZXMgYXJlIGFjY2Vzc2VkIGFuZCBtb2RpZmllZCBvbiBSSVNDLVYuIFRoYXQncyBhIGRlZmluaXRlIHBvc2l0aXZlIHNpZ25hbC5cblxuRGl2aW5nIGRlZXBlciwgdGhlIEJQRiBKSVQgY2hhbmdlcyBsb29rIGRpcmVjdGx5IHJlYWNoYWJsZSBpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2Agd2l0aGluIGBicGZfaml0X2VtaXRfaW5zbmAuIFRoZXNlIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfUklTQ1ZfSVNBX1pBQkhBYCwgYENPTkZJR19IQVNfSU9QT1JUYCwgYW5kIGBDT05GSUdfU01QYCBhcmUgdXNlZC5cblxuU28sIG92ZXJhbGwsIHRoaXMgaXMgYSBjbGVhciBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1OTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNDo1NS4yMjIyODExOThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk4NDMzMzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfSVNBX1pBQkhBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvS2NvbmZpZz02NzY9Y29uZmlnIFRPT0xDSEFJTl9IQVNfWkFCSEFcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy02ODItXFxuYXJjaC9yaXNjdi9LY29uZmlnOjY4Mzpjb25maWcgUklTQ1ZfSVNBX1pBQkhBXFxuYXJjaC9yaXNjdi9LY29uZmlnLTY4NC1cXHRib29sIFxcXCJaYWJoYSBleHRlbnNpb24gc3VwcG9ydCBmb3IgYXRvbWljIGJ5dGUvaGFsZndvcmQgb3BlcmF0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDQ6NTguMjA2NjIwNDA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNjQ4NDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB0aGUgc3lzdGVtJ3MgdGVsbGluZyBtZSBgUklTQ1ZfSVNBX1pBQkhBYCBpcyBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEFscmlnaHQsIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFoLCB5ZXMsIHRoZSBgQ09ORklHX0JQRl9KSVRgIGZvciB0aG9zZSBCUEYgbW9kaWZpY2F0aW9ucy4gVGhhdCdzIGxpa2VseSBnb2luZyB0byBiZSBrZXkuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gd2l0aCByZXNwZWN0IHRvIEJQRiBKSVQgY29tcGlsYXRpb24gZm9yIDY0LWJpdCBSSVNDLVYuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiBpbXBvcnRhbnQgZGV0YWlscyByZWxhdGVkIHRvIHRoaXMgaW50ZXJzZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkxNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjAxLjIxMzEwOTA1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTcwODQ0MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjAzLjc4Mzk1OTkwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDQ5OTcxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBPcHRpbWl6YXRpb24gVGFyZ2V0cyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gd2hlcmUgd2UgY2FuIG1ha2UgYSBkaWZmZXJlbmNlLiBUaGUgaW5pdGlhbCBtb2RpZmljYXRpb24gc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBgYnBmX2ppdF9lbWl0X2luc25gIGZ1bmN0aW9uLCBidXQgdGhhdCdzIGEgcHJldHR5IGJyb2FkIGVudHJ5IHBvaW50LiBUaGlua2luZyBhYm91dCB3aGVyZSB0aGlzIGlzIGxpa2VseSAqdXNlZCogbW9zdCwgYGJwZl9pbnRfaml0X2NvbXBpbGVgIG1pZ2h0IGJlIG1vcmUgc3BlY2lmaWMgdG8gb3VyIGltbWVkaWF0ZSBjb25jZXJuLlxuXG5XYWl0LCBob2xkIG9uLCBwZXJjcHUgb3BlcmF0aW9ucyBvbiBSSVNDLVYgYXJlIGlubGluZSwgZGVmaW5lZCBpbiBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaGAuIEFuZCB0aGV5J3JlICpldmVyeXdoZXJlKi4gVGhhdCBtYWtlcyBtZSB0aGluayBhYm91dCBjYWxscyBsaWtlIGBfX3N3aXRjaF90b19wY3B1X29mZnNldGAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYF9fc3dpdGNoX3RvYCBhbmQgdGhhdCBpcyBhIG1ham9yIGhvdCBwYXRoLiBUaGF0IGxvb2tzIHByb21pc2luZy5cblxuVGhlbiBhZ2FpbiwgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBhcmUgYWxsIGJvb3QvaG90cGx1ZyByZWxhdGVkLCB3aGljaCBjb3VsZCBhbHNvIGJlIHJlbGV2YW50IGluIGEgZGlmZmVyZW50IGNvbnRleHQuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGVzZSBmb3Igb3RoZXIgaW52ZXN0aWdhdGlvbnMuXG5cbkFscmlnaHQsIGJhY2sgdG8gdGhlIEJQRiBKSVQgY2hhbmdlcyBhbmQgYGJwZl9qaXRfZW1pdF9pbnNuYC4gSSBzaG91bGQgY2hlY2sgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFzIHdlbGwuIFBlcmhhcHMgZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIGhvdyBpdCdzIHVzZWQgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGNvdWxkIGJlIGEgYmV0dGVyIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM2NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNTowOC40Mjg5NjMyODRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU2OTIzNTc2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjA4Ljc4NTg5NDk0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NDgwNzEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkZpbmRpbmcgdGhlIEJQRiBKSVQgRW50cnkgUG9pbnQgaW4gUklTQy1WKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhlIEJQRiBKSVQgY29kZSBraWNrcyBvZmYgaW4gYSBSSVNDLVYgY29udGV4dC4gSSdtIHRoaW5raW5nLCB0aGlzIGlzbid0IGdvaW5nIHRvIGJlIGEgc3RyYWlnaHRmb3J3YXJkIGh1bnQuIEknbGwgbmVlZCB0byByZW1lbWJlciB3aGVyZSB0aGUgQlBGIHZlcmlmaWVyIGludGVyYWN0cyB3aXRoIHRoZSBpbnN0cnVjdGlvbiBnZW5lcmF0aW9uLiBJIGtub3cgdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBidXQgSSBuZWVkIHRvIGdldCBkb3duIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgUklTQy1WIGltcGxlbWVudGF0aW9uLlxuXG5GaXJzdCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIG9idmlvdXMgcGxhY2VzOiBrZXJuZWwgc291cmNlLiBJJ2xsIGxpa2VseSBuZWVkIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIEJQRiBzdWJzeXN0ZW0sIGxvb2tpbmcgZm9yIFJJU0MtViBzcGVjaWZpYyBmaWxlcyBvciBmdW5jdGlvbiBjYWxscy4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgY29yZSBCUEYgSklUIGZpbGVzIGFuZCB0aGVuIGZpbHRlciBieSBhbnkgUklTQy1WIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBvbmVzLlxuXG5JJ2xsIGtlZXAgYW4gZXllIG91dCBmb3Iga2V5d29yZHMgbGlrZSBcIkpJVCxcIiBcIlJJU0NWLFwiIFwiaW5zdHJ1Y3Rpb24sXCIgXCJnZW5lcmF0aW9uLFwiIFwiZW1pdCxcIiBvciBhbnl0aGluZyByZWxhdGVkIHRvIGNvZGUgZ2VuZXJhdGlvbiBvciBtYWNoaW5lIGNvZGUgdHJhbnNsYXRpb24uIEkgZXhwZWN0IHRvIGJlIGRpZ2dpbmcgYXJvdW5kIGluIHRoZSBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IGhhbmRsZSB0aGUgaW5zdHJ1Y3Rpb24gc2V0IGFyY2hpdGVjdHVyZSwgb3IgSVNBLCB0cmFuc2xhdGlvbi4gSSBiZXQgdGhlcmUncyBhIHN0cnVjdHVyZSBvciBhIHNlcmllcyBvZiBmdW5jdGlvbnMgdGhhdCBtYXAgQlBGIGluc3RydWN0aW9ucyB0byBSSVNDLVYgaW5zdHJ1Y3Rpb25zLiBUaGF0IGlzIHByb2JhYmx5IHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcy5cblxuSSB3aWxsIGhhdmUgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgbWFpbGluZyBsaXN0cyB0b28sIGp1c3QgaW4gY2FzZSB0aGlzIGVudHJ5IHBvaW50IGlzIGRvY3VtZW50ZWQgc29tZXdoZXJlLiBUaGlzIGlzIGEgdGFzayB0aGF0J2xsIHJlcXVpcmUgYSBtZXRob2RpY2FsIGFwcHJvYWNoLiBJdCdzIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGluIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkzOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjEyLjU2MDcwNDgyNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNTgzNTI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MTIuNjkzMjk2NDYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTY3OTU3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJJU0MtViBCUEYgSklUIENvbXBpbGVyKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIG91dCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgSklUIGNvbXBpbGF0aW9uIGZ1bmN0aW9ucyB0aGVyZS4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgdGhpbmdzIGxpa2UgdGhlIGNvZGUgZ2VuZXJhdGlvbiByb3V0aW5lcywgdGhlIHJlZ2lzdGVyIGFsbG9jYXRpb24gbG9naWMgKGlmIGl0J3Mgbm90IGhhbmRsZWQgYnkgdGhlIGJhY2tlbmQpLCBhbmQgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCB0cmFuc2xhdGVzIHRoZSBCUEYgYnl0ZWNvZGUgaW50byBSSVNDLVYgbWFjaGluZSBjb2RlLCBjb25zaWRlcmluZyB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSdzIGluc3RydWN0aW9uIHNldCwgcmVnaXN0ZXIgY29uc3RyYWludHMsIGFuZCBwb3RlbnRpYWwgQUJJIGNvbnNpZGVyYXRpb25zIGZvciBrZXJuZWwtbGV2ZWwgY29kZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb24gbmFtZXMgYW5kIHRoZWlyIHNpZ25hdHVyZXMgdG8gaWRlbnRpZnkgdGhlIGtleSBjb21wb25lbnRzLiBGcm9tIHRoZXJlIEknbGwgZHJpbGwgZG93biBpbnRvIHRoZSBtb3N0IHJlbGV2YW50IGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaXRzIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMzNCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjE2LjAxMDA5NTY0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNDk1MzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdHJ1Y3QgYnBmX3Byb2cgXFxcXCpicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0zOT1ib29sIGJwZl9qaXRfbmVlZHNfemV4dCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDMtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6NDQ6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjE2LjE0MjU5OTAxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTcxMDkyOTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4uLlxuXG4qKlRyYWNraW5nIERvd24gdGhlIEJQRiBKSVQgQ29tcGlsYXRpb24gUGF0aCoqXG5cbkFscmlnaHQsIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgZm9yIHRoZSBCUEYgSklULiBJIGtub3cgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHJlc2lkZXMgd2l0aGluIGBicGZfaml0X2NvcmUuY2Ag4oCTIHRoYXQncyBteSBzdGFydGluZyBwb2ludC4gTm93LCB0aGUga2V5IGZ1bmN0aW9uIGludm9sdmVkIGluIGVtaXR0aW5nIGluc3RydWN0aW9ucyBhcHBlYXJzIHRvIGJlIGBicGZfaml0X2VtaXRfaW5zbmAuIEkgYmVsaWV2ZSB0aGF0IHRoZSBtb2RpZmllZCBgYnBmX2ppdF9lbWl0X2luc25gIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGluIHRoZSBgYnBmX2ppdF9jb21wNjQuY2AgZmlsZS4gUmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4gTGV0IG1lIGNvbmZpcm0gdGhhdCBieSBub3cgbG9va2luZyBkaXJlY3RseSBhdCBgYnBmX2ppdF9lbWl0X2luc25gIGxvY2F0ZWQgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHNlZSBob3cgaXQgc3BlY2lmaWNhbGx5IGhhbmRsZXMgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzY3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MTkuNzEzNjk2MDEzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE4OTg0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMzI9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcm9faW1hZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjgtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMzY5OmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM3MC1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjE5LjgxNTYwNTI4OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc3NDk0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEJQRiBKSVQgQ29tcGlsYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gZGlyZWN0IG15IGF0dGVudGlvbiBmb3IgdGhpcyBCUEYgd29yay4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9lbWl0X2luc25gIHNlZW0gbGlrZSBnb29kIGNhbmRpZGF0ZXMgdG8gc3RhcnQgd2l0aC4gYGJwZl9qaXRfZW1pdF9pbnNuYCBpcyBjYWxsZWQgZm9yICpldmVyeSogQlBGIGluc3RydWN0aW9uIGR1cmluZyBKSVQgY29tcGlsYXRpb24sIHNvIGl0ICpjb3VsZCogYmUgYSBob3Qgc3BvdCBkdXJpbmcgY29tcGlsYXRpb24uIEhvd2V2ZXIsIEpJVCBjb21waWxhdGlvbiBpdHNlbGYgaXNuJ3QgYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBwYXRo4oCUaXQgb25seSBoYXBwZW5zIG9uY2Ugd2hlbiBhIHByb2dyYW0gaXMgbG9hZGVkLiBUaGVyZWZvcmUsIGJvdGggYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9lbWl0X2luc25gIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyBmdXJ0aGVyLlxuXG5Ob3csIHdoYXQgYWJvdXQgdGhvc2UgcGVyY3B1IGNoYW5nZXM/IFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCByaWdodD8gTWVhbmluZyB0aGV5IGFyZSBnb2luZyB0byBnZXQgZXhlcmNpc2VkIGJ5IGFueSBhbmQgYWxsIGNvZGUgdGhhdCB1c2VzIHBlcmNwdSB2YXJpYWJsZXMuIFNvIEkgcHJvYmFibHkgZG9uJ3QgbmVlZCBhIHNwZWNpZmljIGZvY3VzIHN5bWJvbCBmb3IgdGhvc2UsIGFzIHRoZSB0ZXN0aW5nIHdpbGwgYmUgY29tcHJlaGVuc2l2ZSBieSBkZWZhdWx0LlxuXG5CdXQgaG9sZCBvbiwgdGhpcyBCUEYgSklUIGNoYW5nZSBpcyBsaWtlbHkgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYEJQRl9MRFggfCBCUEZfUEVSQ1BVIHwgQlBGX1dgIG9yIHNpbWlsYXIgcGVyY3B1IGluc3RydWN0aW9ucy4gSSBzaG91bGQgY2hlY2sgdGhlIGNvbnRleHQgb2YgYGJwZl9qaXRfZW1pdF9pbnNuYCB3aXRoaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBpbnN0cnVjdGlvbnMgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIGVuc3VyZSBJIGNhbiBiZXN0IHVuZGVyc3RhbmQgdGhlIGVmZmVjdHMuIFRoaXMgaXMgdGhlIHJpZ2h0IHdheSB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI3NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNToyNC43OTMxMDUwOTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM4MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM4MDpcXHRcXHRpbml0X3JlZ3MoXFx1MDAyNnJkLCBcXHUwMDI2cnMsIGluc24sIGN0eCk7XFxuMTM4MTpcXHRcXG4xMzgyOlxcdFxcdHN3aXRjaCAoY29kZSkge1xcbjEzODM6XFx0XFx0LyogZHN0ID0gc3JjICovXFxuMTM4NDpcXHRcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9WIHwgQlBGX1g6XFxuMTM4NTpcXHRcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcXG4xMzg2OlxcdFxcdFxcdGlmIChpbnNuX2lzX2Nhc3RfdXNlcihpbnNuKSkge1xcbjEzODc6XFx0XFx0XFx0XFx0ZW1pdF9tdihSVl9SRUdfVDEsIHJzLCBjdHgpO1xcbjEzODg6XFx0XFx0XFx0XFx0ZW1pdF96ZXh0dyhSVl9SRUdfVDEsIFJWX1JFR19UMSwgY3R4KTtcXG4xMzg5OlxcdFxcdFxcdFxcdGVtaXRfaW1tKHJkLCAoY3R4LVxcdTAwM2V1c2VyX3ZtX3N0YXJ0IFxcdTAwM2VcXHUwMDNlIDMyKSBcXHUwMDNjXFx1MDAzYyAzMiwgY3R4KTtcXG4xMzkwOlxcdFxcdFxcdFxcdGVtaXQocnZfYmVxKFJWX1JFR19UMSwgUlZfUkVHX1pFUk8sIDQpLCBjdHgpO1xcbjEzOTE6XFx0XFx0XFx0XFx0ZW1pdF9vcihSVl9SRUdfVDEsIHJkLCBSVl9SRUdfVDEsIGN0eCk7XFxuMTM5MjpcXHRcXHRcXHRcXHRlbWl0X212KHJkLCBSVl9SRUdfVDEsIGN0eCk7XFxuMTM5MzpcXHRcXHRcXHRcXHRicmVhaztcXG4xMzk0OlxcdFxcdFxcdH0gZWxzZSBpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcXG4xMzk1OlxcdFxcdFxcdFxcdGlmIChyZCAhPSBycylcXG4xMzk2OlxcdFxcdFxcdFxcdFxcdGVtaXRfbXYocmQsIHJzLCBjdHgpO1xcbjEzOTc6XFx0I2lmZGVmIENPTkZJR19TTVBcXG4xMzk4OlxcdFxcdFxcdFxcdGVtaXRfbGQoUlZfUkVHX1QxLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIHBjcHVfb2Zmc2V0KSxcXG4xMzk5OlxcdFxcdFxcdFxcdFxcdFJWX1JFR19UUCwgY3R4KTtcXG4xNDAwOlxcdFxcdFxcdFxcdC8qIEFkZCB0aGUgb2Zmc2V0IHRvIFJkICovXFxuMTQwMTpcXHRcXHRcXHRcXHRlbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTtcXG4xNDAyOlxcdCNlbmRpZlxcbjE0MDM6XFx0XFx0XFx0fVxcbjE0MDQ6XFx0XFx0XFx0aWYgKGltbSA9PSAxKSB7XFxuMTQwNTpcXHRcXHRcXHRcXHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXFxuMTQwNjpcXHRcXHRcXHRcXHRlbWl0X3pleHR3KHJkLCByZCwgY3R4KTtcXG4xNDA3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE0MDg6XFx0XFx0XFx0fVxcbjE0MDk6XFx0XFx0XFx0c3dpdGNoIChpbnNuLVxcdTAwM2VvZmYpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MjQuNzkzMjU4MTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODU1NzEwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiB0aGUgQ29kZSdzIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLCB3ZSdyZSBmb2N1c2luZyBvbiBgaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbilgLiBUaGF0IHJpbmdzIGEgYmVsbCwgaXQncyByZWxhdGVkIHRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGVyY3B1IHZhcmlhYmxlcyB3aGVuIHVzZWQgd2l0aGluIEJQRiBwcm9ncmFtcy4gVGhhdCdzIGEgZ29vZCBsZWFkIGZvciBvdXIgZnV6emluZyBlZmZvcnRzIOKAkyB0YXJnZXRpbmcgQlBGIHByb2dyYW1zIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZXhlcmNpc2UgdGhpcyBmdW5jdGlvbi4gSSdsbCBhZGQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHRvIGBGb2N1c1N5bWJvbHNgLiBUaGF0IHNob3VsZCBoZWxwIHVzIGhvbmUgaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgZHVyaW5nIGZ1enppbmcuXG5cbk5vdywgSSdtIHNwb3R0aW5nIGBDT05GSUdfUklTQ1ZfSVNBX1pBQkhBYC4gVGhhdCdzIGEgUklTQy1WIHNwZWNpZmljIGNvbmZpZywgaXNuJ3QgaXQ/IExldCdzIGFkZCB0aGF0IHRvIGBFbmFibGVDb25maWdzYCB0byBleHBhbmQgb3VyIGNvdmVyYWdlLiBCdXQsIGhhbmcgb24uLi4gaXMgYFJJU0NWX0lTQV9aQUJIQWAgYWN0dWFsbHkgKmF2YWlsYWJsZSogaW4gdGhlIGtlcm5lbCB2ZXJzaW9uIHdlJ3JlIGN1cnJlbnRseSB0ZXN0aW5nPyBXZSBuZWVkIHRvIGJlIHN1cmUuIE9rYXksIEkndmUgY2hlY2tlZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBkZWZpbmVkIGluIGBhcmNoL3Jpc2N2L0tjb25maWdgLiBFeGNlbGxlbnQuIEFsc28sIEkndmUgbm90aWNlZCBgSEFTX0lPUE9SVGAgYmVpbmcgdXNlZCBpbiBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oYC4gTGV0J3MgY29uZmlybSBgSEFTX0lPUE9SVGAgaXMgYSB2YWxpZCBjb25maWcgb3B0aW9uIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIHZhbGlkIGFuZCB3aWxsIHRyaWdnZXIgdGhlIGRlc2lyZWQgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MzIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNToyOS45Nzg4MzIxNDFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTk0OTc0NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhBU19JT1BPUlRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWc9Mzc1PWNvbmZpZyBIQVNfSU9NRU1cXG4tLVxcbmxpYi9LY29uZmlnLTM3OS1cXG5saWIvS2NvbmZpZzozODA6Y29uZmlnIEhBU19JT1BPUlRcXG5saWIvS2NvbmZpZy0zODEtXFx0Ym9vbFxcbmxpYi9LY29uZmlnLTM4Mi1cXG5saWIvS2NvbmZpZzozODM6Y29uZmlnIEhBU19JT1BPUlRfTUFQXFxubGliL0tjb25maWctMzg0LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MzIuNjc4MzM1MzI4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2ODQ4NzM2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogUklTQy1WIFBlci1DUFUgT3BlcmF0aW9ucyBhbmQgQlBGIEpJVCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGBIQVNfSU9QT1JUYCBpcyBhIHZhbGlkIGNvbmZpZywgYnV0IGl0J3MgaW5kaXJlY3RseSBzZWxlY3RlZCDigJMgbm90IHNvbWV0aGluZyB3ZSBjYW4gZGlyZWN0bHkgZW5hYmxlIGluIGBtZW51Y29uZmlnYC4gSXQncyB0eXBpY2FsbHkgY2hvc2VuIGJ5IGFyY2hpdGVjdHVyZSBvciBidXMgY29uZmlncywgc28gbGlzdGluZyBpdCBkaXJlY3RseSBpcyBwcm9iYWJseSBub3QgdGhlIGJlc3QgYXBwcm9hY2guICBIb3dldmVyLCB0aGlzIGxlZCBtZSB0byB0aGluayBhYm91dCB3aGF0ICpzaG91bGQqIGJlIGxpc3RlZC4gIGBSSVNDVl9JU0FfWkFCSEFgIGFuZCBgQlBGX0pJVGAgYXJlIGRlZmluaXRlbHkgd29ydGggbWVudGlvbmluZy4gYEJQRl9KSVRgIGlzIGdlbmVyYWxseSBlbmFibGVkLCBidXQgaXQncyBnb29kIHRvIGJlIGV4cGxpY2l0LiBMaXN0aW5nIGBIQVNfSU9QT1JUYCBpc24ndCB2ZXJ5IHVzZWZ1bCwgaXQgYmVpbmcgaGlkZGVuLlxuXG5UaGVuIEkgc2F3IHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2U6IHRoZSBwYXRjaCBtb2RpZmllcyBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaGAuIEl0IGltcGxlbWVudHMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyB1c2luZyBgYW1vYCBpbnN0cnVjdGlvbnMuICAqVGhhdCogaXMgYSBzaWduaWZpY2FudCwgZnVuZGFtZW50YWwgY2hhbmdlIGZvciBSSVNDLVYuICBUaGlzIGlzIGEgYmlnIGZ1bmN0aW9uYWwgY2hhbmdlLCB3b3J0aCBmdXp6aW5nIGZvciBjb3JyZWN0bmVzcywgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoaXQgdGhpcyBoYXJkLlxuXG5TbywgaGVyZSdzIHRoZSBwbGFuOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIHRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYGJwZl9pbnRfaml0X2NvbXBpbGVgLCBgYnBmX2ppdF9lbWl0X2luc25gIC0gdGhpcyBjb3ZlcnMgdGhlIEJQRiBKSVQgYXNwZWN0IG9mIHRoZSBwYXRjaCBpbiBtb3JlIGRldGFpbC5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFJJU0NWX0lTQV9aQUJIQWAsIGBCUEZfSklUYCAtIEVuc3VyaW5nIHRoZXNlIGFyZSBleHBsaWNpdGx5IGVuYWJsZWQuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uXG5cbkkgZGlkIGEgcXVpY2sgc2NhbiBmb3Igb3RoZXIgaW50ZXJlc3Rpbmcgc3ltYm9scy4gYF9fc3dpdGNoX3RvYCBpcyBhIGhvdCBwYXRoLCBidXQgaW5jbHVkaW5nIGl0IHdvdWxkIGludHJvZHVjZSBhIGxvdCBvZiBub2lzZS4gU2ltaWxhcmx5LCBib290L2hvdHBsdWcgZnVuY3Rpb25zIGxpa2UgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBtYXkgc2VlbSByZWxldmFudCwgYnV0IFN5emthbGxlciBhbHJlYWR5IGhhbmRsZXMgaG90cGx1ZyB0ZXN0aW5nIGlmIGVuYWJsZWQuIFNvLCBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgbGlrZSB0aGUgb3B0aW1hbCBzeW1ib2wgZm9yIHRoZSBCUEYgSklUIHRlc3RpbmcuIEl0IGlzIHRoZSBlbnRyeSBwb2ludCwgc28gdGhhdCdzIHRoZSBjb3JyZWN0IG5hbWUuICBgUklTQ1ZfSVNBX1pBQkhBYCBzZWVtcyB0byBiZSB0aGUgb25seSBuZXcgY29uZmlnLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDc2LCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNTo0Mi4zNjMyMTE4MDhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEyMDUwNDQsIkVycm9yIjoidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFJJU0NWX0lTQV9aQUJIQSIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSSVNDVl9JU0FfWkFCSEFcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFJJU0NWX0lTQV9aQUJIQVwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNTo0Mi41MDc1MTk2MjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyMzI4NTUxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBDb25maWd1cmF0aW9uIERpc2NyZXBhbmN5KipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0IGhlcmUuIFRoZSBzeXN0ZW0gaXMgY2xhaW1pbmcgdGhhdCBgUklTQ1ZfSVNBX1pBQkhBYCBkb2Vzbid0IGV4aXN0LCBidXQgbXkgZ3JlcCBzZWFyY2ggKmNsZWFybHkqIHNob3dzIGl0IGRlZmluZWQgaW4gYGFyY2gvcmlzY3YvS2NvbmZpZzo2ODNgLiBUaGF0J3Mgd2hlcmUgaXQgc2hvdWxkIGJlIVxuXG5XYWl0LCBjb3VsZCBpdCBiZSBhIG5hbWluZyBpc3N1ZT8gSSB2YWd1ZWx5IHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGBUT09MQ0hBSU5fSEFTX1pBQkhBYC4uLiBMZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBncmVwIG91dHB1dCBhZ2Fpbi4gT2theSwgaXQgbG9va3MgbGlrZSBgYXJjaC9yaXNjdi9LY29uZmlnOjY3NmAgaGFzIGBjb25maWcgVE9PTENIQUlOX0hBU19aQUJIQWAsIGFuZCB0aGUgdmVyeSBuZXh0IGxpbmVzLCBzaG93IGBSSVNDVl9JU0FfWkFCSEFgLlxuXG5TbywgKndoeSogZGlkIHRoZSBgc2V0LXJlc3VsdHNgIHV0aWxpdHkgY2xhaW0gaXQncyBtaXNzaW5nPyBUaGF0J3MgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uIFBlcmhhcHMgdGhpcyB0b29sIGlzbid0IGNvbXByZWhlbnNpdmUuIE1heWJlIGl0J3MgY2hlY2tpbmcgYWdhaW5zdCBhIGhhcmRjb2RlZCBsaXN0LCBvciBpdHMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNoZWNrcyBhcmUgY3VycmVudGx5IGxvb2tpbmcgYXQgdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGFuZCBub3QgdGhlIFJJU0MtViBvbmUgSSdtIHdvcmtpbmcgd2l0aC4gSXQgd291bGRuJ3QgYmUgdGhlIGZpcnN0IHRpbWUgSSd2ZSBlbmNvdW50ZXJlZCB0aGF0IGtpbmQgb2YgbGltaXRhdGlvbi4gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgYnlwYXNzIHRoZSBpc3N1ZSwgYW5kIHVzZSB0aGUgbW9yZSBjb21tb24gYEJQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQxMCwiT3V0cHV0VG9rZW5zIjoxMzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJzZXQtcmVzdWx0cyJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjQ4LjQzMDgwNzYzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODc4MjkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMgZm9yIFJJU0MtViB1c2luZyBBTU8gaW5zdHJ1Y3Rpb25zIGFuZCBtb2RpZmllcyB0aGUgQlBGIEpJVCB0byB1c2UgdGhlIG5ldyBgcGNwdV9vZmZzZXRgIGluIGB0aHJlYWRfaW5mb2AuIFRoZXNlIGFyZSBjb3JlIGFyY2hpdGVjdHVyYWwgYW5kIEJQRiBKSVQgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHRoZSBCUEYgSklUIGdlbmVyYXRpb24gZm9yIHBlci1jcHUgYWRkcmVzcyByZXNvbHV0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow8wdw7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 09:56:25 +0000 UTC FinishedAt: 2026-07-02 10:05:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bc7b086a45521a986a49045907f017e3e46c763e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "bc7b086a45521a986a49045907f017e3e46c763e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "6270fdd3-9aad-420c-b454-ac41dcdad2ec" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "bpf_jit_emit_insn" ], "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" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNDRmYzlmZjI1YzQ0ZDM3ZGRlOTcyNWQ5MGQwMDE1Y2FhZWQyOWZlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMDowNDo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxuaW5kZXggZTllOGJhODNlNjMyZjkuLjEzN2E0OTQ4ODMyNWU0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxuQEAgLTkxLDExICYjNDM7OTEsNyBAQFxuIFxuICNpZmRlZiBDT05GSUdfU01QXG4gLm1hY3JvIGFzbV9wZXJfY3B1IGRzdCBzeW0gdG1wXG4tXHRsdyAgICBcXHRtcCwgVEFTS19USV9DUFVfTlVNKHRwKVxuLVx0c2xsaSAgXFx0bXAsIFxcdG1wLCBSSVNDVl9MR1BUUlxuLVx0bGEgICAgXFxkc3QsIF9fcGVyX2NwdV9vZmZzZXRcbi1cdGFkZCAgIFxcZHN0LCBcXGRzdCwgXFx0bXBcbi1cdFJFR19MIFxcdG1wLCAwKFxcZHN0KVxuJiM0MztcdFJFR19MIFxcdG1wLCBUQVNLX1RJX1BDUFVfT0ZGU0VUKHRwKVxuIFx0bGEgICAgXFxkc3QsIFxcc3ltXG4gXHRhZGQgICBcXGRzdCwgXFxkc3QsIFxcdG1wXG4gLmVuZG1cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhcbmluZGV4IDA5YmI1ZjU3YTlkMzQ2Li45MmQ1ZjgzMWYzNDk1YSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXG5AQCAtMTAyLDEyICYjNDM7MTAyLDE0IEBAIF9faW9fcmVhZHNfaW5zKHJlYWRzLCB1MzIsIGwsIF9faW9fYnIoKSwgX19pb19hcihhZGRyKSlcbiAjZGVmaW5lIHJlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX3JlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgcmVhZHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpXG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxuIF9faW9fcmVhZHNfaW5zKGlucywgIHU4LCBiLCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSlcbiBfX2lvX3JlYWRzX2lucyhpbnMsIHUxNiwgdywgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXG4gX19pb19yZWFkc19pbnMoaW5zLCB1MzIsIGwsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxuICNkZWZpbmUgaW5zYihhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc2IoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSBpbnN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zdyhQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudClcbiAjZGVmaW5lIGluc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNsKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuJiM0MzsjZW5kaWZcbiBcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgIHU4LCBiLCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTE2LCB3LCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbkBAIC0xMTYsMjYgJiM0MzsxMTgsMzIgQEAgX19pb193cml0ZXNfb3V0cyh3cml0ZXMsIHUzMiwgbCwgX19pb19idygpLCBfX2lvX2F3KCkpXG4gI2RlZmluZSB3cml0ZXN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzdyhhZGRyLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc2woYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCAgdTgsIGIsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MTYsIHcsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MzIsIGwsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXG4gI2RlZmluZSBvdXRzYihhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNiKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgb3V0c3coYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzdyhQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudClcbiAjZGVmaW5lIG91dHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c2woUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4mIzQzOyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfNjRCSVRcbiBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTY0LCBxLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpXG4gI2RlZmluZSByZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXG4gX19pb19yZWFkc19pbnMoaW5zLCB1NjQsIHEsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxuICNkZWZpbmUgaW5zcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3EoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4mIzQzOyNlbmRpZlxuIFxuIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1NjQsIHEsIF9faW9fYncoKSwgX19pb19hdygpKVxuICNkZWZpbmUgd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1NjQsIHEsIF9faW9fcGJyKCksIF9faW9fcGF3KCkpXG4gI2RlZmluZSBvdXRzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNxKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNlbmRpZlxuJiM0MzsjZW5kaWZcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20tZ2VuZXJpYy9pby5oXHUwMDNlXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWJmOWY0Y2Y0Y2E1YWFcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhcbkBAIC0wLDAgJiM0MzsxLDMwMCBAQFxuJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xuJiM0MztcbiYjNDM7I2lmbmRlZiBfX0FTTV9QRVJDUFVfSFxuJiM0MzsjZGVmaW5lIF9fQVNNX1BFUkNQVV9IXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJlZW1wdC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vYWx0ZXJuYXRpdmUtbWFjcm9zLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2NtcHhjaGcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS1tYWNyb3MuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vY3VycmVudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS9od2NhcC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS90aHJlYWRfaW5mby5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFBFUkNQVV9SV19PUFMoc3opXHRcdFx0XHRcdFx0XFxcbiYjNDM7c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fcGVyY3B1X3JlYWRfIyNzeih2b2lkICpwdHIpXHRcdFxcXG4mIzQzO3tcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHJldHVybiBSRUFEX09OQ0UoKih1IyNzeiAqKXB0cik7XHRcdFx0XHRcXFxuJiM0Mzt9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1X3dyaXRlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFxcXG4mIzQzO3tcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFdSSVRFX09OQ0UoKih1IyNzeiAqKXB0ciwgKHUjI3N6KXZhbCk7XHRcdFx0XHRcXFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztQRVJDUFVfUldfT1BTKDgpXG4mIzQzO1BFUkNQVV9SV19PUFMoMTYpXG4mIzQzO1BFUkNQVV9SV19PUFMoMzIpXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzO1BFUkNQVV9SV19PUFMoNjQpXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2RlZmluZSBfX1BFUkNQVV9BTU9fT1BfQ0FTRShzZngsIG5hbWUsIHN6LCBhbW9faW5zbilcdFx0XHRcXFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO19fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFx0XFxcbiYjNDM7e1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0YXNtIHZvbGF0aWxlIChcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcJiMzNDthbW9cJiMzNDsgI2Ftb19pbnNuICNzZnggXCYjMzQ7IHplcm8sICVbdmFsXSwgJVtwdHJdXCYjMzQ7XHRcdFxcXG4mIzQzO1x0XHQ6IFtwdHJdIFwmIzM0OyYjNDM7QVwmIzM0OyAoKih1IyNzeiAqKXB0cilcdFx0XHRcdFxcXG4mIzQzO1x0XHQ6IFt2YWxdIFwmIzM0O3JcJiMzNDsgKCh1IyNzeikodmFsKSlcdFx0XHRcdFxcXG4mIzQzO1x0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XFxcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIFBFUkNQVV9PUChuYW1lLCBhbW9faW5zbilcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKVx0XHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX09QX0NBU0UoLmQsIG5hbWUsIDY0LCBhbW9faW5zbilcbiYjNDM7I2Vsc2VcbiYjNDM7I2RlZmluZSBQRVJDUFVfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztQRVJDUFVfT1AoYWRkLCBhZGQpXG4mIzQzO1BFUkNQVV9PUChhbmQsIGFuZClcbiYjNDM7UEVSQ1BVX09QKG9yLCBvcilcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLFxuJiM0MzsgKiBhbmQgdGhlIFBFUkNQVV9SRVRfT1AoKSBkb2VzIG5vdCBhY2NvdW50IGZvciBvdGhlciBvcGVyYXRpb25zLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pXHRcdFxcXG4mIzQzO3N0YXRpYyBpbmxpbmUgdSMjc3pcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO19fcGVyY3B1XyMjbmFtZSMjX3JldHVybl9hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXHRcXFxuJiM0Mzt7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZWdpc3RlciB1IyNzeiByZXQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFwmIzM0O2Ftb1wmIzM0OyAjYW1vX2luc24gI3NmeCBcJiMzNDsgJVtyZXRdLCAlW3ZhbF0sICVbcHRyXVwmIzM0O1x0XHRcXFxuJiM0MztcdFx0OiBbcHRyXSBcJiMzNDsmIzQzO0FcJiMzNDsgKCoodSMjc3ogKilwdHIpLCBbcmV0XSBcJiMzNDs9clwmIzM0OyAocmV0KVx0XHRcXFxuJiM0MztcdFx0OiBbdmFsXSBcJiMzNDtyXCYjMzQ7ICgodSMjc3opKHZhbCkpXHRcdFx0XHRcXFxuJiM0MztcdFx0OiBcJiMzNDttZW1vcnlcJiMzNDspO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0dXJuIHJldCAmIzQzOyB2YWw7XHRcdFx0XHRcdFx0XFxcbiYjNDM7fVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC53LCBuYW1lLCAzMiwgYW1vX2luc24pXHRcdFxcXG4mIzQzO1x0X19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC5kLCBuYW1lLCA2NCwgYW1vX2luc24pXG4mIzQzOyNlbHNlXG4mIzQzOyNkZWZpbmUgUEVSQ1BVX1JFVF9PUChuYW1lLCBhbW9faW5zbilcdFx0XHRcdFx0XFxcbiYjNDM7XHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztQRVJDUFVfUkVUX09QKGFkZCwgYWRkKVxuJiM0MztcbiYjNDM7I2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKVx0KCgodW5zaWduZWQgbG9uZykocHRyKSBcdTAwMjYgMHgzKSAqIEJJVFNfUEVSX0JZVEUpXG4mIzQzOyNkZWZpbmUgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opXHRHRU5NQVNLKChzeikgLSAxLCAwKVxuJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpXHQoKHUzMiAqKSgodW5zaWduZWQgbG9uZykocHRyKSBcdTAwMjYgfjB4MykpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X09QKG5hbWUsIGFtb19pbnNuLCBzeiwgc2Z4LCB2YWxfdHlwZSwgbmV3X3ZhbF9leHByLCBhc21fb3ApXHRcdFx0XFxcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFx0XFxcbiYjNDM7e1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9aQUJIQSkgXHUwMDI2XHUwMDI2XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHtcdFx0XHRcdFxcXG4mIzQzO1x0XHRhc20gdm9sYXRpbGUgKFwmIzM0O2Ftb1wmIzM0OyAjYW1vX2luc24gI3NmeCBcJiMzNDsgemVybywgJVt2YWxdLCAlW3B0cl1cJiMzNDtcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFtwdHJdIFwmIzM0OyYjNDM7QVwmIzM0OygqKHZhbF90eXBlICopcHRyKVx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdDogW3ZhbF0gXCYjMzQ7clwmIzM0OygodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpKVx0XFxcbiYjNDM7XHRcdFx0OiBcJiMzNDttZW1vcnlcJiMzNDspO1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH0gZWxzZSB7XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0dTMyICpwdHIzMiA9IFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpO1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpO1x0XHRcdFx0XFxcbiYjNDM7XHRcdGNvbnN0IHUzMiBtYXNrID0gUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFx1MDAzY1x1MDAzYyBzaGlmdDtcdFx0XHRcdFxcXG4mIzQzO1x0XHRjb25zdCB2YWxfdHlwZSB2YWxfdHJ1bmMgPSAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpXHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0ICAgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XHRcdFx0XHRcXFxuJiM0MztcdFx0dTMyIG9sZCwgbmV3O1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR2YWxfdHlwZSBmaWVsZDtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0YXNtIHZvbGF0aWxlIChcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDswOiBsci53ICUwLCAlMlxcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7YW5kICUzLCAlMCwgJTRcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O3NybCAlMywgJTMsICU1XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHQjYXNtX29wIFwmIzM0OyAlMywgJTMsICU2XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDthbmQgJTMsICUzLCAlOFxcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7c2xsICUzLCAlMywgJTVcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2FuZCAlMSwgJTAsICU3XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtvciAlMSwgJTEsICUzXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtzYy53ICUxLCAlMSwgJTJcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JuZXogJTEsIDBiXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7PVx1MDAyNnJcJiMzNDsob2xkKSwgXCYjMzQ7PVx1MDAyNnJcJiMzNDsobmV3KSwgXCYjMzQ7JiM0MztBXCYjMzQ7KCpwdHIzMiksIFwmIzM0Oz1cdTAwMjZyXCYjMzQ7KGZpZWxkKVx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7clwmIzM0OyhtYXNrKSwgXCYjMzQ7clwmIzM0OyhzaGlmdCksIFwmIzM0O3JcJiMzNDsodmFsX3RydW5jKSwgXCYjMzQ7clwmIzM0Oyh+bWFzayksXHRcdFx0XFxcbiYjNDM7XHRcdFx0ICBcJiMzNDtyXCYjMzQ7KFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSlcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcClcdFx0XHRcXFxuJiM0MztcdFBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCA4LCAuYiwgdTgsIGV4cHIsIGZpbmFsX29wKTtcdFx0XFxcbiYjNDM7XHRQRVJDUFVfOF8xNl9PUChvcF9uYW1lLCBvcCwgMTYsIC5oLCB1MTYsIGV4cHIsIGZpbmFsX29wKVxuJiM0MztcbiYjNDM7UEVSQ1BVX09QXzhfMTYoYWRkLCBhZGQsIHZhbCwgYWRkKVxuJiM0MztQRVJDUFVfT1BfOF8xNihhbmQsIGFuZCwgdmFsLCBhbmQpXG4mIzQzO1BFUkNQVV9PUF84XzE2KG9yLCBvciwgdmFsLCBvcilcbiYjNDM7XG4mIzQzOyNkZWZpbmUgUEVSQ1BVXzhfMTZfUkVUX09QKG5hbWUsIGFtb19pbnNuLCBzeiwgc2Z4LCB2YWxfdHlwZSwgbmV3X3ZhbF9leHByKVx0XHRcdFxcXG4mIzQzO3N0YXRpYyBpbmxpbmUgdmFsX3R5cGUgX19wZXJjcHVfIyNuYW1lIyNfcmV0dXJuX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFxcXG4mIzQzO3tcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmIChJU19FTkFCTEVEKENPTkZJR19SSVNDVl9JU0FfWkFCSEEpIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfWkFCSEEpKSB7XHRcdFx0XHRcXFxuJiM0MztcdFx0cmVnaXN0ZXIgdmFsX3R5cGUgcmV0O1x0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0YXNtIHZvbGF0aWxlIChcJiMzNDthbW9cJiMzNDsgI2Ftb19pbnNuICNzZnggXCYjMzQ7ICVbcmV0XSwgJVt2YWxdLCAlW3B0cl1cJiMzNDtcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFtwdHJdIFwmIzM0OyYjNDM7QVwmIzM0OygqKHZhbF90eXBlICopcHRyKSwgW3JldF0gXCYjMzQ7PXJcJiMzNDsocmV0KVx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0OiBbdmFsXSBcJiMzNDtyXCYjMzQ7KCh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkpXHRcXFxuJiM0MztcdFx0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyZXR1cm4gcmV0ICYjNDM7ICh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XHRcdFxcXG4mIzQzO1x0fSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHR1MzIgKnB0cjMyID0gUEVSQ1BVXzhfMTZfR0VUX1BUUjMyKHB0cik7XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRjb25zdCB1bnNpZ25lZCBsb25nIHNoaWZ0ID0gUEVSQ1BVXzhfMTZfR0VUX1NISUZUKHB0cik7XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdTMyIG1hc2sgPSAoUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFx1MDAzY1x1MDAzYyBzaGlmdCk7XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdTMyIGludl9tYXNrID0gfm1hc2s7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Y29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKVx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdCAgIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1x0XHRcdFx0XFxcbiYjNDM7XHRcdHUzMiBvbGQsIG5ldywgZmllbGQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0OzA6IGxyLncgJTAsICUzXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDthbmQgJTEsICUwLCAlNFxcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7c3JsICUxLCAlMSwgJTVcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2FkZCAlMSwgJTEsICU2XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDthbmQgJTEsICUxLCAlN1xcblwmIzM0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XCYjMzQ7c2xsICUxLCAlMSwgJTVcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2FuZCAlMiwgJTAsICU4XFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtvciAlMiwgJTIsICUxXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcJiMzNDtzYy53ICUyLCAlMiwgJTNcXG5cJiMzNDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFwmIzM0O2JuZXogJTIsIDBiXFxuXCYjMzQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7PVx1MDAyNnJcJiMzNDsob2xkKSwgXCYjMzQ7PVx1MDAyNnJcJiMzNDsoZmllbGQpLCBcJiMzNDs9XHUwMDI2clwmIzM0OyhuZXcpLCBcJiMzNDsmIzQzO0FcJiMzNDsoKnB0cjMyKVx0XHRcdFxcXG4mIzQzO1x0XHRcdDogXCYjMzQ7clwmIzM0OyhtYXNrKSwgXCYjMzQ7clwmIzM0OyhzaGlmdCksIFwmIzM0O3JcJiMzNDsodmFsX3RydW5jKSwgXCYjMzQ7clwmIzM0OyhQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpLCBcXFxuJiM0MztcdFx0XHRcJiMzNDtyXCYjMzQ7KGludl9tYXNrKVx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHQ6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyZXR1cm4gKHZhbF90eXBlKShmaWVsZCBcdTAwM2VcdTAwM2Ugc2hpZnQpO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0fVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDgsIC5iLCB1OCwgdmFsKVxuJiM0MztQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDE2LCAuaCwgdTE2LCB2YWwpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIF9wY3BfcHJvdGVjdChvcCwgcGNwLCAuLi4pXHRcdFx0XHRcdFxcXG4mIzQzOyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRwcmVlbXB0X2Rpc2FibGVfbm90cmFjZSgpO1x0XHRcdFx0XHRcXFxuJiM0MztcdG9wKHJhd19jcHVfcHRyKFx1MDAyNihwY3ApKSwgX19WQV9BUkdTX18pO1x0XHRcdFx0XFxcbiYjNDM7XHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO30pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIF9wY3BfcHJvdGVjdF9yZXR1cm4ob3AsIHBjcCwgYXJncy4uLilcdFx0XHRcdFxcXG4mIzQzOyh7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR0eXBlb2YocGNwKSBfX3JldHZhbDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0X19yZXR2YWwgPSAodHlwZW9mKHBjcCkpb3AocmF3X2NwdV9wdHIoXHUwMDI2KHBjcCkpLCAjI2FyZ3MpO1x0XFxcbiYjNDM7XHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0X19yZXR2YWw7XHRcdFx0XHRcdFx0XHRcXFxuJiM0Mzt9KVxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9yZWFkXzEocGNwKVx0XHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfOCwgcGNwKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMihwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8xNiwgcGNwKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfNChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8zMiwgcGNwKVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfOChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF82NCwgcGNwKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV84LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV8yKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzE2LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV80KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzMyLCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfNjRCSVRcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV84KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzY0LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF8xKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV84LCBwY3AsIHZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF80KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV8zMiwgcGNwLCB2YWwpXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfYWRkXzgocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzY0LCBwY3AsIHZhbClcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fMShwY3AsIHZhbClcdFx0XFxcbiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzIocGNwLCB2YWwpXHRcdFxcXG4mIzQzO19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV8xNiwgcGNwLCB2YWwpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fNChwY3AsIHZhbClcdFx0XFxcbiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcbiYjNDM7XG4mIzQzOyNpZmRlZiBDT05GSUdfNjRCSVRcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzgocGNwLCB2YWwpXHRcdFxcXG4mIzQzO19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hbmRfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfYW5kXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzE2LCBwY3AsIHZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hbmRfNChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FuZF84KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FuZF9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9vcl8xKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X29yX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR182NEJJVFxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzgocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ18xKHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3hjaGdfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdF9yZXR1cm4oeGNoZ19yZWxheGVkLCBwY3AsIHZhbClcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV94Y2hnXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ184KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18xKHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18yKHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ180KHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUXG4mIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ184KHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4mIzQzO1xuJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGc2NChwY3AsIG8sIG4pXHR0aGlzX2NwdV9jbXB4Y2hnXzgocGNwLCBvLCBuKVxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzOyNpZmRlZiBzeXN0ZW1faGFzX2NtcHhjaGcxMjhcbiYjNDM7I2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnMTI4KHBjcCwgbywgbilcdFx0XHRcdFx0XFxcbiYjNDM7KHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHUxMjggcmV0X187XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHR5cGVvZihwY3ApICpwdHJfXztcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cHRyX18gPSByYXdfY3B1X3B0cihcdTAwMjYocGNwKSk7XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKHN5c3RlbV9oYXNfY21weGNoZzEyOCgpKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0X18gPSBjbXB4Y2hnMTI4X2xvY2FsKHB0cl9fLCAobyksIChuKSk7XHRcdFxcXG4mIzQzO1x0ZWxzZVx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0X18gPSB0aGlzX2NwdV9nZW5lcmljX2NtcHhjaGcocGNwLCAobyksIChuKSk7XHRcXFxuJiM0MztcdHByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZXRfXztcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7fSlcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjZGVmaW5lIF9fbXlfY3B1X29mZnNldCAoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKiljdXJyZW50KS1cdTAwM2VwY3B1X29mZnNldClcbiYjNDM7XG4mIzQzOyN1bmRlZiBQRVJDUFVfUldfT1BTXG4mIzQzOyN1bmRlZiBfX1BFUkNQVV9BTU9fT1BfQ0FTRVxuJiM0MzsjdW5kZWYgUEVSQ1BVX09QXG4mIzQzOyN1bmRlZiBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0VcbiYjNDM7I3VuZGVmIFBFUkNQVV9SRVRfT1BcbiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X0dFVF9TSElGVFxuJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX01BU0tcbiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X0dFVF9QVFIzMlxuJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfT1BcbiYjNDM7I3VuZGVmIFBFUkNQVV9PUF84XzE2XG4mIzQzOyN1bmRlZiBQRVJDUFVfOF8xNl9SRVRfT1BcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2FzbS1nZW5lcmljL3BlcmNwdS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX19BU01fUEVSQ1BVX0ggKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxuaW5kZXggMGU3MWViODJmOTIwY2EuLjczM2I2Y2QzMDZlNDBmIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxuQEAgLTg4LDYgJiM0Mzs4OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZW52Y2ZnKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbiBcdFx0XHQ6OiBcJiMzNDtyXCYjMzQ7IChuZXh0LVx1MDAzZXRocmVhZC5lbnZjZmcpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF90b19wY3B1X29mZnNldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4mIzQzO3tcbiYjNDM7I2lmZGVmIENPTkZJR19TTVBcbiYjNDM7XHRuZXh0LVx1MDAzZXRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0ID0gX19teV9jcHVfb2Zmc2V0O1xuJiM0MzsjZW5kaWZcbiYjNDM7fVxuJiM0MztcbiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKixcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7XG4gXG5AQCAtMTIyLDYgJiM0MzsxMjksNyBAQCBkbyB7XHRcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHN3aXRjaF90b19zaG91bGRfZmx1c2hfaWNhY2hlKF9fbmV4dCkpXHRcXFxuIFx0XHRsb2NhbF9mbHVzaF9pY2FjaGVfYWxsKCk7XHRcdFxcXG4gXHRfX3N3aXRjaF90b19lbnZjZmcoX19uZXh0KTtcdFx0XHRcXFxuJiM0MztcdF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KF9fbmV4dCk7XHRcdFxcXG4gXHQoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTtcdFx0XFxcbiB9IHdoaWxlICgwKVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuaW5kZXggNTUwMTlmZGZhOWVjYWEuLmYxMGJhNjJiNjEwMTY0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbkBAIC01Myw2ICYjNDM7NTMsNyBAQFxuIHN0cnVjdCB0aHJlYWRfaW5mbyB7XG4gXHR1bnNpZ25lZCBsb25nXHRcdGZsYWdzO1x0XHQvKiBsb3cgbGV2ZWwgZmxhZ3MgKi9cbiBcdGludCAgICAgICAgICAgICAgICAgICAgIHByZWVtcHRfY291bnQ7ICAvKiAwPVx1MDAzZXByZWVtcHRpYmxlLCBcdTAwM2MwPVx1MDAzZUJVRyAqL1xuJiM0MztcdGludFx0XHRcdGNwdTtcbiBcdC8qXG4gXHQgKiBUaGVzZSBzdGFjayBwb2ludGVycyBhcmUgb3ZlcndyaXR0ZW4gb24gZXZlcnkgc3lzdGVtIGNhbGwgb3JcbiBcdCAqIGV4Y2VwdGlvbi4gIFNQIGlzIGFsc28gc2F2ZWQgdG8gdGhlIHN0YWNrIGl0IGNhbiBiZSByZWNvdmVyZWQgd2hlblxuQEAgLTYwLDggJiM0Mzs2MSw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7XG4gXHQgKi9cbiBcdGxvbmdcdFx0XHRrZXJuZWxfc3A7XHQvKiBLZXJuZWwgc3RhY2sgcG9pbnRlciAqL1xuIFx0bG9uZ1x0XHRcdHVzZXJfc3A7XHQvKiBVc2VyIHN0YWNrIHBvaW50ZXIgKi9cbi1cdGludFx0XHRcdGNwdTtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0c3lzY2FsbF93b3JrO1x0LyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xuJiM0MztcdHVuc2lnbmVkIGxvbmdcdFx0cGNwdV9vZmZzZXQ7XG4gI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDS1xuIFx0dm9pZFx0XHRcdCpzY3NfYmFzZTtcbiBcdHZvaWRcdFx0XHQqc2NzX3NwO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXG5pbmRleCBhNzVmMGNmZWExZTlmYS4uMjBkNDZjMjhmZGRlOTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXG5AQCAtMzgsNiAmIzQzOzM4LDcgQEAgdm9pZCBhc21fb2Zmc2V0cyh2b2lkKVxuIFx0T0ZGU0VUKFRBU0tfVEhSRUFEX1NVTSwgdGFza19zdHJ1Y3QsIHRocmVhZC5zdW0pO1xuIFxuIFx0T0ZGU0VUKFRBU0tfVElfQ1BVLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8uY3B1KTtcbiYjNDM7XHRPRkZTRVQoVEFTS19USV9QQ1BVX09GRlNFVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0KTtcbiBcdE9GRlNFVChUQVNLX1RJX1BSRUVNUFRfQ09VTlQsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5wcmVlbXB0X2NvdW50KTtcbiBcdE9GRlNFVChUQVNLX1RJX0tFUk5FTF9TUCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmtlcm5lbF9zcCk7XG4gXHRPRkZTRVQoVEFTS19USV9VU0VSX1NQLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8udXNlcl9zcCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jXG5pbmRleCBmNmVmNTc5MzBiNTBhOC4uNzg3Njg1NGQxNjI3OTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuY1xuQEAgLTE5MSw2ICYjNDM7MTkxLDcgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRpZGxlLVx1MDAzZXRocmVhZF9pbmZvLmNwdSA9IGNwdTtcbiYjNDM7XHR0aWRsZS1cdTAwM2V0aHJlYWRfaW5mby5wY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KGNwdSk7XG4gXG4gXHRyZXQgPSBzdGFydF9zZWNvbmRhcnlfY3B1KGNwdSwgdGlkbGUpO1xuIFx0aWYgKCFyZXQpIHtcbkBAIC0yMDgsNiAmIzQzOzIwOSwxMSBAQCBpbnQgX19jcHVfdXAodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHRhc2tfc3RydWN0ICp0aWRsZSlcbiB9XG4gI2VuZGlmXG4gXG4mIzQzO3ZvaWQgX19pbml0IHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xuJiM0Mzt9XG4mIzQzO1xuIHZvaWQgX19pbml0IHNtcF9jcHVzX2RvbmUodW5zaWduZWQgaW50IG1heF9jcHVzKVxuIHtcbiB9XG5AQCAtMjMzLDYgJiM0MzsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZClcbiBcdG1tZ3JhYihtbSk7XG4gXHRjdXJyZW50LVx1MDAzZWFjdGl2ZV9tbSA9IG1tO1xuIFxuJiM0MztcdF9fbXlfY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSk7XG4mIzQzO1xuICNpZmRlZiBDT05GSUdfSE9UUExVR19QQVJBTExFTFxuIFx0Y3B1aHBfYXBfc3luY19hbGl2ZSgpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5pbmRleCBjMDNjMWRlMTZiNzlhYy4uZWFiOTNkNTI1OGU5ZTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXG5AQCAtMTM5NSwxNSAmIzQzOzEzOTUsOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRpZiAocmQgIT0gcnMpXG4gXHRcdFx0XHRlbWl0X212KHJkLCBycywgY3R4KTtcbiAjaWZkZWYgQ09ORklHX1NNUFxuLVx0XHRcdC8qIExvYWQgY3VycmVudCBDUFUgbnVtYmVyIGluIFQxICovXG4tXHRcdFx0ZW1pdF9sdyhSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgY3B1KSxcbiYjNDM7XHRcdFx0ZW1pdF9sZChSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgcGNwdV9vZmZzZXQpLFxuIFx0XHRcdFx0UlZfUkVHX1RQLCBjdHgpO1xuLVx0XHRcdC8qIExvYWQgYWRkcmVzcyBvZiBfX3Blcl9jcHVfb2Zmc2V0IGFycmF5IGluIFQyICovXG4tXHRcdFx0ZW1pdF9hZGRyKFJWX1JFR19UMiwgKHU2NClcdTAwMjZfX3Blcl9jcHVfb2Zmc2V0LCBleHRyYV9wYXNzLCBjdHgpO1xuLVx0XHRcdC8qIEdldCBhZGRyZXNzIG9mIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xuLVx0XHRcdGVtaXRfc2gzYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfVDIsIGN0eCk7XG4tXHRcdFx0LyogTG9hZCBfX3Blcl9jcHVfb2Zmc2V0W2NwdV0gaW4gVDEgKi9cbi1cdFx0XHRlbWl0X2xkKFJWX1JFR19UMSwgMCwgUlZfUkVHX1QxLCBjdHgpO1xuIFx0XHRcdC8qIEFkZCB0aGUgb2Zmc2V0IHRvIFJkICovXG4gXHRcdFx0ZW1pdF9hZGQocmQsIHJkLCBSVl9SRUdfVDEsIGN0eCk7XG4gI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjQ0ZmM5ZmYyNWM0NGQzN2RkZTk3MjVkOTBkMDAxNWNhYWVkMjlmZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIgMTA6MDQ6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaAppbmRleCBlOWU4YmE4M2U2MzJmOS4uMTM3YTQ5NDg4MzI1ZTQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaApAQCAtOTEsMTEgJiM0Mzs5MSw3IEBACiAKICNpZmRlZiBDT05GSUdfU01QCiAubWFjcm8gYXNtX3Blcl9jcHUgZHN0IHN5bSB0bXAKLQlsdyAgICBcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApCi0Jc2xsaSAgXHRtcCwgXHRtcCwgUklTQ1ZfTEdQVFIKLQlsYSAgICBcZHN0LCBfX3Blcl9jcHVfb2Zmc2V0Ci0JYWRkICAgXGRzdCwgXGRzdCwgXHRtcAotCVJFR19MIFx0bXAsIDAoXGRzdCkKJiM0MzsJUkVHX0wgXHRtcCwgVEFTS19USV9QQ1BVX09GRlNFVCh0cCkKIAlsYSAgICBcZHN0LCBcc3ltCiAJYWRkICAgXGRzdCwgXGRzdCwgXHRtcAogLmVuZG0KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaAppbmRleCAwOWJiNWY1N2E5ZDM0Ni4uOTJkNWY4MzFmMzQ5NWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmgKQEAgLTEwMiwxMiAmIzQzOzEwMiwxNCBAQCBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTMyLCBsLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpCiAjZGVmaW5lIHJlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX3JlYWRzdyhhZGRyLCBidWZmZXIsIGNvdW50KQogI2RlZmluZSByZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkKIAomIzQzOyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVAogX19pb19yZWFkc19pbnMoaW5zLCAgdTgsIGIsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKQogX19pb19yZWFkc19pbnMoaW5zLCB1MTYsIHcsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKQogX19pb19yZWFkc19pbnMoaW5zLCB1MzIsIGwsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKQogI2RlZmluZSBpbnNiKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zYihQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudCkKICNkZWZpbmUgaW5zdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3coUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiAjZGVmaW5lIGluc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNsKFBDSV9JT0JBU0UgJiM0MzsgKGFkZHIpLCBidWZmZXIsIGNvdW50KQomIzQzOyNlbmRpZgogCiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgIHU4LCBiLCBfX2lvX2J3KCksIF9faW9fYXcoKSkKIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1MTYsIHcsIF9faW9fYncoKSwgX19pb19hdygpKQpAQCAtMTE2LDI2ICYjNDM7MTE4LDMyIEBAIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1MzIsIGwsIF9faW9fYncoKSwgX19pb19hdygpKQogI2RlZmluZSB3cml0ZXN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzdyhhZGRyLCBidWZmZXIsIGNvdW50KQogI2RlZmluZSB3cml0ZXNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KQogCiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUCiBfX2lvX3dyaXRlc19vdXRzKG91dHMsICB1OCwgYiwgX19pb19wYncoKSwgX19pb19wYXcoKSkKIF9faW9fd3JpdGVzX291dHMob3V0cywgdTE2LCB3LCBfX2lvX3BidygpLCBfX2lvX3BhdygpKQogX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MzIsIGwsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpCiAjZGVmaW5lIG91dHNiKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c2IoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiAjZGVmaW5lIG91dHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c3coUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiAjZGVmaW5lIG91dHNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c2woUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiYjNDM7I2VuZGlmCiAKICNpZmRlZiBDT05GSUdfNjRCSVQKIF9faW9fcmVhZHNfaW5zKHJlYWRzLCB1NjQsIHEsIF9faW9fYnIoKSwgX19pb19hcihhZGRyKSkKICNkZWZpbmUgcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpCiAKJiM0MzsjaWZkZWYgQ09ORklHX0hBU19JT1BPUlQKIF9faW9fcmVhZHNfaW5zKGlucywgdTY0LCBxLCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSkKICNkZWZpbmUgaW5zcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3EoUENJX0lPQkFTRSAmIzQzOyAoYWRkciksIGJ1ZmZlciwgY291bnQpCiYjNDM7I2VuZGlmCiAKIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1NjQsIHEsIF9faW9fYncoKSwgX19pb19hdygpKQogI2RlZmluZSB3cml0ZXNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KQogCiYjNDM7I2lmZGVmIENPTkZJR19IQVNfSU9QT1JUCiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXcoKSkKICNkZWZpbmUgb3V0c3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzcShQQ0lfSU9CQVNFICYjNDM7IChhZGRyKSwgYnVmZmVyLCBjb3VudCkKICNlbmRpZgomIzQzOyNlbmRpZgogCiAjaW5jbHVkZSAmbHQ7YXNtLWdlbmVyaWMvaW8uaCZndDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjliZjlmNGNmNGNhNWFhCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaApAQCAtMCwwICYjNDM7MSwzMDAgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwomIzQzOwomIzQzOyNpZm5kZWYgX19BU01fUEVSQ1BVX0gKJiM0MzsjZGVmaW5lIF9fQVNNX1BFUkNQVV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2JpdHMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJlZW1wdC5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDthc20vYWx0ZXJuYXRpdmUtbWFjcm9zLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS9jbXB4Y2hnLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLW1hY3Jvcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vY3VycmVudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vaHdjYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YXNtL3RocmVhZF9pbmZvLmgmZ3Q7CiYjNDM7CiYjNDM7I2RlZmluZSBQRVJDUFVfUldfT1BTKHN6KQkJCQkJCVwKJiM0MztzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19wZXJjcHVfcmVhZF8jI3N6KHZvaWQgKnB0cikJCVwKJiM0Mzt7CQkJCQkJCQkJXAomIzQzOwlyZXR1cm4gUkVBRF9PTkNFKCoodSMjc3ogKilwdHIpOwkJCQlcCiYjNDM7fQkJCQkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1X3dyaXRlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbCkJXAomIzQzO3sJCQkJCQkJCQlcCiYjNDM7CVdSSVRFX09OQ0UoKih1IyNzeiAqKXB0ciwgKHUjI3N6KXZhbCk7CQkJCVwKJiM0Mzt9CiYjNDM7CiYjNDM7UEVSQ1BVX1JXX09QUyg4KQomIzQzO1BFUkNQVV9SV19PUFMoMTYpCiYjNDM7UEVSQ1BVX1JXX09QUygzMikKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7UEVSQ1BVX1JXX09QUyg2NCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIF9fUEVSQ1BVX0FNT19PUF9DQVNFKHNmeCwgbmFtZSwgc3osIGFtb19pbnNuKQkJCVwKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQJCQkJCQkJXAomIzQzO19fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbCkJCVwKJiM0Mzt7CQkJCQkJCQkJXAomIzQzOwlhc20gdm9sYXRpbGUgKAkJCQkJCQlcCiYjNDM7CQkmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7IHplcm8sICVbdmFsXSwgJVtwdHJdJiMzNDsJCVwKJiM0MzsJCTogW3B0cl0gJiMzNDsmIzQzO0EmIzM0OyAoKih1IyNzeiAqKXB0cikJCQkJXAomIzQzOwkJOiBbdmFsXSAmIzM0O3ImIzM0OyAoKHUjI3N6KSh2YWwpKQkJCQlcCiYjNDM7CQk6ICYjMzQ7bWVtb3J5JiMzNDspOwkJCQkJCVwKJiM0Mzt9CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR182NEJJVAomIzQzOyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKQkJCQkJXAomIzQzOwlfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKQkJCVwKJiM0MzsJX19QRVJDUFVfQU1PX09QX0NBU0UoLmQsIG5hbWUsIDY0LCBhbW9faW5zbikKJiM0MzsjZWxzZQomIzQzOyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKQkJCQkJXAomIzQzOwlfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKQomIzQzOyNlbmRpZgomIzQzOwomIzQzO1BFUkNQVV9PUChhZGQsIGFkZCkKJiM0MztQRVJDUFVfT1AoYW5kLCBhbmQpCiYjNDM7UEVSQ1BVX09QKG9yLCBvcikKJiM0MzsKJiM0MzsvKgomIzQzOyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLAomIzQzOyAqIGFuZCB0aGUgUEVSQ1BVX1JFVF9PUCgpIGRvZXMgbm90IGFjY291bnQgZm9yIG90aGVyIG9wZXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pCQlcCiYjNDM7c3RhdGljIGlubGluZSB1IyNzegkJCQkJCQlcCiYjNDM7X19wZXJjcHVfIyNuYW1lIyNfcmV0dXJuX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbCkJXAomIzQzO3sJCQkJCQkJCQlcCiYjNDM7CXJlZ2lzdGVyIHUjI3N6IHJldDsJCQkJCQlcCiYjNDM7CQkJCQkJCQkJXAomIzQzOwlhc20gdm9sYXRpbGUgKAkJCQkJCQlcCiYjNDM7CQkmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7ICVbcmV0XSwgJVt2YWxdLCAlW3B0cl0mIzM0OwkJXAomIzQzOwkJOiBbcHRyXSAmIzM0OyYjNDM7QSYjMzQ7ICgqKHUjI3N6ICopcHRyKSwgW3JldF0gJiMzNDs9ciYjMzQ7IChyZXQpCQlcCiYjNDM7CQk6IFt2YWxdICYjMzQ7ciYjMzQ7ICgodSMjc3opKHZhbCkpCQkJCVwKJiM0MzsJCTogJiMzNDttZW1vcnkmIzM0Oyk7CQkJCQkJXAomIzQzOwkJCQkJCQkJCVwKJiM0MzsJcmV0dXJuIHJldCAmIzQzOyB2YWw7CQkJCQkJXAomIzQzO30KJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7I2RlZmluZSBQRVJDUFVfUkVUX09QKG5hbWUsIGFtb19pbnNuKQkJCQkJXAomIzQzOwlfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbikJCVwKJiM0MzsJX19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC5kLCBuYW1lLCA2NCwgYW1vX2luc24pCiYjNDM7I2Vsc2UKJiM0MzsjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pCQkJCQlcCiYjNDM7CV9fUEVSQ1BVX0FNT19SRVRfT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKQomIzQzOyNlbmRpZgomIzQzOwomIzQzO1BFUkNQVV9SRVRfT1AoYWRkLCBhZGQpCiYjNDM7CiYjNDM7I2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKQkoKCh1bnNpZ25lZCBsb25nKShwdHIpICZhbXA7IDB4MykgKiBCSVRTX1BFUl9CWVRFKQomIzQzOyNkZWZpbmUgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opCUdFTk1BU0soKHN6KSAtIDEsIDApCiYjNDM7I2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKQkoKHUzMiAqKSgodW5zaWduZWQgbG9uZykocHRyKSAmYW1wOyB+MHgzKSkKJiM0MzsKJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X09QKG5hbWUsIGFtb19pbnNuLCBzeiwgc2Z4LCB2YWxfdHlwZSwgbmV3X3ZhbF9leHByLCBhc21fb3ApCQkJXAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBfX3BlcmNwdV8jI25hbWUjI19hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpCQlcCiYjNDM7ewkJCQkJCQkJCQkJCVwKJiM0MzsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9aQUJIQSkgJmFtcDsmYW1wOwkJCQkJCVwKJiM0MzsJCXJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHsJCQkJXAomIzQzOwkJYXNtIHZvbGF0aWxlICgmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7IHplcm8sICVbdmFsXSwgJVtwdHJdJiMzNDsJCQlcCiYjNDM7CQkJOiBbcHRyXSAmIzM0OyYjNDM7QSYjMzQ7KCoodmFsX3R5cGUgKilwdHIpCQkJCQkJXAomIzQzOwkJCTogW3ZhbF0gJiMzNDtyJiMzNDsoKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKSAmYW1wOyBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpKQlcCiYjNDM7CQkJOiAmIzM0O21lbW9yeSYjMzQ7KTsJCQkJCQkJCVwKJiM0MzsJfSBlbHNlIHsJCQkJCQkJCQkJXAomIzQzOwkJdTMyICpwdHIzMiA9IFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpOwkJCQkJXAomIzQzOwkJY29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpOwkJCQlcCiYjNDM7CQljb25zdCB1MzIgbWFzayA9IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSAmbHQ7Jmx0OyBzaGlmdDsJCQkJXAomIzQzOwkJY29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKQkJCQlcCiYjNDM7CQkJCQkgICAmYW1wOyBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpOwkJCQlcCiYjNDM7CQl1MzIgb2xkLCBuZXc7CQkJCQkJCQkJXAomIzQzOwkJdmFsX3R5cGUgZmllbGQ7CQkJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQkJCVwKJiM0MzsJCWFzbSB2b2xhdGlsZSAoCQkJCQkJCQkJXAomIzQzOwkJCSYjMzQ7MDogbHIudyAlMCwgJTJcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O2FuZCAlMywgJTAsICU0XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtzcmwgJTMsICUzLCAlNVxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSNhc21fb3AgJiMzNDsgJTMsICUzLCAlNlxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7YW5kICUzLCAlMywgJThcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O3NsbCAlMywgJTMsICU1XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDthbmQgJTEsICUwLCAlN1xuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7b3IgJTEsICUxLCAlM1xuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7c2MudyAlMSwgJTEsICUyXG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtibmV6ICUxLCAwYlxuJiMzNDsJCQkJCQkJCVwKJiM0MzsJCQk6ICYjMzQ7PSZhbXA7ciYjMzQ7KG9sZCksICYjMzQ7PSZhbXA7ciYjMzQ7KG5ldyksICYjMzQ7JiM0MztBJiMzNDsoKnB0cjMyKSwgJiMzNDs9JmFtcDtyJiMzNDsoZmllbGQpCQkJXAomIzQzOwkJCTogJiMzNDtyJiMzNDsobWFzayksICYjMzQ7ciYjMzQ7KHNoaWZ0KSwgJiMzNDtyJiMzNDsodmFsX3RydW5jKSwgJiMzNDtyJiMzNDsofm1hc2spLAkJCVwKJiM0MzsJCQkgICYjMzQ7ciYjMzQ7KFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkJCQkJCQlcCiYjNDM7CQkJOiAmIzM0O21lbW9yeSYjMzQ7KTsJCQkJCQkJCVwKJiM0MzsJCX0JCQkJCQkJCQkJXAomIzQzO30KJiM0MzsKJiM0MzsjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcCkJCQlcCiYjNDM7CVBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCA4LCAuYiwgdTgsIGV4cHIsIGZpbmFsX29wKTsJCVwKJiM0MzsJUEVSQ1BVXzhfMTZfT1Aob3BfbmFtZSwgb3AsIDE2LCAuaCwgdTE2LCBleHByLCBmaW5hbF9vcCkKJiM0MzsKJiM0MztQRVJDUFVfT1BfOF8xNihhZGQsIGFkZCwgdmFsLCBhZGQpCiYjNDM7UEVSQ1BVX09QXzhfMTYoYW5kLCBhbmQsIHZhbCwgYW5kKQomIzQzO1BFUkNQVV9PUF84XzE2KG9yLCBvciwgdmFsLCBvcikKJiM0MzsKJiM0MzsjZGVmaW5lIFBFUkNQVV84XzE2X1JFVF9PUChuYW1lLCBhbW9faW5zbiwgc3osIHNmeCwgdmFsX3R5cGUsIG5ld192YWxfZXhwcikJCQlcCiYjNDM7c3RhdGljIGlubGluZSB2YWxfdHlwZSBfX3BlcmNwdV8jI25hbWUjI19yZXR1cm5fYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKQlcCiYjNDM7ewkJCQkJCQkJCQkJCVwKJiM0MzsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9aQUJIQSkgJmFtcDsmYW1wOwkJCQkJCVwKJiM0MzsJCXJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHsJCQkJXAomIzQzOwkJcmVnaXN0ZXIgdmFsX3R5cGUgcmV0OwkJCQkJCQkJXAomIzQzOwkJYXNtIHZvbGF0aWxlICgmIzM0O2FtbyYjMzQ7ICNhbW9faW5zbiAjc2Z4ICYjMzQ7ICVbcmV0XSwgJVt2YWxdLCAlW3B0cl0mIzM0OwkJCVwKJiM0MzsJCQk6IFtwdHJdICYjMzQ7JiM0MztBJiMzNDsoKih2YWxfdHlwZSAqKXB0ciksIFtyZXRdICYjMzQ7PXImIzM0OyhyZXQpCQkJCVwKJiM0MzsJCQk6IFt2YWxdICYjMzQ7ciYjMzQ7KCh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgJmFtcDsgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKSkJXAomIzQzOwkJCTogJiMzNDttZW1vcnkmIzM0Oyk7CQkJCQkJCQlcCiYjNDM7CQlyZXR1cm4gcmV0ICYjNDM7ICh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgJmFtcDsgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKTsJCVwKJiM0MzsJfSBlbHNlIHsJCQkJCQkJCQkJXAomIzQzOwkJdTMyICpwdHIzMiA9IFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpOwkJCQkJXAomIzQzOwkJY29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpOwkJCQlcCiYjNDM7CQljb25zdCB1MzIgbWFzayA9IChQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikgJmx0OyZsdDsgc2hpZnQpOwkJCQlcCiYjNDM7CQljb25zdCB1MzIgaW52X21hc2sgPSB+bWFzazsJCQkJCQkJXAomIzQzOwkJY29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKQkJCQlcCiYjNDM7CQkJCQkgICAmYW1wOyBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpOwkJCQlcCiYjNDM7CQl1MzIgb2xkLCBuZXcsIGZpZWxkOwkJCQkJCQkJXAomIzQzOwkJCQkJCQkJCQkJCVwKJiM0MzsJCWFzbSB2b2xhdGlsZSAoCQkJCQkJCQkJXAomIzQzOwkJCSYjMzQ7MDogbHIudyAlMCwgJTNcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O2FuZCAlMSwgJTAsICU0XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtzcmwgJTEsICUxLCAlNVxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7YWRkICUxLCAlMSwgJTZcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O2FuZCAlMSwgJTEsICU3XG4mIzM0OwkJCQkJCQlcCiYjNDM7CQkJJiMzNDtzbGwgJTEsICUxLCAlNVxuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7YW5kICUyLCAlMCwgJThcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O29yICUyLCAlMiwgJTFcbiYjMzQ7CQkJCQkJCVwKJiM0MzsJCQkmIzM0O3NjLncgJTIsICUyLCAlM1xuJiMzNDsJCQkJCQkJXAomIzQzOwkJCSYjMzQ7Ym5leiAlMiwgMGJcbiYjMzQ7CQkJCQkJCQlcCiYjNDM7CQkJOiAmIzM0Oz0mYW1wO3ImIzM0OyhvbGQpLCAmIzM0Oz0mYW1wO3ImIzM0OyhmaWVsZCksICYjMzQ7PSZhbXA7ciYjMzQ7KG5ldyksICYjMzQ7JiM0MztBJiMzNDsoKnB0cjMyKQkJCVwKJiM0MzsJCQk6ICYjMzQ7ciYjMzQ7KG1hc2spLCAmIzM0O3ImIzM0OyhzaGlmdCksICYjMzQ7ciYjMzQ7KHZhbF90cnVuYyksICYjMzQ7ciYjMzQ7KFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSksIFwKJiM0MzsJCQkmIzM0O3ImIzM0OyhpbnZfbWFzaykJCQkJCQkJCVwKJiM0MzsJCQk6ICYjMzQ7bWVtb3J5JiMzNDspOwkJCQkJCQkJXAomIzQzOwkJcmV0dXJuICh2YWxfdHlwZSkoZmllbGQgJmd0OyZndDsgc2hpZnQpOwkJCQkJCVwKJiM0MzsJfQkJCQkJCQkJCQkJXAomIzQzO30KJiM0MzsKJiM0MztQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDgsIC5iLCB1OCwgdmFsKQomIzQzO1BFUkNQVV84XzE2X1JFVF9PUChhZGQsIGFkZCwgMTYsIC5oLCB1MTYsIHZhbCkKJiM0MzsKJiM0MzsjZGVmaW5lIF9wY3BfcHJvdGVjdChvcCwgcGNwLCAuLi4pCQkJCQlcCiYjNDM7KHsJCQkJCQkJCQlcCiYjNDM7CXByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CW9wKHJhd19jcHVfcHRyKCZhbXA7KHBjcCkpLCBfX1ZBX0FSR1NfXyk7CQkJCVwKJiM0MzsJcHJlZW1wdF9lbmFibGVfbm90cmFjZSgpOwkJCQkJXAomIzQzO30pCiYjNDM7CiYjNDM7I2RlZmluZSBfcGNwX3Byb3RlY3RfcmV0dXJuKG9wLCBwY3AsIGFyZ3MuLi4pCQkJCVwKJiM0MzsoewkJCQkJCQkJCVwKJiM0MzsJdHlwZW9mKHBjcCkgX19yZXR2YWw7CQkJCQkJXAomIzQzOwlwcmVlbXB0X2Rpc2FibGVfbm90cmFjZSgpOwkJCQkJXAomIzQzOwlfX3JldHZhbCA9ICh0eXBlb2YocGNwKSlvcChyYXdfY3B1X3B0cigmYW1wOyhwY3ApKSwgIyNhcmdzKTsJXAomIzQzOwlwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CV9fcmV0dmFsOwkJCQkJCQlcCiYjNDM7fSkKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMShwY3ApCQlfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfOCwgcGNwKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfcmVhZF8yKHBjcCkJCV9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8xNiwgcGNwKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfcmVhZF80KHBjcCkJCV9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8zMiwgcGNwKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3JlYWRfOChwY3ApCQlfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfNjQsIHBjcCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzEocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV84LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzIocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV8xNiwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpCiYjNDM7I2RlZmluZSB0aGlzX2NwdV93cml0ZV80KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfMzIsIHBjcCwgKHVuc2lnbmVkIGxvbmcpdmFsKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzgocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV82NCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfMShwY3AsIHZhbCkJX3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV84LCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF8yKHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzE2LCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FkZF80KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzMyLCBwY3AsIHZhbCkKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfOChwY3AsIHZhbCkJX3BjcF9wcm90ZWN0KF9fcGVyY3B1X2FkZF9hbW9fY2FzZV82NCwgcGNwLCB2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzEocGNwLCB2YWwpCQlcCiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzgsIHBjcCwgdmFsKQomIzQzOwomIzQzOyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl8yKHBjcCwgdmFsKQkJXAomIzQzO19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV8xNiwgcGNwLCB2YWwpCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzQocGNwLCB2YWwpCQlcCiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzMyLCBwY3AsIHZhbCkKJiM0MzsKJiM0MzsjaWZkZWYgQ09ORklHXzY0QklUCiYjNDM7I2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzgocGNwLCB2YWwpCQlcCiYjNDM7X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzY0LCBwY3AsIHZhbCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FuZF8xKHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzgsIHBjcCwgdmFsKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfYW5kXzIocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfYW5kXzQocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2FuZF84KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzY0LCBwY3AsIHZhbCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzEocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV84LCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzIocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV8xNiwgcGNwLCB2YWwpCiYjNDM7I2RlZmluZSB0aGlzX2NwdV9vcl80KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKQomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfNjRCSVQKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X29yXzgocGNwLCB2YWwpCV9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV94Y2hnXzEocGNwLCB2YWwpCV9wY3BfcHJvdGVjdF9yZXR1cm4oeGNoZ19yZWxheGVkLCBwY3AsIHZhbCkKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X3hjaGdfMihwY3AsIHZhbCkJX3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ180KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpCiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR182NEJJVAomIzQzOyNkZWZpbmUgdGhpc19jcHVfeGNoZ184KHBjcCwgdmFsKQlfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnXzEocGNwLCBvLCBuKQlfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKQomIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18yKHBjcCwgbywgbikJX3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbikKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfNChwY3AsIG8sIG4pCV9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pCiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR182NEJJVAomIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ184KHBjcCwgbywgbikJX3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbikKJiM0MzsKJiM0MzsjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGc2NChwY3AsIG8sIG4pCXRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2lmZGVmIHN5c3RlbV9oYXNfY21weGNoZzEyOAomIzQzOyNkZWZpbmUgdGhpc19jcHVfY21weGNoZzEyOChwY3AsIG8sIG4pCQkJCQlcCiYjNDM7KHsJCQkJCQkJCQlcCiYjNDM7CXUxMjggcmV0X187CQkJCQkJCVwKJiM0MzsJdHlwZW9mKHBjcCkgKnB0cl9fOwkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7CXByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CXB0cl9fID0gcmF3X2NwdV9wdHIoJmFtcDsocGNwKSk7CQkJCQlcCiYjNDM7CWlmIChzeXN0ZW1faGFzX2NtcHhjaGcxMjgoKSkJCQkJCVwKJiM0MzsJCXJldF9fID0gY21weGNoZzEyOF9sb2NhbChwdHJfXywgKG8pLCAobikpOwkJXAomIzQzOwllbHNlCQkJCQkJCQlcCiYjNDM7CQlyZXRfXyA9IHRoaXNfY3B1X2dlbmVyaWNfY21weGNoZyhwY3AsIChvKSwgKG4pKTsJXAomIzQzOwlwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7CQkJCQlcCiYjNDM7CXJldF9fOwkJCQkJCQkJXAomIzQzO30pCiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7I2RlZmluZSBfX215X2NwdV9vZmZzZXQgKCgoc3RydWN0IHRocmVhZF9pbmZvICopY3VycmVudCktJmd0O3BjcHVfb2Zmc2V0KQomIzQzOwomIzQzOyN1bmRlZiBQRVJDUFVfUldfT1BTCiYjNDM7I3VuZGVmIF9fUEVSQ1BVX0FNT19PUF9DQVNFCiYjNDM7I3VuZGVmIFBFUkNQVV9PUAomIzQzOyN1bmRlZiBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UKJiM0MzsjdW5kZWYgUEVSQ1BVX1JFVF9PUAomIzQzOyN1bmRlZiBQRVJDUFVfOF8xNl9HRVRfU0hJRlQKJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX01BU0sKJiM0MzsjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX1BUUjMyCiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X09QCiYjNDM7I3VuZGVmIFBFUkNQVV9PUF84XzE2CiYjNDM7I3VuZGVmIFBFUkNQVV84XzE2X1JFVF9PUAomIzQzOwomIzQzOyNpbmNsdWRlICZsdDthc20tZ2VuZXJpYy9wZXJjcHUuaCZndDsKJiM0MzsKJiM0MzsjZW5kaWYgLyogX19BU01fUEVSQ1BVX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oCmluZGV4IDBlNzFlYjgyZjkyMGNhLi43MzNiNmNkMzA2ZTQwZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oCkBAIC04OCw2ICYjNDM7ODgsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX2VudmNmZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiAJCQk6OiAmIzM0O3ImIzM0OyAobmV4dC0mZ3Q7dGhyZWFkLmVudmNmZykgOiAmIzM0O21lbW9yeSYjMzQ7KTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRjaF90b19wY3B1X29mZnNldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpCiYjNDM7ewomIzQzOyNpZmRlZiBDT05GSUdfU01QCiYjNDM7CW5leHQtJmd0O3RocmVhZF9pbmZvLnBjcHVfb2Zmc2V0ID0gX19teV9jcHVfb2Zmc2V0OwomIzQzOyNlbmRpZgomIzQzO30KJiM0MzsKIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqLAogCQkJCSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CiAKQEAgLTEyMiw2ICYjNDM7MTI5LDcgQEAgZG8gewkJCQkJCQlcCiAJaWYgKHN3aXRjaF90b19zaG91bGRfZmx1c2hfaWNhY2hlKF9fbmV4dCkpCVwKIAkJbG9jYWxfZmx1c2hfaWNhY2hlX2FsbCgpOwkJXAogCV9fc3dpdGNoX3RvX2VudmNmZyhfX25leHQpOwkJCVwKJiM0MzsJX19zd2l0Y2hfdG9fcGNwdV9vZmZzZXQoX19uZXh0KTsJCVwKIAkoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTsJCVwKIH0gd2hpbGUgKDApCiAKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAppbmRleCA1NTAxOWZkZmE5ZWNhYS4uZjEwYmE2MmI2MTAxNjQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgKQEAgLTUzLDYgJiM0Mzs1Myw3IEBACiBzdHJ1Y3QgdGhyZWFkX2luZm8gewogCXVuc2lnbmVkIGxvbmcJCWZsYWdzOwkJLyogbG93IGxldmVsIGZsYWdzICovCiAJaW50ICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdF9jb3VudDsgIC8qIDA9Jmd0O3ByZWVtcHRpYmxlLCAmbHQ7MD0mZ3Q7QlVHICovCiYjNDM7CWludAkJCWNwdTsKIAkvKgogCSAqIFRoZXNlIHN0YWNrIHBvaW50ZXJzIGFyZSBvdmVyd3JpdHRlbiBvbiBldmVyeSBzeXN0ZW0gY2FsbCBvcgogCSAqIGV4Y2VwdGlvbi4gIFNQIGlzIGFsc28gc2F2ZWQgdG8gdGhlIHN0YWNrIGl0IGNhbiBiZSByZWNvdmVyZWQgd2hlbgpAQCAtNjAsOCAmIzQzOzYxLDggQEAgc3RydWN0IHRocmVhZF9pbmZvIHsKIAkgKi8KIAlsb25nCQkJa2VybmVsX3NwOwkvKiBLZXJuZWwgc3RhY2sgcG9pbnRlciAqLwogCWxvbmcJCQl1c2VyX3NwOwkvKiBVc2VyIHN0YWNrIHBvaW50ZXIgKi8KLQlpbnQJCQljcHU7CiAJdW5zaWduZWQgbG9uZwkJc3lzY2FsbF93b3JrOwkvKiBTWVNDQUxMX1dPUktfIGZsYWdzICovCiYjNDM7CXVuc2lnbmVkIGxvbmcJCXBjcHVfb2Zmc2V0OwogI2lmZGVmIENPTkZJR19TSEFET1dfQ0FMTF9TVEFDSwogCXZvaWQJCQkqc2NzX2Jhc2U7CiAJdm9pZAkJCSpzY3Nfc3A7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCBhNzVmMGNmZWExZTlmYS4uMjBkNDZjMjhmZGRlOTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYwpAQCAtMzgsNiAmIzQzOzM4LDcgQEAgdm9pZCBhc21fb2Zmc2V0cyh2b2lkKQogCU9GRlNFVChUQVNLX1RIUkVBRF9TVU0sIHRhc2tfc3RydWN0LCB0aHJlYWQuc3VtKTsKIAogCU9GRlNFVChUQVNLX1RJX0NQVSwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmNwdSk7CiYjNDM7CU9GRlNFVChUQVNLX1RJX1BDUFVfT0ZGU0VULCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8ucGNwdV9vZmZzZXQpOwogCU9GRlNFVChUQVNLX1RJX1BSRUVNUFRfQ09VTlQsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5wcmVlbXB0X2NvdW50KTsKIAlPRkZTRVQoVEFTS19USV9LRVJORUxfU1AsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5rZXJuZWxfc3ApOwogCU9GRlNFVChUQVNLX1RJX1VTRVJfU1AsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby51c2VyX3NwKTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYwppbmRleCBmNmVmNTc5MzBiNTBhOC4uNzg3Njg1NGQxNjI3OTAgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmMKQEAgLTE5MSw2ICYjNDM7MTkxLDcgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpCiB7CiAJaW50IHJldDsKIAl0aWRsZS0mZ3Q7dGhyZWFkX2luZm8uY3B1ID0gY3B1OwomIzQzOwl0aWRsZS0mZ3Q7dGhyZWFkX2luZm8ucGNwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChjcHUpOwogCiAJcmV0ID0gc3RhcnRfc2Vjb25kYXJ5X2NwdShjcHUsIHRpZGxlKTsKIAlpZiAoIXJldCkgewpAQCAtMjA4LDYgJiM0MzsyMDksMTEgQEAgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpCiB9CiAjZW5kaWYKIAomIzQzO3ZvaWQgX19pbml0IHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpCiYjNDM7ewomIzQzOwlfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpOwomIzQzO30KJiM0MzsKIHZvaWQgX19pbml0IHNtcF9jcHVzX2RvbmUodW5zaWduZWQgaW50IG1heF9jcHVzKQogewogfQpAQCAtMjMzLDYgJiM0MzsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZCkKIAltbWdyYWIobW0pOwogCWN1cnJlbnQtJmd0O2FjdGl2ZV9tbSA9IG1tOwogCiYjNDM7CV9fbXlfY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSk7CiYjNDM7CiAjaWZkZWYgQ09ORklHX0hPVFBMVUdfUEFSQUxMRUwKIAljcHVocF9hcF9zeW5jX2FsaXZlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCmluZGV4IGMwM2MxZGUxNmI3OWFjLi5lYWI5M2Q1MjU4ZTllNCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jCkBAIC0xMzk1LDE1ICYjNDM7MTM5NSw4IEBAIGludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LAogCQkJaWYgKHJkICE9IHJzKQogCQkJCWVtaXRfbXYocmQsIHJzLCBjdHgpOwogI2lmZGVmIENPTkZJR19TTVAKLQkJCS8qIExvYWQgY3VycmVudCBDUFUgbnVtYmVyIGluIFQxICovCi0JCQllbWl0X2x3KFJWX1JFR19UMSwgb2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBjcHUpLAomIzQzOwkJCWVtaXRfbGQoUlZfUkVHX1QxLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIHBjcHVfb2Zmc2V0KSwKIAkJCQlSVl9SRUdfVFAsIGN0eCk7Ci0JCQkvKiBMb2FkIGFkZHJlc3Mgb2YgX19wZXJfY3B1X29mZnNldCBhcnJheSBpbiBUMiAqLwotCQkJZW1pdF9hZGRyKFJWX1JFR19UMiwgKHU2NCkmYW1wO19fcGVyX2NwdV9vZmZzZXQsIGV4dHJhX3Bhc3MsIGN0eCk7Ci0JCQkvKiBHZXQgYWRkcmVzcyBvZiBfX3Blcl9jcHVfb2Zmc2V0W2NwdV0gaW4gVDEgKi8KLQkJCWVtaXRfc2gzYWRkKFJWX1JFR19UMSwgUlZfUkVHX1QxLCBSVl9SRUdfVDIsIGN0eCk7Ci0JCQkvKiBMb2FkIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqLwotCQkJZW1pdF9sZChSVl9SRUdfVDEsIDAsIFJWX1JFR19UMSwgY3R4KTsKIAkJCS8qIEFkZCB0aGUgb2Zmc2V0IHRvIFJkICovCiAJCQllbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTk3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgLSBSSVNDLVYgUGVyLUNQVSBPZmZzZXQgT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyB0YXJnZXRpbmcgUklTQy1WLCBhbmQgaXQmIzM5O3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gaG93IHdlIGhhbmRsZSBwZXItQ1BVIG9mZnNldHMuIEZpcnN0IG9mZiwgdGhlcmUmIzM5O3MgYSBuZXcgYGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhgIGZpbGUsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2Qgc2lnbi4gSXQgc2VlbXMgdG8gaW1wbGVtZW50IG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMsIHdoaWNoIGxpa2VseSBpbnZvbHZlIGF0b21pYyBtZW1vcnkgb3BlcmF0aW9ucyAoQU1PcykuIFRoZXkmIzM5O3JlIGludHJvZHVjaW5nIGBUQVNLX1RJX1BDUFVfT0ZGU0VUKHRwKWAgdG8gcmVwbGFjZSB0aGUgb2xkZXIsIGxlc3MgZWZmaWNpZW50IGBUQVNLX1RJX0NQVV9OVU0odHApYC1iYXNlZCBsb29rdXBzLiBUaGlzIGxvb2tzIHRvIHVwZGF0ZSBgc3RydWN0IHRocmVhZF9pbmZvYCB0byBpbmNsdWRlIGBwY3B1X29mZnNldGAsIGFuZCB0aGVuIGBfX3N3aXRjaF90b19wY3B1X29mZnNldGAgYW5kIG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBUaGUgQlBGIEpJVCBpcyBhbHNvIGJlaW5nIHVwZGF0ZWQgdG8gdXNlIGBwY3B1X29mZnNldGAgaW5zdGVhZCBvZiB0aGUgb2xkIG1ldGhvZC4gSXQgYWxzbyBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgY29uZGl0aW9uYWwgYCNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVGAgYmxvY2sgYXJvdW5kIHNvbWUgSS9PIG9wZXJhdGlvbnMuCgpUaGUgcGVyLWNwdSBvcGVyYXRpb25zIHRoZW1zZWx2ZXMgbG9vayBxdWl0ZSBpbnZvbHZlZCwgZW1wbG95aW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIGEgZmFsbGJhY2sgdXNpbmcgYGxyLndgL2BzYy53YCBmb3Igc21hbGxlciBzaXplcyBpZiBaQUJIQSBpc24mIzM5O3QgYXZhaWxhYmxlLiBUaGlzIGlzIGltcG9ydGFudDogWkFCSEEgaXMgYW4gb3B0aW9uYWwgUklTQy1WIGV4dGVuc2lvbi4gSXQgbWFrZXMgbWUgd29uZGVyIGlmIHRoaXMgaXMgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6PyBBYnNvbHV0ZWx5LiBUaGlzIHRvdWNoZXMgY29yZSBhcmNoaXRlY3R1cmUgbG9naWMg4oCTIHBlci1jcHUgb3BlcmF0aW9ucyDigJMgYW5kIGFsc28gdGhlIEJQRiBKSVQsIHdoaWNoIGlzIGFscmVhZHkgYSBmdXp6aW5nIHRhcmdldC4KCkJ1dCwgaXMgdGhpcyByZWFjaGFibGU/IFRoZSBrZXkgaGVyZSBpcywgdGhpcyBpcyBSSVNDLVYgc3BlY2lmaWMuIENhbiB3ZSBmdXp6IFJJU0MtVj8gWWVzLCBzeXprYWxsZXIgc3VwcG9ydHMgUklTQy1WLCBzbyB0aGF0JiMzOTtzIGEgY2hlY2suIFRoZSBwcm9tcHQgZ2l2ZXMgdXMgdGhlIHVzdWFsIGNhdmVhdCBhYm91dCBiZWluZyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gQnV0LCB3YWl0Li4uIHdlICpjYW4qIHJ1biBSSVNDLVYgaW4gUUVNVSwgc28gdGhhdCBzaG91bGRuJiMzOTt0IGJlIGEgcHJvYmxlbS4gVGhpcyAqZG9lcyogbWFrZSBmdW5jdGlvbmFsIGNoYW5nZXMuIEl0IG1vZGlmaWVzIGhvdyBwZXItY3B1IHZhcmlhYmxlcyBhcmUgYWNjZXNzZWQgYW5kIG1vZGlmaWVkIG9uIFJJU0MtVi4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIHBvc2l0aXZlIHNpZ25hbC4KCkRpdmluZyBkZWVwZXIsIHRoZSBCUEYgSklUIGNoYW5nZXMgbG9vayBkaXJlY3RseSByZWFjaGFibGUgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHdpdGhpbiBgYnBmX2ppdF9lbWl0X2luc25gLiBUaGVzZSBhcmUgZGVmaW5pdGVseSByZWFjaGFibGUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfUklTQ1ZfSVNBX1pBQkhBYCwgYENPTkZJR19IQVNfSU9QT1JUYCwgYW5kIGBDT05GSUdfU01QYCBhcmUgdXNlZC4KClNvLCBvdmVyYWxsLCB0aGlzIGlzIGEgY2xlYXIgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSSVNDVl9JU0FfWkFCSEEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9LY29uZmlnPTY3Nj1jb25maWcgVE9PTENIQUlOX0hBU19aQUJIQVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy02ODItXG5hcmNoL3Jpc2N2L0tjb25maWc6NjgzOmNvbmZpZyBSSVNDVl9JU0FfWkFCSEFcbmFyY2gvcmlzY3YvS2NvbmZpZy02ODQtXHRib29sIFwmIzM0O1phYmhhIGV4dGVuc2lvbiBzdXBwb3J0IGZvciBhdG9taWMgYnl0ZS9oYWxmd29yZCBvcGVyYXRpb25zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgdGhlIHN5c3RlbSYjMzk7cyB0ZWxsaW5nIG1lIGBSSVNDVl9JU0FfWkFCSEFgIGlzIGEgbGVnaXRpbWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gQWxyaWdodCwgdGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQWgsIHllcywgdGhlIGBDT05GSUdfQlBGX0pJVGAgZm9yIHRob3NlIEJQRiBtb2RpZmljYXRpb25zLiBUaGF0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSBrZXkuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jYCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uIHdpdGggcmVzcGVjdCB0byBCUEYgSklUIGNvbXBpbGF0aW9uIGZvciA2NC1iaXQgUklTQy1WLiBUaGF0IGZpbGUgc2hvdWxkIGNvbnRhaW4gaW1wb3J0YW50IGRldGFpbHMgcmVsYXRlZCB0byB0aGlzIGludGVyc2VjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzNjUKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBPcHRpbWl6YXRpb24gVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiB3aGVyZSB3ZSBjYW4gbWFrZSBhIGRpZmZlcmVuY2UuIFRoZSBpbml0aWFsIG1vZGlmaWNhdGlvbiBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIGBicGZfaml0X2VtaXRfaW5zbmAgZnVuY3Rpb24sIGJ1dCB0aGF0JiMzOTtzIGEgcHJldHR5IGJyb2FkIGVudHJ5IHBvaW50LiBUaGlua2luZyBhYm91dCB3aGVyZSB0aGlzIGlzIGxpa2VseSAqdXNlZCogbW9zdCwgYGJwZl9pbnRfaml0X2NvbXBpbGVgIG1pZ2h0IGJlIG1vcmUgc3BlY2lmaWMgdG8gb3VyIGltbWVkaWF0ZSBjb25jZXJuLgoKV2FpdCwgaG9sZCBvbiwgcGVyY3B1IG9wZXJhdGlvbnMgb24gUklTQy1WIGFyZSBpbmxpbmUsIGRlZmluZWQgaW4gYGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhgLiBBbmQgdGhleSYjMzk7cmUgKmV2ZXJ5d2hlcmUqLiBUaGF0IG1ha2VzIG1lIHRoaW5rIGFib3V0IGNhbGxzIGxpa2UgYF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0YCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgX19zd2l0Y2hfdG9gIGFuZCB0aGF0IGlzIGEgbWFqb3IgaG90IHBhdGguIFRoYXQgbG9va3MgcHJvbWlzaW5nLgoKVGhlbiBhZ2FpbiwgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBhcmUgYWxsIGJvb3QvaG90cGx1ZyByZWxhdGVkLCB3aGljaCBjb3VsZCBhbHNvIGJlIHJlbGV2YW50IGluIGEgZGlmZmVyZW50IGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlc2UgZm9yIG90aGVyIGludmVzdGlnYXRpb25zLgoKQWxyaWdodCwgYmFjayB0byB0aGUgQlBGIEpJVCBjaGFuZ2VzIGFuZCBgYnBmX2ppdF9lbWl0X2luc25gLiBJIHNob3VsZCBjaGVjayBgYnBmX2ludF9qaXRfY29tcGlsZWAgYXMgd2VsbC4gUGVyaGFwcyBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gaG93IGl0JiMzOTtzIHVzZWQgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGNvdWxkIGJlIGEgYmV0dGVyIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTM5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkZpbmRpbmcgdGhlIEJQRiBKSVQgRW50cnkgUG9pbnQgaW4gUklTQy1WKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoZSBCUEYgSklUIGNvZGUga2lja3Mgb2ZmIGluIGEgUklTQy1WIGNvbnRleHQuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGEgc3RyYWlnaHRmb3J3YXJkIGh1bnQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgd2hlcmUgdGhlIEJQRiB2ZXJpZmllciBpbnRlcmFjdHMgd2l0aCB0aGUgaW5zdHJ1Y3Rpb24gZ2VuZXJhdGlvbi4gSSBrbm93IHRoZSBnZW5lcmFsIGFyY2hpdGVjdHVyZSwgYnV0IEkgbmVlZCB0byBnZXQgZG93biBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIFJJU0MtViBpbXBsZW1lbnRhdGlvbi4KCkZpcnN0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgb2J2aW91cyBwbGFjZXM6IGtlcm5lbCBzb3VyY2UuIEkmIzM5O2xsIGxpa2VseSBuZWVkIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIEJQRiBzdWJzeXN0ZW0sIGxvb2tpbmcgZm9yIFJJU0MtViBzcGVjaWZpYyBmaWxlcyBvciBmdW5jdGlvbiBjYWxscy4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgY29yZSBCUEYgSklUIGZpbGVzIGFuZCB0aGVuIGZpbHRlciBieSBhbnkgUklTQy1WIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBvbmVzLgoKSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBrZXl3b3JkcyBsaWtlICYjMzQ7SklULCYjMzQ7ICYjMzQ7UklTQ1YsJiMzNDsgJiMzNDtpbnN0cnVjdGlvbiwmIzM0OyAmIzM0O2dlbmVyYXRpb24sJiMzNDsgJiMzNDtlbWl0LCYjMzQ7IG9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gY29kZSBnZW5lcmF0aW9uIG9yIG1hY2hpbmUgY29kZSB0cmFuc2xhdGlvbi4gSSBleHBlY3QgdG8gYmUgZGlnZ2luZyBhcm91bmQgaW4gdGhlIHBhcnRzIG9mIHRoZSBjb2RlIHRoYXQgaGFuZGxlIHRoZSBpbnN0cnVjdGlvbiBzZXQgYXJjaGl0ZWN0dXJlLCBvciBJU0EsIHRyYW5zbGF0aW9uLiBJIGJldCB0aGVyZSYjMzk7cyBhIHN0cnVjdHVyZSBvciBhIHNlcmllcyBvZiBmdW5jdGlvbnMgdGhhdCBtYXAgQlBGIGluc3RydWN0aW9ucyB0byBSSVNDLVYgaW5zdHJ1Y3Rpb25zLiBUaGF0IGlzIHByb2JhYmx5IHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcy4KCkkgd2lsbCBoYXZlIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIG1haWxpbmcgbGlzdHMgdG9vLCBqdXN0IGluIGNhc2UgdGhpcyBlbnRyeSBwb2ludCBpcyBkb2N1bWVudGVkIHNvbWV3aGVyZS4gVGhpcyBpcyBhIHRhc2sgdGhhdCYjMzk7bGwgcmVxdWlyZSBhIG1ldGhvZGljYWwgYXBwcm9hY2guIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfY29tcGlsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjMzNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBSSVNDLVYgQlBGIEpJVCBDb21waWxlcioqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCBzbyBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBvdXQgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIEpJVCBjb21waWxhdGlvbiBmdW5jdGlvbnMgdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciB0aGluZ3MgbGlrZSB0aGUgY29kZSBnZW5lcmF0aW9uIHJvdXRpbmVzLCB0aGUgcmVnaXN0ZXIgYWxsb2NhdGlvbiBsb2dpYyAoaWYgaXQmIzM5O3Mgbm90IGhhbmRsZWQgYnkgdGhlIGJhY2tlbmQpLCBhbmQgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgdHJhbnNsYXRlcyB0aGUgQlBGIGJ5dGVjb2RlIGludG8gUklTQy1WIG1hY2hpbmUgY29kZSwgY29uc2lkZXJpbmcgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUmIzM5O3MgaW5zdHJ1Y3Rpb24gc2V0LCByZWdpc3RlciBjb25zdHJhaW50cywgYW5kIHBvdGVudGlhbCBBQkkgY29uc2lkZXJhdGlvbnMgZm9yIGtlcm5lbC1sZXZlbCBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb24gbmFtZXMgYW5kIHRoZWlyIHNpZ25hdHVyZXMgdG8gaWRlbnRpZnkgdGhlIGtleSBjb21wb25lbnRzLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGRyaWxsIGRvd24gaW50byB0aGUgbW9zdCByZWxldmFudCBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGl0cyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0cnVjdCBicGZfcHJvZyBcXCpicGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jPTM5PWJvb2wgYnBmX2ppdF9uZWVkc196ZXh0KHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDMtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYzo0NDpzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDUte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc2NwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBtZW50YWwgZ2VhcnMgYXJlIHR1cm5pbmcuLi4KCioqVHJhY2tpbmcgRG93biB0aGUgQlBGIEpJVCBDb21waWxhdGlvbiBQYXRoKioKCkFscmlnaHQsIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGZvciB0aGUgQlBGIEpJVC4gSSBrbm93IGBicGZfaW50X2ppdF9jb21waWxlYCByZXNpZGVzIHdpdGhpbiBgYnBmX2ppdF9jb3JlLmNgIOKAkyB0aGF0JiMzOTtzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBrZXkgZnVuY3Rpb24gaW52b2x2ZWQgaW4gZW1pdHRpbmcgaW5zdHJ1Y3Rpb25zIGFwcGVhcnMgdG8gYmUgYGJwZl9qaXRfZW1pdF9pbnNuYC4gSSBiZWxpZXZlIHRoYXQgdGhlIG1vZGlmaWVkIGBicGZfaml0X2VtaXRfaW5zbmAgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW4gdGhlIGBicGZfaml0X2NvbXA2NC5jYCBmaWxlLiBSaWdodCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBMZXQgbWUgY29uZmlybSB0aGF0IGJ5IG5vdyBsb29raW5nIGRpcmVjdGx5IGF0IGBicGZfaml0X2VtaXRfaW5zbmAgbG9jYXRlZCBpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgdG8gc2VlIGhvdyBpdCBzcGVjaWZpY2FsbHkgaGFuZGxlcyB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2ppdF9lbWl0X2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTMzMj1pbnQgYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLCB2b2lkICpyb19pbWFnZSxcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjgtXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEzNjk6aW50IGJwZl9qaXRfZW1pdF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IHJ2X2ppdF9jb250ZXh0ICpjdHgsXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNzAtXHRcdCAgICAgIGJvb2wgZXh0cmFfcGFzcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNzYKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gQlBGIEpJVCBDb21waWxhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIGRpcmVjdCBteSBhdHRlbnRpb24gZm9yIHRoaXMgQlBGIHdvcmsuIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZW1pdF9pbnNuYCBzZWVtIGxpa2UgZ29vZCBjYW5kaWRhdGVzIHRvIHN0YXJ0IHdpdGguIGBicGZfaml0X2VtaXRfaW5zbmAgaXMgY2FsbGVkIGZvciAqZXZlcnkqIEJQRiBpbnN0cnVjdGlvbiBkdXJpbmcgSklUIGNvbXBpbGF0aW9uLCBzbyBpdCAqY291bGQqIGJlIGEgaG90IHNwb3QgZHVyaW5nIGNvbXBpbGF0aW9uLiBIb3dldmVyLCBKSVQgY29tcGlsYXRpb24gaXRzZWxmIGlzbiYjMzk7dCBhIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGjigJRpdCBvbmx5IGhhcHBlbnMgb25jZSB3aGVuIGEgcHJvZ3JhbSBpcyBsb2FkZWQuIFRoZXJlZm9yZSwgYm90aCBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBicGZfaml0X2VtaXRfaW5zbmAgYXJlIGRlZmluaXRlbHkgd29ydGggZXhwbG9yaW5nIGZ1cnRoZXIuCgpOb3csIHdoYXQgYWJvdXQgdGhvc2UgcGVyY3B1IGNoYW5nZXM/IFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCByaWdodD8gTWVhbmluZyB0aGV5IGFyZSBnb2luZyB0byBnZXQgZXhlcmNpc2VkIGJ5IGFueSBhbmQgYWxsIGNvZGUgdGhhdCB1c2VzIHBlcmNwdSB2YXJpYWJsZXMuIFNvIEkgcHJvYmFibHkgZG9uJiMzOTt0IG5lZWQgYSBzcGVjaWZpYyBmb2N1cyBzeW1ib2wgZm9yIHRob3NlLCBhcyB0aGUgdGVzdGluZyB3aWxsIGJlIGNvbXByZWhlbnNpdmUgYnkgZGVmYXVsdC4KCkJ1dCBob2xkIG9uLCB0aGlzIEJQRiBKSVQgY2hhbmdlIGlzIGxpa2VseSBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBgQlBGX0xEWCB8IEJQRl9QRVJDUFUgfCBCUEZfV2Agb3Igc2ltaWxhciBwZXJjcHUgaW5zdHJ1Y3Rpb25zLiBJIHNob3VsZCBjaGVjayB0aGUgY29udGV4dCBvZiBgYnBmX2ppdF9lbWl0X2luc25gIHdpdGhpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0IGluc3RydWN0aW9ucyBhcmUgYmVpbmcgbW9kaWZpZWQgdG8gZW5zdXJlIEkgY2FuIGJlc3QgdW5kZXJzdGFuZCB0aGUgZWZmZWN0cy4gVGhpcyBpcyB0aGUgcmlnaHQgd2F5IHRvIHByb2NlZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM4MDpcdFx0aW5pdF9yZWdzKFx1MDAyNnJkLCBcdTAwMjZycywgaW5zbiwgY3R4KTtcbjEzODE6XHRcbjEzODI6XHRcdHN3aXRjaCAoY29kZSkge1xuMTM4MzpcdFx0LyogZHN0ID0gc3JjICovXG4xMzg0Olx0XHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9WIHwgQlBGX1g6XG4xMzg1Olx0XHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcbjEzODY6XHRcdFx0aWYgKGluc25faXNfY2FzdF91c2VyKGluc24pKSB7XG4xMzg3Olx0XHRcdFx0ZW1pdF9tdihSVl9SRUdfVDEsIHJzLCBjdHgpO1xuMTM4ODpcdFx0XHRcdGVtaXRfemV4dHcoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIGN0eCk7XG4xMzg5Olx0XHRcdFx0ZW1pdF9pbW0ocmQsIChjdHgtXHUwMDNldXNlcl92bV9zdGFydCBcdTAwM2VcdTAwM2UgMzIpIFx1MDAzY1x1MDAzYyAzMiwgY3R4KTtcbjEzOTA6XHRcdFx0XHRlbWl0KHJ2X2JlcShSVl9SRUdfVDEsIFJWX1JFR19aRVJPLCA0KSwgY3R4KTtcbjEzOTE6XHRcdFx0XHRlbWl0X29yKFJWX1JFR19UMSwgcmQsIFJWX1JFR19UMSwgY3R4KTtcbjEzOTI6XHRcdFx0XHRlbWl0X212KHJkLCBSVl9SRUdfVDEsIGN0eCk7XG4xMzkzOlx0XHRcdFx0YnJlYWs7XG4xMzk0Olx0XHRcdH0gZWxzZSBpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcbjEzOTU6XHRcdFx0XHRpZiAocmQgIT0gcnMpXG4xMzk2Olx0XHRcdFx0XHRlbWl0X212KHJkLCBycywgY3R4KTtcbjEzOTc6XHQjaWZkZWYgQ09ORklHX1NNUFxuMTM5ODpcdFx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIHBjcHVfb2Zmc2V0KSxcbjEzOTk6XHRcdFx0XHRcdFJWX1JFR19UUCwgY3R4KTtcbjE0MDA6XHRcdFx0XHQvKiBBZGQgdGhlIG9mZnNldCB0byBSZCAqL1xuMTQwMTpcdFx0XHRcdGVtaXRfYWRkKHJkLCByZCwgUlZfUkVHX1QxLCBjdHgpO1xuMTQwMjpcdCNlbmRpZlxuMTQwMzpcdFx0XHR9XG4xNDA0Olx0XHRcdGlmIChpbW0gPT0gMSkge1xuMTQwNTpcdFx0XHRcdC8qIFNwZWNpYWwgbW92MzIgZm9yIHpleHQgKi9cbjE0MDY6XHRcdFx0XHRlbWl0X3pleHR3KHJkLCByZCwgY3R4KTtcbjE0MDc6XHRcdFx0XHRicmVhaztcbjE0MDg6XHRcdFx0fVxuMTQwOTpcdFx0XHRzd2l0Y2ggKGluc24tXHUwMDNlb2ZmKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDMyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQW5hbHlzaXMgb2YgdGhlIENvZGUmIzM5O3MgRnV6emluZyBTdHJhdGVneSoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSwgd2UmIzM5O3JlIGZvY3VzaW5nIG9uIGBpbnNuX2lzX21vdl9wZXJjcHVfYWRkcihpbnNuKWAuIFRoYXQgcmluZ3MgYSBiZWxsLCBpdCYjMzk7cyByZWxhdGVkIHRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGVyY3B1IHZhcmlhYmxlcyB3aGVuIHVzZWQgd2l0aGluIEJQRiBwcm9ncmFtcy4gVGhhdCYjMzk7cyBhIGdvb2QgbGVhZCBmb3Igb3VyIGZ1enppbmcgZWZmb3J0cyDigJMgdGFyZ2V0aW5nIEJQRiBwcm9ncmFtcyBtYWtlcyBwZXJmZWN0IHNlbnNlIHRvIGV4ZXJjaXNlIHRoaXMgZnVuY3Rpb24uIEkmIzM5O2xsIGFkZCBgYnBmX2ludF9qaXRfY29tcGlsZWAgdG8gYEZvY3VzU3ltYm9sc2AuIFRoYXQgc2hvdWxkIGhlbHAgdXMgaG9uZSBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy4KCk5vdywgSSYjMzk7bSBzcG90dGluZyBgQ09ORklHX1JJU0NWX0lTQV9aQUJIQWAuIFRoYXQmIzM5O3MgYSBSSVNDLVYgc3BlY2lmaWMgY29uZmlnLCBpc24mIzM5O3QgaXQ/IExldCYjMzk7cyBhZGQgdGhhdCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gZXhwYW5kIG91ciBjb3ZlcmFnZS4gQnV0LCBoYW5nIG9uLi4uIGlzIGBSSVNDVl9JU0FfWkFCSEFgIGFjdHVhbGx5ICphdmFpbGFibGUqIGluIHRoZSBrZXJuZWwgdmVyc2lvbiB3ZSYjMzk7cmUgY3VycmVudGx5IHRlc3Rpbmc/IFdlIG5lZWQgdG8gYmUgc3VyZS4gT2theSwgSSYjMzk7dmUgY2hlY2tlZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVmaW5lZCBpbiBgYXJjaC9yaXNjdi9LY29uZmlnYC4gRXhjZWxsZW50LiBBbHNvLCBJJiMzOTt2ZSBub3RpY2VkIGBIQVNfSU9QT1JUYCBiZWluZyB1c2VkIGluIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhgLiBMZXQmIzM5O3MgY29uZmlybSBgSEFTX0lPUE9SVGAgaXMgYSB2YWxpZCBjb25maWcgb3B0aW9uIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIHZhbGlkIGFuZCB3aWxsIHRyaWdnZXIgdGhlIGRlc2lyZWQgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhBU19JT1BPUlQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWc9Mzc1PWNvbmZpZyBIQVNfSU9NRU1cbi0tXG5saWIvS2NvbmZpZy0zNzktXG5saWIvS2NvbmZpZzozODA6Y29uZmlnIEhBU19JT1BPUlRcbmxpYi9LY29uZmlnLTM4MS1cdGJvb2xcbmxpYi9LY29uZmlnLTM4Mi1cbmxpYi9LY29uZmlnOjM4Mzpjb25maWcgSEFTX0lPUE9SVF9NQVBcbmxpYi9LY29uZmlnLTM4NC1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwNzYKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogNTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IFJJU0MtViBQZXItQ1BVIE9wZXJhdGlvbnMgYW5kIEJQRiBKSVQqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGBIQVNfSU9QT1JUYCBpcyBhIHZhbGlkIGNvbmZpZywgYnV0IGl0JiMzOTtzIGluZGlyZWN0bHkgc2VsZWN0ZWQg4oCTIG5vdCBzb21ldGhpbmcgd2UgY2FuIGRpcmVjdGx5IGVuYWJsZSBpbiBgbWVudWNvbmZpZ2AuIEl0JiMzOTtzIHR5cGljYWxseSBjaG9zZW4gYnkgYXJjaGl0ZWN0dXJlIG9yIGJ1cyBjb25maWdzLCBzbyBsaXN0aW5nIGl0IGRpcmVjdGx5IGlzIHByb2JhYmx5IG5vdCB0aGUgYmVzdCBhcHByb2FjaC4gIEhvd2V2ZXIsIHRoaXMgbGVkIG1lIHRvIHRoaW5rIGFib3V0IHdoYXQgKnNob3VsZCogYmUgbGlzdGVkLiAgYFJJU0NWX0lTQV9aQUJIQWAgYW5kIGBCUEZfSklUYCBhcmUgZGVmaW5pdGVseSB3b3J0aCBtZW50aW9uaW5nLiBgQlBGX0pJVGAgaXMgZ2VuZXJhbGx5IGVuYWJsZWQsIGJ1dCBpdCYjMzk7cyBnb29kIHRvIGJlIGV4cGxpY2l0LiBMaXN0aW5nIGBIQVNfSU9QT1JUYCBpc24mIzM5O3QgdmVyeSB1c2VmdWwsIGl0IGJlaW5nIGhpZGRlbi4KClRoZW4gSSBzYXcgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZTogdGhlIHBhdGNoIG1vZGlmaWVzIGBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BlcmNwdS5oYC4gSXQgaW1wbGVtZW50cyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIHVzaW5nIGBhbW9gIGluc3RydWN0aW9ucy4gICpUaGF0KiBpcyBhIHNpZ25pZmljYW50LCBmdW5kYW1lbnRhbCBjaGFuZ2UgZm9yIFJJU0MtVi4gIFRoaXMgaXMgYSBiaWcgZnVuY3Rpb25hbCBjaGFuZ2UsIHdvcnRoIGZ1enppbmcgZm9yIGNvcnJlY3RuZXNzLCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhpdCB0aGlzIGhhcmQuCgpTbywgaGVyZSYjMzk7cyB0aGUgcGxhbjoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gdGhpcyBpcyBhIGNydWNpYWwgYXJlYS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBicGZfaW50X2ppdF9jb21waWxlYCwgYGJwZl9qaXRfZW1pdF9pbnNuYCAtIHRoaXMgY292ZXJzIHRoZSBCUEYgSklUIGFzcGVjdCBvZiB0aGUgcGF0Y2ggaW4gbW9yZSBkZXRhaWwuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFJJU0NWX0lTQV9aQUJIQWAsIGBCUEZfSklUYCAtIEVuc3VyaW5nIHRoZXNlIGFyZSBleHBsaWNpdGx5IGVuYWJsZWQuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi4KCkkgZGlkIGEgcXVpY2sgc2NhbiBmb3Igb3RoZXIgaW50ZXJlc3Rpbmcgc3ltYm9scy4gYF9fc3dpdGNoX3RvYCBpcyBhIGhvdCBwYXRoLCBidXQgaW5jbHVkaW5nIGl0IHdvdWxkIGludHJvZHVjZSBhIGxvdCBvZiBub2lzZS4gU2ltaWxhcmx5LCBib290L2hvdHBsdWcgZnVuY3Rpb25zIGxpa2UgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBtYXkgc2VlbSByZWxldmFudCwgYnV0IFN5emthbGxlciBhbHJlYWR5IGhhbmRsZXMgaG90cGx1ZyB0ZXN0aW5nIGlmIGVuYWJsZWQuIFNvLCBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgbGlrZSB0aGUgb3B0aW1hbCBzeW1ib2wgZm9yIHRoZSBCUEYgSklUIHRlc3RpbmcuIEl0IGlzIHRoZSBlbnRyeSBwb2ludCwgc28gdGhhdCYjMzk7cyB0aGUgY29ycmVjdCBuYW1lLiAgYFJJU0NWX0lTQV9aQUJIQWAgc2VlbXMgdG8gYmUgdGhlIG9ubHkgbmV3IGNvbmZpZy4KCkFscmlnaHQsIHRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZXNwb25zZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMTA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmb2xsb3dpbmcgY29uZmlncyBkbyBub3QgZXhpc3QgaW4gdGhlIGtlcm5lbCB0cmVlOiBSSVNDVl9JU0FfWkFCSEE8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UklTQ1ZfSVNBX1pBQkhBJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZW1pdF9pbnNuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDt0aGUgZm9sbG93aW5nIGNvbmZpZ3MgZG8gbm90IGV4aXN0IGluIHRoZSBrZXJuZWwgdHJlZTogUklTQ1ZfSVNBX1pBQkhBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAxMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQxMAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAyMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIGEgQ29uZmlndXJhdGlvbiBEaXNjcmVwYW5jeSoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBTb21ldGhpbmcmIzM5O3Mgbm90IHJpZ2h0IGhlcmUuIFRoZSBzeXN0ZW0gaXMgY2xhaW1pbmcgdGhhdCBgUklTQ1ZfSVNBX1pBQkhBYCBkb2VzbiYjMzk7dCBleGlzdCwgYnV0IG15IGdyZXAgc2VhcmNoICpjbGVhcmx5KiBzaG93cyBpdCBkZWZpbmVkIGluIGBhcmNoL3Jpc2N2L0tjb25maWc6NjgzYC4gVGhhdCYjMzk7cyB3aGVyZSBpdCBzaG91bGQgYmUhCgpXYWl0LCBjb3VsZCBpdCBiZSBhIG5hbWluZyBpc3N1ZT8gSSB2YWd1ZWx5IHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGBUT09MQ0hBSU5fSEFTX1pBQkhBYC4uLiBMZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBncmVwIG91dHB1dCBhZ2Fpbi4gT2theSwgaXQgbG9va3MgbGlrZSBgYXJjaC9yaXNjdi9LY29uZmlnOjY3NmAgaGFzIGBjb25maWcgVE9PTENIQUlOX0hBU19aQUJIQWAsIGFuZCB0aGUgdmVyeSBuZXh0IGxpbmVzLCBzaG93IGBSSVNDVl9JU0FfWkFCSEFgLgoKU28sICp3aHkqIGRpZCB0aGUgYHNldC1yZXN1bHRzYCB1dGlsaXR5IGNsYWltIGl0JiMzOTtzIG1pc3Npbmc/IFRoYXQmIzM5O3MgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uIFBlcmhhcHMgdGhpcyB0b29sIGlzbiYjMzk7dCBjb21wcmVoZW5zaXZlLiBNYXliZSBpdCYjMzk7cyBjaGVja2luZyBhZ2FpbnN0IGEgaGFyZGNvZGVkIGxpc3QsIG9yIGl0cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY2hlY2tzIGFyZSBjdXJyZW50bHkgbG9va2luZyBhdCB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgYW5kIG5vdCB0aGUgUklTQy1WIG9uZSBJJiMzOTttIHdvcmtpbmcgd2l0aC4gSXQgd291bGRuJiMzOTt0IGJlIHRoZSBmaXJzdCB0aW1lIEkmIzM5O3ZlIGVuY291bnRlcmVkIHRoYXQga2luZCBvZiBsaW1pdGF0aW9uLiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8ganVzdCBieXBhc3MgdGhlIGlzc3VlLCBhbmQgdXNlIHRoZSBtb3JlIGNvbW1vbiBgQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDEwOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMgZm9yIFJJU0MtViB1c2luZyBBTU8gaW5zdHJ1Y3Rpb25zIGFuZCBtb2RpZmllcyB0aGUgQlBGIEpJVCB0byB1c2UgdGhlIG5ldyBgcGNwdV9vZmZzZXRgIGluIGB0aHJlYWRfaW5mb2AuIFRoZXNlIGFyZSBjb3JlIGFyY2hpdGVjdHVyYWwgYW5kIEJQRiBKSVQgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHRoZSBCUEYgSklUIGdlbmVyYXRpb24gZm9yIHBlci1jcHUgYWRkcmVzcyByZXNvbHV0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2VtaXRfaW5zbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMgZm9yIFJJU0MtViB1c2luZyBBTU8gaW5zdHJ1Y3Rpb25zIGFuZCBtb2RpZmllcyB0aGUgQlBGIEpJVCB0byB1c2UgdGhlIG5ldyBgcGNwdV9vZmZzZXRgIGluIGB0aHJlYWRfaW5mb2AuIFRoZXNlIGFyZSBjb3JlIGFyY2hpdGVjdHVyYWwgYW5kIEJQRiBKSVQgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHRoZSBCUEYgSklUIGdlbmVyYXRpb24gZm9yIHBlci1jcHUgYWRkcmVzcyByZXNvbHV0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDQ6NDEuNjAwMTQxNjY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5Njk0NjU0OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDQ6NDEuNjAwMTQ5MDU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTg0NzUyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNDRmYzlmZjI1YzQ0ZDM3ZGRlOTcyNWQ5MGQwMDE1Y2FhZWQyOWZlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMTA6MDQ6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmhcXG5pbmRleCBlOWU4YmE4M2U2MzJmOS4uMTM3YTQ5NDg4MzI1ZTQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9hc20uaFxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmhcXG5AQCAtOTEsMTEgKzkxLDcgQEBcXG4gXFxuICNpZmRlZiBDT05GSUdfU01QXFxuIC5tYWNybyBhc21fcGVyX2NwdSBkc3Qgc3ltIHRtcFxcbi1cXHRsdyAgICBcXFxcdG1wLCBUQVNLX1RJX0NQVV9OVU0odHApXFxuLVxcdHNsbGkgIFxcXFx0bXAsIFxcXFx0bXAsIFJJU0NWX0xHUFRSXFxuLVxcdGxhICAgIFxcXFxkc3QsIF9fcGVyX2NwdV9vZmZzZXRcXG4tXFx0YWRkICAgXFxcXGRzdCwgXFxcXGRzdCwgXFxcXHRtcFxcbi1cXHRSRUdfTCBcXFxcdG1wLCAwKFxcXFxkc3QpXFxuK1xcdFJFR19MIFxcXFx0bXAsIFRBU0tfVElfUENQVV9PRkZTRVQodHApXFxuIFxcdGxhICAgIFxcXFxkc3QsIFxcXFxzeW1cXG4gXFx0YWRkICAgXFxcXGRzdCwgXFxcXGRzdCwgXFxcXHRtcFxcbiAuZW5kbVxcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhcXG5pbmRleCAwOWJiNWY1N2E5ZDM0Ni4uOTJkNWY4MzFmMzQ5NWEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXFxuQEAgLTEwMiwxMiArMTAyLDE0IEBAIF9faW9fcmVhZHNfaW5zKHJlYWRzLCB1MzIsIGwsIF9faW9fYnIoKSwgX19pb19hcihhZGRyKSlcXG4gI2RlZmluZSByZWFkc3coYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc3coYWRkciwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSByZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudClcXG4gXFxuKyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxcbiBfX2lvX3JlYWRzX2lucyhpbnMsICB1OCwgYiwgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXFxuIF9faW9fcmVhZHNfaW5zKGlucywgdTE2LCB3LCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSlcXG4gX19pb19yZWFkc19pbnMoaW5zLCB1MzIsIGwsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxcbiAjZGVmaW5lIGluc2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNiKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuICNkZWZpbmUgaW5zdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc3coUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSBpbnNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zbChQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxcbisjZW5kaWZcXG4gXFxuIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCAgdTgsIGIsIF9faW9fYncoKSwgX19pb19hdygpKVxcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTE2LCB3LCBfX2lvX2J3KCksIF9faW9fYXcoKSlcXG5AQCAtMTE2LDI2ICsxMTgsMzIgQEAgX19pb193cml0ZXNfb3V0cyh3cml0ZXMsIHUzMiwgbCwgX19pb19idygpLCBfX2lvX2F3KCkpXFxuICNkZWZpbmUgd3JpdGVzdyhhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3coYWRkciwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSB3cml0ZXNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KVxcbiBcXG4rI2lmZGVmIENPTkZJR19IQVNfSU9QT1JUXFxuIF9faW9fd3JpdGVzX291dHMob3V0cywgIHU4LCBiLCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxcbiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHUxNiwgdywgX19pb19wYncoKSwgX19pb19wYXcoKSlcXG4gX19pb193cml0ZXNfb3V0cyhvdXRzLCB1MzIsIGwsIF9faW9fcGJ3KCksIF9faW9fcGF3KCkpXFxuICNkZWZpbmUgb3V0c2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzYihQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxcbiAjZGVmaW5lIG91dHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c3coUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcXG4gI2RlZmluZSBvdXRzbChhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNsKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuKyNlbmRpZlxcbiBcXG4gI2lmZGVmIENPTkZJR182NEJJVFxcbiBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTY0LCBxLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpXFxuICNkZWZpbmUgcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpXFxuIFxcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcXG4gX19pb19yZWFkc19pbnMoaW5zLCB1NjQsIHEsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxcbiAjZGVmaW5lIGluc3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNxKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuKyNlbmRpZlxcbiBcXG4gX19pb193cml0ZXNfb3V0cyh3cml0ZXMsIHU2NCwgcSwgX19pb19idygpLCBfX2lvX2F3KCkpXFxuICNkZWZpbmUgd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3EoYWRkciwgYnVmZmVyLCBjb3VudClcXG4gXFxuKyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxcbiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXcoKSlcXG4gI2RlZmluZSBvdXRzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX291dHNxKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXFxuICNlbmRpZlxcbisjZW5kaWZcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20tZ2VuZXJpYy9pby5oXFx1MDAzZVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YmY5ZjRjZjRjYTVhYVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BlcmNwdS5oXFxuQEAgLTAsMCArMSwzMDAgQEBcXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cXG4rXFxuKyNpZm5kZWYgX19BU01fUEVSQ1BVX0hcXG4rI2RlZmluZSBfX0FTTV9QRVJDUFVfSFxcbitcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdHMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByZWVtcHQuaFxcdTAwM2VcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYWx0ZXJuYXRpdmUtbWFjcm9zLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vY21weGNoZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWZlYXR1cmUtbWFjcm9zLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vY3VycmVudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYXNtL2h3Y2FwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vdGhyZWFkX2luZm8uaFxcdTAwM2VcXG4rXFxuKyNkZWZpbmUgUEVSQ1BVX1JXX09QUyhzeilcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3BlcmNwdV9yZWFkXyMjc3oodm9pZCAqcHRyKVxcdFxcdFxcXFxcXG4re1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0dXJuIFJFQURfT05DRSgqKHUjI3N6ICopcHRyKTtcXHRcXHRcXHRcXHRcXFxcXFxuK31cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rc3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1X3dyaXRlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcXHRcXFxcXFxuK3tcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFdSSVRFX09OQ0UoKih1IyNzeiAqKXB0ciwgKHUjI3N6KXZhbCk7XFx0XFx0XFx0XFx0XFxcXFxcbit9XFxuK1xcbitQRVJDUFVfUldfT1BTKDgpXFxuK1BFUkNQVV9SV19PUFMoMTYpXFxuK1BFUkNQVV9SV19PUFMoMzIpXFxuK1xcbisjaWZkZWYgQ09ORklHXzY0QklUXFxuK1BFUkNQVV9SV19PUFMoNjQpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fT1BfQ0FTRShzZngsIG5hbWUsIHN6LCBhbW9faW5zbilcXHRcXHRcXHRcXFxcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rX19wZXJjcHVfIyNuYW1lIyNfYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKVxcdFxcdFxcXFxcXG4re1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0YXNtIHZvbGF0aWxlIChcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcXCJhbW9cXFwiICNhbW9faW5zbiAjc2Z4IFxcXCIgemVybywgJVt2YWxdLCAlW3B0cl1cXFwiXFx0XFx0XFxcXFxcbitcXHRcXHQ6IFtwdHJdIFxcXCIrQVxcXCIgKCoodSMjc3ogKilwdHIpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQ6IFt2YWxdIFxcXCJyXFxcIiAoKHUjI3N6KSh2YWwpKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0OiBcXFwibWVtb3J5XFxcIik7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9XFxuK1xcbisjaWZkZWYgQ09ORklHXzY0QklUXFxuKyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19QRVJDUFVfQU1PX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXHRcXHRcXHRcXFxcXFxuK1xcdF9fUEVSQ1BVX0FNT19PUF9DQVNFKC5kLCBuYW1lLCA2NCwgYW1vX2luc24pXFxuKyNlbHNlXFxuKyNkZWZpbmUgUEVSQ1BVX09QKG5hbWUsIGFtb19pbnNuKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19QRVJDUFVfQU1PX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXG4rI2VuZGlmXFxuK1xcbitQRVJDUFVfT1AoYWRkLCBhZGQpXFxuK1BFUkNQVV9PUChhbmQsIGFuZClcXG4rUEVSQ1BVX09QKG9yLCBvcilcXG4rXFxuKy8qXFxuKyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLFxcbisgKiBhbmQgdGhlIFBFUkNQVV9SRVRfT1AoKSBkb2VzIG5vdCBhY2NvdW50IGZvciBvdGhlciBvcGVyYXRpb25zLlxcbisgKi9cXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pXFx0XFx0XFxcXFxcbitzdGF0aWMgaW5saW5lIHUjI3N6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitfX3BlcmNwdV8jI25hbWUjI19yZXR1cm5fYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKVxcdFxcXFxcXG4re1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmVnaXN0ZXIgdSMjc3ogcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRhc20gdm9sYXRpbGUgKFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFxcImFtb1xcXCIgI2Ftb19pbnNuICNzZnggXFxcIiAlW3JldF0sICVbdmFsXSwgJVtwdHJdXFxcIlxcdFxcdFxcXFxcXG4rXFx0XFx0OiBbcHRyXSBcXFwiK0FcXFwiICgqKHUjI3N6ICopcHRyKSwgW3JldF0gXFxcIj1yXFxcIiAocmV0KVxcdFxcdFxcXFxcXG4rXFx0XFx0OiBbdmFsXSBcXFwiclxcXCIgKCh1IyNzeikodmFsKSlcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyZXR1cm4gcmV0ICsgdmFsO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXHRcXHRcXFxcXFxuK1xcdF9fUEVSQ1BVX0FNT19SRVRfT1BfQ0FTRSguZCwgbmFtZSwgNjQsIGFtb19pbnNuKVxcbisjZWxzZVxcbisjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcXG4rI2VuZGlmXFxuK1xcbitQRVJDUFVfUkVUX09QKGFkZCwgYWRkKVxcbitcXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKVxcdCgoKHVuc2lnbmVkIGxvbmcpKHB0cikgXFx1MDAyNiAweDMpICogQklUU19QRVJfQllURSlcXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeilcXHRHRU5NQVNLKChzeikgLSAxLCAwKVxcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpXFx0KCh1MzIgKikoKHVuc2lnbmVkIGxvbmcpKHB0cikgXFx1MDAyNiB+MHgzKSlcXG4rXFxuKyNkZWZpbmUgUEVSQ1BVXzhfMTZfT1AobmFtZSwgYW1vX2luc24sIHN6LCBzZngsIHZhbF90eXBlLCBuZXdfdmFsX2V4cHIsIGFzbV9vcClcXHRcXHRcXHRcXFxcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3BlcmNwdV8jI25hbWUjI19hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXFx0XFx0XFxcXFxcbit7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1pBQkhBKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1pBQkhBKSkge1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXNtIHZvbGF0aWxlIChcXFwiYW1vXFxcIiAjYW1vX2luc24gI3NmeCBcXFwiIHplcm8sICVbdmFsXSwgJVtwdHJdXFxcIlxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBbcHRyXSBcXFwiK0FcXFwiKCoodmFsX3R5cGUgKilwdHIpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFt2YWxdIFxcXCJyXFxcIigodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFxcdTAwMjYgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKSlcXHRcXFxcXFxuK1xcdFxcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fSBlbHNlIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHUzMiAqcHRyMzIgPSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgc2hpZnQgPSBQRVJDUFVfOF8xNl9HRVRfU0hJRlQocHRyKTtcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGNvbnN0IHUzMiBtYXNrID0gUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFxcdTAwM2NcXHUwMDNjIHNoaWZ0O1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dTMyIG9sZCwgbmV3O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dmFsX3R5cGUgZmllbGQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGFzbSB2b2xhdGlsZSAoXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwiMDogbHIudyAlMCwgJTJcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJhbmQgJTMsICUwLCAlNFxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcInNybCAlMywgJTMsICU1XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQjYXNtX29wIFxcXCIgJTMsICUzLCAlNlxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImFuZCAlMywgJTMsICU4XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwic2xsICUzLCAlMywgJTVcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJhbmQgJTEsICUwLCAlN1xcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcIm9yICUxLCAlMSwgJTNcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJzYy53ICUxLCAlMSwgJTJcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJibmV6ICUxLCAwYlxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBcXFwiPVxcdTAwMjZyXFxcIihvbGQpLCBcXFwiPVxcdTAwMjZyXFxcIihuZXcpLCBcXFwiK0FcXFwiKCpwdHIzMiksIFxcXCI9XFx1MDAyNnJcXFwiKGZpZWxkKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBcXFwiclxcXCIobWFzayksIFxcXCJyXFxcIihzaGlmdCksIFxcXCJyXFxcIih2YWxfdHJ1bmMpLCBcXFwiclxcXCIofm1hc2spLFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0ICBcXFwiclxcXCIoUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBcXFwibWVtb3J5XFxcIik7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9XFxuK1xcbisjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcClcXHRcXHRcXHRcXFxcXFxuK1xcdFBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCA4LCAuYiwgdTgsIGV4cHIsIGZpbmFsX29wKTtcXHRcXHRcXFxcXFxuK1xcdFBFUkNQVV84XzE2X09QKG9wX25hbWUsIG9wLCAxNiwgLmgsIHUxNiwgZXhwciwgZmluYWxfb3ApXFxuK1xcbitQRVJDUFVfT1BfOF8xNihhZGQsIGFkZCwgdmFsLCBhZGQpXFxuK1BFUkNQVV9PUF84XzE2KGFuZCwgYW5kLCB2YWwsIGFuZClcXG4rUEVSQ1BVX09QXzhfMTYob3IsIG9yLCB2YWwsIG9yKVxcbitcXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9SRVRfT1AobmFtZSwgYW1vX2luc24sIHN6LCBzZngsIHZhbF90eXBlLCBuZXdfdmFsX2V4cHIpXFx0XFx0XFx0XFxcXFxcbitzdGF0aWMgaW5saW5lIHZhbF90eXBlIF9fcGVyY3B1XyMjbmFtZSMjX3JldHVybl9hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXFx0XFxcXFxcbit7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1pBQkhBKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmlzY3ZfaGFzX2V4dGVuc2lvbl91bmxpa2VseShSSVNDVl9JU0FfRVhUX1pBQkhBKSkge1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmVnaXN0ZXIgdmFsX3R5cGUgcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0YXNtIHZvbGF0aWxlIChcXFwiYW1vXFxcIiAjYW1vX2luc24gI3NmeCBcXFwiICVbcmV0XSwgJVt2YWxdLCAlW3B0cl1cXFwiXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFtwdHJdIFxcXCIrQVxcXCIoKih2YWxfdHlwZSAqKXB0ciksIFtyZXRdIFxcXCI9clxcXCIocmV0KVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0OiBbdmFsXSBcXFwiclxcXCIoKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKSBcXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkpXFx0XFxcXFxcbitcXHRcXHRcXHQ6IFxcXCJtZW1vcnlcXFwiKTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHJldHVybiByZXQgKyAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFxcdTAwMjYgUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opKTtcXHRcXHRcXFxcXFxuK1xcdH0gZWxzZSB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR1MzIgKnB0cjMyID0gUEVSQ1BVXzhfMTZfR0VUX1BUUjMyKHB0cik7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjb25zdCB1bnNpZ25lZCBsb25nIHNoaWZ0ID0gUEVSQ1BVXzhfMTZfR0VUX1NISUZUKHB0cik7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjb25zdCB1MzIgbWFzayA9IChQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikgXFx1MDAzY1xcdTAwM2Mgc2hpZnQpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0Y29uc3QgdTMyIGludl9tYXNrID0gfm1hc2s7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRjb25zdCB2YWxfdHlwZSB2YWxfdHJ1bmMgPSAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR1MzIgb2xkLCBuZXcsIGZpZWxkO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRhc20gdm9sYXRpbGUgKFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcIjA6IGxyLncgJTAsICUzXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwiYW5kICUxLCAlMCwgJTRcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJzcmwgJTEsICUxLCAlNVxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImFkZCAlMSwgJTEsICU2XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwiYW5kICUxLCAlMSwgJTdcXFxcblxcXCJcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcXCJzbGwgJTEsICUxLCAlNVxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImFuZCAlMiwgJTAsICU4XFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXFwib3IgJTIsICUyLCAlMVxcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcInNjLncgJTIsICUyLCAlM1xcXFxuXFxcIlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFxcImJuZXogJTIsIDBiXFxcXG5cXFwiXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFxcXCI9XFx1MDAyNnJcXFwiKG9sZCksIFxcXCI9XFx1MDAyNnJcXFwiKGZpZWxkKSwgXFxcIj1cXHUwMDI2clxcXCIobmV3KSwgXFxcIitBXFxcIigqcHRyMzIpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHQ6IFxcXCJyXFxcIihtYXNrKSwgXFxcInJcXFwiKHNoaWZ0KSwgXFxcInJcXFwiKHZhbF90cnVuYyksIFxcXCJyXFxcIihQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpLCBcXFxcXFxuK1xcdFxcdFxcdFxcXCJyXFxcIihpbnZfbWFzaylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdDogXFxcIm1lbW9yeVxcXCIpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmV0dXJuICh2YWxfdHlwZSkoZmllbGQgXFx1MDAzZVxcdTAwM2Ugc2hpZnQpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfVxcbitcXG4rUEVSQ1BVXzhfMTZfUkVUX09QKGFkZCwgYWRkLCA4LCAuYiwgdTgsIHZhbClcXG4rUEVSQ1BVXzhfMTZfUkVUX09QKGFkZCwgYWRkLCAxNiwgLmgsIHUxNiwgdmFsKVxcbitcXG4rI2RlZmluZSBfcGNwX3Byb3RlY3Qob3AsIHBjcCwgLi4uKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRvcChyYXdfY3B1X3B0cihcXHUwMDI2KHBjcCkpLCBfX1ZBX0FSR1NfXyk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9KVxcbitcXG4rI2RlZmluZSBfcGNwX3Byb3RlY3RfcmV0dXJuKG9wLCBwY3AsIGFyZ3MuLi4pXFx0XFx0XFx0XFx0XFxcXFxcbisoe1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0dHlwZW9mKHBjcCkgX19yZXR2YWw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRwcmVlbXB0X2Rpc2FibGVfbm90cmFjZSgpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0X19yZXR2YWwgPSAodHlwZW9mKHBjcCkpb3AocmF3X2NwdV9wdHIoXFx1MDAyNihwY3ApKSwgIyNhcmdzKTtcXHRcXFxcXFxuK1xcdHByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdF9fcmV0dmFsO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rfSlcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfcmVhZF8xKHBjcClcXHRcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfOCwgcGNwKVxcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMihwY3ApXFx0XFx0X3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9yZWFkXzE2LCBwY3ApXFxuKyNkZWZpbmUgdGhpc19jcHVfcmVhZF80KHBjcClcXHRcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfMzIsIHBjcClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV9yZWFkXzgocGNwKVxcdFxcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF82NCwgcGNwKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfOCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXFxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMihwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfMTYsIHBjcCwgKHVuc2lnbmVkIGxvbmcpdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzQocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X3dyaXRlXzMyLCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV93cml0ZV84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV82NCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF8yKHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF80KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl8xKHBjcCwgdmFsKVxcdFxcdFxcXFxcXG4rX3BjcF9wcm90ZWN0X3JldHVybihfX3BlcmNwdV9hZGRfcmV0dXJuX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzIocGNwLCB2YWwpXFx0XFx0XFxcXFxcbitfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X2FkZF9yZXR1cm5fYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfcmV0dXJuXzQocGNwLCB2YWwpXFx0XFx0XFxcXFxcbitfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X2FkZF9yZXR1cm5fYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fOChwY3AsIHZhbClcXHRcXHRcXFxcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzgsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FuZF8yKHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X2FuZF80KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMzIsIHBjcCwgdmFsKVxcbitcXG4rI2lmZGVmIENPTkZJR182NEJJVFxcbisjZGVmaW5lIHRoaXNfY3B1X2FuZF84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfb3JfMShwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXFxuKyNkZWZpbmUgdGhpc19jcHVfb3JfMihwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X29yXzQocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0KF9fcGVyY3B1X29yX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV9vcl84KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXFxuKyNlbmRpZlxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzEocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxcbisjZGVmaW5lIHRoaXNfY3B1X3hjaGdfMihwY3AsIHZhbClcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXFxuKyNkZWZpbmUgdGhpc19jcHVfeGNoZ180KHBjcCwgdmFsKVxcdF9wY3BfcHJvdGVjdF9yZXR1cm4oeGNoZ19yZWxheGVkLCBwY3AsIHZhbClcXG4rXFxuKyNpZmRlZiBDT05GSUdfNjRCSVRcXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzgocGNwLCB2YWwpXFx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18xKHBjcCwgbywgbilcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfMihwY3AsIG8sIG4pXFx0X3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbilcXG4rI2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnXzQocGNwLCBvLCBuKVxcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXFxuK1xcbisjaWZkZWYgQ09ORklHXzY0QklUXFxuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ184KHBjcCwgbywgbilcXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxcbitcXG4rI2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnNjQocGNwLCBvLCBuKVxcdHRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pXFxuKyNlbmRpZlxcbitcXG4rI2lmZGVmIHN5c3RlbV9oYXNfY21weGNoZzEyOFxcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGcxMjgocGNwLCBvLCBuKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHUxMjggcmV0X187XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHR0eXBlb2YocGNwKSAqcHRyX187XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHByZWVtcHRfZGlzYWJsZV9ub3RyYWNlKCk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRwdHJfXyA9IHJhd19jcHVfcHRyKFxcdTAwMjYocGNwKSk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoc3lzdGVtX2hhc19jbXB4Y2hnMTI4KCkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRyZXRfXyA9IGNtcHhjaGcxMjhfbG9jYWwocHRyX18sIChvKSwgKG4pKTtcXHRcXHRcXFxcXFxuK1xcdGVsc2VcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHJldF9fID0gdGhpc19jcHVfZ2VuZXJpY19jbXB4Y2hnKHBjcCwgKG8pLCAobikpO1xcdFxcXFxcXG4rXFx0cHJlZW1wdF9lbmFibGVfbm90cmFjZSgpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0X187XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbit9KVxcbisjZW5kaWZcXG4rXFxuKyNkZWZpbmUgX19teV9jcHVfb2Zmc2V0ICgoKHN0cnVjdCB0aHJlYWRfaW5mbyAqKWN1cnJlbnQpLVxcdTAwM2VwY3B1X29mZnNldClcXG4rXFxuKyN1bmRlZiBQRVJDUFVfUldfT1BTXFxuKyN1bmRlZiBfX1BFUkNQVV9BTU9fT1BfQ0FTRVxcbisjdW5kZWYgUEVSQ1BVX09QXFxuKyN1bmRlZiBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0VcXG4rI3VuZGVmIFBFUkNQVV9SRVRfT1BcXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9TSElGVFxcbisjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX01BU0tcXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9QVFIzMlxcbisjdW5kZWYgUEVSQ1BVXzhfMTZfT1BcXG4rI3VuZGVmIFBFUkNQVV9PUF84XzE2XFxuKyN1bmRlZiBQRVJDUFVfOF8xNl9SRVRfT1BcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20tZ2VuZXJpYy9wZXJjcHUuaFxcdTAwM2VcXG4rXFxuKyNlbmRpZiAvKiBfX0FTTV9QRVJDUFVfSCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxcbmluZGV4IDBlNzFlYjgyZjkyMGNhLi43MzNiNmNkMzA2ZTQwZiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zd2l0Y2hfdG8uaFxcbkBAIC04OCw2ICs4OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zd2l0Y2hfdG9fZW52Y2ZnKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4gXFx0XFx0XFx0OjogXFxcInJcXFwiIChuZXh0LVxcdTAwM2V0aHJlYWQuZW52Y2ZnKSA6IFxcXCJtZW1vcnlcXFwiKTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcXG4re1xcbisjaWZkZWYgQ09ORklHX1NNUFxcbitcXHRuZXh0LVxcdTAwM2V0aHJlYWRfaW5mby5wY3B1X29mZnNldCA9IF9fbXlfY3B1X29mZnNldDtcXG4rI2VuZGlmXFxuK31cXG4rXFxuIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICopO1xcbiBcXG5AQCAtMTIyLDYgKzEyOSw3IEBAIGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmIChzd2l0Y2hfdG9fc2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKVxcdFxcXFxcXG4gXFx0XFx0bG9jYWxfZmx1c2hfaWNhY2hlX2FsbCgpO1xcdFxcdFxcXFxcXG4gXFx0X19zd2l0Y2hfdG9fZW52Y2ZnKF9fbmV4dCk7XFx0XFx0XFx0XFxcXFxcbitcXHRfX3N3aXRjaF90b19wY3B1X29mZnNldChfX25leHQpO1xcdFxcdFxcXFxcXG4gXFx0KChsYXN0KSA9IF9fc3dpdGNoX3RvKF9fcHJldiwgX19uZXh0KSk7XFx0XFx0XFxcXFxcbiB9IHdoaWxlICgwKVxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXFxuaW5kZXggNTUwMTlmZGZhOWVjYWEuLmYxMGJhNjJiNjEwMTY0IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxcbkBAIC01Myw2ICs1Myw3IEBAXFxuIHN0cnVjdCB0aHJlYWRfaW5mbyB7XFxuIFxcdHVuc2lnbmVkIGxvbmdcXHRcXHRmbGFncztcXHRcXHQvKiBsb3cgbGV2ZWwgZmxhZ3MgKi9cXG4gXFx0aW50ICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdF9jb3VudDsgIC8qIDA9XFx1MDAzZXByZWVtcHRpYmxlLCBcXHUwMDNjMD1cXHUwMDNlQlVHICovXFxuK1xcdGludFxcdFxcdFxcdGNwdTtcXG4gXFx0LypcXG4gXFx0ICogVGhlc2Ugc3RhY2sgcG9pbnRlcnMgYXJlIG92ZXJ3cml0dGVuIG9uIGV2ZXJ5IHN5c3RlbSBjYWxsIG9yXFxuIFxcdCAqIGV4Y2VwdGlvbi4gIFNQIGlzIGFsc28gc2F2ZWQgdG8gdGhlIHN0YWNrIGl0IGNhbiBiZSByZWNvdmVyZWQgd2hlblxcbkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7XFxuIFxcdCAqL1xcbiBcXHRsb25nXFx0XFx0XFx0a2VybmVsX3NwO1xcdC8qIEtlcm5lbCBzdGFjayBwb2ludGVyICovXFxuIFxcdGxvbmdcXHRcXHRcXHR1c2VyX3NwO1xcdC8qIFVzZXIgc3RhY2sgcG9pbnRlciAqL1xcbi1cXHRpbnRcXHRcXHRcXHRjcHU7XFxuIFxcdHVuc2lnbmVkIGxvbmdcXHRcXHRzeXNjYWxsX3dvcms7XFx0LyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xcbitcXHR1bnNpZ25lZCBsb25nXFx0XFx0cGNwdV9vZmZzZXQ7XFxuICNpZmRlZiBDT05GSUdfU0hBRE9XX0NBTExfU1RBQ0tcXG4gXFx0dm9pZFxcdFxcdFxcdCpzY3NfYmFzZTtcXG4gXFx0dm9pZFxcdFxcdFxcdCpzY3Nfc3A7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXFxuaW5kZXggYTc1ZjBjZmVhMWU5ZmEuLjIwZDQ2YzI4ZmRkZTk3IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9hc20tb2Zmc2V0cy5jXFxuQEAgLTM4LDYgKzM4LDcgQEAgdm9pZCBhc21fb2Zmc2V0cyh2b2lkKVxcbiBcXHRPRkZTRVQoVEFTS19USFJFQURfU1VNLCB0YXNrX3N0cnVjdCwgdGhyZWFkLnN1bSk7XFxuIFxcbiBcXHRPRkZTRVQoVEFTS19USV9DUFUsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5jcHUpO1xcbitcXHRPRkZTRVQoVEFTS19USV9QQ1BVX09GRlNFVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0KTtcXG4gXFx0T0ZGU0VUKFRBU0tfVElfUFJFRU1QVF9DT1VOVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnByZWVtcHRfY291bnQpO1xcbiBcXHRPRkZTRVQoVEFTS19USV9LRVJORUxfU1AsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5rZXJuZWxfc3ApO1xcbiBcXHRPRkZTRVQoVEFTS19USV9VU0VSX1NQLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8udXNlcl9zcCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuY1xcbmluZGV4IGY2ZWY1NzkzMGI1MGE4Li43ODc2ODU0ZDE2Mjc5MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcXG5AQCAtMTkxLDYgKzE5MSw3IEBAIGludCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRpZGxlLVxcdTAwM2V0aHJlYWRfaW5mby5jcHUgPSBjcHU7XFxuK1xcdHRpZGxlLVxcdTAwM2V0aHJlYWRfaW5mby5wY3B1X29mZnNldCA9IHBlcl9jcHVfb2Zmc2V0KGNwdSk7XFxuIFxcbiBcXHRyZXQgPSBzdGFydF9zZWNvbmRhcnlfY3B1KGNwdSwgdGlkbGUpO1xcbiBcXHRpZiAoIXJldCkge1xcbkBAIC0yMDgsNiArMjA5LDExIEBAIGludCBfX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKVxcbiB9XFxuICNlbmRpZlxcbiBcXG4rdm9pZCBfX2luaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZClcXG4re1xcbitcXHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xcbit9XFxuK1xcbiB2b2lkIF9faW5pdCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cylcXG4ge1xcbiB9XFxuQEAgLTIzMyw2ICsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZClcXG4gXFx0bW1ncmFiKG1tKTtcXG4gXFx0Y3VycmVudC1cXHUwMDNlYWN0aXZlX21tID0gbW07XFxuIFxcbitcXHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xcbitcXG4gI2lmZGVmIENPTkZJR19IT1RQTFVHX1BBUkFMTEVMXFxuIFxcdGNwdWhwX2FwX3N5bmNfYWxpdmUoKTtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuaW5kZXggYzAzYzFkZTE2Yjc5YWMuLmVhYjkzZDUyNThlOWU0IDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jXFxuQEAgLTEzOTUsMTUgKzEzOTUsOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4gXFx0XFx0XFx0aWYgKHJkICE9IHJzKVxcbiBcXHRcXHRcXHRcXHRlbWl0X212KHJkLCBycywgY3R4KTtcXG4gI2lmZGVmIENPTkZJR19TTVBcXG4tXFx0XFx0XFx0LyogTG9hZCBjdXJyZW50IENQVSBudW1iZXIgaW4gVDEgKi9cXG4tXFx0XFx0XFx0ZW1pdF9sdyhSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgY3B1KSxcXG4rXFx0XFx0XFx0ZW1pdF9sZChSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgcGNwdV9vZmZzZXQpLFxcbiBcXHRcXHRcXHRcXHRSVl9SRUdfVFAsIGN0eCk7XFxuLVxcdFxcdFxcdC8qIExvYWQgYWRkcmVzcyBvZiBfX3Blcl9jcHVfb2Zmc2V0IGFycmF5IGluIFQyICovXFxuLVxcdFxcdFxcdGVtaXRfYWRkcihSVl9SRUdfVDIsICh1NjQpXFx1MDAyNl9fcGVyX2NwdV9vZmZzZXQsIGV4dHJhX3Bhc3MsIGN0eCk7XFxuLVxcdFxcdFxcdC8qIEdldCBhZGRyZXNzIG9mIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xcbi1cXHRcXHRcXHRlbWl0X3NoM2FkZChSVl9SRUdfVDEsIFJWX1JFR19UMSwgUlZfUkVHX1QyLCBjdHgpO1xcbi1cXHRcXHRcXHQvKiBMb2FkIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xcbi1cXHRcXHRcXHRlbWl0X2xkKFJWX1JFR19UMSwgMCwgUlZfUkVHX1QxLCBjdHgpO1xcbiBcXHRcXHRcXHQvKiBBZGQgdGhlIG9mZnNldCB0byBSZCAqL1xcbiBcXHRcXHRcXHRlbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTtcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA0OjQyLjMxOTU2NTA4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYyNTAwMzI1NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNDRmYzlmZjI1YzQ0ZDM3ZGRlOTcyNWQ5MGQwMDE1Y2FhZWQyOWZlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAxMDowNDo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oXG5pbmRleCBlOWU4YmE4M2U2MzJmOS4uMTM3YTQ5NDg4MzI1ZTQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS5oXG5AQCAtOTEsMTEgKzkxLDcgQEBcbiBcbiAjaWZkZWYgQ09ORklHX1NNUFxuIC5tYWNybyBhc21fcGVyX2NwdSBkc3Qgc3ltIHRtcFxuLVx0bHcgICAgXFx0bXAsIFRBU0tfVElfQ1BVX05VTSh0cClcbi1cdHNsbGkgIFxcdG1wLCBcXHRtcCwgUklTQ1ZfTEdQVFJcbi1cdGxhICAgIFxcZHN0LCBfX3Blcl9jcHVfb2Zmc2V0XG4tXHRhZGQgICBcXGRzdCwgXFxkc3QsIFxcdG1wXG4tXHRSRUdfTCBcXHRtcCwgMChcXGRzdClcbitcdFJFR19MIFxcdG1wLCBUQVNLX1RJX1BDUFVfT0ZGU0VUKHRwKVxuIFx0bGEgICAgXFxkc3QsIFxcc3ltXG4gXHRhZGQgICBcXGRzdCwgXFxkc3QsIFxcdG1wXG4gLmVuZG1cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lvLmhcbmluZGV4IDA5YmI1ZjU3YTlkMzQ2Li45MmQ1ZjgzMWYzNDk1YSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oXG5AQCAtMTAyLDEyICsxMDIsMTQgQEAgX19pb19yZWFkc19pbnMocmVhZHMsIHUzMiwgbCwgX19pb19icigpLCBfX2lvX2FyKGFkZHIpKVxuICNkZWZpbmUgcmVhZHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fcmVhZHN3KGFkZHIsIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSByZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc2woYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcbiBfX2lvX3JlYWRzX2lucyhpbnMsICB1OCwgYiwgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXG4gX19pb19yZWFkc19pbnMoaW5zLCB1MTYsIHcsIF9faW9fcGJyKCksIF9faW9fcGFyKGFkZHIpKVxuIF9faW9fcmVhZHNfaW5zKGlucywgdTMyLCBsLCBfX2lvX3BicigpLCBfX2lvX3BhcihhZGRyKSlcbiAjZGVmaW5lIGluc2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19pbnNiKFBDSV9JT0JBU0UgKyAoYWRkciksIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSBpbnN3KGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zdyhQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgaW5zbChhZGRyLCBidWZmZXIsIGNvdW50KSBfX2luc2woUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcbisjZW5kaWZcbiBcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgIHU4LCBiLCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbiBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTE2LCB3LCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbkBAIC0xMTYsMjYgKzExOCwzMiBAQCBfX2lvX3dyaXRlc19vdXRzKHdyaXRlcywgdTMyLCBsLCBfX2lvX2J3KCksIF9faW9fYXcoKSlcbiAjZGVmaW5lIHdyaXRlc3coYWRkciwgYnVmZmVyLCBjb3VudCkgX193cml0ZXN3KGFkZHIsIGJ1ZmZlciwgY291bnQpXG4gI2RlZmluZSB3cml0ZXNsKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fd3JpdGVzbChhZGRyLCBidWZmZXIsIGNvdW50KVxuIFxuKyNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVFxuIF9faW9fd3JpdGVzX291dHMob3V0cywgIHU4LCBiLCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxuIF9faW9fd3JpdGVzX291dHMob3V0cywgdTE2LCB3LCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxuIF9faW9fd3JpdGVzX291dHMob3V0cywgdTMyLCBsLCBfX2lvX3BidygpLCBfX2lvX3BhdygpKVxuICNkZWZpbmUgb3V0c2IoYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzYihQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgb3V0c3coYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzdyhQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuICNkZWZpbmUgb3V0c2woYWRkciwgYnVmZmVyLCBjb3VudCkgX19vdXRzbChQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuKyNlbmRpZlxuIFxuICNpZmRlZiBDT05GSUdfNjRCSVRcbiBfX2lvX3JlYWRzX2lucyhyZWFkcywgdTY0LCBxLCBfX2lvX2JyKCksIF9faW9fYXIoYWRkcikpXG4gI2RlZmluZSByZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudCkgX19yZWFkc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcbiBfX2lvX3JlYWRzX2lucyhpbnMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXIoYWRkcikpXG4gI2RlZmluZSBpbnNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9faW5zcShQQ0lfSU9CQVNFICsgKGFkZHIpLCBidWZmZXIsIGNvdW50KVxuKyNlbmRpZlxuIFxuIF9faW9fd3JpdGVzX291dHMod3JpdGVzLCB1NjQsIHEsIF9faW9fYncoKSwgX19pb19hdygpKVxuICNkZWZpbmUgd3JpdGVzcShhZGRyLCBidWZmZXIsIGNvdW50KSBfX3dyaXRlc3EoYWRkciwgYnVmZmVyLCBjb3VudClcbiBcbisjaWZkZWYgQ09ORklHX0hBU19JT1BPUlRcbiBfX2lvX3dyaXRlc19vdXRzKG91dHMsIHU2NCwgcSwgX19pb19wYnIoKSwgX19pb19wYXcoKSlcbiAjZGVmaW5lIG91dHNxKGFkZHIsIGJ1ZmZlciwgY291bnQpIF9fb3V0c3EoUENJX0lPQkFTRSArIChhZGRyKSwgYnVmZmVyLCBjb3VudClcbiAjZW5kaWZcbisjZW5kaWZcbiBcbiAjaW5jbHVkZSBcdTAwM2Nhc20tZ2VuZXJpYy9pby5oXHUwMDNlXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1Lmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOWJmOWY0Y2Y0Y2E1YWFcbi0tLSAvZGV2L251bGxcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcGVyY3B1LmhcbkBAIC0wLDAgKzEsMzAwIEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cbitcbisjaWZuZGVmIF9fQVNNX1BFUkNQVV9IXG4rI2RlZmluZSBfX0FTTV9QRVJDUFVfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3ByZWVtcHQuaFx1MDAzZVxuK1xuKyNpbmNsdWRlIFx1MDAzY2FzbS9hbHRlcm5hdGl2ZS1tYWNyb3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9jbXB4Y2hnLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS1tYWNyb3MuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9jdXJyZW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vaHdjYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS90aHJlYWRfaW5mby5oXHUwMDNlXG4rXG4rI2RlZmluZSBQRVJDUFVfUldfT1BTKHN6KVx0XHRcdFx0XHRcdFxcXG4rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fcGVyY3B1X3JlYWRfIyNzeih2b2lkICpwdHIpXHRcdFxcXG4re1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRyZXR1cm4gUkVBRF9PTkNFKCoodSMjc3ogKilwdHIpO1x0XHRcdFx0XFxcbit9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3BlcmNwdV93cml0ZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXHRcXFxuK3tcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0V1JJVEVfT05DRSgqKHUjI3N6ICopcHRyLCAodSMjc3opdmFsKTtcdFx0XHRcdFxcXG4rfVxuK1xuK1BFUkNQVV9SV19PUFMoOClcbitQRVJDUFVfUldfT1BTKDE2KVxuK1BFUkNQVV9SV19PUFMoMzIpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuK1BFUkNQVV9SV19PUFMoNjQpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fT1BfQ0FTRShzZngsIG5hbWUsIHN6LCBhbW9faW5zbilcdFx0XHRcXFxuK3N0YXRpYyBpbmxpbmUgdm9pZFx0XHRcdFx0XHRcdFx0XFxcbitfX3BlcmNwdV8jI25hbWUjI19hbW9fY2FzZV8jI3N6KHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyB2YWwpXHRcdFxcXG4re1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiB6ZXJvLCAlW3ZhbF0sICVbcHRyXVwiXHRcdFxcXG4rXHRcdDogW3B0cl0gXCIrQVwiICgqKHUjI3N6ICopcHRyKVx0XHRcdFx0XFxcbitcdFx0OiBbdmFsXSBcInJcIiAoKHUjI3N6KSh2YWwpKVx0XHRcdFx0XFxcbitcdFx0OiBcIm1lbW9yeVwiKTtcdFx0XHRcdFx0XHRcXFxuK31cbitcbisjaWZkZWYgQ09ORklHXzY0QklUXG4rI2RlZmluZSBQRVJDUFVfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKVx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSguZCwgbmFtZSwgNjQsIGFtb19pbnNuKVxuKyNlbHNlXG4rI2RlZmluZSBQRVJDUFVfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fT1BfQ0FTRSgudywgbmFtZSwgMzIsIGFtb19pbnNuKVxuKyNlbmRpZlxuK1xuK1BFUkNQVV9PUChhZGQsIGFkZClcbitQRVJDUFVfT1AoYW5kLCBhbmQpXG4rUEVSQ1BVX09QKG9yLCBvcilcbitcbisvKlxuKyAqIEN1cnJlbnRseSwgb25seSB0aGlzX2NwdV9hZGRfcmV0dXJuX3h4eCgpIHJlcXVpcmVzIGEgcmV0dXJuIHZhbHVlLFxuKyAqIGFuZCB0aGUgUEVSQ1BVX1JFVF9PUCgpIGRvZXMgbm90IGFjY291bnQgZm9yIG90aGVyIG9wZXJhdGlvbnMuXG4rICovXG4rI2RlZmluZSBfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0Uoc2Z4LCBuYW1lLCBzeiwgYW1vX2luc24pXHRcdFxcXG4rc3RhdGljIGlubGluZSB1IyNzelx0XHRcdFx0XHRcdFx0XFxcbitfX3BlcmNwdV8jI25hbWUjI19yZXR1cm5fYW1vX2Nhc2VfIyNzeih2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgdmFsKVx0XFxcbit7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdHJlZ2lzdGVyIHUjI3N6IHJldDtcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiAlW3JldF0sICVbdmFsXSwgJVtwdHJdXCJcdFx0XFxcbitcdFx0OiBbcHRyXSBcIitBXCIgKCoodSMjc3ogKilwdHIpLCBbcmV0XSBcIj1yXCIgKHJldClcdFx0XFxcbitcdFx0OiBbdmFsXSBcInJcIiAoKHUjI3N6KSh2YWwpKVx0XHRcdFx0XFxcbitcdFx0OiBcIm1lbW9yeVwiKTtcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRyZXR1cm4gcmV0ICsgdmFsO1x0XHRcdFx0XHRcdFxcXG4rfVxuK1xuKyNpZmRlZiBDT05GSUdfNjRCSVRcbisjZGVmaW5lIFBFUkNQVV9SRVRfT1AobmFtZSwgYW1vX2luc24pXHRcdFx0XHRcdFxcXG4rXHRfX1BFUkNQVV9BTU9fUkVUX09QX0NBU0UoLncsIG5hbWUsIDMyLCBhbW9faW5zbilcdFx0XFxcbitcdF9fUEVSQ1BVX0FNT19SRVRfT1BfQ0FTRSguZCwgbmFtZSwgNjQsIGFtb19pbnNuKVxuKyNlbHNlXG4rI2RlZmluZSBQRVJDUFVfUkVUX09QKG5hbWUsIGFtb19pbnNuKVx0XHRcdFx0XHRcXFxuK1x0X19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFKC53LCBuYW1lLCAzMiwgYW1vX2luc24pXG4rI2VuZGlmXG4rXG4rUEVSQ1BVX1JFVF9PUChhZGQsIGFkZClcbitcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpXHQoKCh1bnNpZ25lZCBsb25nKShwdHIpIFx1MDAyNiAweDMpICogQklUU19QRVJfQllURSlcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KVx0R0VOTUFTSygoc3opIC0gMSwgMClcbisjZGVmaW5lIFBFUkNQVV84XzE2X0dFVF9QVFIzMihwdHIpXHQoKHUzMiAqKSgodW5zaWduZWQgbG9uZykocHRyKSBcdTAwMjYgfjB4MykpXG4rXG4rI2RlZmluZSBQRVJDUFVfOF8xNl9PUChuYW1lLCBhbW9faW5zbiwgc3osIHNmeCwgdmFsX3R5cGUsIG5ld192YWxfZXhwciwgYXNtX29wKVx0XHRcdFxcXG4rc3RhdGljIGlubGluZSB2b2lkIF9fcGVyY3B1XyMjbmFtZSMjX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFx0XFxcbit7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdGlmIChJU19FTkFCTEVEKENPTkZJR19SSVNDVl9JU0FfWkFCSEEpIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFxcXG4rXHRcdHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX0VYVF9aQUJIQSkpIHtcdFx0XHRcdFxcXG4rXHRcdGFzbSB2b2xhdGlsZSAoXCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiB6ZXJvLCAlW3ZhbF0sICVbcHRyXVwiXHRcdFx0XFxcbitcdFx0XHQ6IFtwdHJdIFwiK0FcIigqKHZhbF90eXBlICopcHRyKVx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0OiBbdmFsXSBcInJcIigodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpKVx0XFxcbitcdFx0XHQ6IFwibWVtb3J5XCIpO1x0XHRcdFx0XHRcdFx0XHRcXFxuK1x0fSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdHUzMiAqcHRyMzIgPSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKTtcdFx0XHRcdFx0XFxcbitcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpO1x0XHRcdFx0XFxcbitcdFx0Y29uc3QgdTMyIG1hc2sgPSBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikgXHUwMDNjXHUwMDNjIHNoaWZ0O1x0XHRcdFx0XFxcbitcdFx0Y29uc3QgdmFsX3R5cGUgdmFsX3RydW5jID0gKHZhbF90eXBlKSgobmV3X3ZhbF9leHByKVx0XHRcdFx0XFxcbitcdFx0XHRcdFx0ICAgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSk7XHRcdFx0XHRcXFxuK1x0XHR1MzIgb2xkLCBuZXc7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0dmFsX3R5cGUgZmllbGQ7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCIwOiBsci53ICUwLCAlMlxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwiYW5kICUzLCAlMCwgJTRcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcInNybCAlMywgJTMsICU1XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0I2FzbV9vcCBcIiAlMywgJTMsICU2XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJhbmQgJTMsICUzLCAlOFxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwic2xsICUzLCAlMywgJTVcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcImFuZCAlMSwgJTAsICU3XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJvciAlMSwgJTEsICUzXFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJzYy53ICUxLCAlMSwgJTJcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcImJuZXogJTEsIDBiXFxuXCJcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHQ6IFwiPVx1MDAyNnJcIihvbGQpLCBcIj1cdTAwMjZyXCIobmV3KSwgXCIrQVwiKCpwdHIzMiksIFwiPVx1MDAyNnJcIihmaWVsZClcdFx0XHRcXFxuK1x0XHRcdDogXCJyXCIobWFzayksIFwiclwiKHNoaWZ0KSwgXCJyXCIodmFsX3RydW5jKSwgXCJyXCIofm1hc2spLFx0XHRcdFxcXG4rXHRcdFx0ICBcInJcIihQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpXHRcdFx0XHRcdFx0XFxcbitcdFx0XHQ6IFwibWVtb3J5XCIpO1x0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHR9XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK31cbitcbisjZGVmaW5lIFBFUkNQVV9PUF84XzE2KG9wX25hbWUsIG9wLCBleHByLCBmaW5hbF9vcClcdFx0XHRcXFxuK1x0UEVSQ1BVXzhfMTZfT1Aob3BfbmFtZSwgb3AsIDgsIC5iLCB1OCwgZXhwciwgZmluYWxfb3ApO1x0XHRcXFxuK1x0UEVSQ1BVXzhfMTZfT1Aob3BfbmFtZSwgb3AsIDE2LCAuaCwgdTE2LCBleHByLCBmaW5hbF9vcClcbitcbitQRVJDUFVfT1BfOF8xNihhZGQsIGFkZCwgdmFsLCBhZGQpXG4rUEVSQ1BVX09QXzhfMTYoYW5kLCBhbmQsIHZhbCwgYW5kKVxuK1BFUkNQVV9PUF84XzE2KG9yLCBvciwgdmFsLCBvcilcbitcbisjZGVmaW5lIFBFUkNQVV84XzE2X1JFVF9PUChuYW1lLCBhbW9faW5zbiwgc3osIHNmeCwgdmFsX3R5cGUsIG5ld192YWxfZXhwcilcdFx0XHRcXFxuK3N0YXRpYyBpbmxpbmUgdmFsX3R5cGUgX19wZXJjcHVfIyNuYW1lIyNfcmV0dXJuX2Ftb19jYXNlXyMjc3oodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIHZhbClcdFxcXG4re1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1pBQkhBKSBcdTAwMjZcdTAwMjZcdFx0XHRcdFx0XHRcXFxuK1x0XHRyaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9FWFRfWkFCSEEpKSB7XHRcdFx0XHRcXFxuK1x0XHRyZWdpc3RlciB2YWxfdHlwZSByZXQ7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGFzbSB2b2xhdGlsZSAoXCJhbW9cIiAjYW1vX2luc24gI3NmeCBcIiAlW3JldF0sICVbdmFsXSwgJVtwdHJdXCJcdFx0XHRcXFxuK1x0XHRcdDogW3B0cl0gXCIrQVwiKCoodmFsX3R5cGUgKilwdHIpLCBbcmV0XSBcIj1yXCIocmV0KVx0XHRcdFx0XFxcbitcdFx0XHQ6IFt2YWxdIFwiclwiKCh2YWxfdHlwZSkoKG5ld192YWxfZXhwcikgXHUwMDI2IFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSkpXHRcXFxuK1x0XHRcdDogXCJtZW1vcnlcIik7XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdHJldHVybiByZXQgKyAodmFsX3R5cGUpKChuZXdfdmFsX2V4cHIpIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1x0XHRcXFxuK1x0fSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdHUzMiAqcHRyMzIgPSBQRVJDUFVfOF8xNl9HRVRfUFRSMzIocHRyKTtcdFx0XHRcdFx0XFxcbitcdFx0Y29uc3QgdW5zaWduZWQgbG9uZyBzaGlmdCA9IFBFUkNQVV84XzE2X0dFVF9TSElGVChwdHIpO1x0XHRcdFx0XFxcbitcdFx0Y29uc3QgdTMyIG1hc2sgPSAoUEVSQ1BVXzhfMTZfR0VUX01BU0soc3opIFx1MDAzY1x1MDAzYyBzaGlmdCk7XHRcdFx0XHRcXFxuK1x0XHRjb25zdCB1MzIgaW52X21hc2sgPSB+bWFzaztcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGNvbnN0IHZhbF90eXBlIHZhbF90cnVuYyA9ICh2YWxfdHlwZSkoKG5ld192YWxfZXhwcilcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdCAgIFx1MDAyNiBQRVJDUFVfOF8xNl9HRVRfTUFTSyhzeikpO1x0XHRcdFx0XFxcbitcdFx0dTMyIG9sZCwgbmV3LCBmaWVsZDtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRhc20gdm9sYXRpbGUgKFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCIwOiBsci53ICUwLCAlM1xcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwiYW5kICUxLCAlMCwgJTRcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcInNybCAlMSwgJTEsICU1XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJhZGQgJTEsICUxLCAlNlxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwiYW5kICUxLCAlMSwgJTdcXG5cIlx0XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcInNsbCAlMSwgJTEsICU1XFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJhbmQgJTIsICUwLCAlOFxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwib3IgJTIsICUyLCAlMVxcblwiXHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFwic2MudyAlMiwgJTIsICUzXFxuXCJcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XCJibmV6ICUyLCAwYlxcblwiXHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0OiBcIj1cdTAwMjZyXCIob2xkKSwgXCI9XHUwMDI2clwiKGZpZWxkKSwgXCI9XHUwMDI2clwiKG5ldyksIFwiK0FcIigqcHRyMzIpXHRcdFx0XFxcbitcdFx0XHQ6IFwiclwiKG1hc2spLCBcInJcIihzaGlmdCksIFwiclwiKHZhbF90cnVuYyksIFwiclwiKFBFUkNQVV84XzE2X0dFVF9NQVNLKHN6KSksIFxcXG4rXHRcdFx0XCJyXCIoaW52X21hc2spXHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0OiBcIm1lbW9yeVwiKTtcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0cmV0dXJuICh2YWxfdHlwZSkoZmllbGQgXHUwMDNlXHUwMDNlIHNoaWZ0KTtcdFx0XHRcdFx0XHRcXFxuK1x0fVx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK31cbitcbitQRVJDUFVfOF8xNl9SRVRfT1AoYWRkLCBhZGQsIDgsIC5iLCB1OCwgdmFsKVxuK1BFUkNQVV84XzE2X1JFVF9PUChhZGQsIGFkZCwgMTYsIC5oLCB1MTYsIHZhbClcbitcbisjZGVmaW5lIF9wY3BfcHJvdGVjdChvcCwgcGNwLCAuLi4pXHRcdFx0XHRcdFxcXG4rKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0cHJlZW1wdF9kaXNhYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbitcdG9wKHJhd19jcHVfcHRyKFx1MDAyNihwY3ApKSwgX19WQV9BUkdTX18pO1x0XHRcdFx0XFxcbitcdHByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbit9KVxuK1xuKyNkZWZpbmUgX3BjcF9wcm90ZWN0X3JldHVybihvcCwgcGNwLCBhcmdzLi4uKVx0XHRcdFx0XFxcbisoe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHR0eXBlb2YocGNwKSBfX3JldHZhbDtcdFx0XHRcdFx0XHRcXFxuK1x0cHJlZW1wdF9kaXNhYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbitcdF9fcmV0dmFsID0gKHR5cGVvZihwY3ApKW9wKHJhd19jcHVfcHRyKFx1MDAyNihwY3ApKSwgIyNhcmdzKTtcdFxcXG4rXHRwcmVlbXB0X2VuYWJsZV9ub3RyYWNlKCk7XHRcdFx0XHRcdFxcXG4rXHRfX3JldHZhbDtcdFx0XHRcdFx0XHRcdFxcXG4rfSlcbitcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfMShwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF84LCBwY3ApXG4rI2RlZmluZSB0aGlzX2NwdV9yZWFkXzIocGNwKVx0XHRfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X3JlYWRfMTYsIHBjcClcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfNChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF8zMiwgcGNwKVxuK1xuKyNpZmRlZiBDT05GSUdfNjRCSVRcbisjZGVmaW5lIHRoaXNfY3B1X3JlYWRfOChwY3ApXHRcdF9wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfcmVhZF82NCwgcGNwKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV84LCBwY3AsICh1bnNpZ25lZCBsb25nKXZhbClcbisjZGVmaW5lIHRoaXNfY3B1X3dyaXRlXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfd3JpdGVfMTYsIHBjcCwgKHVuc2lnbmVkIGxvbmcpdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfNChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV8zMiwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfd3JpdGVfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV93cml0ZV82NCwgcGNwLCAodW5zaWduZWQgbG9uZyl2YWwpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfYWRkXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYWRkX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcbitcbisjaWZkZWYgQ09ORklHXzY0QklUXG4rI2RlZmluZSB0aGlzX2NwdV9hZGRfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hZGRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl8xKHBjcCwgdmFsKVx0XHRcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV84LCBwY3AsIHZhbClcbitcbisjZGVmaW5lIHRoaXNfY3B1X2FkZF9yZXR1cm5fMihwY3AsIHZhbClcdFx0XFxcbitfcGNwX3Byb3RlY3RfcmV0dXJuKF9fcGVyY3B1X2FkZF9yZXR1cm5fYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuK1xuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl80KHBjcCwgdmFsKVx0XHRcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV8zMiwgcGNwLCB2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfYWRkX3JldHVybl84KHBjcCwgdmFsKVx0XHRcXFxuK19wY3BfcHJvdGVjdF9yZXR1cm4oX19wZXJjcHVfYWRkX3JldHVybl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfOCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfMihwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfYW5kXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfYW5kX2Ftb19jYXNlXzMyLCBwY3AsIHZhbClcbitcbisjaWZkZWYgQ09ORklHXzY0QklUXG4rI2RlZmluZSB0aGlzX2NwdV9hbmRfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9hbmRfYW1vX2Nhc2VfNjQsIHBjcCwgdmFsKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfb3JfMShwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV84LCBwY3AsIHZhbClcbisjZGVmaW5lIHRoaXNfY3B1X29yXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3QoX19wZXJjcHVfb3JfYW1vX2Nhc2VfMTYsIHBjcCwgdmFsKVxuKyNkZWZpbmUgdGhpc19jcHVfb3JfNChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV8zMiwgcGNwLCB2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfb3JfOChwY3AsIHZhbClcdF9wY3BfcHJvdGVjdChfX3BlcmNwdV9vcl9hbW9fY2FzZV82NCwgcGNwLCB2YWwpXG4rI2VuZGlmXG4rXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzEocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzIocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4rI2RlZmluZSB0aGlzX2NwdV94Y2hnXzQocGNwLCB2YWwpXHRfcGNwX3Byb3RlY3RfcmV0dXJuKHhjaGdfcmVsYXhlZCwgcGNwLCB2YWwpXG4rXG4rI2lmZGVmIENPTkZJR182NEJJVFxuKyNkZWZpbmUgdGhpc19jcHVfeGNoZ184KHBjcCwgdmFsKVx0X3BjcF9wcm90ZWN0X3JldHVybih4Y2hnX3JlbGF4ZWQsIHBjcCwgdmFsKVxuKyNlbmRpZlxuK1xuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZ18xKHBjcCwgbywgbilcdF9wY3BfcHJvdGVjdF9yZXR1cm4oY21weGNoZ19yZWxheGVkLCBwY3AsIG8sIG4pXG4rI2RlZmluZSB0aGlzX2NwdV9jbXB4Y2hnXzIocGNwLCBvLCBuKVx0X3BjcF9wcm90ZWN0X3JldHVybihjbXB4Y2hnX3JlbGF4ZWQsIHBjcCwgbywgbilcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfNChwY3AsIG8sIG4pXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxuK1xuKyNpZmRlZiBDT05GSUdfNjRCSVRcbisjZGVmaW5lIHRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pXHRfcGNwX3Byb3RlY3RfcmV0dXJuKGNtcHhjaGdfcmVsYXhlZCwgcGNwLCBvLCBuKVxuK1xuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZzY0KHBjcCwgbywgbilcdHRoaXNfY3B1X2NtcHhjaGdfOChwY3AsIG8sIG4pXG4rI2VuZGlmXG4rXG4rI2lmZGVmIHN5c3RlbV9oYXNfY21weGNoZzEyOFxuKyNkZWZpbmUgdGhpc19jcHVfY21weGNoZzEyOChwY3AsIG8sIG4pXHRcdFx0XHRcdFxcXG4rKHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0dTEyOCByZXRfXztcdFx0XHRcdFx0XHRcdFxcXG4rXHR0eXBlb2YocGNwKSAqcHRyX187XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0cHJlZW1wdF9kaXNhYmxlX25vdHJhY2UoKTtcdFx0XHRcdFx0XFxcbitcdHB0cl9fID0gcmF3X2NwdV9wdHIoXHUwMDI2KHBjcCkpO1x0XHRcdFx0XHRcXFxuK1x0aWYgKHN5c3RlbV9oYXNfY21weGNoZzEyOCgpKVx0XHRcdFx0XHRcXFxuK1x0XHRyZXRfXyA9IGNtcHhjaGcxMjhfbG9jYWwocHRyX18sIChvKSwgKG4pKTtcdFx0XFxcbitcdGVsc2VcdFx0XHRcdFx0XHRcdFx0XFxcbitcdFx0cmV0X18gPSB0aGlzX2NwdV9nZW5lcmljX2NtcHhjaGcocGNwLCAobyksIChuKSk7XHRcXFxuK1x0cHJlZW1wdF9lbmFibGVfbm90cmFjZSgpO1x0XHRcdFx0XHRcXFxuK1x0cmV0X187XHRcdFx0XHRcdFx0XHRcdFxcXG4rfSlcbisjZW5kaWZcbitcbisjZGVmaW5lIF9fbXlfY3B1X29mZnNldCAoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKiljdXJyZW50KS1cdTAwM2VwY3B1X29mZnNldClcbitcbisjdW5kZWYgUEVSQ1BVX1JXX09QU1xuKyN1bmRlZiBfX1BFUkNQVV9BTU9fT1BfQ0FTRVxuKyN1bmRlZiBQRVJDUFVfT1BcbisjdW5kZWYgX19QRVJDUFVfQU1PX1JFVF9PUF9DQVNFXG4rI3VuZGVmIFBFUkNQVV9SRVRfT1BcbisjdW5kZWYgUEVSQ1BVXzhfMTZfR0VUX1NISUZUXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9NQVNLXG4rI3VuZGVmIFBFUkNQVV84XzE2X0dFVF9QVFIzMlxuKyN1bmRlZiBQRVJDUFVfOF8xNl9PUFxuKyN1bmRlZiBQRVJDUFVfT1BfOF8xNlxuKyN1bmRlZiBQRVJDUFVfOF8xNl9SRVRfT1BcbitcbisjaW5jbHVkZSBcdTAwM2Nhc20tZ2VuZXJpYy9wZXJjcHUuaFx1MDAzZVxuK1xuKyNlbmRpZiAvKiBfX0FTTV9QRVJDUFVfSCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dpdGNoX3RvLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXG5pbmRleCAwZTcxZWI4MmY5MjBjYS4uNzMzYjZjZDMwNmU0MGYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oXG5AQCAtODgsNiArODgsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX2VudmNmZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpXG4gXHRcdFx0OjogXCJyXCIgKG5leHQtXHUwMDNldGhyZWFkLmVudmNmZykgOiBcIm1lbW9yeVwiKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dClcbit7XG4rI2lmZGVmIENPTkZJR19TTVBcbitcdG5leHQtXHUwMDNldGhyZWFkX2luZm8ucGNwdV9vZmZzZXQgPSBfX215X2NwdV9vZmZzZXQ7XG4rI2VuZGlmXG4rfVxuK1xuIGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKl9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTtcbiBcbkBAIC0xMjIsNiArMTI5LDcgQEAgZG8ge1x0XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChzd2l0Y2hfdG9fc2hvdWxkX2ZsdXNoX2ljYWNoZShfX25leHQpKVx0XFxcbiBcdFx0bG9jYWxfZmx1c2hfaWNhY2hlX2FsbCgpO1x0XHRcXFxuIFx0X19zd2l0Y2hfdG9fZW52Y2ZnKF9fbmV4dCk7XHRcdFx0XFxcbitcdF9fc3dpdGNoX3RvX3BjcHVfb2Zmc2V0KF9fbmV4dCk7XHRcdFxcXG4gXHQoKGxhc3QpID0gX19zd2l0Y2hfdG8oX19wcmV2LCBfX25leHQpKTtcdFx0XFxcbiB9IHdoaWxlICgwKVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaFxuaW5kZXggNTUwMTlmZGZhOWVjYWEuLmYxMGJhNjJiNjEwMTY0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmhcbkBAIC01Myw2ICs1Myw3IEBAXG4gc3RydWN0IHRocmVhZF9pbmZvIHtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0ZmxhZ3M7XHRcdC8qIGxvdyBsZXZlbCBmbGFncyAqL1xuIFx0aW50ICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdF9jb3VudDsgIC8qIDA9XHUwMDNlcHJlZW1wdGlibGUsIFx1MDAzYzA9XHUwMDNlQlVHICovXG4rXHRpbnRcdFx0XHRjcHU7XG4gXHQvKlxuIFx0ICogVGhlc2Ugc3RhY2sgcG9pbnRlcnMgYXJlIG92ZXJ3cml0dGVuIG9uIGV2ZXJ5IHN5c3RlbSBjYWxsIG9yXG4gXHQgKiBleGNlcHRpb24uICBTUCBpcyBhbHNvIHNhdmVkIHRvIHRoZSBzdGFjayBpdCBjYW4gYmUgcmVjb3ZlcmVkIHdoZW5cbkBAIC02MCw4ICs2MSw4IEBAIHN0cnVjdCB0aHJlYWRfaW5mbyB7XG4gXHQgKi9cbiBcdGxvbmdcdFx0XHRrZXJuZWxfc3A7XHQvKiBLZXJuZWwgc3RhY2sgcG9pbnRlciAqL1xuIFx0bG9uZ1x0XHRcdHVzZXJfc3A7XHQvKiBVc2VyIHN0YWNrIHBvaW50ZXIgKi9cbi1cdGludFx0XHRcdGNwdTtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0c3lzY2FsbF93b3JrO1x0LyogU1lTQ0FMTF9XT1JLXyBmbGFncyAqL1xuK1x0dW5zaWduZWQgbG9uZ1x0XHRwY3B1X29mZnNldDtcbiAjaWZkZWYgQ09ORklHX1NIQURPV19DQUxMX1NUQUNLXG4gXHR2b2lkXHRcdFx0KnNjc19iYXNlO1xuIFx0dm9pZFx0XHRcdCpzY3Nfc3A7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvYXNtLW9mZnNldHMuYyBiL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcbmluZGV4IGE3NWYwY2ZlYTFlOWZhLi4yMGQ0NmMyOGZkZGU5NyAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcbisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2FzbS1vZmZzZXRzLmNcbkBAIC0zOCw2ICszOCw3IEBAIHZvaWQgYXNtX29mZnNldHModm9pZClcbiBcdE9GRlNFVChUQVNLX1RIUkVBRF9TVU0sIHRhc2tfc3RydWN0LCB0aHJlYWQuc3VtKTtcbiBcbiBcdE9GRlNFVChUQVNLX1RJX0NQVSwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmNwdSk7XG4rXHRPRkZTRVQoVEFTS19USV9QQ1BVX09GRlNFVCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLnBjcHVfb2Zmc2V0KTtcbiBcdE9GRlNFVChUQVNLX1RJX1BSRUVNUFRfQ09VTlQsIHRhc2tfc3RydWN0LCB0aHJlYWRfaW5mby5wcmVlbXB0X2NvdW50KTtcbiBcdE9GRlNFVChUQVNLX1RJX0tFUk5FTF9TUCwgdGFza19zdHJ1Y3QsIHRocmVhZF9pbmZvLmtlcm5lbF9zcCk7XG4gXHRPRkZTRVQoVEFTS19USV9VU0VSX1NQLCB0YXNrX3N0cnVjdCwgdGhyZWFkX2luZm8udXNlcl9zcCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvc21wYm9vdC5jXG5pbmRleCBmNmVmNTc5MzBiNTBhOC4uNzg3Njg1NGQxNjI3OTAgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zbXBib290LmNcbisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3NtcGJvb3QuY1xuQEAgLTE5MSw2ICsxOTEsNyBAQCBpbnQgX19jcHVfdXAodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHRhc2tfc3RydWN0ICp0aWRsZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dGlkbGUtXHUwMDNldGhyZWFkX2luZm8uY3B1ID0gY3B1O1xuK1x0dGlkbGUtXHUwMDNldGhyZWFkX2luZm8ucGNwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChjcHUpO1xuIFxuIFx0cmV0ID0gc3RhcnRfc2Vjb25kYXJ5X2NwdShjcHUsIHRpZGxlKTtcbiBcdGlmICghcmV0KSB7XG5AQCAtMjA4LDYgKzIwOSwxMSBAQCBpbnQgX19jcHVfdXAodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IHRhc2tfc3RydWN0ICp0aWRsZSlcbiB9XG4gI2VuZGlmXG4gXG4rdm9pZCBfX2luaXQgc21wX3ByZXBhcmVfYm9vdF9jcHUodm9pZClcbit7XG4rXHRfX215X2NwdV9vZmZzZXQgPSBwZXJfY3B1X29mZnNldChzbXBfcHJvY2Vzc29yX2lkKCkpO1xuK31cbitcbiB2b2lkIF9faW5pdCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cylcbiB7XG4gfVxuQEAgLTIzMyw2ICsyMzksOCBAQCBhc21saW5rYWdlIF9fdmlzaWJsZSB2b2lkIHNtcF9jYWxsaW4odm9pZClcbiBcdG1tZ3JhYihtbSk7XG4gXHRjdXJyZW50LVx1MDAzZWFjdGl2ZV9tbSA9IG1tO1xuIFxuK1x0X19teV9jcHVfb2Zmc2V0ID0gcGVyX2NwdV9vZmZzZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTtcbitcbiAjaWZkZWYgQ09ORklHX0hPVFBMVUdfUEFSQUxMRUxcbiBcdGNwdWhwX2FwX3N5bmNfYWxpdmUoKTtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuaW5kZXggYzAzYzFkZTE2Yjc5YWMuLmVhYjkzZDUyNThlOWU0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1xuQEAgLTEzOTUsMTUgKzEzOTUsOCBAQCBpbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcbiBcdFx0XHRpZiAocmQgIT0gcnMpXG4gXHRcdFx0XHRlbWl0X212KHJkLCBycywgY3R4KTtcbiAjaWZkZWYgQ09ORklHX1NNUFxuLVx0XHRcdC8qIExvYWQgY3VycmVudCBDUFUgbnVtYmVyIGluIFQxICovXG4tXHRcdFx0ZW1pdF9sdyhSVl9SRUdfVDEsIG9mZnNldG9mKHN0cnVjdCB0aHJlYWRfaW5mbywgY3B1KSxcbitcdFx0XHRlbWl0X2xkKFJWX1JFR19UMSwgb2Zmc2V0b2Yoc3RydWN0IHRocmVhZF9pbmZvLCBwY3B1X29mZnNldCksXG4gXHRcdFx0XHRSVl9SRUdfVFAsIGN0eCk7XG4tXHRcdFx0LyogTG9hZCBhZGRyZXNzIG9mIF9fcGVyX2NwdV9vZmZzZXQgYXJyYXkgaW4gVDIgKi9cbi1cdFx0XHRlbWl0X2FkZHIoUlZfUkVHX1QyLCAodTY0KVx1MDAyNl9fcGVyX2NwdV9vZmZzZXQsIGV4dHJhX3Bhc3MsIGN0eCk7XG4tXHRcdFx0LyogR2V0IGFkZHJlc3Mgb2YgX19wZXJfY3B1X29mZnNldFtjcHVdIGluIFQxICovXG4tXHRcdFx0ZW1pdF9zaDNhZGQoUlZfUkVHX1QxLCBSVl9SRUdfVDEsIFJWX1JFR19UMiwgY3R4KTtcbi1cdFx0XHQvKiBMb2FkIF9fcGVyX2NwdV9vZmZzZXRbY3B1XSBpbiBUMSAqL1xuLVx0XHRcdGVtaXRfbGQoUlZfUkVHX1QxLCAwLCBSVl9SRUdfVDEsIGN0eCk7XG4gXHRcdFx0LyogQWRkIHRoZSBvZmZzZXQgdG8gUmQgKi9cbiBcdFx0XHRlbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTtcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA0OjQyLjMxOTU2OTY1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTAyNzA4Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgLSBSSVNDLVYgUGVyLUNQVSBPZmZzZXQgT3B0aW1pemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIFJJU0MtViwgYW5kIGl0J3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gaG93IHdlIGhhbmRsZSBwZXItQ1BVIG9mZnNldHMuIEZpcnN0IG9mZiwgdGhlcmUncyBhIG5ldyBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaGAgZmlsZSwgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBzaWduLiBJdCBzZWVtcyB0byBpbXBsZW1lbnQgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucywgd2hpY2ggbGlrZWx5IGludm9sdmUgYXRvbWljIG1lbW9yeSBvcGVyYXRpb25zIChBTU9zKS4gVGhleSdyZSBpbnRyb2R1Y2luZyBgVEFTS19USV9QQ1BVX09GRlNFVCh0cClgIHRvIHJlcGxhY2UgdGhlIG9sZGVyLCBsZXNzIGVmZmljaWVudCBgVEFTS19USV9DUFVfTlVNKHRwKWAtYmFzZWQgbG9va3Vwcy4gVGhpcyBsb29rcyB0byB1cGRhdGUgYHN0cnVjdCB0aHJlYWRfaW5mb2AgdG8gaW5jbHVkZSBgcGNwdV9vZmZzZXRgLCBhbmQgdGhlbiBgX19zd2l0Y2hfdG9fcGNwdV9vZmZzZXRgIGFuZCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gVGhlIEJQRiBKSVQgaXMgYWxzbyBiZWluZyB1cGRhdGVkIHRvIHVzZSBgcGNwdV9vZmZzZXRgIGluc3RlYWQgb2YgdGhlIG9sZCBtZXRob2QuIEl0IGFsc28gbG9va3MgbGlrZSB0aGVyZSdzIGEgY29uZGl0aW9uYWwgYCNpZmRlZiBDT05GSUdfSEFTX0lPUE9SVGAgYmxvY2sgYXJvdW5kIHNvbWUgSS9PIG9wZXJhdGlvbnMuXG5cblRoZSBwZXItY3B1IG9wZXJhdGlvbnMgdGhlbXNlbHZlcyBsb29rIHF1aXRlIGludm9sdmVkLCBlbXBsb3lpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgYSBmYWxsYmFjayB1c2luZyBgbHIud2AvYHNjLndgIGZvciBzbWFsbGVyIHNpemVzIGlmIFpBQkhBIGlzbid0IGF2YWlsYWJsZS4gVGhpcyBpcyBpbXBvcnRhbnQ6IFpBQkhBIGlzIGFuIG9wdGlvbmFsIFJJU0MtViBleHRlbnNpb24uIEl0IG1ha2VzIG1lIHdvbmRlciBpZiB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6ej8gQWJzb2x1dGVseS4gVGhpcyB0b3VjaGVzIGNvcmUgYXJjaGl0ZWN0dXJlIGxvZ2ljIOKAkyBwZXItY3B1IG9wZXJhdGlvbnMg4oCTIGFuZCBhbHNvIHRoZSBCUEYgSklULCB3aGljaCBpcyBhbHJlYWR5IGEgZnV6emluZyB0YXJnZXQuXG5cbkJ1dCwgaXMgdGhpcyByZWFjaGFibGU/IFRoZSBrZXkgaGVyZSBpcywgdGhpcyBpcyBSSVNDLVYgc3BlY2lmaWMuIENhbiB3ZSBmdXp6IFJJU0MtVj8gWWVzLCBzeXprYWxsZXIgc3VwcG9ydHMgUklTQy1WLCBzbyB0aGF0J3MgYSBjaGVjay4gVGhlIHByb21wdCBnaXZlcyB1cyB0aGUgdXN1YWwgY2F2ZWF0IGFib3V0IGJlaW5nIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBCdXQsIHdhaXQuLi4gd2UgKmNhbiogcnVuIFJJU0MtViBpbiBRRU1VLCBzbyB0aGF0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0uIFRoaXMgKmRvZXMqIG1ha2UgZnVuY3Rpb25hbCBjaGFuZ2VzLiBJdCBtb2RpZmllcyBob3cgcGVyLWNwdSB2YXJpYWJsZXMgYXJlIGFjY2Vzc2VkIGFuZCBtb2RpZmllZCBvbiBSSVNDLVYuIFRoYXQncyBhIGRlZmluaXRlIHBvc2l0aXZlIHNpZ25hbC5cblxuRGl2aW5nIGRlZXBlciwgdGhlIEJQRiBKSVQgY2hhbmdlcyBsb29rIGRpcmVjdGx5IHJlYWNoYWJsZSBpbiBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2Agd2l0aGluIGBicGZfaml0X2VtaXRfaW5zbmAuIFRoZXNlIGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfUklTQ1ZfSVNBX1pBQkhBYCwgYENPTkZJR19IQVNfSU9QT1JUYCwgYW5kIGBDT05GSUdfU01QYCBhcmUgdXNlZC5cblxuU28sIG92ZXJhbGwsIHRoaXMgaXMgYSBjbGVhciBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1OTcsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNDo1NS4yMjIyODExOThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk4NDMzMzA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfSVNBX1pBQkhBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvS2NvbmZpZz02NzY9Y29uZmlnIFRPT0xDSEFJTl9IQVNfWkFCSEFcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy02ODItXFxuYXJjaC9yaXNjdi9LY29uZmlnOjY4Mzpjb25maWcgUklTQ1ZfSVNBX1pBQkhBXFxuYXJjaC9yaXNjdi9LY29uZmlnLTY4NC1cXHRib29sIFxcXCJaYWJoYSBleHRlbnNpb24gc3VwcG9ydCBmb3IgYXRvbWljIGJ5dGUvaGFsZndvcmQgb3BlcmF0aW9uc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDQ6NTguMjA2NjIwNDA0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNjQ4NDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB0aGUgc3lzdGVtJ3MgdGVsbGluZyBtZSBgUklTQ1ZfSVNBX1pBQkhBYCBpcyBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEFscmlnaHQsIHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFoLCB5ZXMsIHRoZSBgQ09ORklHX0JQRl9KSVRgIGZvciB0aG9zZSBCUEYgbW9kaWZpY2F0aW9ucy4gVGhhdCdzIGxpa2VseSBnb2luZyB0byBiZSBrZXkuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gd2l0aCByZXNwZWN0IHRvIEJQRiBKSVQgY29tcGlsYXRpb24gZm9yIDY0LWJpdCBSSVNDLVYuIFRoYXQgZmlsZSBzaG91bGQgY29udGFpbiBpbXBvcnRhbnQgZGV0YWlscyByZWxhdGVkIHRvIHRoaXMgaW50ZXJzZWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDkxNSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjAxLjIxMzEwOTA1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTcwODQ0MTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjAzLjc4Mzk1OTkwMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDQ5OTcxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBPcHRpbWl6YXRpb24gVGFyZ2V0cyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gd2hlcmUgd2UgY2FuIG1ha2UgYSBkaWZmZXJlbmNlLiBUaGUgaW5pdGlhbCBtb2RpZmljYXRpb24gc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZSBgYnBmX2ppdF9lbWl0X2luc25gIGZ1bmN0aW9uLCBidXQgdGhhdCdzIGEgcHJldHR5IGJyb2FkIGVudHJ5IHBvaW50LiBUaGlua2luZyBhYm91dCB3aGVyZSB0aGlzIGlzIGxpa2VseSAqdXNlZCogbW9zdCwgYGJwZl9pbnRfaml0X2NvbXBpbGVgIG1pZ2h0IGJlIG1vcmUgc3BlY2lmaWMgdG8gb3VyIGltbWVkaWF0ZSBjb25jZXJuLlxuXG5XYWl0LCBob2xkIG9uLCBwZXJjcHUgb3BlcmF0aW9ucyBvbiBSSVNDLVYgYXJlIGlubGluZSwgZGVmaW5lZCBpbiBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaGAuIEFuZCB0aGV5J3JlICpldmVyeXdoZXJlKi4gVGhhdCBtYWtlcyBtZSB0aGluayBhYm91dCBjYWxscyBsaWtlIGBfX3N3aXRjaF90b19wY3B1X29mZnNldGAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYF9fc3dpdGNoX3RvYCBhbmQgdGhhdCBpcyBhIG1ham9yIGhvdCBwYXRoLiBUaGF0IGxvb2tzIHByb21pc2luZy5cblxuVGhlbiBhZ2FpbiwgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBhcmUgYWxsIGJvb3QvaG90cGx1ZyByZWxhdGVkLCB3aGljaCBjb3VsZCBhbHNvIGJlIHJlbGV2YW50IGluIGEgZGlmZmVyZW50IGNvbnRleHQuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGVzZSBmb3Igb3RoZXIgaW52ZXN0aWdhdGlvbnMuXG5cbkFscmlnaHQsIGJhY2sgdG8gdGhlIEJQRiBKSVQgY2hhbmdlcyBhbmQgYGJwZl9qaXRfZW1pdF9pbnNuYC4gSSBzaG91bGQgY2hlY2sgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFzIHdlbGwuIFBlcmhhcHMgZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIGhvdyBpdCdzIHVzZWQgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIGNvdWxkIGJlIGEgYmV0dGVyIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM2NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNTowOC40Mjg5NjMyODRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU2OTIzNTc2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjA4Ljc4NTg5NDk0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NDgwNzEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkZpbmRpbmcgdGhlIEJQRiBKSVQgRW50cnkgUG9pbnQgaW4gUklTQy1WKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhlIEJQRiBKSVQgY29kZSBraWNrcyBvZmYgaW4gYSBSSVNDLVYgY29udGV4dC4gSSdtIHRoaW5raW5nLCB0aGlzIGlzbid0IGdvaW5nIHRvIGJlIGEgc3RyYWlnaHRmb3J3YXJkIGh1bnQuIEknbGwgbmVlZCB0byByZW1lbWJlciB3aGVyZSB0aGUgQlBGIHZlcmlmaWVyIGludGVyYWN0cyB3aXRoIHRoZSBpbnN0cnVjdGlvbiBnZW5lcmF0aW9uLiBJIGtub3cgdGhlIGdlbmVyYWwgYXJjaGl0ZWN0dXJlLCBidXQgSSBuZWVkIHRvIGdldCBkb3duIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgUklTQy1WIGltcGxlbWVudGF0aW9uLlxuXG5GaXJzdCwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIG9idmlvdXMgcGxhY2VzOiBrZXJuZWwgc291cmNlLiBJJ2xsIGxpa2VseSBuZWVkIHRvIG5hdmlnYXRlIHRocm91Z2ggdGhlIEJQRiBzdWJzeXN0ZW0sIGxvb2tpbmcgZm9yIFJJU0MtViBzcGVjaWZpYyBmaWxlcyBvciBmdW5jdGlvbiBjYWxscy4gSSBzaG91bGQgc3RhcnQgd2l0aCB0aGUgY29yZSBCUEYgSklUIGZpbGVzIGFuZCB0aGVuIGZpbHRlciBieSBhbnkgUklTQy1WIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBvbmVzLlxuXG5JJ2xsIGtlZXAgYW4gZXllIG91dCBmb3Iga2V5d29yZHMgbGlrZSBcIkpJVCxcIiBcIlJJU0NWLFwiIFwiaW5zdHJ1Y3Rpb24sXCIgXCJnZW5lcmF0aW9uLFwiIFwiZW1pdCxcIiBvciBhbnl0aGluZyByZWxhdGVkIHRvIGNvZGUgZ2VuZXJhdGlvbiBvciBtYWNoaW5lIGNvZGUgdHJhbnNsYXRpb24uIEkgZXhwZWN0IHRvIGJlIGRpZ2dpbmcgYXJvdW5kIGluIHRoZSBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IGhhbmRsZSB0aGUgaW5zdHJ1Y3Rpb24gc2V0IGFyY2hpdGVjdHVyZSwgb3IgSVNBLCB0cmFuc2xhdGlvbi4gSSBiZXQgdGhlcmUncyBhIHN0cnVjdHVyZSBvciBhIHNlcmllcyBvZiBmdW5jdGlvbnMgdGhhdCBtYXAgQlBGIGluc3RydWN0aW9ucyB0byBSSVNDLVYgaW5zdHJ1Y3Rpb25zLiBUaGF0IGlzIHByb2JhYmx5IHdoZXJlIHRoZSBlbnRyeSBwb2ludCBpcy5cblxuSSB3aWxsIGhhdmUgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgbWFpbGluZyBsaXN0cyB0b28sIGp1c3QgaW4gY2FzZSB0aGlzIGVudHJ5IHBvaW50IGlzIGRvY3VtZW50ZWQgc29tZXdoZXJlLiBUaGlzIGlzIGEgdGFzayB0aGF0J2xsIHJlcXVpcmUgYSBtZXRob2RpY2FsIGFwcHJvYWNoLiBJdCdzIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGluIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkzOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjEyLjU2MDcwNDgyNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNTgzNTI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MTIuNjkzMjk2NDYxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMTY3OTU3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFJJU0MtViBCUEYgSklUIENvbXBpbGVyKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgUklTQy1WIEJQRiBKSVQgY29tcGlsZXIuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaXRzIGludGVybmFsIHdvcmtpbmdzLCBzbyBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIG91dCBgYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgSklUIGNvbXBpbGF0aW9uIGZ1bmN0aW9ucyB0aGVyZS4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgdGhpbmdzIGxpa2UgdGhlIGNvZGUgZ2VuZXJhdGlvbiByb3V0aW5lcywgdGhlIHJlZ2lzdGVyIGFsbG9jYXRpb24gbG9naWMgKGlmIGl0J3Mgbm90IGhhbmRsZWQgYnkgdGhlIGJhY2tlbmQpLCBhbmQgdGhlIGluc3RydWN0aW9uIGVtaXNzaW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCB0cmFuc2xhdGVzIHRoZSBCUEYgYnl0ZWNvZGUgaW50byBSSVNDLVYgbWFjaGluZSBjb2RlLCBjb25zaWRlcmluZyB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZSdzIGluc3RydWN0aW9uIHNldCwgcmVnaXN0ZXIgY29uc3RyYWludHMsIGFuZCBwb3RlbnRpYWwgQUJJIGNvbnNpZGVyYXRpb25zIGZvciBrZXJuZWwtbGV2ZWwgY29kZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aGUgZnVuY3Rpb24gbmFtZXMgYW5kIHRoZWlyIHNpZ25hdHVyZXMgdG8gaWRlbnRpZnkgdGhlIGtleSBjb21wb25lbnRzLiBGcm9tIHRoZXJlIEknbGwgZHJpbGwgZG93biBpbnRvIHRoZSBtb3N0IHJlbGV2YW50IGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaXRzIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMzNCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjE2LjAxMDA5NTY0NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyNDk1MzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdHJ1Y3QgYnBmX3Byb2cgXFxcXCpicGZfaW50X2ppdF9jb21waWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0zOT1ib29sIGJwZl9qaXRfbmVlZHNfemV4dCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtNDMtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6NDQ6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy00NS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjE2LjE0MjU5OTAxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTcxMDkyOTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IG1lbnRhbCBnZWFycyBhcmUgdHVybmluZy4uLlxuXG4qKlRyYWNraW5nIERvd24gdGhlIEJQRiBKSVQgQ29tcGlsYXRpb24gUGF0aCoqXG5cbkFscmlnaHQsIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNvbXBpbGF0aW9uIHByb2Nlc3MgZm9yIHRoZSBCUEYgSklULiBJIGtub3cgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHJlc2lkZXMgd2l0aGluIGBicGZfaml0X2NvcmUuY2Ag4oCTIHRoYXQncyBteSBzdGFydGluZyBwb2ludC4gTm93LCB0aGUga2V5IGZ1bmN0aW9uIGludm9sdmVkIGluIGVtaXR0aW5nIGluc3RydWN0aW9ucyBhcHBlYXJzIHRvIGJlIGBicGZfaml0X2VtaXRfaW5zbmAuIEkgYmVsaWV2ZSB0aGF0IHRoZSBtb2RpZmllZCBgYnBmX2ppdF9lbWl0X2luc25gIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGluIHRoZSBgYnBmX2ppdF9jb21wNjQuY2AgZmlsZS4gUmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4gTGV0IG1lIGNvbmZpcm0gdGhhdCBieSBub3cgbG9va2luZyBkaXJlY3RseSBhdCBgYnBmX2ppdF9lbWl0X2luc25gIGxvY2F0ZWQgaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHNlZSBob3cgaXQgc3BlY2lmaWNhbGx5IGhhbmRsZXMgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzY3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MTkuNzEzNjk2MDEzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE4OTg0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9lbWl0X2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTEzMzI9aW50IGFyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcm9faW1hZ2UsXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEzNjgtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMzY5OmludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTM3MC1cXHRcXHQgICAgICBib29sIGV4dHJhX3Bhc3MpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjE5LjgxNTYwNTI4OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc3NDk0ODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEJQRiBKSVQgQ29tcGlsYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gZGlyZWN0IG15IGF0dGVudGlvbiBmb3IgdGhpcyBCUEYgd29yay4gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9lbWl0X2luc25gIHNlZW0gbGlrZSBnb29kIGNhbmRpZGF0ZXMgdG8gc3RhcnQgd2l0aC4gYGJwZl9qaXRfZW1pdF9pbnNuYCBpcyBjYWxsZWQgZm9yICpldmVyeSogQlBGIGluc3RydWN0aW9uIGR1cmluZyBKSVQgY29tcGlsYXRpb24sIHNvIGl0ICpjb3VsZCogYmUgYSBob3Qgc3BvdCBkdXJpbmcgY29tcGlsYXRpb24uIEhvd2V2ZXIsIEpJVCBjb21waWxhdGlvbiBpdHNlbGYgaXNuJ3QgYSBwZXJmb3JtYW5jZS1jcml0aWNhbCBwYXRo4oCUaXQgb25seSBoYXBwZW5zIG9uY2Ugd2hlbiBhIHByb2dyYW0gaXMgbG9hZGVkLiBUaGVyZWZvcmUsIGJvdGggYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9lbWl0X2luc25gIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyBmdXJ0aGVyLlxuXG5Ob3csIHdoYXQgYWJvdXQgdGhvc2UgcGVyY3B1IGNoYW5nZXM/IFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCByaWdodD8gTWVhbmluZyB0aGV5IGFyZSBnb2luZyB0byBnZXQgZXhlcmNpc2VkIGJ5IGFueSBhbmQgYWxsIGNvZGUgdGhhdCB1c2VzIHBlcmNwdSB2YXJpYWJsZXMuIFNvIEkgcHJvYmFibHkgZG9uJ3QgbmVlZCBhIHNwZWNpZmljIGZvY3VzIHN5bWJvbCBmb3IgdGhvc2UsIGFzIHRoZSB0ZXN0aW5nIHdpbGwgYmUgY29tcHJlaGVuc2l2ZSBieSBkZWZhdWx0LlxuXG5CdXQgaG9sZCBvbiwgdGhpcyBCUEYgSklUIGNoYW5nZSBpcyBsaWtlbHkgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYEJQRl9MRFggfCBCUEZfUEVSQ1BVIHwgQlBGX1dgIG9yIHNpbWlsYXIgcGVyY3B1IGluc3RydWN0aW9ucy4gSSBzaG91bGQgY2hlY2sgdGhlIGNvbnRleHQgb2YgYGJwZl9qaXRfZW1pdF9pbnNuYCB3aXRoaW4gYGFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCBpbnN0cnVjdGlvbnMgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIGVuc3VyZSBJIGNhbiBiZXN0IHVuZGVyc3RhbmQgdGhlIGVmZmVjdHMuIFRoaXMgaXMgdGhlIHJpZ2h0IHdheSB0byBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzI3NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNToyNC43OTMxMDUwOTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM4MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM4MDpcXHRcXHRpbml0X3JlZ3MoXFx1MDAyNnJkLCBcXHUwMDI2cnMsIGluc24sIGN0eCk7XFxuMTM4MTpcXHRcXG4xMzgyOlxcdFxcdHN3aXRjaCAoY29kZSkge1xcbjEzODM6XFx0XFx0LyogZHN0ID0gc3JjICovXFxuMTM4NDpcXHRcXHRjYXNlIEJQRl9BTFUgfCBCUEZfTU9WIHwgQlBGX1g6XFxuMTM4NTpcXHRcXHRjYXNlIEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfWDpcXG4xMzg2OlxcdFxcdFxcdGlmIChpbnNuX2lzX2Nhc3RfdXNlcihpbnNuKSkge1xcbjEzODc6XFx0XFx0XFx0XFx0ZW1pdF9tdihSVl9SRUdfVDEsIHJzLCBjdHgpO1xcbjEzODg6XFx0XFx0XFx0XFx0ZW1pdF96ZXh0dyhSVl9SRUdfVDEsIFJWX1JFR19UMSwgY3R4KTtcXG4xMzg5OlxcdFxcdFxcdFxcdGVtaXRfaW1tKHJkLCAoY3R4LVxcdTAwM2V1c2VyX3ZtX3N0YXJ0IFxcdTAwM2VcXHUwMDNlIDMyKSBcXHUwMDNjXFx1MDAzYyAzMiwgY3R4KTtcXG4xMzkwOlxcdFxcdFxcdFxcdGVtaXQocnZfYmVxKFJWX1JFR19UMSwgUlZfUkVHX1pFUk8sIDQpLCBjdHgpO1xcbjEzOTE6XFx0XFx0XFx0XFx0ZW1pdF9vcihSVl9SRUdfVDEsIHJkLCBSVl9SRUdfVDEsIGN0eCk7XFxuMTM5MjpcXHRcXHRcXHRcXHRlbWl0X212KHJkLCBSVl9SRUdfVDEsIGN0eCk7XFxuMTM5MzpcXHRcXHRcXHRcXHRicmVhaztcXG4xMzk0OlxcdFxcdFxcdH0gZWxzZSBpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcXG4xMzk1OlxcdFxcdFxcdFxcdGlmIChyZCAhPSBycylcXG4xMzk2OlxcdFxcdFxcdFxcdFxcdGVtaXRfbXYocmQsIHJzLCBjdHgpO1xcbjEzOTc6XFx0I2lmZGVmIENPTkZJR19TTVBcXG4xMzk4OlxcdFxcdFxcdFxcdGVtaXRfbGQoUlZfUkVHX1QxLCBvZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX2luZm8sIHBjcHVfb2Zmc2V0KSxcXG4xMzk5OlxcdFxcdFxcdFxcdFxcdFJWX1JFR19UUCwgY3R4KTtcXG4xNDAwOlxcdFxcdFxcdFxcdC8qIEFkZCB0aGUgb2Zmc2V0IHRvIFJkICovXFxuMTQwMTpcXHRcXHRcXHRcXHRlbWl0X2FkZChyZCwgcmQsIFJWX1JFR19UMSwgY3R4KTtcXG4xNDAyOlxcdCNlbmRpZlxcbjE0MDM6XFx0XFx0XFx0fVxcbjE0MDQ6XFx0XFx0XFx0aWYgKGltbSA9PSAxKSB7XFxuMTQwNTpcXHRcXHRcXHRcXHQvKiBTcGVjaWFsIG1vdjMyIGZvciB6ZXh0ICovXFxuMTQwNjpcXHRcXHRcXHRcXHRlbWl0X3pleHR3KHJkLCByZCwgY3R4KTtcXG4xNDA3OlxcdFxcdFxcdFxcdGJyZWFrO1xcbjE0MDg6XFx0XFx0XFx0fVxcbjE0MDk6XFx0XFx0XFx0c3dpdGNoIChpbnNuLVxcdTAwM2VvZmYpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MjQuNzkzMjU4MTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODU1NzEwMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiB0aGUgQ29kZSdzIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLCB3ZSdyZSBmb2N1c2luZyBvbiBgaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbilgLiBUaGF0IHJpbmdzIGEgYmVsbCwgaXQncyByZWxhdGVkIHRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgcGVyY3B1IHZhcmlhYmxlcyB3aGVuIHVzZWQgd2l0aGluIEJQRiBwcm9ncmFtcy4gVGhhdCdzIGEgZ29vZCBsZWFkIGZvciBvdXIgZnV6emluZyBlZmZvcnRzIOKAkyB0YXJnZXRpbmcgQlBGIHByb2dyYW1zIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZXhlcmNpc2UgdGhpcyBmdW5jdGlvbi4gSSdsbCBhZGQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIHRvIGBGb2N1c1N5bWJvbHNgLiBUaGF0IHNob3VsZCBoZWxwIHVzIGhvbmUgaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMgZHVyaW5nIGZ1enppbmcuXG5cbk5vdywgSSdtIHNwb3R0aW5nIGBDT05GSUdfUklTQ1ZfSVNBX1pBQkhBYC4gVGhhdCdzIGEgUklTQy1WIHNwZWNpZmljIGNvbmZpZywgaXNuJ3QgaXQ/IExldCdzIGFkZCB0aGF0IHRvIGBFbmFibGVDb25maWdzYCB0byBleHBhbmQgb3VyIGNvdmVyYWdlLiBCdXQsIGhhbmcgb24uLi4gaXMgYFJJU0NWX0lTQV9aQUJIQWAgYWN0dWFsbHkgKmF2YWlsYWJsZSogaW4gdGhlIGtlcm5lbCB2ZXJzaW9uIHdlJ3JlIGN1cnJlbnRseSB0ZXN0aW5nPyBXZSBuZWVkIHRvIGJlIHN1cmUuIE9rYXksIEkndmUgY2hlY2tlZCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBkZWZpbmVkIGluIGBhcmNoL3Jpc2N2L0tjb25maWdgLiBFeGNlbGxlbnQuIEFsc28sIEkndmUgbm90aWNlZCBgSEFTX0lPUE9SVGAgYmVpbmcgdXNlZCBpbiBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pby5oYC4gTGV0J3MgY29uZmlybSBgSEFTX0lPUE9SVGAgaXMgYSB2YWxpZCBjb25maWcgb3B0aW9uIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2guIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIGNvbmZpZ3MgYXJlIHZhbGlkIGFuZCB3aWxsIHRyaWdnZXIgdGhlIGRlc2lyZWQgY29kZSBwYXRocyBkdXJpbmcgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MzIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNToyOS45Nzg4MzIxNDFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTk0OTc0NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhBU19JT1BPUlRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWc9Mzc1PWNvbmZpZyBIQVNfSU9NRU1cXG4tLVxcbmxpYi9LY29uZmlnLTM3OS1cXG5saWIvS2NvbmZpZzozODA6Y29uZmlnIEhBU19JT1BPUlRcXG5saWIvS2NvbmZpZy0zODEtXFx0Ym9vbFxcbmxpYi9LY29uZmlnLTM4Mi1cXG5saWIvS2NvbmZpZzozODM6Y29uZmlnIEhBU19JT1BPUlRfTUFQXFxubGliL0tjb25maWctMzg0LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMTA6MDU6MzIuNjc4MzM1MzI4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2ODQ4NzM2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneTogUklTQy1WIFBlci1DUFUgT3BlcmF0aW9ucyBhbmQgQlBGIEpJVCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGBIQVNfSU9QT1JUYCBpcyBhIHZhbGlkIGNvbmZpZywgYnV0IGl0J3MgaW5kaXJlY3RseSBzZWxlY3RlZCDigJMgbm90IHNvbWV0aGluZyB3ZSBjYW4gZGlyZWN0bHkgZW5hYmxlIGluIGBtZW51Y29uZmlnYC4gSXQncyB0eXBpY2FsbHkgY2hvc2VuIGJ5IGFyY2hpdGVjdHVyZSBvciBidXMgY29uZmlncywgc28gbGlzdGluZyBpdCBkaXJlY3RseSBpcyBwcm9iYWJseSBub3QgdGhlIGJlc3QgYXBwcm9hY2guICBIb3dldmVyLCB0aGlzIGxlZCBtZSB0byB0aGluayBhYm91dCB3aGF0ICpzaG91bGQqIGJlIGxpc3RlZC4gIGBSSVNDVl9JU0FfWkFCSEFgIGFuZCBgQlBGX0pJVGAgYXJlIGRlZmluaXRlbHkgd29ydGggbWVudGlvbmluZy4gYEJQRl9KSVRgIGlzIGdlbmVyYWxseSBlbmFibGVkLCBidXQgaXQncyBnb29kIHRvIGJlIGV4cGxpY2l0LiBMaXN0aW5nIGBIQVNfSU9QT1JUYCBpc24ndCB2ZXJ5IHVzZWZ1bCwgaXQgYmVpbmcgaGlkZGVuLlxuXG5UaGVuIEkgc2F3IHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2U6IHRoZSBwYXRjaCBtb2RpZmllcyBgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9wZXJjcHUuaGAuIEl0IGltcGxlbWVudHMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyB1c2luZyBgYW1vYCBpbnN0cnVjdGlvbnMuICAqVGhhdCogaXMgYSBzaWduaWZpY2FudCwgZnVuZGFtZW50YWwgY2hhbmdlIGZvciBSSVNDLVYuICBUaGlzIGlzIGEgYmlnIGZ1bmN0aW9uYWwgY2hhbmdlLCB3b3J0aCBmdXp6aW5nIGZvciBjb3JyZWN0bmVzcywgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoaXQgdGhpcyBoYXJkLlxuXG5TbywgaGVyZSdzIHRoZSBwbGFuOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIHRoaXMgaXMgYSBjcnVjaWFsIGFyZWEuXG4qICAgKipGb2N1c1N5bWJvbHM6KiogYGJwZl9pbnRfaml0X2NvbXBpbGVgLCBgYnBmX2ppdF9lbWl0X2luc25gIC0gdGhpcyBjb3ZlcnMgdGhlIEJQRiBKSVQgYXNwZWN0IG9mIHRoZSBwYXRjaCBpbiBtb3JlIGRldGFpbC5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFJJU0NWX0lTQV9aQUJIQWAsIGBCUEZfSklUYCAtIEVuc3VyaW5nIHRoZXNlIGFyZSBleHBsaWNpdGx5IGVuYWJsZWQuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uXG5cbkkgZGlkIGEgcXVpY2sgc2NhbiBmb3Igb3RoZXIgaW50ZXJlc3Rpbmcgc3ltYm9scy4gYF9fc3dpdGNoX3RvYCBpcyBhIGhvdCBwYXRoLCBidXQgaW5jbHVkaW5nIGl0IHdvdWxkIGludHJvZHVjZSBhIGxvdCBvZiBub2lzZS4gU2ltaWxhcmx5LCBib290L2hvdHBsdWcgZnVuY3Rpb25zIGxpa2UgYHNtcF9wcmVwYXJlX2Jvb3RfY3B1YCwgYHNtcF9jYWxsaW5gLCBhbmQgYF9fY3B1X3VwYCBtYXkgc2VlbSByZWxldmFudCwgYnV0IFN5emthbGxlciBhbHJlYWR5IGhhbmRsZXMgaG90cGx1ZyB0ZXN0aW5nIGlmIGVuYWJsZWQuIFNvLCBgYnBmX2ludF9qaXRfY29tcGlsZWAgc2VlbXMgbGlrZSB0aGUgb3B0aW1hbCBzeW1ib2wgZm9yIHRoZSBCUEYgSklUIHRlc3RpbmcuIEl0IGlzIHRoZSBlbnRyeSBwb2ludCwgc28gdGhhdCdzIHRoZSBjb3JyZWN0IG5hbWUuICBgUklTQ1ZfSVNBX1pBQkhBYCBzZWVtcyB0byBiZSB0aGUgb25seSBuZXcgY29uZmlnLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGZvcm11bGF0ZSB0aGUgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDc2LCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNTo0Mi4zNjMyMTE4MDhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEyMDUwNDQsIkVycm9yIjoidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFJJU0NWX0lTQV9aQUJIQSIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSSVNDVl9JU0FfWkFCSEFcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJicGZfaml0X2VtaXRfaW5zblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgb3B0aW1pemVkIHBlci1jcHUgb3BlcmF0aW9ucyBmb3IgUklTQy1WIHVzaW5nIEFNTyBpbnN0cnVjdGlvbnMgYW5kIG1vZGlmaWVzIHRoZSBCUEYgSklUIHRvIHVzZSB0aGUgbmV3IGBwY3B1X29mZnNldGAgaW4gYHRocmVhZF9pbmZvYC4gVGhlc2UgYXJlIGNvcmUgYXJjaGl0ZWN0dXJhbCBhbmQgQlBGIEpJVCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdG5lc3MsIGVzcGVjaWFsbHkgdGhlIEJQRiBKSVQgZ2VuZXJhdGlvbiBmb3IgcGVyLWNwdSBhZGRyZXNzIHJlc29sdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwidGhlIGZvbGxvd2luZyBjb25maWdzIGRvIG5vdCBleGlzdCBpbiB0aGUga2VybmVsIHRyZWU6IFJJU0NWX0lTQV9aQUJIQVwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQxMDowNTo0Mi41MDc1MTk2MjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTkyMzI4NTUxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBDb25maWd1cmF0aW9uIERpc2NyZXBhbmN5KipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0IGhlcmUuIFRoZSBzeXN0ZW0gaXMgY2xhaW1pbmcgdGhhdCBgUklTQ1ZfSVNBX1pBQkhBYCBkb2Vzbid0IGV4aXN0LCBidXQgbXkgZ3JlcCBzZWFyY2ggKmNsZWFybHkqIHNob3dzIGl0IGRlZmluZWQgaW4gYGFyY2gvcmlzY3YvS2NvbmZpZzo2ODNgLiBUaGF0J3Mgd2hlcmUgaXQgc2hvdWxkIGJlIVxuXG5XYWl0LCBjb3VsZCBpdCBiZSBhIG5hbWluZyBpc3N1ZT8gSSB2YWd1ZWx5IHJlY2FsbCBzZWVpbmcgc29tZXRoaW5nIGFib3V0IGBUT09MQ0hBSU5fSEFTX1pBQkhBYC4uLiBMZXQgbWUganVzdCB2ZXJpZnkgdGhhdCBncmVwIG91dHB1dCBhZ2Fpbi4gT2theSwgaXQgbG9va3MgbGlrZSBgYXJjaC9yaXNjdi9LY29uZmlnOjY3NmAgaGFzIGBjb25maWcgVE9PTENIQUlOX0hBU19aQUJIQWAsIGFuZCB0aGUgdmVyeSBuZXh0IGxpbmVzLCBzaG93IGBSSVNDVl9JU0FfWkFCSEFgLlxuXG5TbywgKndoeSogZGlkIHRoZSBgc2V0LXJlc3VsdHNgIHV0aWxpdHkgY2xhaW0gaXQncyBtaXNzaW5nPyBUaGF0J3MgdGhlIGNydXggb2YgdGhlIHByb2JsZW0uIFBlcmhhcHMgdGhpcyB0b29sIGlzbid0IGNvbXByZWhlbnNpdmUuIE1heWJlIGl0J3MgY2hlY2tpbmcgYWdhaW5zdCBhIGhhcmRjb2RlZCBsaXN0LCBvciBpdHMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNoZWNrcyBhcmUgY3VycmVudGx5IGxvb2tpbmcgYXQgdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGFuZCBub3QgdGhlIFJJU0MtViBvbmUgSSdtIHdvcmtpbmcgd2l0aC4gSXQgd291bGRuJ3QgYmUgdGhlIGZpcnN0IHRpbWUgSSd2ZSBlbmNvdW50ZXJlZCB0aGF0IGtpbmQgb2YgbGltaXRhdGlvbi4gSXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgYnlwYXNzIHRoZSBpc3N1ZSwgYW5kIHVzZSB0aGUgbW9yZSBjb21tb24gYEJQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQxMCwiT3V0cHV0VG9rZW5zIjoxMzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzcsIlRvb2xDYWxscyI6WyJzZXQtcmVzdWx0cyJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDEwOjA1OjQ4LjQzMDgwNzYzNloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODc4MjkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZW1pdF9pbnNuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBvcHRpbWl6ZWQgcGVyLWNwdSBvcGVyYXRpb25zIGZvciBSSVNDLVYgdXNpbmcgQU1PIGluc3RydWN0aW9ucyBhbmQgbW9kaWZpZXMgdGhlIEJQRiBKSVQgdG8gdXNlIHRoZSBuZXcgYHBjcHVfb2Zmc2V0YCBpbiBgdGhyZWFkX2luZm9gLiBUaGVzZSBhcmUgY29yZSBhcmNoaXRlY3R1cmFsIGFuZCBCUEYgSklUIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB0aGUgQlBGIEpJVCBnZW5lcmF0aW9uIGZvciBwZXItY3B1IGFkZHJlc3MgcmVzb2x1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnBmX2ppdF9lbWl0X2luc25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9wdGltaXplZCBwZXItY3B1IG9wZXJhdGlvbnMgZm9yIFJJU0MtViB1c2luZyBBTU8gaW5zdHJ1Y3Rpb25zIGFuZCBtb2RpZmllcyB0aGUgQlBGIEpJVCB0byB1c2UgdGhlIG5ldyBgcGNwdV9vZmZzZXRgIGluIGB0aHJlYWRfaW5mb2AuIFRoZXNlIGFyZSBjb3JlIGFyY2hpdGVjdHVyYWwgYW5kIEJQRiBKSVQgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHRoZSBCUEYgSklUIGdlbmVyYXRpb24gZm9yIHBlci1jcHUgYWRkcmVzcyByZXNvbHV0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflow8wdw7[1] Phase: Succeeded StartedAt: 2026-07-02 10:09:03 +0000 UTC FinishedAt: 2026-07-02 10:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 10:09:03 +0000 UTC FinishedAt: 2026-07-02 10:09:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2] Phase: Succeeded StartedAt: 2026-07-02 10:09:03 +0000 UTC FinishedAt: 2026-07-02 11:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 10:09:03 +0000 UTC FinishedAt: 2026-07-02 11:13:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 10:09:03 +0000 UTC FinishedAt: 2026-07-02 10:09:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 10:09:03 +0000 UTC FinishedAt: 2026-07-02 10:09:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow8wdw7/series-workflow8wdw7-convert-artifact-361637618/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 10:09:24 +0000 UTC FinishedAt: 2026-07-02 10:33:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 10:09:24 +0000 UTC FinishedAt: 2026-07-02 10:33:33 +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:*2c0ac1a7-77ea-4cf3-9667-634ac430b906,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-workflow8wdw7/series-workflow8wdw7-convert-artifact-361637618/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": "c97a2d8a-474e-49ce-b587-00540a1a3461", "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-workflow8wdw7/series-workflow8wdw7-build-action-2759831152/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 10:09:24 +0000 UTC FinishedAt: 2026-07-02 10:33:23 +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:*2c0ac1a7-77ea-4cf3-9667-634ac430b906,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-workflow8wdw7/series-workflow8wdw7-convert-artifact-361637618/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": "c97a2d8a-474e-49ce-b587-00540a1a3461", "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-workflow8wdw7/series-workflow8wdw7-build-action-2759831152/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 10:33:33 +0000 UTC FinishedAt: 2026-07-02 10:33:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 10:33:33 +0000 UTC FinishedAt: 2026-07-02 10:33:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 10:33:33 +0000 UTC FinishedAt: 2026-07-02 10:33:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 10:33:33 +0000 UTC FinishedAt: 2026-07-02 10:33:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow8wdw7/series-workflow8wdw7-convert-artifact-3627969293/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 10:33:43 +0000 UTC FinishedAt: 2026-07-02 10:35:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 10:33:43 +0000 UTC FinishedAt: 2026-07-02 10:35:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c97a2d8a-474e-49ce-b587-00540a1a3461,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-workflow8wdw7/series-workflow8wdw7-build-action-2759831152/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-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 10:35:54 +0000 UTC FinishedAt: 2026-07-02 10:35:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 10:35:54 +0000 UTC FinishedAt: 2026-07-02 10:35:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 10:35:54 +0000 UTC FinishedAt: 2026-07-02 11:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 10:35:54 +0000 UTC FinishedAt: 2026-07-02 11:06:50 +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:*2c0ac1a7-77ea-4cf3-9667-634ac430b906,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-workflow8wdw7/series-workflow8wdw7-convert-artifact-3627969293/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": "834b0bb7-10b6-4f38-86cc-8befaa8cc807", "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-workflow8wdw7/series-workflow8wdw7-build-action-1785657577/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 10:35:54 +0000 UTC FinishedAt: 2026-07-02 11:05:28 +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:*2c0ac1a7-77ea-4cf3-9667-634ac430b906,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-workflow8wdw7/series-workflow8wdw7-convert-artifact-3627969293/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": "834b0bb7-10b6-4f38-86cc-8befaa8cc807", "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-workflow8wdw7/series-workflow8wdw7-build-action-1785657577/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 11:06:50 +0000 UTC FinishedAt: 2026-07-02 11:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 11:06:50 +0000 UTC FinishedAt: 2026-07-02 11:06:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 11:06:50 +0000 UTC FinishedAt: 2026-07-02 11:09:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 11:06:50 +0000 UTC FinishedAt: 2026-07-02 11:08:55 +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:*834b0bb7-10b6-4f38-86cc-8befaa8cc807,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-workflow8wdw7/series-workflow8wdw7-build-action-1785657577/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-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:13:18 +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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},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:*c97a2d8a-474e-49ce-b587-00540a1a3461,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*834b0bb7-10b6-4f38-86cc-8befaa8cc807,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-workflow8wdw7/series-workflow8wdw7-build-action-2759831152/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-workflow8wdw7/series-workflow8wdw7-build-action-1785657577/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:10:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:09:55 +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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},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-workflow8wdw7/series-workflow8wdw7-convert-artifact-3613919474/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:09:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:09:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 11:09:07 +0000 UTC FinishedAt: 2026-07-02 11:09:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 11:10:05 +0000 UTC FinishedAt: 2026-07-02 11:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8wdw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","bpf_jit_emit_insn"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"bc7b086a45521a986a49045907f017e3e46c763e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"6270fdd3-9aad-420c-b454-ac41dcdad2ec","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 11:10:05 +0000 UTC FinishedAt: 2026-07-02 11:12:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c97a2d8a-474e-49ce-b587-00540a1a3461,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*834b0bb7-10b6-4f38-86cc-8befaa8cc807,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-workflow8wdw7/series-workflow8wdw7-build-action-2759831152/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-workflow8wdw7/series-workflow8wdw7-build-action-1785657577/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-workflow8wdw7/series-workflow8wdw7-convert-artifact-3613919474/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,}