Name: series-workflowcqh69 Phase: Succeeded StartedAt: 2026-08-02 12:30:39 +0000 UTC FinishedAt: 2026-08-02 16:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[0] Phase: Succeeded StartedAt: 2026-08-02 12:30:39 +0000 UTC FinishedAt: 2026-08-02 12:50:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 12:30:39 +0000 UTC FinishedAt: 2026-08-02 12:50:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "SYNC_FILE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "SYNC_FILE" ], "series_id": "fe69da0d-20d0-4862-8d7e-e225a73646a8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "zerocopy_fill_skb_from_iter", "skb_zerocopy", "__zerocopy_sg_from_iter", "skb_zerocopy_iter_stream" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7U1lOQ19GSUxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weSYjMzQ7LAogICAgJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7LAogICAgJiMzNDtza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyAoemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyLCBza2JfemVyb2NvcHksIHRjcF9zZW5kbXNnX2xvY2tlZCkgdG8gaGFuZGxlIHVucmVhZGFibGUgc2tiIGZyYWdtZW50cyBhbmQgZml4IGVycm9yIGNvZGVzIGZvciBkZXZtZW0gYW5kIGl0ZXIgemVyb2NvcHkgcGF0aHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTI6NDc6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGF0YWdyYW0uYyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbmluZGV4IDE3M2I1ZDk3YmQ0MDkuLjZmOGZmZDYxYmNhYjQgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXG5AQCAtNjM4LDcgJiM0Mzs2MzgsNyBAQCBpbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbiBcbiBcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4tXHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbiBcdHdoaWxlIChsZW5ndGggXHUwMDI2XHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XG4gXHRcdHN0cnVjdCBwYWdlICpoZWFkLCAqbGFzdF9oZWFkID0gTlVMTDtcbkBAIC03MTMsNyAmIzQzOzcxMyw3IEBAIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcbiBcdHN0cnVjdCBuZXRfaW92ICpuaW92O1xuIFxuIFx0aWYgKGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxuLVx0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gXG4gXHQvKiBEZXZtZW0gZmlsbGluZyB3b3JrcyBieSB0YWtpbmcgYW4gSU9WRUMgZnJvbSB0aGUgdXNlciB3aGVyZSB0aGVcbiBcdCAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG9cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9za2J1ZmYuYyBiL25ldC9jb3JlL3NrYnVmZi5jXG5pbmRleCBiYTNkYmFjODBmYjQ5Li5hZWJlOGVhNzQ3NzZhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvc2tidWZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL3NrYnVmZi5jXG5AQCAtMzkyOCw2ICYjNDM7MzkyOCw5IEBAIHNrYl96ZXJvY29weShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgbGVuLCBpbnQgaGxlbilcbiBcdH1cbiBcdHNrYl9zaGluZm8odG8pLVx1MDAzZW5yX2ZyYWdzID0gajtcbiBcbiYjNDM7XHRpZiAoaSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgZnJvbS1cdTAwM2V1bnJlYWRhYmxlKVxuJiM0MztcdFx0dG8tXHUwMDNldW5yZWFkYWJsZSA9IDE7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMTg2YTM2YzY5ODc5OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTEyNzgsNiAmIzQzOzEyNzgsMTEgQEAgaW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG4gXHRcdGlmIChjb3B5IFx1MDAzZSBtc2dfZGF0YV9sZWZ0KG1zZykpXG4gXHRcdFx0Y29weSA9IG1zZ19kYXRhX2xlZnQobXNnKTtcbiBcbiYjNDM7XHRcdGlmICh6YyAhPSBNU0dfWkVST0NPUFkgXHUwMDI2XHUwMDI2IHVubGlrZWx5KCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkpIHtcbiYjNDM7XHRcdFx0dGNwX21hcmtfcHVzaCh0cCwgc2tiKTtcbiYjNDM7XHRcdFx0Z290byBuZXdfc2VnbWVudDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdGlmICh6YyA9PSAwKSB7XG4gXHRcdFx0Ym9vbCBtZXJnZSA9IHRydWU7XG4gXHRcdFx0aW50IGkgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7U1lOQ19GSUxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weSYjMzQ7LAogICAgJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7LAogICAgJiMzNDtza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyAoemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyLCBza2JfemVyb2NvcHksIHRjcF9zZW5kbXNnX2xvY2tlZCkgdG8gaGFuZGxlIHVucmVhZGFibGUgc2tiIGZyYWdtZW50cyBhbmQgZml4IGVycm9yIGNvZGVzIGZvciBkZXZtZW0gYW5kIGl0ZXIgemVyb2NvcHkgcGF0aHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMTI6NDc6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uYwppbmRleCAxNzNiNWQ5N2JkNDA5Li42ZjhmZmQ2MWJjYWI0IDEwMDY0NAotLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2RhdGFncmFtLmMKQEAgLTYzOCw3ICYjNDM7NjM4LDcgQEAgaW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCBmcmFnID0gc2tiX3NoaW5mbyhza2IpLSZndDtucl9mcmFnczsKIAogCWlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpCi0JCXJldHVybiAtRUZBVUxUOwomIzQzOwkJcmV0dXJuIC1FTVNHU0laRTsKIAogCXdoaWxlIChsZW5ndGggJmFtcDsmYW1wOyBpb3ZfaXRlcl9jb3VudChmcm9tKSkgewogCQlzdHJ1Y3QgcGFnZSAqaGVhZCwgKmxhc3RfaGVhZCA9IE5VTEw7CkBAIC03MTMsNyAmIzQzOzcxMyw3IEBAIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwKIAlzdHJ1Y3QgbmV0X2lvdiAqbmlvdjsKIAogCWlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpCi0JCXJldHVybiAtRUZBVUxUOwomIzQzOwkJcmV0dXJuIC1FTVNHU0laRTsKIAogCS8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZQogCSAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG8KZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmMKaW5kZXggYmEzZGJhYzgwZmI0OS4uYWViZThlYTc0Nzc2YSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2tidWZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvc2tidWZmLmMKQEAgLTM5MjgsNiAmIzQzOzM5MjgsOSBAQCBza2JfemVyb2NvcHkoc3RydWN0IHNrX2J1ZmYgKnRvLCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IGxlbiwgaW50IGhsZW4pCiAJfQogCXNrYl9zaGluZm8odG8pLSZndDtucl9mcmFncyA9IGo7CiAKJiM0MzsJaWYgKGkgJmd0OyAwICZhbXA7JmFtcDsgZnJvbS0mZ3Q7dW5yZWFkYWJsZSkKJiM0MzsJCXRvLSZndDt1bnJlYWRhYmxlID0gMTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IDQ1NTQ0MWYxYjY5NDkuLjE4NmEzNmM2OTg3OTggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcC5jCkBAIC0xMjc4LDYgJiM0MzsxMjc4LDExIEBAIGludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKQogCQlpZiAoY29weSAmZ3Q7IG1zZ19kYXRhX2xlZnQobXNnKSkKIAkJCWNvcHkgPSBtc2dfZGF0YV9sZWZ0KG1zZyk7CiAKJiM0MzsJCWlmICh6YyAhPSBNU0dfWkVST0NPUFkgJmFtcDsmYW1wOyB1bmxpa2VseSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKSB7CiYjNDM7CQkJdGNwX21hcmtfcHVzaCh0cCwgc2tiKTsKJiM0MzsJCQlnb3RvIG5ld19zZWdtZW50OwomIzQzOwkJfQomIzQzOwogCQlpZiAoemMgPT0gMCkgewogCQkJYm9vbCBtZXJnZSA9IHRydWU7CiAJCQlpbnQgaSA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7bnJfZnJhZ3M7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA0MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCBmb3IgUm9idXN0bmVzcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBjb3JlIG5ldHdvcmtpbmcgY29kZTogYG5ldC9jb3JlL2RhdGFncmFtLmNgLCBgbmV0L2NvcmUvc2tidWZmLmNgLCBhbmQgYG5ldC9pcHY0L3RjcC5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwsIGNoYW5nZXMgcmVsYXRlZCB0byB6ZXJvLWNvcHkgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgdW5yZWFkYWJsZSBza2IgZnJhZ21lbnRzIGluIGZ1bmN0aW9ucyBsaWtlIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIOKAkyByZXR1cm5pbmcgYC1FTVNHU0laRWAgaW5zdGVhZCBvZiBgLUVGQVVMVGAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLiBUaGVyZSYjMzk7cyBhbHNvIHNvbWUgbG9naWMgYWRkZWQgaW4gYHNrYl96ZXJvY29weWAgdG8gcHJvcGFnYXRlIHRoZSB1bnJlYWRhYmxlIGZsYWcsIGFuZCBhIG1vZGlmaWNhdGlvbiB0byBgdGNwX3NlbmRtc2dfbG9ja2VkYCB0aGF0IG1hcmtzIHB1c2ggYW5kIGp1bXBzIGlmIGAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGltcGFjdGluZyBUQ1AsIHNrYnVmZiBtYW5hZ2VtZW50LCBhbmQgZGF0YWdyYW0gaGFuZGxpbmcg4oCTIHNvLCBhcyBhbnkgZXhwZXJ0IGluIG5ldHdvcmtpbmcsIG15IGZpcnN0IHRob3VnaHQgaXMgZnV6emluZy4gV2UgbmVlZCB0byBzdWJqZWN0IHRoZXNlIGNoYW5nZXMgdG8gcmlnb3JvdXMgdGVzdGluZyB0byBmbHVzaCBvdXQgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIG9yIHJlZ3Jlc3Npb25zLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHRhcmdldCB3aXRoIG15IGZ1enppbmcgZWZmb3J0cy4gRnJvbSB0aGUgcGF0Y2ggaXRzZWxmLCB0aGUgcHJpbWUgc3VzcGVjdHMgYXJlOgoKKiAgIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgCiogICBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gCiogICBgc2tiX3plcm9jb3B5YAoqICAgYHRjcF9zZW5kbXNnX2xvY2tlZGAKCkhtbSwgYHRjcF9zZW5kbXNnX2xvY2tlZGAgaXMgYSBob3QtcGF0aCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIHRyaWNreSBvbmU7IGZ1enppbmcgYSBob3QtcGF0aCBjb3VsZCBpbnRyb2R1Y2UgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIERvIEkgYXZvaWQgaXQgaW5pdGlhbGx5LCBvciBkbyBJIGZvY3VzIG9uIHRoYXQgY29kZSBmb3IgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eT8gYHNrYl96ZXJvY29weWAgaXMgYWxzbyBxdWl0ZSBjb21tb24sIHNvIHRoYXQgb25lIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vay4gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBzdGFydGluZyB3aXRoIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGFzIGdvb2QgaW5pdGlhbCBjYW5kaWRhdGVzLiBUaGV5JiMzOTtyZSBtb3JlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIGxvZ2ljIGNoYW5nZXMgaW4gdGhlIHBhdGNoIGFuZCBjYW4gc3RpbGwgYmUgZnV6emVkIHdpdGhvdXQgYmVpbmcgYXMgZGlzcnVwdGl2ZS4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBtYWtlIHN1cmUgdGhhdCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGlzIG5vdCBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGF0YWdyYW0uYz03MDY9c3RhdGljIGludFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDc6emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MDgtXHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc0OT1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjAtXHRlbHNlIGlmIChiaW5kaW5nKVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjE6XHRcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHNrYiwgZnJvbSwgbGVuZ3RoLCBiaW5kaW5nKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHplcm9jb3B5IFNLQiBGaWxsIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGlzIGEgKnN0YXRpYyogZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgc2NvcGUgYW5kIHBvdGVudGlhbCBjYWxsIHNpdGVzLiBHaXZlbiB0aGF0IGl0JiMzOTtzIHN0YXRpYywgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgYmVpbmcgKmRpcmVjdGx5KiBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIGN1cnJlbnQgY29kZWJhc2UgdG8gdHJ1bHkgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgZGF0YSBmbG93LiBSaWdodCwgdGhlIGNvZGUgY29tbWVudCBzYXlzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4gTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IHVuZGVyc3RhbmRpbmcuIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb24gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgZGlyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGF0IHRoYXQgbGV2ZWwgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYzPWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjctXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Njg6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY5LVx0XHRcdFx0c3RydWN0IGlvdl9pdGVyICpmcm9tLCBzaXplX3QgbGVuZ3RoKTtcbi0tXG5pb191cmluZy9uZXQuYz0xNDUwPXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyX2lvdmVjKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW9fdXJpbmcvbmV0LmMtMTQ1My1cdHNrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZChza2IpO1xuaW9fdXJpbmcvbmV0LmM6MTQ1NDpcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xuaW9fdXJpbmcvbmV0LmMtMTQ1NS19XG4tLVxuaW9fdXJpbmcvbmV0LmM9MTQ1Nz1zdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmlvX3VyaW5nL25ldC5jLTE0NjktXHRlbHNlIGlmICh1bmxpa2VseSghc2tiX3pjb3B5X21hbmFnZWQoc2tiKSkpXG5pb191cmluZy9uZXQuYzoxNDcwOlx0XHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcbmlvX3VyaW5nL25ldC5jLTE0NzEtXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz02MzM9RVhQT1JUX1NZTUJPTChza2JfY29weV9kYXRhZ3JhbV9mcm9tX2l0ZXJfZnVsbCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTYzNC1cbm5ldC9jb3JlL2RhdGFncmFtLmM6NjM1OmludCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjM2LVx0XHRcdFx0c3RydWN0IGlvdl9pdGVyICpmcm9tLCBzaXplX3QgbGVuZ3RoKVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmM9NzQ5PWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2Mi1cdGVsc2Vcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYzOlx0XHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03NjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipQb3RlbnRpYWwgWmVyby1Db3B5IE9wdGltaXphdGlvbiBQb2ludHMgaW4gdGhlIEtlcm5lbCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgZnVuY3Rpb25zLiBJdCBhcHBlYXJzIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGlzIGV4cG9zZWQsIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGludGVuZGVkIGZvciBicm9hZGVyIHVzZSDigJMgaW50ZXJlc3RpbmcuIEFuZCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIG1pZ2h0IGFsc28gYmUgYSB2YWx1YWJsZSB0YXJnZXQgZm9yIG9wdGltaXphdGlvbjsgaXRzIG5hbWUgc3VnZ2VzdHMgaXQgZGVhbHMgd2l0aCBzY2F0dGVyLWdhdGhlciBsaXN0cywgd2hpY2ggYXJlIGtleSBpbiB6ZXJvLWNvcHkgc2NlbmFyaW9zLiBPZiBjb3Vyc2UsIHdlIGhhdmUgYHNrYl96ZXJvY29weWAgd2hpY2ggaXMgYW5vdGhlciB3ZWxsLWtub3duIHBsYXllciBpbiB0aGlzIGdhbWUgYW5kIGFsc28gZXhwb3NlZCBmb3Igd2lkZXIgdXNlLCBpdCBzaG91bGQgYmUgY29uc2lkZXJlZC4gQWxzbywgSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgdGNwX3NlbmRtc2dfbG9ja2VkYDsgaXQmIzM5O3MgYSB2aXRhbCBwYXJ0IG9mIHRoZSBUQ1Agc2VuZGluZyBwcm9jZXNzLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdXNpbmcgZGV2bWVtIG5lZWRzIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uIFRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHNldHRpbmdzIGFyZSBnb2luZyB0byBkaXJlY3RseSBpbXBhY3QgaG93IHdlbGwgdGhpcyB3b3Jrcy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBvdmVybG9vayBhbnkgcHJlLXJlcXVpc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGF0YWdyYW0uYz03MDY9c3RhdGljIGludFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDc6emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MDgtXHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc0OT1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjAtXHRlbHNlIGlmIChiaW5kaW5nKVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjE6XHRcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHNrYiwgZnJvbSwgbGVuZ3RoLCBiaW5kaW5nKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBEYXRhZ3JhbSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBhIHNwZWNpZmljIHBvaW50IGluIHRoZSBkYXRhZ3JhbSBoYW5kbGluZyBjb2RlLiBUaGUgYXJlYSBvZiBpbnRlcmVzdCBpcyBsaWtlbHkgd2l0aGluIHRoZSBgbmV0L2NvcmUvZGF0YWdyYW0uY2AgZmlsZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIHRoZSBmdW5jdGlvbiBjYWxsIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluIHdpbGwgbGlrZWx5IGJlIGFyb3VuZCBsaW5lIDcwNy4gVGhhdCBzaG91bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGFuYWx5emUgdGhlIHNwZWNpZmljcyBhbmQgbmFycm93IGRvd24gdGhlIGFyZWEgSSYjMzk7bSB0cnlpbmcgdG8gbG9vayBhdC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY2xlYXIgaWRlYSBvZiB3aGF0IEkmIzM5O20gc2Vla2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9kYXRhZ3JhbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2OTA6XHRcdFx0XHRcdFx0cmVmcyYjNDM7JiM0Mzs7XG4gNjkxOlx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuIDY5MjpcdFx0XHRcdFx0fVxuIDY5MzpcdFx0XHRcdH1cbiA2OTQ6XHRcdFx0XHRpZiAocmVmcykge1xuIDY5NTpcdFx0XHRcdFx0cGFnZV9yZWZfc3ViKGxhc3RfaGVhZCwgcmVmcyk7XG4gNjk2Olx0XHRcdFx0XHRyZWZzID0gMDtcbiA2OTc6XHRcdFx0XHR9XG4gNjk4Olx0XHRcdFx0c2tiX2ZpbGxfcGFnZV9kZXNjX25vYWNjKHNrYiwgZnJhZyYjNDM7JiM0MzssIGhlYWQsIHN0YXJ0LCBzaXplKTtcbiA2OTk6XHRcdFx0fVxuIDcwMDpcdFx0XHRpZiAocmVmcylcbiA3MDE6XHRcdFx0XHRwYWdlX3JlZl9zdWIobGFzdF9oZWFkLCByZWZzKTtcbiA3MDI6XHRcdH1cbiA3MDM6XHRcdHJldHVybiAwO1xuIDcwNDpcdH1cbiA3MDU6XHRcbiA3MDY6XHRzdGF0aWMgaW50XG4gNzA3Olx0emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIDcwODpcdFx0XHRcdCAgICAgIGludCBsZW5ndGgsXG4gNzA5Olx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG4gNzEwOlx0e1xuIDcxMTpcdFx0aW50IGkgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4gNzEyOlx0XHRzaXplX3QgdmlydF9hZGRyLCBzaXplLCBvZmY7XG4gNzEzOlx0XHRzdHJ1Y3QgbmV0X2lvdiAqbmlvdjtcbiA3MTQ6XHRcbiA3MTU6XHRcdGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbiA3MTY6XHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiA3MTc6XHRcbiA3MTg6XHRcdC8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZVxuIDcxOTpcdFx0ICogaW92X2FkZHJzIGFyZSBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgaW4gYnl0ZXMgaW50byB0aGUgZG1hLWJ1ZiB0b1xuIDcyMDpcdFx0ICogc2VuZCBmcm9tLiBXZSBkbyBub3Qgc3VwcG9ydCBvdGhlciBpdGVyIHR5cGVzLlxuIDcyMTpcdFx0ICovXG4gNzIyOlx0XHRpZiAoaW92X2l0ZXJfdHlwZShmcm9tKSAhPSBJVEVSX0lPVkVDIFx1MDAyNlx1MDAyNlxuIDcyMzpcdFx0ICAgIGlvdl9pdGVyX3R5cGUoZnJvbSkgIT0gSVRFUl9VQlVGKVxuIDcyNDpcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiA3MjU6XHRcbiA3MjY6XHRcdHdoaWxlIChsZW5ndGggXHUwMDI2XHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XG4gNzI3Olx0XHRcdGlmIChpID09IE1BWF9TS0JfRlJBR1MpXG4gNzI4Olx0XHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiA3Mjk6XHRcbiA3MzA6XHRcdFx0dmlydF9hZGRyID0gKHNpemVfdClpdGVyX2lvdl9hZGRyKGZyb20pO1xuIDczMTpcdFx0XHRuaW92ID0gbmV0X2Rldm1lbV9nZXRfbmlvdl9hdChiaW5kaW5nLCB2aXJ0X2FkZHIsIFx1MDAyNm9mZiwgXHUwMDI2c2l6ZSk7XG4gNzMyOlx0XHRcdGlmICghbmlvdilcbiA3MzM6XHRcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiA3MzQ6XHRcbiA3MzU6XHRcdFx0c2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgbGVuZ3RoKTtcbiA3MzY6XHRcdFx0c2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgaXRlcl9pb3ZfbGVuKGZyb20pKTtcbiA3Mzc6XHRcbiA3Mzg6XHRcdFx0Z2V0X25ldG1lbShuZXRfaW92X3RvX25ldG1lbShuaW92KSk7XG4gNzM5Olx0XHRcdHNrYl9hZGRfcnhfZnJhZ19uZXRtZW0oc2tiLCBpLCBuZXRfaW92X3RvX25ldG1lbShuaW92KSwgb2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTcyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciBgZGV2bWVtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgaGFuZGxlZCBpbnRlcm5hbGx5LCBsaWtlIGEgc2V0dGluZyB0aGF0IGNvbnRyb2xzIG9yIHJlbGF0ZXMgdG8gaXQuIExldCYjMzk7cyBzZWUuLi4gYSBxdWljayBtZW50YWwgY2hlY2sgc3VnZ2VzdHMgdGhhdCBgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ2AgbWlnaHQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTtsbCBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2tidWZmLmg9MTc1OT12b2lkIG1zZ196ZXJvY29weV9wdXRfYWJvcnQoc3RydWN0IHVidWZfaW5mbyAqdWFyZywgYm9vbCBoYXZlX3VyZWYpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYwLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzYxOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYzPWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjUtXHRcdFx0ICAgIHNpemVfdCBsZW5ndGgsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjY6XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3Nzg9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzgwLVx0XHRcdCAgICAgc3RydWN0IHVidWZfaW5mbyAqdWFyZyxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc4MTpcdFx0XHQgICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc4Mi1cbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTcwNz16ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcwOC1cdFx0XHQgICAgICBpbnQgbGVuZ3RoLFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDk6XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcxMC17XG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUxLVx0XHRcdCAgICBzaXplX3QgbGVuZ3RoLFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NTI6XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NTMte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTI4LVxubmV0L2NvcmUvZGV2bWVtLmM6Mjk6c3RhdGljIERFRklORV9YQVJSQVlfRkxBR1MobmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ3MsIFhBX0ZMQUdTX0FMTE9DMSk7XG5uZXQvY29yZS9kZXZtZW0uYy0zMC1cbi0tXG5uZXQvY29yZS9kZXZtZW0uYz00Mz1zdGF0aWMgZG1hX2FkZHJfdCBuZXRfZGV2bWVtX2dldF9kbWFfYWRkcihjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy01MS1cbm5ldC9jb3JlL2Rldm1lbS5jOjUyOnN0YXRpYyB2b2lkIG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKVxubmV0L2NvcmUvZGV2bWVtLmMtNTMte1xubmV0L2NvcmUvZGV2bWVtLmM6NTQ6XHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9XG5uZXQvY29yZS9kZXZtZW0uYzo1NTpcdFx0Y29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcsIHJlZik7XG5uZXQvY29yZS9kZXZtZW0uYy01Ni1cbm5ldC9jb3JlL2Rldm1lbS5jOjU3Olx0SU5JVF9XT1JLKFx1MDAyNmJpbmRpbmctXHUwMDNldW5iaW5kX3csIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKTtcbm5ldC9jb3JlL2Rldm1lbS5jLTU4LVx0c2NoZWR1bGVfd29yayhcdTAwMjZiaW5kaW5nLVx1MDAzZXVuYmluZF93KTtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy02MC1cbm5ldC9jb3JlL2Rldm1lbS5jOjYxOnZvaWQgX19uZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2ZyZWUoc3RydWN0IHdvcmtfc3RydWN0ICp3cSlcbm5ldC9jb3JlL2Rldm1lbS5jLTYyLXtcbm5ldC9jb3JlL2Rldm1lbS5jOjYzOlx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBjb250YWluZXJfb2Yod3EsIHR5cGVvZigqYmluZGluZyksIHVuYmluZF93KTtcbm5ldC9jb3JlL2Rldm1lbS5jLTY0LVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTg3PXN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5jOjg4Om5ldF9kZXZtZW1fYWxsb2NfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxubmV0L2NvcmUvZGV2bWVtLmMtODkte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTExMj12b2lkIG5ldF9kZXZtZW1fZnJlZV9kbWFidWYoc3RydWN0IG5ldF9pb3YgKm5pb3YpXG5uZXQvY29yZS9kZXZtZW0uYy0xMTMte1xubmV0L2NvcmUvZGV2bWVtLmM6MTE0Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nKG5pb3YpO1xubmV0L2NvcmUvZGV2bWVtLmMtMTE1LVx0dW5zaWduZWQgbG9uZyBkbWFfYWRkciA9IG5ldF9kZXZtZW1fZ2V0X2RtYV9hZGRyKG5pb3YpO1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTEyMy1cbm5ldC9jb3JlL2Rldm1lbS5jOjEyNDp2b2lkIG5ldF9kZXZtZW1fdW5iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbm5ldC9jb3JlL2Rldm1lbS5jLTEyNS17XG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTI5LVxubmV0L2NvcmUvZGV2bWVtLmM6MTMwOlx0eGFfZXJhc2UoXHUwMDI2bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ3MsIGJpbmRpbmctXHUwMDNlaWQpO1xubmV0L2NvcmUvZGV2bWVtLmMtMTMxLVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTE1ND1pbnQgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcbm5ldC9jb3JlL2Rldm1lbS5jOjE1NTpcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyxcbm5ldC9jb3JlL2Rldm1lbS5jLTE1Ni1cdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTgyLVxubmV0L2NvcmUvZGV2bWVtLmM6MTgzOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcbm5ldC9jb3JlL2Rldm1lbS5jLTE4NC1uZXRfZGV2bWVtX2JpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnZkZXYsXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTg5LXtcbm5ldC9jb3JlL2Rldm1lbS5jOjE5MDpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xubmV0L2NvcmUvZGV2bWVtLmMtMTkxLVx0c3RhdGljIHUzMiBpZF9hbGxvY19uZXh0O1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTIxOC1cdGVyciA9IHBlcmNwdV9yZWZfaW5pdChcdTAwMjZiaW5kaW5nLVx1MDAzZXJlZixcbm5ldC9jb3JlL2Rldm1lbS5jOjIxOTpcdFx0XHQgICAgICBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3JlbGVhc2UsXG5uZXQvY29yZS9kZXZtZW0uYy0yMjAtXHRcdFx0ICAgICAgMCwgR0ZQX0tFUk5FTCk7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMzIxLVxubmV0L2NvcmUvZGV2bWVtLmM6MzIyOlx0ZXJyID0geGFfYWxsb2NfY3ljbGljKFx1MDAyNm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBcdTAwMjZiaW5kaW5nLVx1MDAzZWlkLFxubmV0L2NvcmUvZGV2bWVtLmMtMzIzLVx0XHRcdCAgICAgIGJpbmRpbmcsIHhhX2xpbWl0XzMyYiwgXHUwMDI2aWRfYWxsb2NfbmV4dCxcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy0zNTEtXG5uZXQvY29yZS9kZXZtZW0uYzozNTI6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKm5ldF9kZXZtZW1fbG9va3VwX2RtYWJ1Zih1MzIgaWQpXG5uZXQvY29yZS9kZXZtZW0uYy0zNTMte1xubmV0L2NvcmUvZGV2bWVtLmM6MzU0Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XG5uZXQvY29yZS9kZXZtZW0uYy0zNTUtXG5uZXQvY29yZS9kZXZtZW0uYy0zNTYtXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvY29yZS9kZXZtZW0uYzozNTc6XHRiaW5kaW5nID0geGFfbG9hZChcdTAwMjZuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5ncywgaWQpO1xubmV0L2NvcmUvZGV2bWVtLmMtMzU4LVx0aWYgKGJpbmRpbmcpIHtcbm5ldC9jb3JlL2Rldm1lbS5jOjM1OTpcdFx0aWYgKCFuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2dldChiaW5kaW5nKSlcbm5ldC9jb3JlL2Rldm1lbS5jLTM2MC1cdFx0XHRiaW5kaW5nID0gTlVMTDtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYz0zNjc9dm9pZCBuZXRfZGV2bWVtX2dldF9uZXRfaW92KHN0cnVjdCBuZXRfaW92ICpuaW92KVxubmV0L2NvcmUvZGV2bWVtLmMtMzY4LXtcbm5ldC9jb3JlL2Rldm1lbS5jOjM2OTpcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfZ2V0KG5ldF9kZXZtZW1faW92X2JpbmRpbmcobmlvdikpO1xubmV0L2NvcmUvZGV2bWVtLmMtMzcwLX1cbi0tXG5uZXQvY29yZS9kZXZtZW0uYz0zNzI9dm9pZCBuZXRfZGV2bWVtX3B1dF9uZXRfaW92KHN0cnVjdCBuZXRfaW92ICpuaW92KVxubmV0L2NvcmUvZGV2bWVtLmMtMzczLXtcbm5ldC9jb3JlL2Rldm1lbS5jOjM3NDpcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KG5ldF9kZXZtZW1faW92X2JpbmRpbmcobmlvdikpO1xubmV0L2NvcmUvZGV2bWVtLmMtMzc1LX1cbm5ldC9jb3JlL2Rldm1lbS5jLTM3Ni1cbm5ldC9jb3JlL2Rldm1lbS5jOjM3NzpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kZXZtZW0uYy0zNzgtXHRcdFx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZClcbm5ldC9jb3JlL2Rldm1lbS5jLTM3OS17XG5uZXQvY29yZS9kZXZtZW0uYzozODA6XHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcbm5ldC9jb3JlL2Rldm1lbS5jLTM4MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2O1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTQyMy1cdGlmIChiaW5kaW5nKVxubmV0L2NvcmUvZGV2bWVtLmM6NDI0Olx0XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9jb3JlL2Rldm1lbS5jLTQyNS1cbi0tXG5uZXQvY29yZS9kZXZtZW0uYz00Mjk9c3RydWN0IG5ldF9pb3YgKlxubmV0L2NvcmUvZGV2bWVtLmM6NDMwOm5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXG5uZXQvY29yZS9kZXZtZW0uYy00MzEtXHRcdCAgICAgICBzaXplX3QgdmlydF9hZGRyLCBzaXplX3QgKm9mZiwgc2l6ZV90ICpzaXplKVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTQ0ND1pbnQgbXBfZG1hYnVmX2Rldm1lbV9pbml0KHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wpXG5uZXQvY29yZS9kZXZtZW0uYy00NDUte1xubmV0L2NvcmUvZGV2bWVtLmM6NDQ2Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBwb29sLVx1MDAzZW1wX3ByaXY7XG5uZXQvY29yZS9kZXZtZW0uYy00NDctXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtNDU5LVxubmV0L2NvcmUvZGV2bWVtLmM6NDYwOlx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19nZXQoYmluZGluZyk7XG5uZXQvY29yZS9kZXZtZW0uYy00NjEtXHRyZXR1cm4gMDtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYz00NjQ9bmV0bWVtX3JlZiBtcF9kbWFidWZfZGV2bWVtX2FsbG9jX25ldG1lbXMoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxubmV0L2NvcmUvZGV2bWVtLmMtNDY1LXtcbm5ldC9jb3JlL2Rldm1lbS5jOjQ2NjpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gcG9vbC1cdTAwM2VtcF9wcml2O1xubmV0L2NvcmUvZGV2bWVtLmMtNDY3LVx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmM9NDgzPXZvaWQgbXBfZG1hYnVmX2Rldm1lbV9kZXN0cm95KHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wpXG5uZXQvY29yZS9kZXZtZW0uYy00ODQte1xubmV0L2NvcmUvZGV2bWVtLmM6NDg1Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBwb29sLVx1MDAzZW1wX3ByaXY7XG5uZXQvY29yZS9kZXZtZW0uYy00ODYtXG5uZXQvY29yZS9kZXZtZW0uYzo0ODc6XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9jb3JlL2Rldm1lbS5jLTQ4OC19XG4tLVxubmV0L2NvcmUvZGV2bWVtLmM9NTA4PXN0YXRpYyBpbnQgbXBfZG1hYnVmX2Rldm1lbV9ubF9maWxsKHZvaWQgKm1wX3ByaXYsIHN0cnVjdCBza19idWZmICpyc3AsXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtNTEwLXtcbm5ldC9jb3JlL2Rldm1lbS5jOjUxMTpcdGNvbnN0IHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gbXBfcHJpdjtcbm5ldC9jb3JlL2Rldm1lbS5jLTUxMi1cdGludCB0eXBlID0gcnhxID8gTkVUREVWX0FfUVVFVUVfRE1BQlVGIDogTkVUREVWX0FfUEFHRV9QT09MX0RNQUJVRjtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYz01MTc9c3RhdGljIHZvaWQgbXBfZG1hYnVmX2Rldm1lbV91bmluc3RhbGwodm9pZCAqbXBfcHJpdixcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy01MTkte1xubmV0L2NvcmUvZGV2bWVtLmM6NTIwOlx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBtcF9wcml2O1xubmV0L2NvcmUvZGV2bWVtLmMtNTIxLVx0c3RydWN0IG5ldGRldl9yeF9xdWV1ZSAqYm91bmRfcnhxO1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTE2PXN0cnVjdCBuZXRsaW5rX2V4dF9hY2s7XG5uZXQvY29yZS9kZXZtZW0uaC0xNy1cbm5ldC9jb3JlL2Rldm1lbS5oOjE4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nIHtcbm5ldC9jb3JlL2Rldm1lbS5oLTE5LVx0c3RydWN0IGRtYV9idWYgKmRtYWJ1Zjtcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD04Mz1zdHJ1Y3QgZG1hYnVmX2dlbnBvb2xfY2h1bmtfb3duZXIge1xubmV0L2NvcmUvZGV2bWVtLmgtODQtXHRzdHJ1Y3QgbmV0X2lvdl9hcmVhIGFyZWE7XG5uZXQvY29yZS9kZXZtZW0uaDo4NTpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xubmV0L2NvcmUvZGV2bWVtLmgtODYtXG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtOTAtXG5uZXQvY29yZS9kZXZtZW0uaDo5MTp2b2lkIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3EpO1xubmV0L2NvcmUvZGV2bWVtLmg6OTI6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmgtOTMtbmV0X2Rldm1lbV9iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp2ZGV2LFxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oLTk3LVx0XHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbm5ldC9jb3JlL2Rldm1lbS5oOjk4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpuZXRfZGV2bWVtX2xvb2t1cF9kbWFidWYodTMyIGlkKTtcbm5ldC9jb3JlL2Rldm1lbS5oOjk5OnZvaWQgbmV0X2Rldm1lbV91bmJpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKTtcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMC1pbnQgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcbm5ldC9jb3JlL2Rldm1lbS5oOjEwMTpcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyxcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMi1cdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTEwNT1uZXRfZGV2bWVtX2lvdl90b19jaHVua19vd25lcihjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uaC0xMTEtXG5uZXQvY29yZS9kZXZtZW0uaDoxMTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXG5uZXQvY29yZS9kZXZtZW0uaC0xMTMtbmV0X2Rldm1lbV9pb3ZfYmluZGluZyhjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xMzE9c3RhdGljIGlubGluZSBib29sXG5uZXQvY29yZS9kZXZtZW0uaDoxMzI6bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19nZXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9kZXZtZW0uaC0xMzMte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTEzNz1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9jb3JlL2Rldm1lbS5oOjEzODpuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbm5ldC9jb3JlL2Rldm1lbS5oLTEzOS17XG4tLVxubmV0L2NvcmUvZGV2bWVtLmg9MTQ2PXN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5oOjE0NzpuZXRfZGV2bWVtX2FsbG9jX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XG5uZXQvY29yZS9kZXZtZW0uaC0xNDgtdm9pZCBuZXRfZGV2bWVtX2ZyZWVfZG1hYnVmKHN0cnVjdCBuZXRfaW92ICpwcGlvdik7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMTUwLVxubmV0L2NvcmUvZGV2bWVtLmg6MTUxOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcbm5ldC9jb3JlL2Rldm1lbS5oLTE1Mi1uZXRfZGV2bWVtX2dldF9iaW5kaW5nKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZCk7XG5uZXQvY29yZS9kZXZtZW0uaD0xNTM9c3RydWN0IG5ldF9pb3YgKlxubmV0L2NvcmUvZGV2bWVtLmg6MTU0Om5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsIHNpemVfdCBhZGRyLFxubmV0L2NvcmUvZGV2bWVtLmgtMTU1LVx0XHQgICAgICAgc2l6ZV90ICpvZmYsIHNpemVfdCAqc2l6ZSk7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMTU3LSNlbHNlXG5uZXQvY29yZS9kZXZtZW0uaDoxNTg6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XG5uZXQvY29yZS9kZXZtZW0uaC0xNTktXG5uZXQvY29yZS9kZXZtZW0uaD0xNjA9c3RhdGljIGlubGluZSB2b2lkXG5uZXQvY29yZS9kZXZtZW0uaDoxNjE6bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9kZXZtZW0uaC0xNjIte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTE2OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0X2Rldm1lbV9wdXRfbmV0X2lvdihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uaC0xNzItXG5uZXQvY29yZS9kZXZtZW0uaDoxNzM6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXG5uZXQvY29yZS9kZXZtZW0uaC0xNzQtbmV0X2Rldm1lbV9iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp2ZGV2LFxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oLTE4My1cbm5ldC9jb3JlL2Rldm1lbS5oOjE4NDpzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpuZXRfZGV2bWVtX2xvb2t1cF9kbWFidWYodTMyIGlkKVxubmV0L2NvcmUvZGV2bWVtLmgtMTg1LXtcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xODk9c3RhdGljIGlubGluZSB2b2lkXG5uZXQvY29yZS9kZXZtZW0uaDoxOTA6bmV0X2Rldm1lbV91bmJpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxubmV0L2NvcmUvZGV2bWVtLmgtMTkxLXtcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xOTU9bmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcbm5ldC9jb3JlL2Rldm1lbS5oOjE5NjpcdFx0XHRcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLFxubmV0L2NvcmUvZGV2bWVtLmgtMTk3LVx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTIwMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5oOjIwNDpuZXRfZGV2bWVtX2FsbG9jX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbm5ldC9jb3JlL2Rldm1lbS5oLTIwNS17XG4tLVxubmV0L2NvcmUvZGV2bWVtLmg9MjE4PXN0YXRpYyBpbmxpbmUgdTMyIG5ldF9kZXZtZW1faW92X2JpbmRpbmdfaWQoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMjIyLVxubmV0L2NvcmUvZGV2bWVtLmg6MjIzOnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmgtMjI0LW5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTIyOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5oOjIzMDpuZXRfZGV2bWVtX2dldF9uaW92X2F0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLCBzaXplX3QgYWRkcixcbm5ldC9jb3JlL2Rldm1lbS5oLTIzMS1cdFx0ICAgICAgIHNpemVfdCAqb2ZmLCBzaXplX3QgKnNpemUpXG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMjM1LVxubmV0L2NvcmUvZGV2bWVtLmg6MjM2OnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmgtMjM3LW5ldF9kZXZtZW1faW92X2JpbmRpbmcoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYz0xMDEzPWludCBuZXRkZXZfbmxfYmluZF9yeF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTQte1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDE1Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTYtXHR1MzIgaWZpbmRleCwgZG1hYnVmX2ZkLCByeHFfaWR4O1xuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTE1NT1pbnQgbmV0ZGV2X25sX2JpbmRfdHhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMTU2LXtcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTE1NzpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMTU4LVx0c3RydWN0IG5ldF9kZXZpY2UgKmJpbmRfZGV2O1xuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTQyNT12b2lkIG5ldGRldl9ubF9zb2NrX3ByaXZfZGVzdHJveShzdHJ1Y3QgbmV0ZGV2X25sX3NvY2sgKnByaXYpXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTE0MjYte1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxNDI3Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjE0Mjg6XHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqdGVtcDtcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTQyOS1cdG5ldGRldmljZV90cmFja2VyIGRldl90cmFja2VyO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTI9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTkxNC1cdFx0XHQgICAgIHN0cnVjdCB1YnVmX2luZm8gKnVhcmcsXG5uZXQvY29yZS9za2J1ZmYuYzoxOTE1Olx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9za2J1ZmYuYy0xOTE2LXtcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwLmMtMTExNy17XG5uZXQvaXB2NC90Y3AuYzoxMTE4Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBOVUxMO1xubmV0L2lwdjQvdGNwLmMtMTExOS1cdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTE0MjUtXHRpZiAoYmluZGluZylcbm5ldC9pcHY0L3RjcC5jOjE0MjY6XHRcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xubmV0L2lwdjQvdGNwLmMtMTQyNy1cdHJldHVybiBjb3BpZWQgJiM0MzsgY29waWVkX3N5bjtcbi0tXG5uZXQvaXB2NC90Y3AuYy0xNDQ0LVx0aWYgKGJpbmRpbmcpXG5uZXQvaXB2NC90Y3AuYzoxNDQ1Olx0XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9pcHY0L3RjcC5jLTE0NDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTYxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgZXhwZXJ0aXNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgYGRldm1lbWAgQ29ubmVjdGlvbioqCgpBbHJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBkZXZtZW1gIGlzIHRpZWQgaW50byBzb21ldGhpbmcgc3BlY2lmaWMgd2l0aGluIHRoZSBuZXR3b3JrIGRldmljZSBtZW1vcnkgc3BhY2Ug4oCTIEkmIzM5O2Qgd2FnZXIgaXQmIzM5O3MgcmVsYXRlZCB0byBhIGBDT05GSUdfTkVUX0RFVk1FTWAgb3B0aW9uIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZsYWcuIEkgbmVlZCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSB0aGUgYG5ldC9jb3JlYCBkaXJlY3RvcnkuIEkmIzM5O2xsIGZvY3VzIG9uIGBkZXZtZW0uY2AsIGJlY2F1c2UgdGhhdCBmaWxlIG5hbWUgaXMgYSBzdHJvbmcgaW5kaWNhdG9yLCBhbmQgSSYjMzk7bGwgc2VlIHdoYXQgSSBjYW4gZmluZCBpbiBLY29uZmlnIG9yIE1ha2VmaWxlIGZpbGVzIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBtYXkgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldm1lbVxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9NDg9b2JqLSQoQ09ORklHX05FVF9URVNUKSAmIzQzOz0gbmV0X3Rlc3Qub1xubmV0L2NvcmUvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9ERVZNRU0pICYjNDM7PSBkZXZtZW0ub1xubmV0L2NvcmUvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX0RFQlVHX05FVCkgJiM0Mzs9IGxvY2tfZGVidWcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBUQ1AgVHJhbnNtaXNzaW9uKioKCkFscmlnaHQsIHRoZSBwdXp6bGUgcGllY2VzIGFyZSBzdGFydGluZyB0byBmaXQuIEl0IGxvb2tzIGxpa2UgdGhlIHN5c3RlbSByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZNRU1gIHRvIGJlIGVuYWJsZWQsIHdoaWNoIGlzbiYjMzk7dCBhIHN1cnByaXNlIGdpdmVuIHRoZSBsaWtlbHkgbmVlZCBmb3IgZGlyZWN0IGFjY2VzcyB0byBkZXZpY2UgbWVtb3J5IGZvciBuZXR3b3JrIG9wZXJhdGlvbnMsIHByb2JhYmx5IGluIHNvbWUgbG93LWxldmVsIG5ldHdvcmsgZHJpdmVyLiBOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZmlndXJhdGlvbiBjb21lcyBpbnRvIHBsYXkuIE15IGltbWVkaWF0ZSBodW5jaCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgVENQIHRyYW5zbWlzc2lvbiBwYXRoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2lwdjQvdGNwLmNgLiBUaGF0IGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvcmUgbG9naWMgZm9yIHNlbmRpbmcgZGF0YSwgYW5kIGl0JiMzOTtzIGEgcHJpbWUgc3VzcGVjdCBmb3IgZW5jb3VudGVyaW5nIGRlcGVuZGVuY2llcyBvbiBtZW1vcnkgbWFwcGluZyBvciBkaXJlY3QgZGV2aWNlIG1lbW9yeSBhY2Nlc3MsIGVzcGVjaWFsbHkgaW4gc2NlbmFyaW9zIGludm9sdmluZyBoYXJkd2FyZSBvZmZsb2FkIG9yIHNwZWNpZmljIG5ldHdvcmtpbmcgaGFyZHdhcmUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgd2l0aGluIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGFuZCBzZWUgaG93IGBDT05GSUdfTkVUX0RFVk1FTWAgaXMgdXNlZC4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbmZpZyBvcHRpb24gaW1wYWN0cyBkYXRhIG1vdmVtZW50IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBkdXJpbmcgdGhlIFRDUCBzZW5kIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9zZW5kbXNnX2xvY2tlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvc25tcC5yc3Q9MTM9dW5zaWduZWRfbG9uZyAgTElOVVhfTUlCX0RFTEFZRURBQ0tMT0NLRUQgICAgICAgICAgICB3cml0ZV9tb3N0bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX2RlbGFja190aW1lcl9oYW5kbGVyLHRjcF9kZWxhY2tfdGltZXJcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9zbm1wLnJzdDoxNDp1bnNpZ25lZF9sb25nICBMSU5VWF9NSUJfVENQQVVUT0NPUktJTkcgICAgICAgICAgICAgIHdyaXRlX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfcHVzaCx0Y3Bfc2VuZG1zZ19sb2NrZWRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9zbm1wLnJzdC0xNS11bnNpZ25lZF9sb25nICBMSU5VWF9NSUJfVENQRlJPTVpFUk9XSU5ET1dBRFYgICAgICAgIHdyaXRlX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3Bfc2VsZWN0X3dpbmRvdyx0Y3BfdHJhbnNtaXQtc2tiXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYz0zMjM9c3RhdGljIGludCBzaXdfdGNwX3NlbmRwYWdlcyhzdHJ1Y3Qgc29ja2V0ICpzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2UsIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYy0zNDYtXHRcdGxvY2tfc29jayhzayk7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3L3Npd19xcF90eC5jOjM0NzpcdFx0cnYgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFx1MDAyNm1zZywgYnl0ZXMpO1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYy0zNDgtXHRcdHJlbGVhc2Vfc29jayhzayk7XG4tLVxuaW5jbHVkZS9uZXQvdGNwLmg9MzY3PWludCB0Y3Bfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpO1xuaW5jbHVkZS9uZXQvdGNwLmg6MzY4OmludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTM2OS1pbnQgdGNwX3NlbmRtc2dfZmFzdG9wZW4oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCAqY29waWVkLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL3RjcC5oPTI4OT1UUkFDRV9FVkVOVCh0Y3BfcmV0cmFuc21pdF9zeW5hY2ssXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmgtMzM0LVxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmg6MzM1OlRSQUNFX0VWRU5UKHRjcF9zZW5kbXNnX2xvY2tlZCxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL3RjcC5oLTMzNi1cdFRQX1BST1RPKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnLFxuLS1cbmtlcm5lbC9icGYvYnRmLmM9NjY1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9yYXdfdHBfbnVsbF9hcmdzIHJhd190cF9udWxsX2FyZ3NbXSA9IHtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTY3MzYtXHR7IFwmIzM0O3RjcF9zZW5kX3Jlc2V0XCYjMzQ7LCAweDExIH0sXG5rZXJuZWwvYnBmL2J0Zi5jOjY3Mzc6XHR7IFwmIzM0O3RjcF9zZW5kbXNnX2xvY2tlZFwmIzM0OywgMHgxMDAgfSxcbmtlcm5lbC9icGYvYnRmLmMtNjczOC1cdC8qIHRlZ3JhX2FwYl9kbWEgKi9cbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTA2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA4NS1cdC5yZWFkX3NrYlx0ICAgPSB0Y3BfcmVhZF9za2IsXG5uZXQvaXB2NC9hZl9pbmV0LmM6MTA4NjpcdC5zZW5kbXNnX2xvY2tlZCAgICA9IHRjcF9zZW5kbXNnX2xvY2tlZCxcbm5ldC9pcHY0L2FmX2luZXQuYy0xMDg3LVx0LnBlZWtfbGVuXHQgICA9IHRjcF9wZWVrX2xlbixcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE0PUVYUE9SVF9TWU1CT0xfR1BMKHRjcF9yYXRlX2NoZWNrX2FwcF9saW1pdGVkKTtcbm5ldC9pcHY0L3RjcC5jLTExMTUtXG5uZXQvaXB2NC90Y3AuYzoxMTE2OmludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwLmMtMTExNy17XG4tLVxubmV0L2lwdjQvdGNwLmMtMTI0MC1cbm5ldC9pcHY0L3RjcC5jOjEyNDE6XHRcdHRyYWNlX3RjcF9zZW5kbXNnX2xvY2tlZChzaywgbXNnLCBza2IsIHNpemVfZ29hbCk7XG5uZXQvaXB2NC90Y3AuYy0xMjQyLVxuLS1cbm5ldC9pcHY0L3RjcC5jLTE0NDgtfVxubmV0L2lwdjQvdGNwLmM6MTQ0OTpFWFBPUlRfU1lNQk9MX0dQTCh0Y3Bfc2VuZG1zZ19sb2NrZWQpO1xubmV0L2lwdjQvdGNwLmMtMTQ1MC1cbm5ldC9pcHY0L3RjcC5jPTE0NTE9aW50IHRjcF9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcbi0tXG5uZXQvaXB2NC90Y3AuYy0xNDU1LVx0bG9ja19zb2NrKHNrKTtcbm5ldC9pcHY0L3RjcC5jOjE0NTY6XHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIG1zZywgc2l6ZSk7XG5uZXQvaXB2NC90Y3AuYy0xNDU3LVx0cmVsZWFzZV9zb2NrKHNrKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9OTE9c3RhdGljIGludCB0Y3BfYnBmX3B1c2goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBhcHBseV9ieXRlcyxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTIyLVx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNm1zZ2hkci5tc2dfaXRlciwgSVRFUl9TT1VSQ0UsIFx1MDAyNmJ2ZWMsIDEsIHNpemUpO1xubmV0L2lwdjQvdGNwX2JwZi5jOjEyMzpcdFx0cmV0ID0gdGNwX3NlbmRtc2dfbG9ja2VkKHNrLCBcdTAwMjZtc2doZHIsIHNpemUpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTEyNC1cdFx0aWYgKHJldCBcdTAwM2M9IDApXG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYz02NjA9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9zdHJlYW1fb3BzID0ge1xuLS1cbm5ldC9pcHY2L2FmX2luZXQ2LmMtNjgxLVx0LnNwbGljZV9lb2ZcdCAgID0gaW5ldF9zcGxpY2VfZW9mLFxubmV0L2lwdjYvYWZfaW5ldDYuYzo2ODI6XHQuc2VuZG1zZ19sb2NrZWQgICAgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQsXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY4My1cdC5zcGxpY2VfcmVhZFx0ICAgPSB0Y3Bfc3BsaWNlX3JlYWQsXG4tLVxubmV0L3Rscy90bHNfbWFpbi5jPTE2OD1pbnQgdGxzX3B1c2hfc2coc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90bHMvdGxzX21haW4uYy0xOTQtXG5uZXQvdGxzL3Rsc19tYWluLmM6MTk1Olx0XHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFx1MDAyNm1zZywgc2l6ZSk7XG5uZXQvdGxzL3Rsc19tYWluLmMtMTk2LVxuLS1cbm5ldC94ZnJtL2VzcGludGNwLmM9MjA2PXN0YXRpYyBpbnQgZXNwaW50Y3Bfc2VuZHNrbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYy0yMjUtXHRcdGlvdl9pdGVyX2J2ZWMoXHUwMDI2bXNnaGRyLm1zZ19pdGVyLCBJVEVSX1NPVVJDRSwgXHUwMDI2YnZlYywgMSwgc2ctXHUwMDNlbGVuZ3RoKTtcbm5ldC94ZnJtL2VzcGludGNwLmM6MjI2Olx0XHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFx1MDAyNm1zZ2hkciwgc2ctXHUwMDNlbGVuZ3RoKTtcbm5ldC94ZnJtL2VzcGludGNwLmMtMjI3LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9uZXRfdGltZXN0YW1waW5nLmM9MTE3PXN0YXRpYyBib29sIGJwZl90ZXN0X2RlbGF5KHN0cnVjdCBicGZfc29ja19vcHMgKnNrb3BzLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYy0xODctXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jOjE4ODpTRUMoXCYjMzQ7ZmVudHJ5L3RjcF9zZW5kbXNnX2xvY2tlZFwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9uZXRfdGltZXN0YW1waW5nLmM6MTg5OmludCBCUEZfUFJPRyh0cmFjZV90Y3Bfc2VuZG1zZ19sb2NrZWQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYy0xOTAtXHQgICAgIHNpemVfdCBzaXplKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY3MgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRGF0YSBUcmFuc21pc3Npb24gUm91dGluZXMqKgoKUmlnaHQsIHNvIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzIGEgd2lkZWx5IHVzZWQgZnVuY3Rpb24sIGEga2VybmVsIHN5bWJvbC4gVGhpcyBtYWtlcyBzZW5zZTsgVENQIGlzIGZ1bmRhbWVudGFsLiBCdXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB6ZXJvLWNvcHkgbWVjaGFuaXNtcy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgYHNrYl96ZXJvY29weWAgYWxzbyBleHBvcnRlZD8gQSBxdWljayBjaGVjayByZXZlYWxzIGl0IGlzIGluZGVlZCBleHBvcnRlZCwgd2l0aCBgRVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5KWAuIEdvb2QuIFRoYXQgaW5kaWNhdGVzIGl0JiMzOTtzIGludGVuZGVkIGZvciBicm9hZGVyIHVzZSB3aXRoaW4gdGhlIEdQTC1saWNlbnNlZCBrZXJuZWwgc3BhY2UsIHdoaWNoIGlzIHdoYXQgSSYjMzk7ZCBleHBlY3QgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIG9wdGltaXphdGlvbnMuIE5vdywgd2hhdCBhYm91dCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYD8gSSYjMzk7bGwgcmUtZXhhbWluZSBgbmV0L2NvcmUvZGF0YWdyYW0uY2AgdG8gY29uZmlybSBpdHMgZXhwb3J0IHN0YXR1cy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3plcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjM9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Ny1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2ODppbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjktXHRcdFx0XHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpO1xuLS1cbmlvX3VyaW5nL25ldC5jPTE0NTA9c3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXJfaW92ZWMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pb191cmluZy9uZXQuYy0xNDUzLVx0c2tiX3pjb3B5X2Rvd25ncmFkZV9tYW5hZ2VkKHNrYik7XG5pb191cmluZy9uZXQuYzoxNDU0Olx0cmV0dXJuIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XG5pb191cmluZy9uZXQuYy0xNDU1LX1cbi0tXG5pb191cmluZy9uZXQuYz0xNDU3PXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW9fdXJpbmcvbmV0LmMtMTQ2OS1cdGVsc2UgaWYgKHVubGlrZWx5KCFza2JfemNvcHlfbWFuYWdlZChza2IpKSlcbmlvX3VyaW5nL25ldC5jOjE0NzA6XHRcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xuaW9fdXJpbmcvbmV0LmMtMTQ3MS1cbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzMz1FWFBPUlRfU1lNQk9MKHNrYl9jb3B5X2RhdGFncmFtX2Zyb21faXRlcl9mdWxsKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjM0LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo2MzU6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzYtXHRcdFx0XHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVx0ZWxzZVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjM6XHRcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqQ2hlY2tpbmcgRnVuY3Rpb24gRXhwb3J0IFZpc2liaWxpdHkqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29kZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgaXMgYWN0dWFsbHkgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS4gSSBtZWFuLCB0aGVyZSYjMzk7cyBubyBwb2ludCBpbiB0cnlpbmcgdG8gKnVzZSogaXQgaWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIHByb3Blcmx5LCByaWdodD8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSYjMzk7cyBzeW1ib2wgdGFibGVzIGlmIG5lY2Vzc2FyeS4gVGhpcyBmZWVscyBsaWtlIGEgYmFzaWMgc2FuaXR5IGNoZWNrLCBidXQgaXTigJlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBObyBzdXJwcmlzZXMgYXJlIHdlbGNvbWUsIGVzcGVjaWFsbHkgZWFybHkgb24uIEl0JiMzOTtsbCBzYXZlIG1lIGEgaGVhZGFjaGUgZG93biB0aGUgbGluZS4gTGV0JiMzOTtzIHNlZSBpZiBpdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9jb3JlL2RhdGFncmFtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYzNTpcdGludCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiA2MzY6XHRcdFx0XHRcdHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwgc2l6ZV90IGxlbmd0aClcbiA2Mzc6XHR7XG4gNjM4Olx0XHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbiA2Mzk6XHRcbiA2NDA6XHRcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4gNjQxOlx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gNjQyOlx0XG4gNjQzOlx0XHR3aGlsZSAobGVuZ3RoIFx1MDAyNlx1MDAyNiBpb3ZfaXRlcl9jb3VudChmcm9tKSkge1xuIDY0NDpcdFx0XHRzdHJ1Y3QgcGFnZSAqaGVhZCwgKmxhc3RfaGVhZCA9IE5VTEw7XG4gNjQ1Olx0XHRcdHN0cnVjdCBwYWdlICpwYWdlc1tNQVhfU0tCX0ZSQUdTXTtcbiA2NDY6XHRcdFx0aW50IHJlZnMsIG9yZGVyLCBuID0gMDtcbiA2NDc6XHRcdFx0c2l6ZV90IHN0YXJ0O1xuIDY0ODpcdFx0XHRzc2l6ZV90IGNvcGllZDtcbiA2NDk6XHRcbiA2NTA6XHRcdFx0aWYgKGZyYWcgPT0gTUFYX1NLQl9GUkFHUylcbiA2NTE6XHRcdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIDY1MjpcdFxuIDY1MzpcdFx0XHRjb3BpZWQgPSBpb3ZfaXRlcl9nZXRfcGFnZXMyKGZyb20sIHBhZ2VzLCBsZW5ndGgsXG4gNjU0Olx0XHRcdFx0XHRcdCAgICBNQVhfU0tCX0ZSQUdTIC0gZnJhZywgXHUwMDI2c3RhcnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjEwNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSXMgSXQgRXhwb3J0ZWQ/IFRoZSBDcnVjaWFsIFZlcmlmaWNhdGlvbioqCgpSaWdodCwgbGV0IG1lIGp1c3QgcGF1c2UgaGVyZS4gQmVmb3JlIEkgZXZlbiBiZWdpbiB0byBlbGFib3JhdGUgb3IgY29uc2lkZXIgYW55IGZ1cnRoZXIgaW1wbGljYXRpb25zLCBJICptdXN0KiB2ZXJpZnkgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJcyBpdCBleHBvcnRlZD8gSSYjMzk7bSByZWZlcnJpbmcsIG9mIGNvdXJzZSwgdG8gdGhlIGRhdGEsIHRoZSBtb2RlbCwgdGhlIGNvbmZpZ3VyYXRpb24g4oCTIHdoYXRldmVyIGNydWNpYWwgY29tcG9uZW50IHdlJiMzOTtyZSBkaXNjdXNzaW5nLiBJdCBzZWVtcyBvYnZpb3VzLCBidXQgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRoYXQgb3Zlcmxvb2tpbmcgdGhpcyBiYXNpYyBjaGVjayBpcyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIuIFlvdSBjYW4gZ2V0IGludG8gYW5hbHlzaXMgcGFyYWx5c2lzLgoKV2UmIzM5O3JlIGF0IHRoZSBwb2ludCB3aGVyZSB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdoYXRldmVyICYjMzQ7aXQmIzM0OyBpcywgaXMgYWN0dWFsbHkgaW4gYSB1c2FibGUgc3RhdGUuIE90aGVyd2lzZSwgd2UmIzM5O3JlIHRhbGtpbmcgdGhlb3J5LCBhIHdhc3RlIG9mIHRpbWUuIEkgY2FuJiMzOTt0IGJ1aWxkIG15IGFuYWx5c2lzIG9uIGEgZm91bmRhdGlvbiBvZiBwb3RlbnRpYWxseSBpbmNvcnJlY3Qgb3IgaW5hY2Nlc3NpYmxlIGRhdGEuIFRoaXMgY2hlY2sgaXMgcGFyYW1vdW50OiBJIG11c3QgY29uZmlybSB0aGUgZXhwb3J0IHByb2Nlc3MgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3IgZWxzZSBJJiMzOTttIGRlYWQgaW4gdGhlIHdhdGVyLiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBvdXRwdXRzIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjb21wbGV0ZSBhbmQgaW4gdGhlIHJpZ2h0IGZvcm1hdC4KCk9ubHkgKmFmdGVyKiB0aGlzIHZlcmlmaWNhdGlvbiBjYW4gSSBwcm9jZWVkIHdpdGggY29uZmlkZW5jZSBhbmQgYSBjbGVhciBoZWFkLiBJdCYjMzk7cyB0aGUgZmlyc3QgYW5kIGFyZ3VhYmx5IG1vc3QgaW1wb3J0YW50IHN0ZXAuIFdlJiMzOTtyZSBvbiB0aGUgc2FtZSBwYWdlLCByaWdodD8gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGFuZCBjb21tb24gc2Vuc2UgY2hlY2ssIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gc3RhdGUgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGF0YWdyYW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzAwOlx0XHRcdGlmIChyZWZzKVxuIDcwMTpcdFx0XHRcdHBhZ2VfcmVmX3N1YihsYXN0X2hlYWQsIHJlZnMpO1xuIDcwMjpcdFx0fVxuIDcwMzpcdFx0cmV0dXJuIDA7XG4gNzA0Olx0fVxuIDcwNTpcdFxuIDcwNjpcdHN0YXRpYyBpbnRcbiA3MDc6XHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4gNzA4Olx0XHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbiA3MDk6XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1ODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBmdW5jdGlvbiBpcyBkZWZpbmVkLiBJIHNlZW0gdG8gcmVjYWxsIHNlZWluZyBpdCBpbiB0aGUgY29udGV4dCBvZiBuZXR3b3JrIGRhdGFncmFtIGhhbmRsaW5nLiBBaCwgeWVzLCBpdCYjMzk7cyBwcm9iYWJseSBleHBvcnRlZCBpbiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGJ5IGhlYWRpbmcgb3ZlciB0byBsaW5lIDcwNCBpbiB0aGF0IGZpbGU7IEkgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9jb3JlL2RhdGFncmFtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzA0Olx0fVxuIDcwNTpcdFxuIDcwNjpcdHN0YXRpYyBpbnRcbiA3MDc6XHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4gNzA4Olx0XHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4NzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeW1ib2wgRXhwb3J0IElzc3VlcyoqCgpIbW0sIHNvIHRoZSBmdW5jdGlvbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2Agd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0LCB3aGljaCBpcyBleHBlY3RlZC4gSG93ZXZlciwgaXQmIzM5O3Mgbm90IGJlaW5nIGV4cG9ydGVkIGVpdGhlciwgYXQgbGVhc3Qgbm90IGV4cGxpY2l0bHkuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBidWlsZCBwcm9jZXNzLiBMZXQgbWUgcXVpY2tseSBzY2FuIHRoZSBjb2RlIC0gc3BlY2lmaWNhbGx5LCBpcyB0aGVyZSBhbiBgRVhQT1JUX1NZTUJPTCgpYCBjYWxsIG9uIHRoZSBmdW5jdGlvbiAqaXRzZWxmKiBhdCB0aGUgZW5kIG9mIHRoZSBkZWNsYXJhdGlvbj8gU29tZXRoaW5nIGxpa2UgYEVYUE9SVF9TWU1CT0woemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKTtgIGlzIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzEyNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBhIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCYjMzk7cyBub3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgcGlxdWVzIG15IGludGVyZXN0LiBCdXQgaXMgaXQgYWN0dWFsbHkgYWNjZXNzaWJsZSBvdXRzaWRlIGl0cyBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCYjMzk7cyAqbm90KiBleHBvcnRlZCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCBtZSBiYWNrdHJhY2sg4oCTIEkgcmVjYWxsIHNlZWluZyB0aGlzIGZ1bmN0aW9uIHVzZWQgc29tZXdoZXJlIGluIGBpb191cmluZy9uZXQuY2AsIHdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgaXQgKm1pZ2h0KiBiZSBleHBvcnRlZC4gV2FpdCwgb3IgY291bGQgaXQgYmUgcGFydCBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIHN0cnVjdD8gSXQgY291bGQganVzdCBiZSB0aGF0IGBpb191cmluZ2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBpbiB3aGljaCBjYXNlIHRoZSB2aXNpYmlsaXR5IHJ1bGVzIHdvdWxkIGJlIGRpZmZlcmVudC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGlvX3VyaW5nYCBpcyBpbmRlZWQgYSBidWlsdC1pbiBtb2R1bGUuIFllcywgaXQgaXMhIE9rYXksIHNvIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgb3RoZXIgZnVuY3Rpb25zLiBSaWdodCwgSSBrbm93IGBza2JfemVyb2NvcHlgIGlzIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoaXMgcHV6emxlLiBOb3csIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIEkgbmVlZCB0byBjaGVjayBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLCBhbmQgc2VlIGhvdyB0aGF0IGlzIGxpbmtlZCBvciB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjItXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjM6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzczLXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3NDpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cdTAwM2Vzaywgc2tiLCBcdTAwMjZtc2ctXHUwMDNlbXNnX2l0ZXIsIGxlbixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3NS1cdFx0XHRcdCAgICAgICBOVUxMKTtcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTcwNz16ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc0OTppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc1MC1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc0LX1cbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzc1OkVYUE9SVF9TWU1CT0woX196ZXJvY29weV9zZ19mcm9tX2l0ZXIpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03ODc9aW50IHplcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTQtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc5NTpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc5Ni19XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xOTMzLVxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcdGVyciA9IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sXG5uZXQvY29yZS9za2J1ZmYuYy0xOTM1LVx0XHRcdFx0ICAgICAgYmluZGluZyk7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTgwPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9maWxsX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cdGlmICh6Y29weSlcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo4ODpcdFx0cmV0dXJuIF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgTlVMTCwgc2tiLFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTg5LVx0XHRcdFx0XHQgICAgICAgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yMzktXHQvKiBJZiAmIzM5O3ZzayYjMzk7ICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI0MDpcdCAqIHdpbGwgbmV2ZXIgY2FsbCAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyBiZWxvdyB3aXRob3V0XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQxLVx0ICogc2V0dGluZyBza2Igb3duZXIgaW4gJiMzOTtza2Jfc2V0X293bmVyX3coKSYjMzk7LiBUaGUgb25seSBjYXNlXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0Ni1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XHQvKiBTZXQgb3duZXIgaGVyZSwgYmVjYXVzZSAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyB1c2VzXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVx0ICogb3duZXIgb2Ygc2tiIHdpdGhvdXQgY2hlY2sgdG8gdXBkYXRlICYjMzk7c2tfd21lbV9hbGxvYyYjMzk7LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYwNQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIFN5bWJvbHMgZm9yIFplcm9jb3B5IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHBsYWNlcyB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLiBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHNpbmNlIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBjYWxscyBib3RoIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgYW5kIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLiBUaGF0JiMzOTtzIGRlZmluaXRlbHkgb25lIHRvIGtlZXAgaW4gbWluZC4gQW5kLCBvZiBjb3Vyc2UsIGBza2JfemVyb2NvcHlgIGl0c2VsZiBpcyBhIHByaW1lIGNhbmRpZGF0ZS4KClRoZW4gdGhlcmUmIzM5O3MgYHRjcF9zZW5kbXNnX2xvY2tlZGAuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBob3QgcGF0aCBmdW5jdGlvbiwgYSByZWFsbHkgKmhvdCogcGF0aC4gQnV0IHRoZSBwcm9tcHQgc2FpZCB0byBhdm9pZCB0aG9zZSBnZW5lcmljIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEl0IHdhbnRzIHVzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIEhtbSwgYHRjcF9zZW5kbXNnX2xvY2tlZGAgKmlzKiBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2guLi5hbmQgaXQmIzM5O3MgdGhlIG1haW4gZnVuY3Rpb24gZm9yIFRDUCBtZXNzYWdlIHNlbmRpbmcuIElmIHdlIHNraXAgaXQsIHdlIG1pZ2h0IG1pc3MgdGhlIFRDUCBwYXJ0IGVudGlyZWx5LgoKV2FpdCwgaXMgdGhlcmUgYW4gYWx0ZXJuYXRpdmU/IExldCYjMzk7cyBjaGVjayBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYC4gTWF5YmUgdGhhdCBwcm92aWRlcyBhIGxlc3MgZ2VuZXJpYyBlbnRyeSBwb2ludC4gSSYjMzk7bGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpdCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NrYl96ZXJvY29weV9pdGVyX3N0cmVhbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Nzg6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzktXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTkxMD1FWFBPUlRfU1lNQk9MX0dQTChtc2dfemVyb2NvcHlfdWJ1Zl9vcHMpO1xubmV0L2NvcmUvc2tidWZmLmMtMTkxMS1cbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvY29yZS9za2J1ZmYuYy0xOTEzLVx0XHRcdCAgICAgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxubmV0L2NvcmUvc2tidWZmLmM6MTk1MDpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0pO1xubmV0L2NvcmUvc2tidWZmLmMtMTk1MS1cbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTEzNDMtXG5uZXQvaXB2NC90Y3AuYzoxMzQ0Olx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXG5uZXQvaXB2NC90Y3AuYy0xMzQ1LVx0XHRcdFx0XHRcdCAgICAgICBiaW5kaW5nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MDEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipEZWx2aW5nIGludG8gc2tiX3plcm9jb3B5IGFuZCBUQ1AgVHJhbnNtaXNzaW9uKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCAtIGFoYSwgdGhhdCYjMzk7cyBhbiBpbnRlcmVzdGluZyBvbmUuIEl0JiMzOTtzIGV4cG9ydGVkLCBhbmQgc3BlY2lmaWNhbGx5IGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIFNlZW1zIGxpa2UgYSBuYXR1cmFsIHBvaW50IHRvIGZvY3VzIG9uLCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSB6ZXJvLWNvcHkgbG9naWMgd2l0aGluIHRoZSBUQ1Agc2VuZGluZyBwYXRoLiBUaGF0JiMzOTtzIGEgc29saWQgc3ltYm9sIHRvIHN0YXJ0IHRyYWNpbmcgZG93biB0aGUgcmFiYml0IGhvbGUuCgpOb3csIHdoYXQgYWJvdXQgdGhlIG1vcmUgZ2VuZXJhbCBgc2tiX3plcm9jb3B5YD8gSXMgYGl0ZXJfc3RyZWFtYCBhIG1vcmUgc3BlY2lhbGl6ZWQgdmVyc2lvbj8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdHdvLiBJcyBgaXRlcl9zdHJlYW1gIGEgc3Vic2V0LCBhIG1vcmUgbW9kZXJuIHJlcGxhY2VtZW50LCBvciBhIGRpZmZlcmVudCBmdW5jdGlvbmFsIGZhY2V0IG9mIHRoZSB6ZXJvLWNvcHkgbWVjaGFuaXNtPyBQZXJoYXBzIGBza2JfemVyb2NvcHlgIGVuY29tcGFzc2VzIGEgYnJvYWRlciByYW5nZSBvZiB6ZXJvLWNvcHkgc2NlbmFyaW9zLCBhbmQgYGl0ZXJfc3RyZWFtYCBmb2N1c2VzIG9uIHRoZSBpdGVyYXRpdmUsIHN0cmVhbS1vcmllbnRlZCBjYXNlcy4gT3IgbWF5YmUgdGhleSBhcmUgY29tcGxldGVseSB1bnJlbGF0ZWQuIEkgc2hvdWxkIHJldmlldyB3aGVyZSBgc2tiX3plcm9jb3B5YCBpcyB1c2VkIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tiX3plcm9jb3B5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oPTQxMz1leHRlcm4gc3RydWN0IGRlbnRyeSAqeGVuX25ldGJhY2tfZGJnX3Jvb3Q7XG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgtNDE1LVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmg6NDE2OnZvaWQgeGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgtNDE3LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmg6NDE4OnZvaWQgeGVudmlmX3NrYl96ZXJvY29weV9jb21wbGV0ZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSk7XG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaC00MTktXG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNDktICogY291bnRlciBiZWNhdXNlIGNvcmUgZHJpdmVyIGNhbGxzIGludG8geGVudmlmX3plcm9jb3B5X2NhbGxiYWNrXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1MDogKiB3aGljaCBjYWxscyB4ZW52aWZfc2tiX3plcm9jb3B5X2NvbXBsZXRlLlxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTEtICovXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1Mjp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jLTUzLVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTgtXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1OTp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYy02MC17XG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jPTExNzI9c3RhdGljIGludCB4ZW52aWZfdHhfc3VibWl0KHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjEwLVx0XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZWZyYWdfbGlzdDtcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjExOlx0XHRcdHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShxdWV1ZSwgbnNrYik7XG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIxMi1cdFx0XHRpZiAoeGVudmlmX2hhbmRsZV9mcmFnX2xpc3QocXVldWUsIHNrYikpIHtcbi0tXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIxNS1cdFx0XHRcdFx0XHQgICBcJiMzNDtOb3QgZW5vdWdoIG1lbW9yeSB0byBjb25zb2xpZGF0ZSBmcmFnX2xpc3QhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjE2Olx0XHRcdFx0eGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHF1ZXVlLCBza2IpO1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyMTctXHRcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIzMy1cdFx0XHRpZiAoc2tiX3NoaW5mbyhza2IpLVx1MDAzZWRlc3RydWN0b3JfYXJnKVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEyMzQ6XHRcdFx0XHR4ZW52aWZfc2tiX3plcm9jb3B5X3ByZXBhcmUocXVldWUsIHNrYik7XG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIzNS1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTI3Mi1cdFx0aWYgKHNrYl9zaGluZm8oc2tiKS1cdTAwM2VkZXN0cnVjdG9yX2FyZykge1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEyNzM6XHRcdFx0eGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHF1ZXVlLCBza2IpO1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyNzQtXHRcdFx0cXVldWUtXHUwMDNlc3RhdHMudHhfemVyb2NvcHlfc2VudCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jPTEyODM9c3RhdGljIHZvaWQgeGVudmlmX3plcm9jb3B5X2NhbGxiYWNrKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEzMTQtXHRcdHF1ZXVlLVx1MDAzZXN0YXRzLnR4X3plcm9jb3B5X2ZhaWwmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEzMTU6XHR4ZW52aWZfc2tiX3plcm9jb3B5X2NvbXBsZXRlKHF1ZXVlKTtcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMzE2LX1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3Njg9aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3MC1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3MTpzdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzcyLVx0XHRcdFx0XHQgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbilcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Nzg6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzktXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00MjY5PXZvaWQgc2tiX2NvcHlfYW5kX2NzdW1fZGV2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHU4ICp0byk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQyNzA6dW5zaWduZWQgaW50IHNrYl96ZXJvY29weV9oZWFkbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpmcm9tKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDI3MTppbnQgc2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQyNzItXHRcdCBpbnQgbGVuLCBpbnQgaGxlbik7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTgxMj1FWFBPUlRfU1lNQk9MX0dQTChtc2dfemVyb2NvcHlfcmVhbGxvYyk7XG5uZXQvY29yZS9za2J1ZmYuYy0xODEzLVxubmV0L2NvcmUvc2tidWZmLmM6MTgxNDpzdGF0aWMgYm9vbCBza2JfemVyb2NvcHlfbm90aWZ5X2V4dGVuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgbG8sIHUxNiBsZW4pXG5uZXQvY29yZS9za2J1ZmYuYy0xODE1LXtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xODM0PXN0YXRpYyB2b2lkIF9fbXNnX3plcm9jb3B5X2NhbGxiYWNrKHN0cnVjdCB1YnVmX2luZm9fbXNnemMgKnVhcmcpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTg3MC1cdGlmICghdGFpbCB8fCBTS0JfRVhUX0VSUih0YWlsKS1cdTAwM2VlZS5lZV9vcmlnaW4gIT0gU09fRUVfT1JJR0lOX1pFUk9DT1BZIHx8XG5uZXQvY29yZS9za2J1ZmYuYzoxODcxOlx0ICAgICFza2JfemVyb2NvcHlfbm90aWZ5X2V4dGVuZCh0YWlsLCBsbywgbGVuKSkge1xubmV0L2NvcmUvc2tidWZmLmMtMTg3Mi1cdFx0X19za2JfcXVldWVfdGFpbChxLCBza2IpO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTEtXG5uZXQvY29yZS9za2J1ZmYuYzoxOTEyOmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cdFx0XHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xOTQ5LX1cbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NTEtXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTk2MD1FWFBPUlRfU1lNQk9MX0dQTChfX3NrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZCk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTYxLVxubmV0L2NvcmUvc2tidWZmLmM6MTk2MjpzdGF0aWMgaW50IHNrYl96ZXJvY29weV9jbG9uZShzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgc3RydWN0IHNrX2J1ZmYgKm9yaWcsXG5uZXQvY29yZS9za2J1ZmYuYy0xOTYzLVx0XHRcdCAgICAgIGdmcF90IGdmcF9tYXNrKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTIyMjU9c3RydWN0IHNrX2J1ZmYgKl9fcHNrYl9jb3B5X2ZjbG9uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGVhZHJvb20sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMjI0OS1cdFx0aWYgKHNrYl9vcnBoYW5fZnJhZ3Moc2tiLCBnZnBfbWFzaykgfHxcbm5ldC9jb3JlL3NrYnVmZi5jOjIyNTA6XHRcdCAgICBza2JfemVyb2NvcHlfY2xvbmUobiwgc2tiLCBnZnBfbWFzaykpIHtcbm5ldC9jb3JlL3NrYnVmZi5jLTIyNTEtXHRcdFx0a2ZyZWVfc2tiKG4pO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTM4Mjg9RVhQT1JUX1NZTUJPTChfX3NrYl9jaGVja3N1bV9jb21wbGV0ZSk7XG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzgzMC0gLyoqXG5uZXQvY29yZS9za2J1ZmYuYzozODMxOiAqXHRza2JfemVyb2NvcHlfaGVhZGxlbiAtIENhbGN1bGF0ZSBoZWFkcm9vbSBuZWVkZWQgZm9yIHNrYl96ZXJvY29weSgpXG5uZXQvY29yZS9za2J1ZmYuYy0zODMyLSAqXHRAZnJvbTogc291cmNlIGJ1ZmZlclxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM4MzQtICpcdENhbGN1bGF0ZXMgdGhlIGFtb3VudCBvZiBsaW5lYXIgaGVhZHJvb20gbmVlZGVkIGluIHRoZSAmIzM5O3RvJiMzOTsgc2tiIHBhc3NlZFxubmV0L2NvcmUvc2tidWZmLmM6MzgzNTogKlx0aW50byBza2JfemVyb2NvcHkoKS5cbm5ldC9jb3JlL3NrYnVmZi5jLTM4MzYtICovXG5uZXQvY29yZS9za2J1ZmYuYz0zODM3PXVuc2lnbmVkIGludFxubmV0L2NvcmUvc2tidWZmLmM6MzgzODpza2JfemVyb2NvcHlfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSlcbm5ldC9jb3JlL3NrYnVmZi5jLTM4Mzkte1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM4NTQtfVxubmV0L2NvcmUvc2tidWZmLmM6Mzg1NTpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHlfaGVhZGxlbik7XG5uZXQvY29yZS9za2J1ZmYuYy0zODU2LVxubmV0L2NvcmUvc2tidWZmLmMtMzg1Ny0vKipcbm5ldC9jb3JlL3NrYnVmZi5jOjM4NTg6ICpcdHNrYl96ZXJvY29weSAtIFplcm8gY29weSBza2IgdG8gc2tiXG5uZXQvY29yZS9za2J1ZmYuYy0zODU5LSAqXHRAdG86IGRlc3RpbmF0aW9uIGJ1ZmZlclxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjYtICpcbm5ldC9jb3JlL3NrYnVmZi5jOjM4Njc6ICpcdFRoZSBgaGxlbmAgYXMgY2FsY3VsYXRlZCBieSBza2JfemVyb2NvcHlfaGVhZGxlbigpIHNwZWNpZmllcyB0aGVcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjgtICpcdGhlYWRyb29tIGluIHRoZSBgdG9gIGJ1ZmZlci5cbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0zODc1PWludFxubmV0L2NvcmUvc2tidWZmLmM6Mzg3Njpza2JfemVyb2NvcHkoc3RydWN0IHNrX2J1ZmYgKnRvLCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IGxlbiwgaW50IGhsZW4pXG5uZXQvY29yZS9za2J1ZmYuYy0zODc3LXtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zOTEzLVx0fVxubmV0L2NvcmUvc2tidWZmLmM6MzkxNDpcdHNrYl96ZXJvY29weV9jbG9uZSh0bywgZnJvbSwgR0ZQX0FUT01JQyk7XG5uZXQvY29yZS9za2J1ZmYuYy0zOTE1LVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM5MzUtfVxubmV0L2NvcmUvc2tidWZmLmM6MzkzNjpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHkpO1xubmV0L2NvcmUvc2tidWZmLmMtMzkzNy1cbi0tXG5uZXQvY29yZS9za2J1ZmYuYz00MjM0PXZvaWQgc2tiX3NwbGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmICpza2IxLCBjb25zdCB1MzIgbGVuKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTQyNDEtXHRza2Jfc2hpbmZvKHNrYjEpLVx1MDAzZWZsYWdzIHw9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2VmbGFncyBcdTAwMjYgemNfZmxhZ3M7XG5uZXQvY29yZS9za2J1ZmYuYzo0MjQyOlx0c2tiX3plcm9jb3B5X2Nsb25lKHNrYjEsIHNrYiwgMCk7XG5uZXQvY29yZS9za2J1ZmYuYy00MjQzLVx0aWYgKGxlbiBcdTAwM2MgcG9zKVx0LyogU3BsaXQgbGluZSBpcyBpbnNpZGUgaGVhZGVyLiAqL1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTQ3ODA9c3RydWN0IHNrX2J1ZmYgKnNrYl9zZWdtZW50KHN0cnVjdCBza19idWZmICpoZWFkX3NrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy01MDAzLVxubmV0L2NvcmUvc2tidWZmLmM6NTAwNDpcdFx0aWYgKHNrYl96ZXJvY29weV9jbG9uZShuc2tiLCBmcmFnX3NrYiwgR0ZQX0FUT01JQykpXG5uZXQvY29yZS9za2J1ZmYuYy01MDA1LVx0XHRcdGdvdG8gZXJyO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTUwMDktXHRcdFx0XHRpZiAoc2tiX29ycGhhbl9mcmFncyhsaXN0X3NrYiwgR0ZQX0FUT01JQykgfHxcbm5ldC9jb3JlL3NrYnVmZi5jOjUwMTA6XHRcdFx0XHQgICAgc2tiX3plcm9jb3B5X2Nsb25lKG5za2IsIGxpc3Rfc2tiLFxubmV0L2NvcmUvc2tidWZmLmMtNTAxMS1cdFx0XHRcdFx0XHQgICAgICAgR0ZQX0FUT01JQykpXG4tLVxubmV0L2lwdjQvaXBfb3V0cHV0LmM9OTQ5PXN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaXBfb3V0cHV0LmMtMTI2NS1cdFx0fSBlbHNlIHtcbm5ldC9pcHY0L2lwX291dHB1dC5jOjEyNjY6XHRcdFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc2tiLCBmcm9tLCBjb3B5KTtcbm5ldC9pcHY0L2lwX291dHB1dC5jLTEyNjctXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTEzNDMtXG5uZXQvaXB2NC90Y3AuYzoxMzQ0Olx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXG5uZXQvaXB2NC90Y3AuYy0xMzQ1LVx0XHRcdFx0XHRcdCAgICAgICBiaW5kaW5nKTtcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTQ0OT1zdGF0aWMgaW50IF9faXA2X2FwcGVuZF9kYXRhKHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTgzMS1cdFx0fSBlbHNlIHtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzoxODMyOlx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHNrYiwgZnJvbSwgY29weSk7XG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTgzMy1cdFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9NzA1PW5mcW5sX2J1aWxkX3BhY2tldF9tZXNzYWdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTc2OS1cdFx0ZGF0YV9sZW4gPSBuZnFubF9nZXRfZGF0YV9sZW4oZW50c2tiLCBSRUFEX09OQ0UocXVldWUtXHUwMDNlY29weV9yYW5nZSkpO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo3NzA6XHRcdGhsZW4gPSBza2JfemVyb2NvcHlfaGVhZGxlbihlbnRza2IpO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy03NzEtXHRcdGhsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGhsZW4sIGRhdGFfbGVuKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTk1My1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6OTU0Olx0XHRpZiAoc2tiX3plcm9jb3B5KHNrYiwgZW50c2tiLCBkYXRhX2xlbiwgaGxlbikpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTk1NS1cdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz00NTE9c3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNDk3LVx0aWYgKGRwLVx1MDAzZXVzZXJfZmVhdHVyZXMgXHUwMDI2IE9WU19EUF9GX1VOQUxJR05FRClcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjQ5ODpcdFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNDk5LVx0ZWxzZVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU4NC1cdC8qIE9ubHkgcmVzZXJ2ZSByb29tIGZvciBhdHRyaWJ1dGUgaGVhZGVyLCBwYWNrZXQgZGF0YSBpcyBhZGRlZFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NTg1Olx0ICogaW4gc2tiX3plcm9jb3B5KCkgKi9cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU4Ni1cdGlmICghKG5sYSA9IG5sYV9yZXNlcnZlKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfUEFDS0VULCAwKSkpIHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy01OTEtXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo1OTI6XHRlcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiX2xlbiwgaGxlbik7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy01OTMtXHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4tLVxubmV0L3hkcC94c2suYy0xMDA1LVxubmV0L3hkcC94c2suYzoxMDA2OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxubmV0L3hkcC94c2suYy0xMDA3LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYz0xMDgyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxuLS1cbm5ldC94ZHAveHNrLmMtMTA4OS1cdGlmIChkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX1RYX1NLQl9OT19MSU5FQVIpIHtcbm5ldC94ZHAveHNrLmM6MTA5MDpcdFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XG5uZXQveGRwL3hzay5jLTEwOTEtXHRcdGlmIChJU19FUlIoc2tiKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDIzOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgc2tiX3plcm9jb3B5YCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBza2JfemVyb2NvcHlgIHRoaW5nIGFuZCB3aGVyZSBpdCYjMzk7cyB1c2VkLiBJdCYjMzk7cyBjbGVhciBmcm9tIHRoZSBjb2RlIHRoYXQgaXQmIzM5O3MgYSBmb2N1cyBwb2ludC4gSSBzZWUgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYm90aCBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY2AsIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gRnVydGhlcm1vcmUsIEkgc2hvdWxkIGludmVzdGlnYXRlIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLCBhcyB0aGV5JiMzOTtyZSBhbHNvIGtleSBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBjcnVjaWFsIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGFscmVhZHkgYXdhcmUgdGhhdCBgQ09ORklHX05FVF9ERVZNRU1gIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGRldm1lbSBhc3BlY3QuIEJ1dCB3aGF0IGFib3V0IHRoZSBgc2tiX3plcm9jb3B5YCBjb3JlIGl0c2VsZj8gQWgsIGl0IHJlc2lkZXMgaW4gYG5ldC9jb3JlL3NrYnVmZi5jYCwgd2hpY2ggaXMgYWx3YXlzIGNvbXBpbGVkIOKAkyBzbyBubyB3b3JyaWVzIHRoZXJlLiBBbmQgYHRjcF9zZW5kbXNnX2xvY2tlZGAgaXMgYWx3YXlzIGNvbXBpbGVkIHRvby4gQW5kIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLCBpbiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AsIHRoYXQmIzM5O3MgYW5vdGhlciBvbmUgdGhhdCYjMzk7cyBhbHdheXMgY29tcGlsZWQuCgpIb3dldmVyLCBhIGNsb3NlciBsb29rIGF0IHRoZSBwYXRjaCByZXZlYWxzIHRoYXQgaXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gYSBgYmluZGluZ2AgaXMgKm5vdCogTlVMTC4gVGhlIGBiaW5kaW5nYCBpcyBhIGBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZ2AuIFNvLCBjbGVhcmx5LCB0aGlzICppcyogbGlua2VkIHRvIGBDT05GSUdfTkVUX0RFVk1FTWAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgTkVUX0RFVk1FTWAgaXMgaW5jbHVkZWQgaW4gRW5hYmxlQ29uZmlncy4KCk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgYE5FVF9ERVZNRU1gIGl0c2VsZiBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgY29uc2lkZXJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfREVWTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTY2PWNvbmZpZyBTS0JfRVhURU5TSU9OU1xuLS1cbm5ldC9LY29uZmlnLTY4LVxubmV0L0tjb25maWc6Njk6Y29uZmlnIE5FVF9ERVZNRU1cbm5ldC9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTA0OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBQYXJhbWV0ZXIqKgoKSG1tLCBzbyBgY29uZmlnIE5FVF9ERVZNRU1gIGlzICpkZWZpbmVkKiB0byBiZSAmIzM5O3kmIzM5OywgcmlnaHQgb3V0IG9mIHRoZSBnYXRlPyBUaGF0IHNlZW1z4oCmaW50ZXJlc3RpbmcuIEkmIzM5O20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0LCBzbyBJJiMzOTtsbCBqdW1wIHJpZ2h0IGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIHNlZS4uLiBgbmV0L0tjb25maWdgLCBhcm91bmQgbGluZSA2OSwgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBleHBsYW5hdGlvbnMsIGFuZCBwZXJoYXBzIGEgZGlyZWN0IGxpbmsgdG8gdGhlIHVuZGVybHlpbmcgZHJpdmVyIG9yIHN1YnN5c3RlbS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGluY2x1c2lvbiwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgaXQgYmVpbmcgYSBkZWZhdWx0LiBJcyB0aGlzIGEgY29yZSByZXF1aXJlbWVudCwgb3IgYSBtb3JlIHNwZWNpYWxpemVkIGZlYXR1cmUgdGhhdCBtaWdodCBpbmFkdmVydGVudGx5IGJlIGVuYWJsZWQgYnkgZGVmYXVsdD8gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGRlc2lnbiBkZWNpc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0Y29uZmlnIE5FVF9SRURJUkVDVFxuICA2MTpcdFx0Ym9vbFxuICA2MjpcdFxuICA2MzpcdGNvbmZpZyBTS0JfREVDUllQVEVEXG4gIDY0Olx0XHRib29sXG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIFNLQl9FWFRFTlNJT05TXG4gIDY3Olx0XHRib29sXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIE5FVF9ERVZNRU1cbiAgNzA6XHRcdGRlZl9ib29sIHlcbiAgNzE6XHRcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuICA3MjpcdFx0ZGVwZW5kcyBvbiBETUFfU0hBUkVEX0JVRkZFUlxuICA3MzpcdFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcbiAgNzQ6XHRcbiAgNzU6XHRjb25maWcgTkVUX1NIQVBFUlxuICA3NjpcdFx0Ym9vbFxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBORVRfQ1JDMzJDXG4gIDc5Olx0XHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDg4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBgTkVUX0RFVk1FTWAgaXMgZW5hYmxlZCwgYSBkaXJlY3QgJiMzNDt5ZXMmIzM0OyBhcyBpbmRpY2F0ZWQgYnkgYGRlZl9ib29sIHlgLiBIb3dldmVyLCB0aGlzIGlzIG1vcmUgaW50ZXJlc3RpbmcgdGhhbiBqdXN0IGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIHNlZSBpdCBoYXMgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHkgb24gYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3MgdGhlIHJlYWwgc3RvcnkgaGVyZSwgbm90IGp1c3QgdGhhdCBpdCYjMzk7cyBzZXQuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCB1bmRlcnN0YW5kIHdoYXQgKml0JiMzOTtzKiBhbGwgYWJvdXQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBgTkVUX0RFVk1FTWAuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBETUFfU0hBUkVEX0JVRkZFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvS2NvbmZpZz0yMTM9c291cmNlIFwmIzM0O2RyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9iYXNlL0tjb25maWctMjE0LVxuZHJpdmVycy9iYXNlL0tjb25maWc6MjE1OmNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9iYXNlL0tjb25maWctMjE2LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc4MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBzb21ldGhpbmcgaXMgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLCBhbmQgdGhlIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbGluZSAyMTUgc291bmRzIGxpa2UgYSBnb29kIHBvaW50IHRvIHplcm8gaW4gb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBwcm9iYWJseSBhIGNvcmUgb3B0aW9uIHJlbGF0ZWQgdG8gc29tZSBkcml2ZXIgb3IgYmFzZSBmdW5jdGlvbmFsaXR5LCBvciBtYXliZSBldmVuIGEgbWFjcm8gZGVmaW5pdGlvbi4gTGV0IG1lIHB1bGwgdGhhdCBmaWxlIGFuZCBnZXQgdG8gbGluZSAyMTUsIEkgc3VzcGVjdCBJIGNhbiBxdWlja2x5IHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIHdpZGVyIGNvbmZpZ3VyYXRpb24gc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHRcdGJvb2xcbiAyMTE6XHRcdHNlbGVjdCBHTE9CXG4gMjEyOlx0XG4gMjEzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1wmIzM0O1xuIDIxNDpcdFxuIDIxNTpcdGNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxuIDIxNjpcdFx0Ym9vbFxuIDIxNzpcdFx0ZGVmYXVsdCBuXG4gMjE4Olx0XHRzZWxlY3QgSVJRX1dPUktcbiAyMTk6XHRcdGhlbHBcbiAyMjA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZnJhbWV3b3JrIGZvciBidWZmZXItc2hhcmluZyBiZXR3ZWVuXG4gMjIxOlx0XHQgIG11bHRpcGxlIGRyaXZlcnMuIEEgYnVmZmVyIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUgdXNpbmcgZHJpdmVyXG4gMjIyOlx0XHQgIEFQSXMgZXh0ZW5zaW9uOyB0aGUgZmlsZSYjMzk7cyBkZXNjcmlwdG9yIGNhbiB0aGVuIGJlIHBhc3NlZCBvbiB0byBvdGhlclxuIDIyMzpcdFx0ICBkcml2ZXIuXG4gMjI0Olx0XG4gMjI1Olx0Y29uZmlnIERNQV9GRU5DRV9UUkFDRVxuIDIyNjpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgdmVyYm9zZSBETUFfRkVOQ0VfVFJBQ0UgbWVzc2FnZXNcJiMzNDtcbiAyMjc6XHRcdGRlcGVuZHMgb24gRE1BX1NIQVJFRF9CVUZGRVJcbiAyMjg6XHRcdGhlbHBcbiAyMjk6XHRcdCAgRW5hYmxlIHRoZSBETUFfRkVOQ0VfVFJBQ0UgcHJpbnRrcy4gVGhpcyB3aWxsIGFkZCBleHRyYVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjI1MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBNZW1vcnkgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoaXMgYERNQV9TSEFSRURfQlVGRkVSYCBmbGFn4oCmIHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBib29sZWFuLCBhbmQgdGhlIGRlZmF1bHQgaXMgJiMzNDtubyYjMzQ7LCBtZWFuaW5nIGl0JiMzOTtzIGRpc2FibGVkLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIERNQSBhbmQgc2hhcmVkIG1lbW9yeSBhcmNoaXRlY3R1cmVzLCBJJiMzOTttIHByZXR0eSBzdXJlIHdlIHNob3VsZCBiZSBlbmFibGluZyB0aGlzLiBFbmFibGluZyBzaGFyZWQgYnVmZmVycyB1c3VhbGx5IHVubG9ja3Mgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgYmVuZWZpdHMgYnkgcmVkdWNpbmcgZGF0YSBjb3BpZXMgYW5kIGFsbG93aW5nIG1vcmUgZGlyZWN0IGFjY2VzcyBmb3IgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBraW5kIG9mIGhhcmR3YXJlIHdlIGFyZSB3b3JraW5nIHdpdGguIFRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5IHN1YnN5c3RlbSwgcGFydGljdWxhcmx5IGNhY2hlIGNvaGVyZW5jeSBwcm90b2NvbHMsIGJ1dCBnZW5lcmFsbHkgc3BlYWtpbmcsIHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCB0aGUgYFBBR0VfUE9PTGAgb3B0aW9u4oCmIHRoYXQgb25lIG5lZWRzIHNvbWUgbW9yZSB0aG91Z2h0LiBJ4oCZdmUgZGVhbHQgd2l0aCBtZW1vcnkgcG9vbHMgYmVmb3JlLCBidXQgdGhlIHNwZWNpZmljcyBhbHdheXMgbWF0dGVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgcGFnZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uIElzIGl0IGZvciBnZW5lcmFsLXB1cnBvc2UgbWVtb3J5LCBvciBpcyBpdCBzcGVjaWZpY2FsbHkgZ2VhcmVkIHRvd2FyZHMgRE1BIGJ1ZmZlcnM/IEhvdyBkb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIHZpcnR1YWwgbWVtb3J5IHN5c3RlbT8gRG9lcyBpdCBpbnRyb2R1Y2UgYW55IGZyYWdtZW50YXRpb24gY29uY2VybnM/IFRoZSBkZXZpbCYjMzk7cyBpbiB0aGUgZGV0YWlscywgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyB0aGUgcGFnZSBwb29sIGltcGxlbWVudGF0aW9uIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCB1bml0cy4gSSBuZWVkIHRvIGRldGVybWluZSBob3cgaXQgYmVuZWZpdHMgbWVtb3J5IGVmZmljaWVuY3kgYW5kIHdoZXRoZXIgaXQgaW1wcm92ZXMgb3IgZGVncmFkZXMgcGVyZm9ybWFuY2UsIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xuLS1cbm5ldC9LY29uZmlnLTQ5MC1cbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXG5uZXQvS2NvbmZpZy00OTItXHRib29sXG5uZXQvS2NvbmZpZy00OTMtXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xubmV0L0tjb25maWctNDk1LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG5ldC9LY29uZmlnYCwgd2hpY2ggaXMgdGhlIGRlIGZhY3RvIHN0YW5kYXJkIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN0cnVjdHVyZS4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IHRoZSBzcGVjaWZpY3MgSSYjMzk7bSBhZnRlciBhcmUgbGlrZWx5IGluIHRoZSBnZW5lcmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzZWN0aW9uLCBhbmQgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYXJvdW5kIGxpbmUgNDkxIHRvIHNlZSBpZiB0aGF0IHJpbmdzIGEgYmVsbC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIOKAkyB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgb2Z0ZW4gb3JnYW5pemVkIGxvZ2ljYWxseSwgYW5kIHRoYXQgcG9zaXRpb24gZmVlbHMgbGlrZSBhIGdvb2QgaW5pdGlhbCBiZXQuIEZyb20gdGhlcmUgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBkZXBlbmRlbmNpZXMsIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgcXVpY2tseSBpc29sYXRlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg1Olx0XHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxuIDQ4NjpcdFxuIDQ4NzpcdGNvbmZpZyBORVRfREVWTElOS1xuIDQ4ODpcdFx0Ym9vbFxuIDQ4OTpcdFx0ZGVmYXVsdCBuXG4gNDkwOlx0XG4gNDkxOlx0Y29uZmlnIFBBR0VfUE9PTFxuIDQ5MjpcdFx0Ym9vbFxuIDQ5MzpcdFxuIDQ5NDpcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbiA0OTU6XHRcdGRlZmF1bHQgblxuIDQ5NjpcdFx0Ym9vbCBcJiMzNDtQYWdlIHBvb2wgc3RhdHNcJiMzNDtcbiA0OTc6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gNDk4Olx0XHRoZWxwXG4gNDk5Olx0XHQgIEVuYWJsZSBwYWdlIHBvb2wgc3RhdGlzdGljcyB0byB0cmFjayBwYWdlIGFsbG9jYXRpb24gYW5kIHJlY3ljbGluZ1xuIDUwMDpcdFx0ICBpbiBwYWdlIHBvb2xzLiBUaGlzIG9wdGlvbiBpbmN1cnMgYWRkaXRpb25hbCBDUFUgY29zdCBpbiBhbGxvY2F0aW9uXG4gNTAxOlx0XHQgIGFuZCByZWN5Y2xlIHBhdGhzIGFuZCBhZGRpdGlvbmFsIG1lbW9yeSBjb3N0IHRvIHN0b3JlIHRoZSBzdGF0aXN0aWNzLlxuIDUwMjpcdFx0ICBUaGVzZSBzdGF0aXN0aWNzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBpZlxuIDUwMzpcdFx0ICB0aGUgZHJpdmVyIHVzaW5nIHRoZSBwYWdlIHBvb2wgc3VwcG9ydHMgZXhwb3J0aW5nIHRoaXMgZGF0YS5cbiA1MDQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxODgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gT3B0aW9ucyBmb3IgT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIHRoaW5raW5nIGFib3V0IGhvdyB0byBvcHRpbWl6ZSBpdC4gRmlyc3QsIEkgc2VlIHRoYXQgYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuLiBNYWtlcyBzZW5zZSB0byBlbmFibGUgdGhhdDsgaXQgc2hvdWxkIGJlIGJlbmVmaWNpYWwuIFNvLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgZ29pbmcgaW50byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIE5vdywgSSBzaG91bGQgYWRkIGBETUFfU0hBUkVEX0JVRkZFUmAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBhcyB3ZWxsLgoKSG9sZCBvbiwgSSBzZWUgdGhhdCBgTkVUX0RFVk1FTWAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgeWAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYXV0b21hdGljYWxseSBlbmFibGVkIGlmIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgcmlnaHQ/IEhtbSwgaXMgaXQgKnNhZmVyKiB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgIGFueXdheT8gTm8sIHRoYXQmIzM5O3MgcHJvYmFibHkgb3ZlcmtpbGwgYW5kIHVubmVjZXNzYXJ5LCBhbmQgcG90ZW50aWFsbHkgY29uZnVzaW5nLiBFdmVuIHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgYE5FVF9ERVZNRU1gIGFzIG5vdCBiZWluZyB1c2VyIHNlbGVjdGFibGUgKG5vIHByb21wdCksIEkgdGhpbmsgaXQmIzM5O3Mgb2theSB0byBsaXN0IGl0LiBBY3R1YWxseSwgd2FpdCBhIG1pbnV0ZSwgYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAgYWxzbyBoYXZlIG5vIHByb21wdHMuCgpUaGF0JiMzOTtzIG9kZC4gSWYgdGhleSYjMzk7cmUgbm90IHVzZXItc2VsZWN0YWJsZSwgaG93IGNhbiB0aGV5IGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUgS2NvbmZpZyBzeXN0ZW0/IFRoZXkgbXVzdCBiZSBzZWxlY3RlZCBieSBvdGhlciBjb25maWd1cmF0aW9ucy4gU28sIGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSB3aGF0IGNvbmZpZ3Mgc2VsZWN0IGBETUFfU0hBUkVEX0JVRkZFUmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdD02NT1BbnkgZXhwb3J0ZXJzIG9yIHVzZXJzIG9mIHRoZSBkbWEtYnVmIGJ1ZmZlciBzaGFyaW5nIGZyYW1ld29yayBtdXN0IGhhdmUgYVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0OjY2OiYjMzk7c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSJiMzOTsgaW4gdGhlaXIgcmVzcGVjdGl2ZSBLY29uZmlncy5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdC02Ny1cbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZz02PWNvbmZpZyBEUk1fQUNDRUxfSEFCQU5BTEFCU1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnLTEyLVx0c2VsZWN0IEhXTU9OXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZzoxMzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL0tjb25maWctMTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZz00PWNvbmZpZyBTWU5DX0ZJTEVcbi0tXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02LVx0ZGVmYXVsdCBuXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy04LVx0aGVscFxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTUyPWNvbmZpZyBETUFCVUZfS1VOSVRfVEVTVFxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTU0LVx0ZGVwZW5kcyBvbiBLVU5JVFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc6NTU6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTU2LVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZz02MD1tZW51Y29uZmlnIERNQUJVRl9IRUFQU1xuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjEtXHRib29sIFwmIzM0O0RNQS1CVUYgVXNlcmxhbmQgTWVtb3J5IEhlYXBzXCYjMzQ7XG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo2MjpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjMtXHRoZWxwXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9OD1tZW51Y29uZmlnIERSTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEzLVx0c2VsZWN0IEkyQ1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTQ6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1LVx0c2VsZWN0IFNZTkNfRklMRVxuLS1cbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnPTY9Y29uZmlnIFRFR1JBX0hPU1QxWFxuLS1cbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZzo5Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZy0xMC1cdHNlbGVjdCBURUdSQV9IT1NUMVhfQ09OVEVYVF9CVVNcbi0tXG5kcml2ZXJzL2lpby9LY29uZmlnPTE1PWNvbmZpZyBJSU9fQlVGRkVSXG5kcml2ZXJzL2lpby9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnVmZmVyIHN1cHBvcnQgd2l0aGluIElJT1wmIzM0O1xuZHJpdmVycy9paW8vS2NvbmZpZzoxNzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9paW8vS2NvbmZpZy0xOC1cdGhlbHBcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTctXHRkZXBlbmRzIG9uICFBTFBIQVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6ODpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOS1cdHNlbGVjdCBJUlFfUE9MTFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTQ0PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUVNXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDctXHRkZXBlbmRzIG9uIE1NVVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDg6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9Mzk9Y29uZmlnIElPTU1VRkRfVEVTVFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQ0LVx0ZGVwZW5kcyBvbiBJT01NVV9QVF9BTURWMT15IHx8IElPTU1VRkQ9SU9NTVVfUFRfQU1EVjFcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjQ1Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy00Ni1cdHNlbGVjdCBJT01NVUZEX0RSSVZFUlxuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTM9Y29uZmlnIFZJREVPQlVGMl9DT1JFXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzo0Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy01LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0xMz1jb25maWcgVklERU9CVUYyX0RNQV9DT05USUdcbi0tXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0xNi1cdHNlbGVjdCBWSURFT0JVRjJfTUVNT1BTXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzoxNzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMTgtXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0xOT1jb25maWcgVklERU9CVUYyX1ZNQUxMT0Ncbi0tXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yMi1cdHNlbGVjdCBWSURFT0JVRjJfTUVNT1BTXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzoyMzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMjQtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWc9MT1jb25maWcgVklERU9fVEVHUkFfVkRFXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWctNi1cdGRlcGVuZHMgb24gVklERU9fREVWXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZzo3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy04LVx0c2VsZWN0IElPTU1VX0lPVkFcbi0tXG5kcml2ZXJzL21pc2MvS2NvbmZpZz0zMDE9Y29uZmlnIFFDT01fRkFTVFJQQ1xuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnLTMwNC1cdGRlcGVuZHMgb24gUlBNU0dcbmRyaXZlcnMvbWlzYy9LY29uZmlnOjMwNTpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9taXNjL0tjb25maWctMzA2LVx0c2VsZWN0IFFDT01fU0NNXG4tLVxuZHJpdmVycy90ZWUvS2NvbmZpZz0zPW1lbnVjb25maWcgVEVFXG4tLVxuZHJpdmVycy90ZWUvS2NvbmZpZy02LVx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxuZHJpdmVycy90ZWUvS2NvbmZpZzo3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL3RlZS9LY29uZmlnLTgtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1Jcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxOTM6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZz0xNDU9Y29uZmlnIFhFTl9HTlRERVZfRE1BQlVGXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZy0xNDctXHRkZXBlbmRzIG9uIFhFTl9HTlRERVYgXHUwMDI2XHUwMDI2IFhFTl9HUkFOVF9ETUFfQUxMT0NcbmRyaXZlcnMveGVuL0tjb25maWc6MTQ4Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0OS1cdGhlbHBcbi0tXG5zYW1wbGVzL0tjb25maWc9MjMwPWNvbmZpZyBTQU1QTEVfVkZJT19NREVWX01CT0NIU1xuLS1cbnNhbXBsZXMvS2NvbmZpZy0yMzMtXHRzZWxlY3QgVkZJT19NREVWXG5zYW1wbGVzL0tjb25maWc6MjM0Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5zYW1wbGVzL0tjb25maWctMjM1LVx0aGVscFxuLS1cbnNvdW5kL3NvYy9mc2wvS2NvbmZpZz02PWNvbmZpZyBTTkRfU09DX0ZTTF9BU1JDXG4tLVxuc291bmQvc29jL2ZzbC9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIEhBU19ETUFcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZzo5Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5zb3VuZC9zb2MvZnNsL0tjb25maWctMTAtXHRzZWxlY3QgUkVHTUFQX01NSU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIERNQV9TSEFSRURfQlVGRkVSIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBETUFfU0hBUkVEX0JVRkZFUmAuIEkgc2VlIGl0JiMzOTtzIGRlZmluZWQgd2l0aCBgYm9vbGAgYW5kIGEgYGRlZmF1bHQgbmAuIEhtbSwgaW50ZXJlc3RpbmcuIEl0IGRvZXNuJiMzOTt0IGhhdmUgYSBkaXJlY3QgcHJvbXB0LCB3aGljaCBtZWFucyB5b3UgY2FuJiMzOTt0ICpleHBsaWNpdGx5KiBlbmFibGUgaXQgZnJvbSB0aGUgdG9wIGxldmVsIGluIHRoZSBgLmNvbmZpZ2AgZmlsZS4gSXQgbXVzdCBiZSBzZWxlY3RlZCBzb21laG93LiBMZXQgbWUgY2hlY2suLi4gd2FpdCwgYGRyaXZlcnMvYmFzZS9LY29uZmlnYCAqYWxzbyogZGVmaW5lcyBgY29uZmlnIERNQV9TSEFSRURfQlVGRkVSYCwgYW5kIGl0IHRvbyBpcyBhIGBib29sYCB3aXRoIG5vIHByb21wdC4gUmlnaHQsIGxldCBtZSBnbyBiYWNrIHRvIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgYW5kIHRha2UgYW5vdGhlciBsb29rOyBJIG11c3QgYmUgbWlzc2luZyBzb21ldGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxNTpcdGNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxuIDIxNjpcdFx0Ym9vbFxuIDIxNzpcdFx0ZGVmYXVsdCBuXG4gMjE4Olx0XHRzZWxlY3QgSVJRX1dPUktcbiAyMTk6XHRcdGhlbHBcbiAyMjA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZnJhbWV3b3JrIGZvciBidWZmZXItc2hhcmluZyBiZXR3ZWVuXG4gMjIxOlx0XHQgIG11bHRpcGxlIGRyaXZlcnMuIEEgYnVmZmVyIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUgdXNpbmcgZHJpdmVyXG4gMjIyOlx0XHQgIEFQSXMgZXh0ZW5zaW9uOyB0aGUgZmlsZSYjMzk7cyBkZXNjcmlwdG9yIGNhbiB0aGVuIGJlIHBhc3NlZCBvbiB0byBvdGhlclxuIDIyMzpcdFx0ICBkcml2ZXIuXG4gMjI0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODY0CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBubyBwcm9tcHQsIHNvIEkgY2FuJiMzOTt0IGRpcmVjdGx5IGVuYWJsZSBgRE1BX1NIQVJFRF9CVUZGRVJgIGluIGBFbmFibGVDb25maWdzYC4gS2J1aWxkIHdpbGwganVzdCBpZ25vcmUgaXQuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIHNvbWVob3cgZ2V0IGFyb3VuZCB0aGlzPyBObywgaXQganVzdCBhZGRzIGBDT05GSUdfWFhYPXlgIGFuZCBydW5zIGBtYWtlIG9sZGRlZmNvbmZpZ2AuIElmIHRoZXJlJiMzOTtzIG5vIHByb21wdCAqYW5kKiBpdCYjMzk7cyBub3Qgc2VsZWN0ZWQgYnkgYW55dGhpbmcgZWxzZSwgaXQgZ2V0cyBkcm9wcGVkLCBhcyBleHBlY3RlZC4KCkJ1dCwgaGFuZyBvbiwgYE5FVF9ERVZNRU1gIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgLCBzbyBpdCAqc2hvdWxkKiBiZSBlbmFibGVkIGF1dG9tYXRpY2FsbHkgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkLiBSaWdodCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIHRvIGVuYWJsZSB0aGF0IHNlbGVjdHMgKmJvdGgqIGBETUFfU0hBUkVEX0JVRkZFUmAgKmFuZCogYFBBR0VfUE9PTGAuCgpOb3csIHdhaXQgYSBtaW51dGUuLi4gYFBBR0VfUE9PTGAgaXMgYWxzbyBhIGBib29sYCB3aXRob3V0IGEgcHJvbXB0LiBIbW0sIEkgbmVlZCB0byBjaGVjayB3aGF0IGFjdHVhbGx5IHNlbGVjdHMgYFBBR0VfUE9PTGAgdG8gc2VlIGhvdyBJIGNhbiBnZXQgaXQgcHVsbGVkIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cdHNlbGVjdCBORVRfU0hBUEVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cdHNlbGVjdCBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiA2NEJJVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1Bcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXHRzZWxlY3QgRklYRURfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7Q29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcJiMzNDsgaWYgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cdHNlbGVjdCBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cdHNlbGVjdCBWQ0FQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXHRzZWxlY3QgTUZEX1NZU0NPTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgUEFHRV9QT09MYCBpcyBhbG1vc3QgY2VydGFpbmx5IGVuYWJsZWQgaW4gc3l6a2FsbGVyIGNvbmZpZ3MuIEkgbWVhbiwgYEJQRl9TWVNDQUxMYCB1bmRlciBgTkVUYCwgYFZFVEhgLCBhbmQgYFZJUlRJT19ORVRgIGFsbCBzZWxlY3QgaXQuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdGlvbi4KCk5vdywgd2hhdCBhYm91dCBgRE1BX1NIQVJFRF9CVUZGRVJgPyBMZXQgbWUgc2VlLi4uIGBTWU5DX0ZJTEVgLCBgRFJNYCwgYElORklOSUJBTkRfVVNFUl9NRU1gLCBgVklERU9CVUYyX0NPUkVgLCBhbmQgYFVTQl9GX0ZTYCBhbGwgc2VsZWN0IGl0LiBTbywgeWVhaCwgKnZlcnkqIGxpa2VseSBlbmFibGVkIHRoZXJlIHRvby4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHNhZmUgdGhvdWdoLCBJIHdhcyBjb25zaWRlcmluZyBhZGRpbmcgYE5FVF9ERVZNRU1gIHRvIHRoZSBFbmFibGVDb25maWdzLiBCdXQsIGhhbmcgb24uLi5zeXprYWxsZXIganVzdCBhcHBlbmRzIGBDT05GSUdfTkVUX0RFVk1FTT15YCBhbmQgc2luY2UgdGhhdCYjMzk7cyBgZGVmX2Jvb2wgeWAsIGl0IHdpbGwgYmUgZW5hYmxlZCBvbmx5IGlmIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZC4gSWYgdGhleSBhcmVuJiMzOTt0LCBpdCB3b24mIzM5O3QgYmUuCgpTbywgaW5zdGVhZCBvZiBleHBsaWNpdGx5IGVuYWJsaW5nIGl0LCBJIHdvbmRlciBpZiBJIHNob3VsZCBsaXN0IHNvbWV0aGluZyBsaWtlIGBEUk1gIG9yIGBTWU5DX0ZJTEVgIHRvIGd1YXJhbnRlZSBgRE1BX1NIQVJFRF9CVUZGRVJgIGlzIGVuYWJsZWQ/IEhtbSwgYERSTWAgaXMgYSB3aG9sZSBtYXNzaXZlIHN1YnN5c3RlbS4uLiBJJiMzOTtkIHJhdGhlciBhdm9pZCB0aGF0LiBgU1lOQ19GSUxFYCBpcyBtdWNoIHNtYWxsZXIgYW5kIG1vcmUgdGFyZ2V0ZWQuIFJpZ2h0LCBsZXQmIzM5O3MgZ28gd2l0aCBgU1lOQ19GSUxFYC4gSSYjMzk7bGwgY2hlY2sgdGhhdCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1lOQ19GSUxFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTI9bWVudSBcJiMzNDtETUFCVUYgb3B0aW9uc1wmIzM0O1xuZHJpdmVycy9kbWEtYnVmL0tjb25maWctMy1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjQ6Y29uZmlnIFNZTkNfRklMRVxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNS1cdGJvb2wgXCYjMzQ7RXhwbGljaXQgU3luY2hyb25pemF0aW9uIEZyYW1ld29ya1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI0NQoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiAxMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbiBmb3IgWmVyb2NvcHkgYW5kIFNLQiBGcmFnbWVudHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBgU1lOQ19GSUxFYCBjb25maWcgbG9va3MgZGlyZWN0bHkgcmVsZXZhbnQgYmFzZWQgb24gaXRzIHByb21wdCwgc28gSSYjMzk7bGwgZGVmaW5pdGVseSBlbmFibGUgdGhhdCwgYWRkaW5nIGl0IHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gQWxzbywgc2luY2UgYFZFVEhgIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIsIGFuZCB0aGUgcGF0Y2ggbWVudGlvbnMgYE5FVF9ERVZNRU1gLCBJJiMzOTtsbCBpbmNsdWRlIGBORVRfREVWTUVNYCBhcyB3ZWxsLiBGb3Igbm93LCBJJiMzOTtsbCBrZWVwIGl0IHNpbXBsZSBhbmQgbGlzdCBvbmx5IGBORVRfREVWTUVNYCBhbmQgYFNZTkNfRklMRWAuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGNoYW5nZXMgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBhbiBgLUVGQVVMVGAgdG8gYC1FTVNHU0laRWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIHdoZW4gZGVhbGluZyB3aXRoIGludmFsaWQgZGF0YS4gRGVmaW5pdGVseSBgV29ydGhGdXp6aW5nOiB0cnVlYC4KCk5vdyBmb3IgdGhlIGBGb2N1c1N5bWJvbHNgLiBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljIGhlcmUuIEkgd2FudCB0byB0YXJnZXQgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBjaGFuZ2VkIGJ5IHRoZSBwYXRjaCwgc28gdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmU6ICBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCwgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCwgYW5kIGBza2JfemVyb2NvcHlgLiBBbHNvLCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCwgc2luY2UgdGhleSBhcmUgY2FsbGVkIGJ5IGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuICBJIGNoZWNrZWQgd2l0aCBhIHF1aWNrIGBncmVwYCBmb3IgYEVYUE9SVF9TWU1CT0wuKnplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgYW5kIGZvdW5kIG5vdGhpbmcuIEhvd2V2ZXIsIGl0JiMzOTtzIG5vdCBzdGF0aWMsIHNvIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEga2FsbHN5bXMuIFRoYXQmIzM5O3MgZ29vZC4gU2luY2UgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCAqaXMqIHN0YXRpYywgSSBzaG91bGQgYXZvaWQgaXQuIFRoZSBgdGNwX3NlbmRtc2dfbG9ja2VkYCBmdW5jdGlvbiBpcyBhIGhvdCBwYXRoLCBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgcmVhY2hlZCBxdWlja2x5LiBTbyBJIGFtIGdvaW5nIHRvIGF2b2lkIGl0LgoKQWZ0ZXIgcmV2aWV3aW5nIHRoZSBwYXRjaCBhZ2FpbiwgSSBzZWUgaXQgbW9kaWZpZXMgaG93IGBza2JfZnJhZ3NfcmVhZGFibGVgIGlzIHVzZWQuICBTcGVjaWZpY2FsbHkgdGhlIGNoYW5nZSBpbnZvbHZlcyByZXR1cm5pbmcgYC1FTVNHU0laRWAgaW5zdGVhZCBvZiBgLUVGQVVMVGAuIFNvIEkmIzM5O2xsIGFkZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdDoKLSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgCi0gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAKLSBgc2tiX3plcm9jb3B5YAoKU28sIG15IGZpbmFsIHBsYW4gaXM6CgpDb25maWdzOgotIGBORVRfREVWTUVNYAotIGBTWU5DX0ZJTEVgCgpGb2N1c1N5bWJvbHM6Ci0gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYAotIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gCi0gYHNrYl96ZXJvY29weWAKClRoZSBwYXRjaCBpcyBjaGFuZ2luZyBjcml0aWNhbCBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgZGVhbGluZyB3aXRoIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYHNrYmAgZGF0YSBhbmQgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiBmcmFnbWVudHMsIGFuZCBjaGFuZ2luZyBlcnJvciBjb2Rlcy4gVGhpcyBjbGVhcmx5IHdhcnJhbnRzIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWTUVNJiMzNDssCiAgICAmIzM0O1NZTkNfRklMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3plcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciYjMzQ7LAogICAgJiMzNDtza2JfemVyb2NvcHkmIzM0OywKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RFVk1FTSYjMzQ7LAogICAgJiMzNDtTWU5DX0ZJTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5JiMzNDssCiAgICAmIzM0O19femVyb2NvcHlfc2dfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weV9pdGVyX3N0cmVhbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zICh6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIsIHNrYl96ZXJvY29weSwgdGNwX3NlbmRtc2dfbG9ja2VkKSB0byBoYW5kbGUgdW5yZWFkYWJsZSBza2IgZnJhZ21lbnRzIGFuZCBmaXggZXJyb3IgY29kZXMgZm9yIGRldm1lbSBhbmQgaXRlciB6ZXJvY29weSBwYXRocy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0NzoxOS40OTYzNzc2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQyMzI4OTg3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVk1FTVwiLFxuICAgIFwiU1lOQ19GSUxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyXCIsXG4gICAgXCJza2JfemVyb2NvcHlcIixcbiAgICBcIl9femVyb2NvcHlfc2dfZnJvbV9pdGVyXCIsXG4gICAgXCJza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zICh6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIsIHNrYl96ZXJvY29weSwgdGNwX3NlbmRtc2dfbG9ja2VkKSB0byBoYW5kbGUgdW5yZWFkYWJsZSBza2IgZnJhZ21lbnRzIGFuZCBmaXggZXJyb3IgY29kZXMgZm9yIGRldm1lbSBhbmQgaXRlciB6ZXJvY29weSBwYXRocy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjE5LjQ5NjM4MjgxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzNDgzMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjQ3OjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RhdGFncmFtLmMgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuaW5kZXggMTczYjVkOTdiZDQwOS4uNmY4ZmZkNjFiY2FiNCAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuKysrIGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xcbkBAIC02MzgsNyArNjM4LDcgQEAgaW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuIFxcbiBcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbi1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4gXFxuIFxcdHdoaWxlIChsZW5ndGggXFx1MDAyNlxcdTAwMjYgaW92X2l0ZXJfY291bnQoZnJvbSkpIHtcXG4gXFx0XFx0c3RydWN0IHBhZ2UgKmhlYWQsICpsYXN0X2hlYWQgPSBOVUxMO1xcbkBAIC03MTMsNyArNzEzLDcgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbiBcXHRzdHJ1Y3QgbmV0X2lvdiAqbmlvdjtcXG4gXFxuIFxcdGlmIChpIFxcdTAwMjZcXHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbi1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4gXFxuIFxcdC8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZVxcbiBcXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmNcXG5pbmRleCBiYTNkYmFjODBmYjQ5Li5hZWJlOGVhNzQ3NzZhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL3NrYnVmZi5jXFxuKysrIGIvbmV0L2NvcmUvc2tidWZmLmNcXG5AQCAtMzkyOCw2ICszOTI4LDkgQEAgc2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBsZW4sIGludCBobGVuKVxcbiBcXHR9XFxuIFxcdHNrYl9zaGluZm8odG8pLVxcdTAwM2Vucl9mcmFncyA9IGo7XFxuIFxcbitcXHRpZiAoaSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgZnJvbS1cXHUwMDNldW5yZWFkYWJsZSlcXG4rXFx0XFx0dG8tXFx1MDAzZXVucmVhZGFibGUgPSAxO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xcbmluZGV4IDQ1NTQ0MWYxYjY5NDkuLjE4NmEzNmM2OTg3OTggMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwLmNcXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xcbkBAIC0xMjc4LDYgKzEyNzgsMTEgQEAgaW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuIFxcdFxcdGlmIChjb3B5IFxcdTAwM2UgbXNnX2RhdGFfbGVmdChtc2cpKVxcbiBcXHRcXHRcXHRjb3B5ID0gbXNnX2RhdGFfbGVmdChtc2cpO1xcbiBcXG4rXFx0XFx0aWYgKHpjICE9IE1TR19aRVJPQ09QWSBcXHUwMDI2XFx1MDAyNiB1bmxpa2VseSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKSB7XFxuK1xcdFxcdFxcdHRjcF9tYXJrX3B1c2godHAsIHNrYik7XFxuK1xcdFxcdFxcdGdvdG8gbmV3X3NlZ21lbnQ7XFxuK1xcdFxcdH1cXG4rXFxuIFxcdFxcdGlmICh6YyA9PSAwKSB7XFxuIFxcdFxcdFxcdGJvb2wgbWVyZ2UgPSB0cnVlO1xcbiBcXHRcXHRcXHRpbnQgaSA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjIwLjAwMDU0MTY1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE5MzcyODcxODg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJTWU5DX0ZJTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weVwiLFxuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTI6NDc6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xuaW5kZXggMTczYjVkOTdiZDQwOS4uNmY4ZmZkNjFiY2FiNCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2RhdGFncmFtLmNcbisrKyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbkBAIC02MzgsNyArNjM4LDcgQEAgaW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aW50IGZyYWcgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4gXG4gXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxuLVx0XHRyZXR1cm4gLUVGQVVMVDtcbitcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbiBcdHdoaWxlIChsZW5ndGggXHUwMDI2XHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XG4gXHRcdHN0cnVjdCBwYWdlICpoZWFkLCAqbGFzdF9oZWFkID0gTlVMTDtcbkBAIC03MTMsNyArNzEzLDcgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4gXG4gXHRpZiAoaSBcdTAwMjZcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4tXHRcdHJldHVybiAtRUZBVUxUO1xuK1x0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIFxuIFx0LyogRGV2bWVtIGZpbGxpbmcgd29ya3MgYnkgdGFraW5nIGFuIElPVkVDIGZyb20gdGhlIHVzZXIgd2hlcmUgdGhlXG4gXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuY1xuaW5kZXggYmEzZGJhYzgwZmI0OS4uYWViZThlYTc0Nzc2YSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL3NrYnVmZi5jXG4rKysgYi9uZXQvY29yZS9za2J1ZmYuY1xuQEAgLTM5MjgsNiArMzkyOCw5IEBAIHNrYl96ZXJvY29weShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgbGVuLCBpbnQgaGxlbilcbiBcdH1cbiBcdHNrYl9zaGluZm8odG8pLVx1MDAzZW5yX2ZyYWdzID0gajtcbiBcbitcdGlmIChpIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBmcm9tLVx1MDAzZXVucmVhZGFibGUpXG4rXHRcdHRvLVx1MDAzZXVucmVhZGFibGUgPSAxO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMTg2YTM2YzY5ODc5OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTEyNzgsNiArMTI3OCwxMSBAQCBpbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcbiBcdFx0aWYgKGNvcHkgXHUwMDNlIG1zZ19kYXRhX2xlZnQobXNnKSlcbiBcdFx0XHRjb3B5ID0gbXNnX2RhdGFfbGVmdChtc2cpO1xuIFxuK1x0XHRpZiAoemMgIT0gTVNHX1pFUk9DT1BZIFx1MDAyNlx1MDAyNiB1bmxpa2VseSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKSB7XG4rXHRcdFx0dGNwX21hcmtfcHVzaCh0cCwgc2tiKTtcbitcdFx0XHRnb3RvIG5ld19zZWdtZW50O1xuK1x0XHR9XG4rXG4gXHRcdGlmICh6YyA9PSAwKSB7XG4gXHRcdFx0Ym9vbCBtZXJnZSA9IHRydWU7XG4gXHRcdFx0aW50IGkgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0NzoyMC4wMDA1NDQwMzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTAwMzczMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgUGF0Y2ggZm9yIFJvYnVzdG5lc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCB0b3VjaGVzIHNvbWUgcHJldHR5IGNvcmUgbmV0d29ya2luZyBjb2RlOiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AsIGBuZXQvY29yZS9za2J1ZmYuY2AsIGFuZCBgbmV0L2lwdjQvdGNwLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIHNvbWUgc3VidGxlLCBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsLCBjaGFuZ2VzIHJlbGF0ZWQgdG8gemVyby1jb3B5IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCBob3cgd2UgaGFuZGxlIHVucmVhZGFibGUgc2tiIGZyYWdtZW50cyBpbiBmdW5jdGlvbnMgbGlrZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCDigJMgcmV0dXJuaW5nIGAtRU1TR1NJWkVgIGluc3RlYWQgb2YgYC1FRkFVTFRgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gVGhlcmUncyBhbHNvIHNvbWUgbG9naWMgYWRkZWQgaW4gYHNrYl96ZXJvY29weWAgdG8gcHJvcGFnYXRlIHRoZSB1bnJlYWRhYmxlIGZsYWcsIGFuZCBhIG1vZGlmaWNhdGlvbiB0byBgdGNwX3NlbmRtc2dfbG9ja2VkYCB0aGF0IG1hcmtzIHB1c2ggYW5kIGp1bXBzIGlmIGAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaW1wYWN0aW5nIFRDUCwgc2tidWZmIG1hbmFnZW1lbnQsIGFuZCBkYXRhZ3JhbSBoYW5kbGluZyDigJMgc28sIGFzIGFueSBleHBlcnQgaW4gbmV0d29ya2luZywgbXkgZmlyc3QgdGhvdWdodCBpcyBmdXp6aW5nLiBXZSBuZWVkIHRvIHN1YmplY3QgdGhlc2UgY2hhbmdlcyB0byByaWdvcm91cyB0ZXN0aW5nIHRvIGZsdXNoIG91dCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3IgcmVncmVzc2lvbnMuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0byB0YXJnZXQgd2l0aCBteSBmdXp6aW5nIGVmZm9ydHMuIEZyb20gdGhlIHBhdGNoIGl0c2VsZiwgdGhlIHByaW1lIHN1c3BlY3RzIGFyZTpcblxuKiAgIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgXG4qICAgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYFxuKiAgIGBza2JfemVyb2NvcHlgXG4qICAgYHRjcF9zZW5kbXNnX2xvY2tlZGBcblxuSG1tLCBgdGNwX3NlbmRtc2dfbG9ja2VkYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGF0J3MgYSBiaXQgb2YgYSB0cmlja3kgb25lOyBmdXp6aW5nIGEgaG90LXBhdGggY291bGQgaW50cm9kdWNlIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLiBEbyBJIGF2b2lkIGl0IGluaXRpYWxseSwgb3IgZG8gSSBmb2N1cyBvbiB0aGF0IGNvZGUgZm9yIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHk/IGBza2JfemVyb2NvcHlgIGlzIGFsc28gcXVpdGUgY29tbW9uLCBzbyB0aGF0IG9uZSBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2suIEknbSBsZWFuaW5nIHRvd2FyZCBzdGFydGluZyB3aXRoIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGFzIGdvb2QgaW5pdGlhbCBjYW5kaWRhdGVzLiBUaGV5J3JlIG1vcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgbG9naWMgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggYW5kIGNhbiBzdGlsbCBiZSBmdXp6ZWQgd2l0aG91dCBiZWluZyBhcyBkaXNydXB0aXZlLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUgbWFrZSBzdXJlIHRoYXQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBpcyBub3Qgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6MjYuOTAwOTIwMTQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDg4MjE3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGF0YWdyYW0uYz03MDY9c3RhdGljIGludFxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzA3Onplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcwOC1cXHRcXHRcXHQgICAgICBpbnQgbGVuZ3RoLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjAtXFx0ZWxzZSBpZiAoYmluZGluZylcXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc2MTpcXHRcXHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShza2IsIGZyb20sIGxlbmd0aCwgYmluZGluZyk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjItXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0NzoyOS43NDk3NTA0NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk5Mjc4NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgemVyb2NvcHkgU0tCIEZpbGwgRnVuY3Rpb25zKipcblxuT2theSwgc28gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBpcyBhICpzdGF0aWMqIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHNjb3BlIGFuZCBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gR2l2ZW4gdGhhdCBpdCdzIHN0YXRpYywgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBiZWluZyAqZGlyZWN0bHkqIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgY3VycmVudCBjb2RlYmFzZSB0byB0cnVseSB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBkYXRhIGZsb3cuIFJpZ2h0LCB0aGUgY29kZSBjb21tZW50IHNheXMgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAuIE5vdywgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCB1bmRlcnN0YW5kaW5nLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGF0IHRoYXQgbGV2ZWwgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgwMCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjMyLjg0OTAzMjE5MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTI2MTQxMTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjM9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY3LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2ODppbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY5LVxcdFxcdFxcdFxcdHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwgc2l6ZV90IGxlbmd0aCk7XFxuLS1cXG5pb191cmluZy9uZXQuYz0xNDUwPXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyX2lvdmVjKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pb191cmluZy9uZXQuYy0xNDUzLVxcdHNrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZChza2IpO1xcbmlvX3VyaW5nL25ldC5jOjE0NTQ6XFx0cmV0dXJuIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XFxuaW9fdXJpbmcvbmV0LmMtMTQ1NS19XFxuLS1cXG5pb191cmluZy9uZXQuYz0xNDU3PXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pb191cmluZy9uZXQuYy0xNDY5LVxcdGVsc2UgaWYgKHVubGlrZWx5KCFza2JfemNvcHlfbWFuYWdlZChza2IpKSlcXG5pb191cmluZy9uZXQuYzoxNDcwOlxcdFxcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xcbmlvX3VyaW5nL25ldC5jLTE0NzEtXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzMz1FWFBPUlRfU1lNQk9MKHNrYl9jb3B5X2RhdGFncmFtX2Zyb21faXRlcl9mdWxsKTtcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTYzNC1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjYzNTppbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzYtXFx0XFx0XFx0XFx0c3RydWN0IGlvdl9pdGVyICpmcm9tLCBzaXplX3QgbGVuZ3RoKVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjItXFx0ZWxzZVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYzOlxcdFxcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjM1Ljc3NTE4MDA0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDA5NjA4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipQb3RlbnRpYWwgWmVyby1Db3B5IE9wdGltaXphdGlvbiBQb2ludHMgaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZXNlIGZ1bmN0aW9ucy4gSXQgYXBwZWFycyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBpcyBleHBvc2VkLCBtZWFuaW5nIGl0J3MgbGlrZWx5IGludGVuZGVkIGZvciBicm9hZGVyIHVzZSDigJMgaW50ZXJlc3RpbmcuIEFuZCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIG1pZ2h0IGFsc28gYmUgYSB2YWx1YWJsZSB0YXJnZXQgZm9yIG9wdGltaXphdGlvbjsgaXRzIG5hbWUgc3VnZ2VzdHMgaXQgZGVhbHMgd2l0aCBzY2F0dGVyLWdhdGhlciBsaXN0cywgd2hpY2ggYXJlIGtleSBpbiB6ZXJvLWNvcHkgc2NlbmFyaW9zLiBPZiBjb3Vyc2UsIHdlIGhhdmUgYHNrYl96ZXJvY29weWAgd2hpY2ggaXMgYW5vdGhlciB3ZWxsLWtub3duIHBsYXllciBpbiB0aGlzIGdhbWUgYW5kIGFsc28gZXhwb3NlZCBmb3Igd2lkZXIgdXNlLCBpdCBzaG91bGQgYmUgY29uc2lkZXJlZC4gQWxzbywgSSd2ZSBnb3QgbXkgZXllIG9uIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgOyBpdCdzIGEgdml0YWwgcGFydCBvZiB0aGUgVENQIHNlbmRpbmcgcHJvY2Vzcy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdXNpbmcgZGV2bWVtIG5lZWRzIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uIFRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHNldHRpbmdzIGFyZSBnb2luZyB0byBkaXJlY3RseSBpbXBhY3QgaG93IHdlbGwgdGhpcyB3b3Jrcy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueSBwcmUtcmVxdWlzaXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzNSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjM5LjU3NjE0MzMwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY0Njg0MjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2RhdGFncmFtLmM9NzA2PXN0YXRpYyBpbnRcXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjcwNzp6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MDgtXFx0XFx0XFx0ICAgICAgaW50IGxlbmd0aCxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9NzQ5PWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYwLVxcdGVsc2UgaWYgKGJpbmRpbmcpXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjE6XFx0XFx0cmV0ID0gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc2tiLCBmcm9tLCBsZW5ndGgsIGJpbmRpbmcpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NDIuMzQwODM1NTE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4ODY0OTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgRGF0YWdyYW0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBhIHNwZWNpZmljIHBvaW50IGluIHRoZSBkYXRhZ3JhbSBoYW5kbGluZyBjb2RlLiBUaGUgYXJlYSBvZiBpbnRlcmVzdCBpcyBsaWtlbHkgd2l0aGluIHRoZSBgbmV0L2NvcmUvZGF0YWdyYW0uY2AgZmlsZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJ20gbG9va2luZyBhdCwgdGhlIGZ1bmN0aW9uIGNhbGwgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbiB3aWxsIGxpa2VseSBiZSBhcm91bmQgbGluZSA3MDcuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBhbmFseXplIHRoZSBzcGVjaWZpY3MgYW5kIG5hcnJvdyBkb3duIHRoZSBhcmVhIEknbSB0cnlpbmcgdG8gbG9vayBhdC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY2xlYXIgaWRlYSBvZiB3aGF0IEknbSBzZWVraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTcyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NDUuMjI5NTAwMDg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDQxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvZGF0YWdyYW0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2OTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2OTA6XFx0XFx0XFx0XFx0XFx0XFx0cmVmcysrO1xcbiA2OTE6XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDY5MjpcXHRcXHRcXHRcXHRcXHR9XFxuIDY5MzpcXHRcXHRcXHRcXHR9XFxuIDY5NDpcXHRcXHRcXHRcXHRpZiAocmVmcykge1xcbiA2OTU6XFx0XFx0XFx0XFx0XFx0cGFnZV9yZWZfc3ViKGxhc3RfaGVhZCwgcmVmcyk7XFxuIDY5NjpcXHRcXHRcXHRcXHRcXHRyZWZzID0gMDtcXG4gNjk3OlxcdFxcdFxcdFxcdH1cXG4gNjk4OlxcdFxcdFxcdFxcdHNrYl9maWxsX3BhZ2VfZGVzY19ub2FjYyhza2IsIGZyYWcrKywgaGVhZCwgc3RhcnQsIHNpemUpO1xcbiA2OTk6XFx0XFx0XFx0fVxcbiA3MDA6XFx0XFx0XFx0aWYgKHJlZnMpXFxuIDcwMTpcXHRcXHRcXHRcXHRwYWdlX3JlZl9zdWIobGFzdF9oZWFkLCByZWZzKTtcXG4gNzAyOlxcdFxcdH1cXG4gNzAzOlxcdFxcdHJldHVybiAwO1xcbiA3MDQ6XFx0fVxcbiA3MDU6XFx0XFxuIDcwNjpcXHRzdGF0aWMgaW50XFxuIDcwNzpcXHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuIDcwODpcXHRcXHRcXHRcXHQgICAgICBpbnQgbGVuZ3RoLFxcbiA3MDk6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxuIDcxMDpcXHR7XFxuIDcxMTpcXHRcXHRpbnQgaSA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuIDcxMjpcXHRcXHRzaXplX3QgdmlydF9hZGRyLCBzaXplLCBvZmY7XFxuIDcxMzpcXHRcXHRzdHJ1Y3QgbmV0X2lvdiAqbmlvdjtcXG4gNzE0OlxcdFxcbiA3MTU6XFx0XFx0aWYgKGkgXFx1MDAyNlxcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxuIDcxNjpcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA3MTc6XFx0XFxuIDcxODpcXHRcXHQvKiBEZXZtZW0gZmlsbGluZyB3b3JrcyBieSB0YWtpbmcgYW4gSU9WRUMgZnJvbSB0aGUgdXNlciB3aGVyZSB0aGVcXG4gNzE5OlxcdFxcdCAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG9cXG4gNzIwOlxcdFxcdCAqIHNlbmQgZnJvbS4gV2UgZG8gbm90IHN1cHBvcnQgb3RoZXIgaXRlciB0eXBlcy5cXG4gNzIxOlxcdFxcdCAqL1xcbiA3MjI6XFx0XFx0aWYgKGlvdl9pdGVyX3R5cGUoZnJvbSkgIT0gSVRFUl9JT1ZFQyBcXHUwMDI2XFx1MDAyNlxcbiA3MjM6XFx0XFx0ICAgIGlvdl9pdGVyX3R5cGUoZnJvbSkgIT0gSVRFUl9VQlVGKVxcbiA3MjQ6XFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIDcyNTpcXHRcXG4gNzI2OlxcdFxcdHdoaWxlIChsZW5ndGggXFx1MDAyNlxcdTAwMjYgaW92X2l0ZXJfY291bnQoZnJvbSkpIHtcXG4gNzI3OlxcdFxcdFxcdGlmIChpID09IE1BWF9TS0JfRlJBR1MpXFxuIDcyODpcXHRcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA3Mjk6XFx0XFxuIDczMDpcXHRcXHRcXHR2aXJ0X2FkZHIgPSAoc2l6ZV90KWl0ZXJfaW92X2FkZHIoZnJvbSk7XFxuIDczMTpcXHRcXHRcXHRuaW92ID0gbmV0X2Rldm1lbV9nZXRfbmlvdl9hdChiaW5kaW5nLCB2aXJ0X2FkZHIsIFxcdTAwMjZvZmYsIFxcdTAwMjZzaXplKTtcXG4gNzMyOlxcdFxcdFxcdGlmICghbmlvdilcXG4gNzMzOlxcdFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiA3MzQ6XFx0XFxuIDczNTpcXHRcXHRcXHRzaXplID0gbWluX3Qoc2l6ZV90LCBzaXplLCBsZW5ndGgpO1xcbiA3MzY6XFx0XFx0XFx0c2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgaXRlcl9pb3ZfbGVuKGZyb20pKTtcXG4gNzM3OlxcdFxcbiA3Mzg6XFx0XFx0XFx0Z2V0X25ldG1lbShuZXRfaW92X3RvX25ldG1lbShuaW92KSk7XFxuIDczOTpcXHRcXHRcXHRza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHNrYiwgaSwgbmV0X2lvdl90b19uZXRtZW0obmlvdiksIG9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NDUuMjMwOTU2NDY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTc1MzI4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIGBkZXZtZW1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9yIGlmIHRoaXMgaXMgc29tZXRoaW5nIGhhbmRsZWQgaW50ZXJuYWxseSwgbGlrZSBhIHNldHRpbmcgdGhhdCBjb250cm9scyBvciByZWxhdGVzIHRvIGl0LiBMZXQncyBzZWUuLi4gYSBxdWljayBtZW50YWwgY2hlY2sgc3VnZ2VzdHMgdGhhdCBgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ2AgbWlnaHQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0LiBJJ2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjQ4LjI0ODQ5Mjg3NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MDU5NTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc2tidWZmLmg9MTc1OT12b2lkIG1zZ196ZXJvY29weV9wdXRfYWJvcnQoc3RydWN0IHVidWZfaW5mbyAqdWFyZywgYm9vbCBoYXZlX3VyZWYpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2MC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjE6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTc2Mz1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjUtXFx0XFx0XFx0ICAgIHNpemVfdCBsZW5ndGgsXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzY2OlxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY3LVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzc4PWludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzgwLVxcdFxcdFxcdCAgICAgc3RydWN0IHVidWZfaW5mbyAqdWFyZyxcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3ODE6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzgyLVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzA4LVxcdFxcdFxcdCAgICAgIGludCBsZW5ndGgsXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDk6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MTAte1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NTEtXFx0XFx0XFx0ICAgIHNpemVfdCBsZW5ndGgsXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NTI6XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUzLXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTI4LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjI5OnN0YXRpYyBERUZJTkVfWEFSUkFZX0ZMQUdTKG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBYQV9GTEFHU19BTExPQzEpO1xcbm5ldC9jb3JlL2Rldm1lbS5jLTMwLVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9NDM9c3RhdGljIGRtYV9hZGRyX3QgbmV0X2Rldm1lbV9nZXRfZG1hX2FkZHIoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy01MS1cXG5uZXQvY29yZS9kZXZtZW0uYzo1MjpzdGF0aWMgdm9pZCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZilcXG5uZXQvY29yZS9kZXZtZW0uYy01My17XFxubmV0L2NvcmUvZGV2bWVtLmM6NTQ6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPVxcbm5ldC9jb3JlL2Rldm1lbS5jOjU1OlxcdFxcdGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nLCByZWYpO1xcbm5ldC9jb3JlL2Rldm1lbS5jLTU2LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjU3OlxcdElOSVRfV09SSyhcXHUwMDI2YmluZGluZy1cXHUwMDNldW5iaW5kX3csIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKTtcXG5uZXQvY29yZS9kZXZtZW0uYy01OC1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZiaW5kaW5nLVxcdTAwM2V1bmJpbmRfdyk7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy02MC1cXG5uZXQvY29yZS9kZXZtZW0uYzo2MTp2b2lkIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3EpXFxubmV0L2NvcmUvZGV2bWVtLmMtNjIte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjYzOlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gY29udGFpbmVyX29mKHdxLCB0eXBlb2YoKmJpbmRpbmcpLCB1bmJpbmRfdyk7XFxubmV0L2NvcmUvZGV2bWVtLmMtNjQtXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYz04Nz1zdHJ1Y3QgbmV0X2lvdiAqXFxubmV0L2NvcmUvZGV2bWVtLmM6ODg6bmV0X2Rldm1lbV9hbGxvY19kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmMtODkte1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MTEyPXZvaWQgbmV0X2Rldm1lbV9mcmVlX2RtYWJ1ZihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG5uZXQvY29yZS9kZXZtZW0uYy0xMTMte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjExNDpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IG5ldF9kZXZtZW1faW92X2JpbmRpbmcobmlvdik7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTE1LVxcdHVuc2lnbmVkIGxvbmcgZG1hX2FkZHIgPSBuZXRfZGV2bWVtX2dldF9kbWFfYWRkcihuaW92KTtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTEyMy1cXG5uZXQvY29yZS9kZXZtZW0uYzoxMjQ6dm9pZCBuZXRfZGV2bWVtX3VuYmluZF9kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmMtMTI1LXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTEyOS1cXG5uZXQvY29yZS9kZXZtZW0uYzoxMzA6XFx0eGFfZXJhc2UoXFx1MDAyNm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBiaW5kaW5nLVxcdTAwM2VpZCk7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTMxLVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MTU0PWludCBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeHFfaWR4LFxcbm5ldC9jb3JlL2Rldm1lbS5jOjE1NTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXFxubmV0L2NvcmUvZGV2bWVtLmMtMTU2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy0xODItXFxubmV0L2NvcmUvZGV2bWVtLmM6MTgzOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uYy0xODQtbmV0X2Rldm1lbV9iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp2ZGV2LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtMTg5LXtcXG5uZXQvY29yZS9kZXZtZW0uYzoxOTA6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTkxLVxcdHN0YXRpYyB1MzIgaWRfYWxsb2NfbmV4dDtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTIxOC1cXHRlcnIgPSBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNmJpbmRpbmctXFx1MDAzZXJlZixcXG5uZXQvY29yZS9kZXZtZW0uYzoyMTk6XFx0XFx0XFx0ICAgICAgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19yZWxlYXNlLFxcbm5ldC9jb3JlL2Rldm1lbS5jLTIyMC1cXHRcXHRcXHQgICAgICAwLCBHRlBfS0VSTkVMKTtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTMyMS1cXG5uZXQvY29yZS9kZXZtZW0uYzozMjI6XFx0ZXJyID0geGFfYWxsb2NfY3ljbGljKFxcdTAwMjZuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5ncywgXFx1MDAyNmJpbmRpbmctXFx1MDAzZWlkLFxcbm5ldC9jb3JlL2Rldm1lbS5jLTMyMy1cXHRcXHRcXHQgICAgICBiaW5kaW5nLCB4YV9saW1pdF8zMmIsIFxcdTAwMjZpZF9hbGxvY19uZXh0LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtMzUxLVxcbm5ldC9jb3JlL2Rldm1lbS5jOjM1MjpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9sb29rdXBfZG1hYnVmKHUzMiBpZClcXG5uZXQvY29yZS9kZXZtZW0uYy0zNTMte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM1NDpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcXG5uZXQvY29yZS9kZXZtZW0uYy0zNTUtXFxubmV0L2NvcmUvZGV2bWVtLmMtMzU2LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9kZXZtZW0uYzozNTc6XFx0YmluZGluZyA9IHhhX2xvYWQoXFx1MDAyNm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBpZCk7XFxubmV0L2NvcmUvZGV2bWVtLmMtMzU4LVxcdGlmIChiaW5kaW5nKSB7XFxubmV0L2NvcmUvZGV2bWVtLmM6MzU5OlxcdFxcdGlmICghbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19nZXQoYmluZGluZykpXFxubmV0L2NvcmUvZGV2bWVtLmMtMzYwLVxcdFxcdFxcdGJpbmRpbmcgPSBOVUxMO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MzY3PXZvaWQgbmV0X2Rldm1lbV9nZXRfbmV0X2lvdihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG5uZXQvY29yZS9kZXZtZW0uYy0zNjgte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM2OTpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2dldChuZXRfZGV2bWVtX2lvdl9iaW5kaW5nKG5pb3YpKTtcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzAtfVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MzcyPXZvaWQgbmV0X2Rldm1lbV9wdXRfbmV0X2lvdihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzMte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM3NDpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChuZXRfZGV2bWVtX2lvdl9iaW5kaW5nKG5pb3YpKTtcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzUtfVxcbm5ldC9jb3JlL2Rldm1lbS5jLTM3Ni1cXG5uZXQvY29yZS9kZXZtZW0uYzozNzc6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKm5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9jb3JlL2Rldm1lbS5jLTM3OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZClcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzkte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM4MDpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcXG5uZXQvY29yZS9kZXZtZW0uYy0zODEtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXY7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy00MjMtXFx0aWYgKGJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmM6NDI0OlxcdFxcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xcbm5ldC9jb3JlL2Rldm1lbS5jLTQyNS1cXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jPTQyOT1zdHJ1Y3QgbmV0X2lvdiAqXFxubmV0L2NvcmUvZGV2bWVtLmM6NDMwOm5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXFxubmV0L2NvcmUvZGV2bWVtLmMtNDMxLVxcdFxcdCAgICAgICBzaXplX3QgdmlydF9hZGRyLCBzaXplX3QgKm9mZiwgc2l6ZV90ICpzaXplKVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9NDQ0PWludCBtcF9kbWFidWZfZGV2bWVtX2luaXQoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbClcXG5uZXQvY29yZS9kZXZtZW0uYy00NDUte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjQ0NjpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IHBvb2wtXFx1MDAzZW1wX3ByaXY7XFxubmV0L2NvcmUvZGV2bWVtLmMtNDQ3LVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtNDU5LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjQ2MDpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2dldChiaW5kaW5nKTtcXG5uZXQvY29yZS9kZXZtZW0uYy00NjEtXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYz00NjQ9bmV0bWVtX3JlZiBtcF9kbWFidWZfZGV2bWVtX2FsbG9jX25ldG1lbXMoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxcbm5ldC9jb3JlL2Rldm1lbS5jLTQ2NS17XFxubmV0L2NvcmUvZGV2bWVtLmM6NDY2OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gcG9vbC1cXHUwMDNlbXBfcHJpdjtcXG5uZXQvY29yZS9kZXZtZW0uYy00NjctXFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYz00ODM9dm9pZCBtcF9kbWFidWZfZGV2bWVtX2Rlc3Ryb3koc3RydWN0IHBhZ2VfcG9vbCAqcG9vbClcXG5uZXQvY29yZS9kZXZtZW0uYy00ODQte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjQ4NTpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IHBvb2wtXFx1MDAzZW1wX3ByaXY7XFxubmV0L2NvcmUvZGV2bWVtLmMtNDg2LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjQ4NzpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcXG5uZXQvY29yZS9kZXZtZW0uYy00ODgtfVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9NTA4PXN0YXRpYyBpbnQgbXBfZG1hYnVmX2Rldm1lbV9ubF9maWxsKHZvaWQgKm1wX3ByaXYsIHN0cnVjdCBza19idWZmICpyc3AsXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy01MTAte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjUxMTpcXHRjb25zdCBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IG1wX3ByaXY7XFxubmV0L2NvcmUvZGV2bWVtLmMtNTEyLVxcdGludCB0eXBlID0gcnhxID8gTkVUREVWX0FfUVVFVUVfRE1BQlVGIDogTkVUREVWX0FfUEFHRV9QT09MX0RNQUJVRjtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jPTUxNz1zdGF0aWMgdm9pZCBtcF9kbWFidWZfZGV2bWVtX3VuaW5zdGFsbCh2b2lkICptcF9wcml2LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtNTE5LXtcXG5uZXQvY29yZS9kZXZtZW0uYzo1MjA6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBtcF9wcml2O1xcbm5ldC9jb3JlL2Rldm1lbS5jLTUyMS1cXHRzdHJ1Y3QgbmV0ZGV2X3J4X3F1ZXVlICpib3VuZF9yeHE7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNj1zdHJ1Y3QgbmV0bGlua19leHRfYWNrO1xcbm5ldC9jb3JlL2Rldm1lbS5oLTE3LVxcbm5ldC9jb3JlL2Rldm1lbS5oOjE4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nIHtcXG5uZXQvY29yZS9kZXZtZW0uaC0xOS1cXHRzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmg9ODM9c3RydWN0IGRtYWJ1Zl9nZW5wb29sX2NodW5rX293bmVyIHtcXG5uZXQvY29yZS9kZXZtZW0uaC04NC1cXHRzdHJ1Y3QgbmV0X2lvdl9hcmVhIGFyZWE7XFxubmV0L2NvcmUvZGV2bWVtLmg6ODU6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XFxubmV0L2NvcmUvZGV2bWVtLmgtODYtXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC05MC1cXG5uZXQvY29yZS9kZXZtZW0uaDo5MTp2b2lkIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3EpO1xcbm5ldC9jb3JlL2Rldm1lbS5oOjkyOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uaC05My1uZXRfZGV2bWVtX2JpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnZkZXYsXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC05Ny1cXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5uZXQvY29yZS9kZXZtZW0uaDo5ODpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9sb29rdXBfZG1hYnVmKHUzMiBpZCk7XFxubmV0L2NvcmUvZGV2bWVtLmg6OTk6dm9pZCBuZXRfZGV2bWVtX3VuYmluZF9kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpO1xcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMC1pbnQgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcXG5uZXQvY29yZS9kZXZtZW0uaDoxMDE6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLFxcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTEwNT1uZXRfZGV2bWVtX2lvdl90b19jaHVua19vd25lcihjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oLTExMS1cXG5uZXQvY29yZS9kZXZtZW0uaDoxMTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXFxubmV0L2NvcmUvZGV2bWVtLmgtMTEzLW5ldF9kZXZtZW1faW92X2JpbmRpbmcoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xMzE9c3RhdGljIGlubGluZSBib29sXFxubmV0L2NvcmUvZGV2bWVtLmg6MTMyOm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfZ2V0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTEzMy17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xMzc9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L2NvcmUvZGV2bWVtLmg6MTM4Om5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTEzOS17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNDY9c3RydWN0IG5ldF9pb3YgKlxcbm5ldC9jb3JlL2Rldm1lbS5oOjE0NzpuZXRfZGV2bWVtX2FsbG9jX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XFxubmV0L2NvcmUvZGV2bWVtLmgtMTQ4LXZvaWQgbmV0X2Rldm1lbV9mcmVlX2RtYWJ1ZihzdHJ1Y3QgbmV0X2lvdiAqcHBpb3YpO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmgtMTUwLVxcbm5ldC9jb3JlL2Rldm1lbS5oOjE1MTpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXFxubmV0L2NvcmUvZGV2bWVtLmgtMTUyLW5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKTtcXG5uZXQvY29yZS9kZXZtZW0uaD0xNTM9c3RydWN0IG5ldF9pb3YgKlxcbm5ldC9jb3JlL2Rldm1lbS5oOjE1NDpuZXRfZGV2bWVtX2dldF9uaW92X2F0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLCBzaXplX3QgYWRkcixcXG5uZXQvY29yZS9kZXZtZW0uaC0xNTUtXFx0XFx0ICAgICAgIHNpemVfdCAqb2ZmLCBzaXplX3QgKnNpemUpO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmgtMTU3LSNlbHNlXFxubmV0L2NvcmUvZGV2bWVtLmg6MTU4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xcbm5ldC9jb3JlL2Rldm1lbS5oLTE1OS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNjA9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L2NvcmUvZGV2bWVtLmg6MTYxOm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTE2Mi17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNjk9c3RhdGljIGlubGluZSB2b2lkIG5ldF9kZXZtZW1fcHV0X25ldF9pb3Yoc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC0xNzItXFxubmV0L2NvcmUvZGV2bWVtLmg6MTczOnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxcbm5ldC9jb3JlL2Rldm1lbS5oLTE3NC1uZXRfZGV2bWVtX2JpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnZkZXYsXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC0xODMtXFxubmV0L2NvcmUvZGV2bWVtLmg6MTg0OnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKm5ldF9kZXZtZW1fbG9va3VwX2RtYWJ1Zih1MzIgaWQpXFxubmV0L2NvcmUvZGV2bWVtLmgtMTg1LXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTE4OT1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvY29yZS9kZXZtZW0uaDoxOTA6bmV0X2Rldm1lbV91bmJpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTE5MS17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xOTU9bmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcXG5uZXQvY29yZS9kZXZtZW0uaDoxOTY6XFx0XFx0XFx0XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXFxubmV0L2NvcmUvZGV2bWVtLmgtMTk3LVxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTIwMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpcXG5uZXQvY29yZS9kZXZtZW0uaDoyMDQ6bmV0X2Rldm1lbV9hbGxvY19kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmgtMjA1LXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTIxOD1zdGF0aWMgaW5saW5lIHUzMiBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nX2lkKGNvbnN0IHN0cnVjdCBuZXRfaW92ICpuaW92KVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmgtMjIyLVxcbm5ldC9jb3JlL2Rldm1lbS5oOjIyMzpzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uaC0yMjQtbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBkbWFidWZfaWQpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0yMjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2lvdiAqXFxubmV0L2NvcmUvZGV2bWVtLmg6MjMwOm5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsIHNpemVfdCBhZGRyLFxcbm5ldC9jb3JlL2Rldm1lbS5oLTIzMS1cXHRcXHQgICAgICAgc2l6ZV90ICpvZmYsIHNpemVfdCAqc2l6ZSlcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oLTIzNS1cXG5uZXQvY29yZS9kZXZtZW0uaDoyMzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXFxubmV0L2NvcmUvZGV2bWVtLmgtMjM3LW5ldF9kZXZtZW1faW92X2JpbmRpbmcoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTEwMTM9aW50IG5ldGRldl9ubF9iaW5kX3J4X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTQte1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTAxNTpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTYtXFx0dTMyIGlmaW5kZXgsIGRtYWJ1Zl9mZCwgcnhxX2lkeDtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTE1NT1pbnQgbmV0ZGV2X25sX2JpbmRfdHhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTE1Ni17XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMTU3OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTE1OC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqYmluZF9kZXY7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTE0MjU9dm9pZCBuZXRkZXZfbmxfc29ja19wcml2X2Rlc3Ryb3koc3RydWN0IG5ldGRldl9ubF9zb2NrICpwcml2KVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTQyNi17XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxNDI3OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTQyODpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqdGVtcDtcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTE0MjktXFx0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xOTEyPWludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxNC1cXHRcXHRcXHQgICAgIHN0cnVjdCB1YnVmX2luZm8gKnVhcmcsXFxubmV0L2NvcmUvc2tidWZmLmM6MTkxNTpcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTYte1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9MTExNj1pbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG5uZXQvaXB2NC90Y3AuYy0xMTE3LXtcXG5uZXQvaXB2NC90Y3AuYzoxMTE4OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gTlVMTDtcXG5uZXQvaXB2NC90Y3AuYy0xMTE5LVxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtMTQyNS1cXHRpZiAoYmluZGluZylcXG5uZXQvaXB2NC90Y3AuYzoxNDI2OlxcdFxcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xcbm5ldC9pcHY0L3RjcC5jLTE0MjctXFx0cmV0dXJuIGNvcGllZCArIGNvcGllZF9zeW47XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDQ0LVxcdGlmIChiaW5kaW5nKVxcbm5ldC9pcHY0L3RjcC5jOjE0NDU6XFx0XFx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoYmluZGluZyk7XFxubmV0L2lwdjQvdGNwLmMtMTQ0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NTAuOTg5MDk3NDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MzI4OTQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIG15IGV4cGVydGlzZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgYGRldm1lbWAgQ29ubmVjdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYGRldm1lbWAgaXMgdGllZCBpbnRvIHNvbWV0aGluZyBzcGVjaWZpYyB3aXRoaW4gdGhlIG5ldHdvcmsgZGV2aWNlIG1lbW9yeSBzcGFjZSDigJMgSSdkIHdhZ2VyIGl0J3MgcmVsYXRlZCB0byBhIGBDT05GSUdfTkVUX0RFVk1FTWAgb3B0aW9uIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZsYWcuIEkgbmVlZCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0J3MgaW1wbGVtZW50ZWQuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IHRoZSBgbmV0L2NvcmVgIGRpcmVjdG9yeS4gSSdsbCBmb2N1cyBvbiBgZGV2bWVtLmNgLCBiZWNhdXNlIHRoYXQgZmlsZSBuYW1lIGlzIGEgc3Ryb25nIGluZGljYXRvciwgYW5kIEknbGwgc2VlIHdoYXQgSSBjYW4gZmluZCBpbiBLY29uZmlnIG9yIE1ha2VmaWxlIGZpbGVzIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBtYXkgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTYxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NTQuNDMyMzkwNTcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTg5NDMwNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldm1lbVxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9NYWtlZmlsZT00OD1vYmotJChDT05GSUdfTkVUX1RFU1QpICs9IG5ldF90ZXN0Lm9cXG5uZXQvY29yZS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfTkVUX0RFVk1FTSkgKz0gZGV2bWVtLm9cXG5uZXQvY29yZS9NYWtlZmlsZS01MC1vYmotJChDT05GSUdfREVCVUdfTkVUKSArPSBsb2NrX2RlYnVnLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NTcuNjIxODI5MjE5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTU5NDQzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBUQ1AgVHJhbnNtaXNzaW9uKipcblxuQWxyaWdodCwgdGhlIHB1enpsZSBwaWVjZXMgYXJlIHN0YXJ0aW5nIHRvIGZpdC4gSXQgbG9va3MgbGlrZSB0aGUgc3lzdGVtIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVk1FTWAgdG8gYmUgZW5hYmxlZCwgd2hpY2ggaXNuJ3QgYSBzdXJwcmlzZSBnaXZlbiB0aGUgbGlrZWx5IG5lZWQgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gZGV2aWNlIG1lbW9yeSBmb3IgbmV0d29yayBvcGVyYXRpb25zLCBwcm9iYWJseSBpbiBzb21lIGxvdy1sZXZlbCBuZXR3b3JrIGRyaXZlci4gTm93LCBsZXQncyBkcmlsbCBkb3duLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZmlndXJhdGlvbiBjb21lcyBpbnRvIHBsYXkuIE15IGltbWVkaWF0ZSBodW5jaCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgVENQIHRyYW5zbWlzc2lvbiBwYXRoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2lwdjQvdGNwLmNgLiBUaGF0IGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvcmUgbG9naWMgZm9yIHNlbmRpbmcgZGF0YSwgYW5kIGl0J3MgYSBwcmltZSBzdXNwZWN0IGZvciBlbmNvdW50ZXJpbmcgZGVwZW5kZW5jaWVzIG9uIG1lbW9yeSBtYXBwaW5nIG9yIGRpcmVjdCBkZXZpY2UgbWVtb3J5IGFjY2VzcywgZXNwZWNpYWxseSBpbiBzY2VuYXJpb3MgaW52b2x2aW5nIGhhcmR3YXJlIG9mZmxvYWQgb3Igc3BlY2lmaWMgbmV0d29ya2luZyBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHdpdGhpbiBgdGNwX3NlbmRtc2dfbG9ja2VkYCBhbmQgc2VlIGhvdyBgQ09ORklHX05FVF9ERVZNRU1gIGlzIHVzZWQuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb25maWcgb3B0aW9uIGltcGFjdHMgZGF0YSBtb3ZlbWVudCBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgZHVyaW5nIHRoZSBUQ1Agc2VuZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ5NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjAyLjg3Nzc3NjU5NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzOTc2MDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3Bfc2VuZG1zZ19sb2NrZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL3NubXAucnN0PTEzPXVuc2lnbmVkX2xvbmcgIExJTlVYX01JQl9ERUxBWUVEQUNLTE9DS0VEICAgICAgICAgICAgd3JpdGVfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9kZWxhY2tfdGltZXJfaGFuZGxlcix0Y3BfZGVsYWNrX3RpbWVyXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL3NubXAucnN0OjE0OnVuc2lnbmVkX2xvbmcgIExJTlVYX01JQl9UQ1BBVVRPQ09SS0lORyAgICAgICAgICAgICAgd3JpdGVfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9wdXNoLHRjcF9zZW5kbXNnX2xvY2tlZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9zbm1wLnJzdC0xNS11bnNpZ25lZF9sb25nICBMSU5VWF9NSUJfVENQRlJPTVpFUk9XSU5ET1dBRFYgICAgICAgIHdyaXRlX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3Bfc2VsZWN0X3dpbmRvdyx0Y3BfdHJhbnNtaXQtc2tiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3L3Npd19xcF90eC5jPTMyMz1zdGF0aWMgaW50IHNpd190Y3Bfc2VuZHBhZ2VzKHN0cnVjdCBzb2NrZXQgKnMsIHN0cnVjdCBwYWdlICoqcGFnZSwgaW50IG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9zaXcvc2l3X3FwX3R4LmMtMzQ2LVxcdFxcdGxvY2tfc29jayhzayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYzozNDc6XFx0XFx0cnYgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFxcdTAwMjZtc2csIGJ5dGVzKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3L3Npd19xcF90eC5jLTM0OC1cXHRcXHRyZWxlYXNlX3NvY2soc2spO1xcbi0tXFxuaW5jbHVkZS9uZXQvdGNwLmg9MzY3PWludCB0Y3Bfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpO1xcbmluY2x1ZGUvbmV0L3RjcC5oOjM2ODppbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSk7XFxuaW5jbHVkZS9uZXQvdGNwLmgtMzY5LWludCB0Y3Bfc2VuZG1zZ19mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50ICpjb3BpZWQsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy90Y3AuaD0yODk9VFJBQ0VfRVZFTlQodGNwX3JldHJhbnNtaXRfc3luYWNrLFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmgtMzM0LVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL3RjcC5oOjMzNTpUUkFDRV9FVkVOVCh0Y3Bfc2VuZG1zZ19sb2NrZWQsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmgtMzM2LVxcdFRQX1BST1RPKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz02NjU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3Jhd190cF9udWxsX2FyZ3MgcmF3X3RwX251bGxfYXJnc1tdID0ge1xcbi0tXFxua2VybmVsL2JwZi9idGYuYy02NzM2LVxcdHsgXFxcInRjcF9zZW5kX3Jlc2V0XFxcIiwgMHgxMSB9LFxcbmtlcm5lbC9icGYvYnRmLmM6NjczNzpcXHR7IFxcXCJ0Y3Bfc2VuZG1zZ19sb2NrZWRcXFwiLCAweDEwMCB9LFxcbmtlcm5lbC9icGYvYnRmLmMtNjczOC1cXHQvKiB0ZWdyYV9hcGJfZG1hICovXFxuLS1cXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTA2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYy0xMDg1LVxcdC5yZWFkX3NrYlxcdCAgID0gdGNwX3JlYWRfc2tiLFxcbm5ldC9pcHY0L2FmX2luZXQuYzoxMDg2OlxcdC5zZW5kbXNnX2xvY2tlZCAgICA9IHRjcF9zZW5kbXNnX2xvY2tlZCxcXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA4Ny1cXHQucGVla19sZW5cXHQgICA9IHRjcF9wZWVrX2xlbixcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTExMTQ9RVhQT1JUX1NZTUJPTF9HUEwodGNwX3JhdGVfY2hlY2tfYXBwX2xpbWl0ZWQpO1xcbm5ldC9pcHY0L3RjcC5jLTExMTUtXFxubmV0L2lwdjQvdGNwLmM6MTExNjppbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG5uZXQvaXB2NC90Y3AuYy0xMTE3LXtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEyNDAtXFxubmV0L2lwdjQvdGNwLmM6MTI0MTpcXHRcXHR0cmFjZV90Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIG1zZywgc2tiLCBzaXplX2dvYWwpO1xcbm5ldC9pcHY0L3RjcC5jLTEyNDItXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDQ4LX1cXG5uZXQvaXB2NC90Y3AuYzoxNDQ5OkVYUE9SVF9TWU1CT0xfR1BMKHRjcF9zZW5kbXNnX2xvY2tlZCk7XFxubmV0L2lwdjQvdGNwLmMtMTQ1MC1cXG5uZXQvaXB2NC90Y3AuYz0xNDUxPWludCB0Y3Bfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDU1LVxcdGxvY2tfc29jayhzayk7XFxubmV0L2lwdjQvdGNwLmM6MTQ1NjpcXHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIG1zZywgc2l6ZSk7XFxubmV0L2lwdjQvdGNwLmMtMTQ1Ny1cXHRyZWxlYXNlX3NvY2soc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTkxPXN0YXRpYyBpbnQgdGNwX2JwZl9wdXNoKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYXBwbHlfYnl0ZXMsXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTIyLVxcdFxcdGlvdl9pdGVyX2J2ZWMoXFx1MDAyNm1zZ2hkci5tc2dfaXRlciwgSVRFUl9TT1VSQ0UsIFxcdTAwMjZidmVjLCAxLCBzaXplKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTIzOlxcdFxcdHJldCA9IHRjcF9zZW5kbXNnX2xvY2tlZChzaywgXFx1MDAyNm1zZ2hkciwgc2l6ZSk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTEyNC1cXHRcXHRpZiAocmV0IFxcdTAwM2M9IDApXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTY2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY4MS1cXHQuc3BsaWNlX2VvZlxcdCAgID0gaW5ldF9zcGxpY2VfZW9mLFxcbm5ldC9pcHY2L2FmX2luZXQ2LmM6NjgyOlxcdC5zZW5kbXNnX2xvY2tlZCAgICA9IHRjcF9zZW5kbXNnX2xvY2tlZCxcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY4My1cXHQuc3BsaWNlX3JlYWRcXHQgICA9IHRjcF9zcGxpY2VfcmVhZCxcXG4tLVxcbm5ldC90bHMvdGxzX21haW4uYz0xNjg9aW50IHRsc19wdXNoX3NnKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC90bHMvdGxzX21haW4uYy0xOTQtXFxubmV0L3Rscy90bHNfbWFpbi5jOjE5NTpcXHRcXHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFxcdTAwMjZtc2csIHNpemUpO1xcbm5ldC90bHMvdGxzX21haW4uYy0xOTYtXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jPTIwNj1zdGF0aWMgaW50IGVzcGludGNwX3NlbmRza21zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3hmcm0vZXNwaW50Y3AuYy0yMjUtXFx0XFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2bXNnaGRyLm1zZ19pdGVyLCBJVEVSX1NPVVJDRSwgXFx1MDAyNmJ2ZWMsIDEsIHNnLVxcdTAwM2VsZW5ndGgpO1xcbm5ldC94ZnJtL2VzcGludGNwLmM6MjI2OlxcdFxcdHJldCA9IHRjcF9zZW5kbXNnX2xvY2tlZChzaywgXFx1MDAyNm1zZ2hkciwgc2ctXFx1MDAzZWxlbmd0aCk7XFxubmV0L3hmcm0vZXNwaW50Y3AuYy0yMjctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jPTExNz1zdGF0aWMgYm9vbCBicGZfdGVzdF9kZWxheShzdHJ1Y3QgYnBmX3NvY2tfb3BzICpza29wcywgY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYy0xODctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYzoxODg6U0VDKFxcXCJmZW50cnkvdGNwX3NlbmRtc2dfbG9ja2VkXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jOjE4OTppbnQgQlBGX1BST0codHJhY2VfdGNwX3NlbmRtc2dfbG9ja2VkLCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jLTE5MC1cXHQgICAgIHNpemVfdCBzaXplKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODowNS43MTc1NDUyNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MzAwMDUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEYXRhIFRyYW5zbWlzc2lvbiBSb3V0aW5lcyoqXG5cblJpZ2h0LCBzbyBgdGNwX3NlbmRtc2dfbG9ja2VkYCBpcyBhIHdpZGVseSB1c2VkIGZ1bmN0aW9uLCBhIGtlcm5lbCBzeW1ib2wuIFRoaXMgbWFrZXMgc2Vuc2U7IFRDUCBpcyBmdW5kYW1lbnRhbC4gQnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gemVyby1jb3B5IG1lY2hhbmlzbXMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIGBza2JfemVyb2NvcHlgIGFsc28gZXhwb3J0ZWQ/IEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCBpcyBpbmRlZWQgZXhwb3J0ZWQsIHdpdGggYEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSlgLiBHb29kLiBUaGF0IGluZGljYXRlcyBpdCdzIGludGVuZGVkIGZvciBicm9hZGVyIHVzZSB3aXRoaW4gdGhlIEdQTC1saWNlbnNlZCBrZXJuZWwgc3BhY2UsIHdoaWNoIGlzIHdoYXQgSSdkIGV4cGVjdCBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gb3B0aW1pemF0aW9ucy4gTm93LCB3aGF0IGFib3V0IGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgPyBJJ2xsIHJlLWV4YW1pbmUgYG5ldC9jb3JlL2RhdGFncmFtLmNgIHRvIGNvbmZpcm0gaXRzIGV4cG9ydCBzdGF0dXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY3MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjA5LjcxMDU2MzEzMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4MzUzMDcwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYzPWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Ny1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Njg6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2OS1cXHRcXHRcXHRcXHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpO1xcbi0tXFxuaW9fdXJpbmcvbmV0LmM9MTQ1MD1zdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcl9pb3ZlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW9fdXJpbmcvbmV0LmMtMTQ1My1cXHRza2JfemNvcHlfZG93bmdyYWRlX21hbmFnZWQoc2tiKTtcXG5pb191cmluZy9uZXQuYzoxNDU0OlxcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xcbmlvX3VyaW5nL25ldC5jLTE0NTUtfVxcbi0tXFxuaW9fdXJpbmcvbmV0LmM9MTQ1Nz1zdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW9fdXJpbmcvbmV0LmMtMTQ2OS1cXHRlbHNlIGlmICh1bmxpa2VseSghc2tiX3pjb3B5X21hbmFnZWQoc2tiKSkpXFxuaW9fdXJpbmcvbmV0LmM6MTQ3MDpcXHRcXHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcXG5pb191cmluZy9uZXQuYy0xNDcxLVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz02MzM9RVhQT1JUX1NZTUJPTChza2JfY29weV9kYXRhZ3JhbV9mcm9tX2l0ZXJfZnVsbCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzQtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo2MzU6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjM2LVxcdFxcdFxcdFxcdHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwgc2l6ZV90IGxlbmd0aClcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9NzQ5PWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVxcdGVsc2VcXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc2MzpcXHRcXHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODoxMi40OTQxMDEwNDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2Mzk2MjU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIEZ1bmN0aW9uIEV4cG9ydCBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29kZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgaXMgYWN0dWFsbHkgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS4gSSBtZWFuLCB0aGVyZSdzIG5vIHBvaW50IGluIHRyeWluZyB0byAqdXNlKiBpdCBpZiBpdCdzIG5vdCBleHBvcnRlZCBwcm9wZXJseSwgcmlnaHQ/IEknbGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSdzIHN5bWJvbCB0YWJsZXMgaWYgbmVjZXNzYXJ5LiBUaGlzIGZlZWxzIGxpa2UgYSBiYXNpYyBzYW5pdHkgY2hlY2ssIGJ1dCBpdOKAmXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIE5vIHN1cnByaXNlcyBhcmUgd2VsY29tZSwgZXNwZWNpYWxseSBlYXJseSBvbi4gSXQnbGwgc2F2ZSBtZSBhIGhlYWRhY2hlIGRvd24gdGhlIGxpbmUuIExldCdzIHNlZSBpZiBpdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTUzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MTguNzU4MDY4MzI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9kYXRhZ3JhbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzNTpcXHRpbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuIDYzNjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpXFxuIDYzNzpcXHR7XFxuIDYzODpcXHRcXHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuIDYzOTpcXHRcXG4gNjQwOlxcdFxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxuIDY0MTpcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA2NDI6XFx0XFxuIDY0MzpcXHRcXHR3aGlsZSAobGVuZ3RoIFxcdTAwMjZcXHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XFxuIDY0NDpcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqaGVhZCwgKmxhc3RfaGVhZCA9IE5VTEw7XFxuIDY0NTpcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZXNbTUFYX1NLQl9GUkFHU107XFxuIDY0NjpcXHRcXHRcXHRpbnQgcmVmcywgb3JkZXIsIG4gPSAwO1xcbiA2NDc6XFx0XFx0XFx0c2l6ZV90IHN0YXJ0O1xcbiA2NDg6XFx0XFx0XFx0c3NpemVfdCBjb3BpZWQ7XFxuIDY0OTpcXHRcXG4gNjUwOlxcdFxcdFxcdGlmIChmcmFnID09IE1BWF9TS0JfRlJBR1MpXFxuIDY1MTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA2NTI6XFx0XFxuIDY1MzpcXHRcXHRcXHRjb3BpZWQgPSBpb3ZfaXRlcl9nZXRfcGFnZXMyKGZyb20sIHBhZ2VzLCBsZW5ndGgsXFxuIDY1NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgTUFYX1NLQl9GUkFHUyAtIGZyYWcsIFxcdTAwMjZzdGFydCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjE4Ljc1ODMwOTM5N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTE2MDAwOTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKklzIEl0IEV4cG9ydGVkPyBUaGUgQ3J1Y2lhbCBWZXJpZmljYXRpb24qKlxuXG5SaWdodCwgbGV0IG1lIGp1c3QgcGF1c2UgaGVyZS4gQmVmb3JlIEkgZXZlbiBiZWdpbiB0byBlbGFib3JhdGUgb3IgY29uc2lkZXIgYW55IGZ1cnRoZXIgaW1wbGljYXRpb25zLCBJICptdXN0KiB2ZXJpZnkgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJcyBpdCBleHBvcnRlZD8gSSdtIHJlZmVycmluZywgb2YgY291cnNlLCB0byB0aGUgZGF0YSwgdGhlIG1vZGVsLCB0aGUgY29uZmlndXJhdGlvbiDigJMgd2hhdGV2ZXIgY3J1Y2lhbCBjb21wb25lbnQgd2UncmUgZGlzY3Vzc2luZy4gSXQgc2VlbXMgb2J2aW91cywgYnV0IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IG92ZXJsb29raW5nIHRoaXMgYmFzaWMgY2hlY2sgaXMgYSByZWNpcGUgZm9yIGRpc2FzdGVyLiBZb3UgY2FuIGdldCBpbnRvIGFuYWx5c2lzIHBhcmFseXNpcy5cblxuV2UncmUgYXQgdGhlIHBvaW50IHdoZXJlIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgXCJpdFwiIGlzLCBpcyBhY3R1YWxseSBpbiBhIHVzYWJsZSBzdGF0ZS4gT3RoZXJ3aXNlLCB3ZSdyZSB0YWxraW5nIHRoZW9yeSwgYSB3YXN0ZSBvZiB0aW1lLiBJIGNhbid0IGJ1aWxkIG15IGFuYWx5c2lzIG9uIGEgZm91bmRhdGlvbiBvZiBwb3RlbnRpYWxseSBpbmNvcnJlY3Qgb3IgaW5hY2Nlc3NpYmxlIGRhdGEuIFRoaXMgY2hlY2sgaXMgcGFyYW1vdW50OiBJIG11c3QgY29uZmlybSB0aGUgZXhwb3J0IHByb2Nlc3MgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3IgZWxzZSBJJ20gZGVhZCBpbiB0aGUgd2F0ZXIuIFdlIG5lZWQgdG8gY2hlY2sgdGhlIG91dHB1dHMgdG8gZW5zdXJlIHRoZSBkYXRhIGlzIGNvbXBsZXRlIGFuZCBpbiB0aGUgcmlnaHQgZm9ybWF0LlxuXG5Pbmx5ICphZnRlciogdGhpcyB2ZXJpZmljYXRpb24gY2FuIEkgcHJvY2VlZCB3aXRoIGNvbmZpZGVuY2UgYW5kIGEgY2xlYXIgaGVhZC4gSXQncyB0aGUgZmlyc3QgYW5kIGFyZ3VhYmx5IG1vc3QgaW1wb3J0YW50IHN0ZXAuIFdlJ3JlIG9uIHRoZSBzYW1lIHBhZ2UsIHJpZ2h0PyBUaGlzIGlzIGEgZnVuZGFtZW50YWwgYW5kIGNvbW1vbiBzZW5zZSBjaGVjaywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIHN0YXRlIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEwNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MjYuMjc0MzEyNTkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9kYXRhZ3JhbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwMCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDcwMDpcXHRcXHRcXHRpZiAocmVmcylcXG4gNzAxOlxcdFxcdFxcdFxcdHBhZ2VfcmVmX3N1YihsYXN0X2hlYWQsIHJlZnMpO1xcbiA3MDI6XFx0XFx0fVxcbiA3MDM6XFx0XFx0cmV0dXJuIDA7XFxuIDcwNDpcXHR9XFxuIDcwNTpcXHRcXG4gNzA2OlxcdHN0YXRpYyBpbnRcXG4gNzA3OlxcdHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcXG4gNzA4OlxcdFxcdFxcdFxcdCAgICAgIGludCBsZW5ndGgsXFxuIDcwOTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MjYuMjc0NDI3OTcxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTMxODg2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBmdW5jdGlvbiBpcyBkZWZpbmVkLiBJIHNlZW0gdG8gcmVjYWxsIHNlZWluZyBpdCBpbiB0aGUgY29udGV4dCBvZiBuZXR3b3JrIGRhdGFncmFtIGhhbmRsaW5nLiBBaCwgeWVzLCBpdCdzIHByb2JhYmx5IGV4cG9ydGVkIGluIGBuZXQvY29yZS9kYXRhZ3JhbS5jYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgaGVhZGluZyBvdmVyIHRvIGxpbmUgNzA0IGluIHRoYXQgZmlsZTsgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODoyOS43Mjc2MjE2NjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL2RhdGFncmFtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzA0LFxuICBcIkxpbmVDb3VudFwiOiA1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDQ6XFx0fVxcbiA3MDU6XFx0XFxuIDcwNjpcXHRzdGF0aWMgaW50XFxuIDcwNzpcXHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuIDcwODpcXHRcXHRcXHRcXHQgICAgICBpbnQgbGVuZ3RoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODoyOS43Mjc3OTMyODFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxNjc5NTY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgU3ltYm9sIEV4cG9ydCBJc3N1ZXMqKlxuXG5IbW0sIHNvIHRoZSBmdW5jdGlvbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYCB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGlzIGV4cGVjdGVkLiBIb3dldmVyLCBpdCdzIG5vdCBiZWluZyBleHBvcnRlZCBlaXRoZXIsIGF0IGxlYXN0IG5vdCBleHBsaWNpdGx5LiBUaGF0J3MgYSBiaXQgb2RkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIExldCBtZSBxdWlja2x5IHNjYW4gdGhlIGNvZGUgLSBzcGVjaWZpY2FsbHksIGlzIHRoZXJlIGFuIGBFWFBPUlRfU1lNQk9MKClgIGNhbGwgb24gdGhlIGZ1bmN0aW9uICppdHNlbGYqIGF0IHRoZSBlbmQgb2YgdGhlIGRlY2xhcmF0aW9uPyBTb21ldGhpbmcgbGlrZSBgRVhQT1JUX1NZTUJPTCh6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIpO2AgaXMgd2hhdCBJJ20gbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODcyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODozMy40NDQ1OTI3NDVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTI1OTgyMzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MzYuNDk3MjAxMzcyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzU5MjUxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0J3Mgbm90IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gQnV0IGlzIGl0IGFjdHVhbGx5IGFjY2Vzc2libGUgb3V0c2lkZSBpdHMgY3VycmVudCBjb21waWxhdGlvbiB1bml0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQncyAqbm90KiBleHBvcnRlZCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCBtZSBiYWNrdHJhY2sg4oCTIEkgcmVjYWxsIHNlZWluZyB0aGlzIGZ1bmN0aW9uIHVzZWQgc29tZXdoZXJlIGluIGBpb191cmluZy9uZXQuY2AsIHdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgaXQgKm1pZ2h0KiBiZSBleHBvcnRlZC4gV2FpdCwgb3IgY291bGQgaXQgYmUgcGFydCBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIHN0cnVjdD8gSXQgY291bGQganVzdCBiZSB0aGF0IGBpb191cmluZ2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBpbiB3aGljaCBjYXNlIHRoZSB2aXNpYmlsaXR5IHJ1bGVzIHdvdWxkIGJlIGRpZmZlcmVudC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGlvX3VyaW5nYCBpcyBpbmRlZWQgYSBidWlsdC1pbiBtb2R1bGUuIFllcywgaXQgaXMhIE9rYXksIHNvIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgb3RoZXIgZnVuY3Rpb25zLiBSaWdodCwgSSBrbm93IGBza2JfemVyb2NvcHlgIGlzIGV4cG9ydGVkLCB0aGF0J3MgYSBrZXkgcGllY2Ugb2YgdGhpcyBwdXp6bGUuIE5vdywgdG8gaW52ZXN0aWdhdGUgZnVydGhlciwgSSBuZWVkIHRvIGNoZWNrIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAsIGFuZCBzZWUgaG93IHRoYXQgaXMgbGlua2VkIG9yIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjQxLjEzMzEzMTczN1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNDY5OTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2MzppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3My17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc0OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cXHUwMDNlc2ssIHNrYiwgXFx1MDAyNm1zZy1cXHUwMDNlbXNnX2l0ZXIsIGxlbixcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzUtXFx0XFx0XFx0XFx0ICAgICAgIE5VTEwpO1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NDk6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc3NC19XFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NzU6RVhQT1JUX1NZTUJPTChfX3plcm9jb3B5X3NnX2Zyb21faXRlcik7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc4Nz1pbnQgemVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk0LVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzk1OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTYtfVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MzMtXFxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcXHRlcnIgPSBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrLCBza2IsIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sXFxubmV0L2NvcmUvc2tidWZmLmMtMTkzNS1cXHRcXHRcXHRcXHQgICAgICBiaW5kaW5nKTtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz04MD1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfZmlsbF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cXHRpZiAoemNvcHkpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjg4OlxcdFxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIE5VTEwsIHNrYixcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODktXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTIxMj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8sXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjM5LVxcdC8qIElmICd2c2snICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDA6XFx0ICogd2lsbCBuZXZlciBjYWxsICdfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJyBiZWxvdyB3aXRob3V0XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0MS1cXHQgKiBzZXR0aW5nIHNrYiBvd25lciBpbiAnc2tiX3NldF9vd25lcl93KCknLiBUaGUgb25seSBjYXNlXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ2LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XFx0LyogU2V0IG93bmVyIGhlcmUsIGJlY2F1c2UgJ19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCknIHVzZXNcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVxcdCAqIG93bmVyIG9mIHNrYiB3aXRob3V0IGNoZWNrIHRvIHVwZGF0ZSAnc2tfd21lbV9hbGxvYycuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjQzLjYzNzgzNzcxOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTI1OTk0NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRm9jdXMgU3ltYm9scyBmb3IgWmVyb2NvcHkgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHBsYWNlcyB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLiBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHNpbmNlIGl0J3MgZXhwb3J0ZWQgYW5kIGNhbGxzIGJvdGggYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAuIFRoYXQncyBkZWZpbml0ZWx5IG9uZSB0byBrZWVwIGluIG1pbmQuIEFuZCwgb2YgY291cnNlLCBgc2tiX3plcm9jb3B5YCBpdHNlbGYgaXMgYSBwcmltZSBjYW5kaWRhdGUuXG5cblRoZW4gdGhlcmUncyBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gSXQncyBkZWZpbml0ZWx5IGEgaG90IHBhdGggZnVuY3Rpb24sIGEgcmVhbGx5ICpob3QqIHBhdGguIEJ1dCB0aGUgcHJvbXB0IHNhaWQgdG8gYXZvaWQgdGhvc2UgZ2VuZXJpYyBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJdCB3YW50cyB1cyB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLiBIbW0sIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgICppcyogZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLi4uYW5kIGl0J3MgdGhlIG1haW4gZnVuY3Rpb24gZm9yIFRDUCBtZXNzYWdlIHNlbmRpbmcuIElmIHdlIHNraXAgaXQsIHdlIG1pZ2h0IG1pc3MgdGhlIFRDUCBwYXJ0IGVudGlyZWx5LlxuXG5XYWl0LCBpcyB0aGVyZSBhbiBhbHRlcm5hdGl2ZT8gTGV0J3MgY2hlY2sgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAuIE1heWJlIHRoYXQgcHJvdmlkZXMgYSBsZXNzIGdlbmVyaWMgZW50cnkgcG9pbnQuIEknbGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpdCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjA1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjQ5LjE2MzgzNjQwOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg0NDA4MzYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc4OmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MTExNj1pbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEzNDMtXFxubmV0L2lwdjQvdGNwLmM6MTM0NDpcXHRcXHRcXHRlcnIgPSBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc2ssIHNrYiwgbXNnLCBjb3B5LCB1YXJnLFxcbm5ldC9pcHY0L3RjcC5jLTEzNDUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJpbmRpbmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODo1Mi4wMDc5Mjc2MDdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNDYzMTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRGVsdmluZyBpbnRvIHNrYl96ZXJvY29weSBhbmQgVENQIFRyYW5zbWlzc2lvbioqXG5cblJpZ2h0LCBsZXQncyBzZWUuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIC0gYWhhLCB0aGF0J3MgYW4gaW50ZXJlc3Rpbmcgb25lLiBJdCdzIGV4cG9ydGVkLCBhbmQgc3BlY2lmaWNhbGx5IGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIFNlZW1zIGxpa2UgYSBuYXR1cmFsIHBvaW50IHRvIGZvY3VzIG9uLCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSB6ZXJvLWNvcHkgbG9naWMgd2l0aGluIHRoZSBUQ1Agc2VuZGluZyBwYXRoLiBUaGF0J3MgYSBzb2xpZCBzeW1ib2wgdG8gc3RhcnQgdHJhY2luZyBkb3duIHRoZSByYWJiaXQgaG9sZS5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBtb3JlIGdlbmVyYWwgYHNrYl96ZXJvY29weWA/IElzIGBpdGVyX3N0cmVhbWAgYSBtb3JlIHNwZWNpYWxpemVkIHZlcnNpb24/IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHR3by4gSXMgYGl0ZXJfc3RyZWFtYCBhIHN1YnNldCwgYSBtb3JlIG1vZGVybiByZXBsYWNlbWVudCwgb3IgYSBkaWZmZXJlbnQgZnVuY3Rpb25hbCBmYWNldCBvZiB0aGUgemVyby1jb3B5IG1lY2hhbmlzbT8gUGVyaGFwcyBgc2tiX3plcm9jb3B5YCBlbmNvbXBhc3NlcyBhIGJyb2FkZXIgcmFuZ2Ugb2YgemVyby1jb3B5IHNjZW5hcmlvcywgYW5kIGBpdGVyX3N0cmVhbWAgZm9jdXNlcyBvbiB0aGUgaXRlcmF0aXZlLCBzdHJlYW0tb3JpZW50ZWQgY2FzZXMuIE9yIG1heWJlIHRoZXkgYXJlIGNvbXBsZXRlbHkgdW5yZWxhdGVkLiBJIHNob3VsZCByZXZpZXcgd2hlcmUgYHNrYl96ZXJvY29weWAgaXMgdXNlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjAxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6NTUuNjQyNTYxODg3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkyMjE1NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrYl96ZXJvY29weVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaD00MTM9ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnhlbl9uZXRiYWNrX2RiZ19yb290O1xcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgtNDE1LVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oOjQxNjp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaC00MTctXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oOjQxODp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oLTQxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jLTQ5LSAqIGNvdW50ZXIgYmVjYXVzZSBjb3JlIGRyaXZlciBjYWxscyBpbnRvIHhlbnZpZl96ZXJvY29weV9jYWxsYmFja1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jOjUwOiAqIHdoaWNoIGNhbGxzIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUuXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTEtICovXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmM6NTI6dm9pZCB4ZW52aWZfc2tiX3plcm9jb3B5X3ByZXBhcmUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTMtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYy01OC1cXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1OTp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNjAte1xcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jPTExNzI9c3RhdGljIGludCB4ZW52aWZfdHhfc3VibWl0KHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyMTAtXFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWZyYWdfbGlzdDtcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmM6MTIxMTpcXHRcXHRcXHR4ZW52aWZfc2tiX3plcm9jb3B5X3ByZXBhcmUocXVldWUsIG5za2IpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjEyLVxcdFxcdFxcdGlmICh4ZW52aWZfaGFuZGxlX2ZyYWdfbGlzdChxdWV1ZSwgc2tiKSkge1xcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyMTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvbnNvbGlkYXRlIGZyYWdfbGlzdCFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjE2OlxcdFxcdFxcdFxcdHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShxdWV1ZSwgc2tiKTtcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIxNy1cXHRcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjMzLVxcdFxcdFxcdGlmIChza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWRlc3RydWN0b3JfYXJnKVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjM0OlxcdFxcdFxcdFxcdHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShxdWV1ZSwgc2tiKTtcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIzNS1cXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjcyLVxcdFxcdGlmIChza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWRlc3RydWN0b3JfYXJnKSB7XFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEyNzM6XFx0XFx0XFx0eGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHF1ZXVlLCBza2IpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjc0LVxcdFxcdFxcdHF1ZXVlLVxcdTAwM2VzdGF0cy50eF96ZXJvY29weV9zZW50Kys7XFxuLS1cXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmM9MTI4Mz1zdGF0aWMgdm9pZCB4ZW52aWZfemVyb2NvcHlfY2FsbGJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMzE0LVxcdFxcdHF1ZXVlLVxcdTAwM2VzdGF0cy50eF96ZXJvY29weV9mYWlsKys7XFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEzMTU6XFx0eGVudmlmX3NrYl96ZXJvY29weV9jb21wbGV0ZShxdWV1ZSk7XFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEzMTYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzY4PWludCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3MC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NzE6c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc4OmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NDI2OT12b2lkIHNrYl9jb3B5X2FuZF9jc3VtX2Rldihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqdG8pO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDI3MDp1bnNpZ25lZCBpbnQgc2tiX3plcm9jb3B5X2hlYWRsZW4oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKmZyb20pO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDI3MTppbnQgc2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00MjcyLVxcdFxcdCBpbnQgbGVuLCBpbnQgaGxlbik7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xODEyPUVYUE9SVF9TWU1CT0xfR1BMKG1zZ196ZXJvY29weV9yZWFsbG9jKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xODEzLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE4MTQ6c3RhdGljIGJvb2wgc2tiX3plcm9jb3B5X25vdGlmeV9leHRlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxvLCB1MTYgbGVuKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE4MTUte1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTgzND1zdGF0aWMgdm9pZCBfX21zZ196ZXJvY29weV9jYWxsYmFjayhzdHJ1Y3QgdWJ1Zl9pbmZvX21zZ3pjICp1YXJnKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTg3MC1cXHRpZiAoIXRhaWwgfHwgU0tCX0VYVF9FUlIodGFpbCktXFx1MDAzZWVlLmVlX29yaWdpbiAhPSBTT19FRV9PUklHSU5fWkVST0NPUFkgfHxcXG5uZXQvY29yZS9za2J1ZmYuYzoxODcxOlxcdCAgICAhc2tiX3plcm9jb3B5X25vdGlmeV9leHRlbmQodGFpbCwgbG8sIGxlbikpIHtcXG5uZXQvY29yZS9za2J1ZmYuYy0xODcyLVxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwocSwgc2tiKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTk2MD1FWFBPUlRfU1lNQk9MX0dQTChfX3NrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZCk7XFxubmV0L2NvcmUvc2tidWZmLmMtMTk2MS1cXG5uZXQvY29yZS9za2J1ZmYuYzoxOTYyOnN0YXRpYyBpbnQgc2tiX3plcm9jb3B5X2Nsb25lKHN0cnVjdCBza19idWZmICpuc2tiLCBzdHJ1Y3Qgc2tfYnVmZiAqb3JpZyxcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTYzLVxcdFxcdFxcdCAgICAgIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MjIyNT1zdHJ1Y3Qgc2tfYnVmZiAqX19wc2tiX2NvcHlfZmNsb25lKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZWFkcm9vbSxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTIyNDktXFx0XFx0aWYgKHNrYl9vcnBoYW5fZnJhZ3Moc2tiLCBnZnBfbWFzaykgfHxcXG5uZXQvY29yZS9za2J1ZmYuYzoyMjUwOlxcdFxcdCAgICBza2JfemVyb2NvcHlfY2xvbmUobiwgc2tiLCBnZnBfbWFzaykpIHtcXG5uZXQvY29yZS9za2J1ZmYuYy0yMjUxLVxcdFxcdFxcdGtmcmVlX3NrYihuKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTM4Mjg9RVhQT1JUX1NZTUJPTChfX3NrYl9jaGVja3N1bV9jb21wbGV0ZSk7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0zODMwLSAvKipcXG5uZXQvY29yZS9za2J1ZmYuYzozODMxOiAqXFx0c2tiX3plcm9jb3B5X2hlYWRsZW4gLSBDYWxjdWxhdGUgaGVhZHJvb20gbmVlZGVkIGZvciBza2JfemVyb2NvcHkoKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4MzItICpcXHRAZnJvbTogc291cmNlIGJ1ZmZlclxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMzgzNC0gKlxcdENhbGN1bGF0ZXMgdGhlIGFtb3VudCBvZiBsaW5lYXIgaGVhZHJvb20gbmVlZGVkIGluIHRoZSAndG8nIHNrYiBwYXNzZWRcXG5uZXQvY29yZS9za2J1ZmYuYzozODM1OiAqXFx0aW50byBza2JfemVyb2NvcHkoKS5cXG5uZXQvY29yZS9za2J1ZmYuYy0zODM2LSAqL1xcbm5ldC9jb3JlL3NrYnVmZi5jPTM4Mzc9dW5zaWduZWQgaW50XFxubmV0L2NvcmUvc2tidWZmLmM6MzgzODpza2JfemVyb2NvcHlfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSlcXG5uZXQvY29yZS9za2J1ZmYuYy0zODM5LXtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NTQtfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjM4NTU6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2hlYWRsZW4pO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NTYtXFxubmV0L2NvcmUvc2tidWZmLmMtMzg1Ny0vKipcXG5uZXQvY29yZS9za2J1ZmYuYzozODU4OiAqXFx0c2tiX3plcm9jb3B5IC0gWmVybyBjb3B5IHNrYiB0byBza2JcXG5uZXQvY29yZS9za2J1ZmYuYy0zODU5LSAqXFx0QHRvOiBkZXN0aW5hdGlvbiBidWZmZXJcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjYtICpcXG5uZXQvY29yZS9za2J1ZmYuYzozODY3OiAqXFx0VGhlIGBobGVuYCBhcyBjYWxjdWxhdGVkIGJ5IHNrYl96ZXJvY29weV9oZWFkbGVuKCkgc3BlY2lmaWVzIHRoZVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjgtICpcXHRoZWFkcm9vbSBpbiB0aGUgYHRvYCBidWZmZXIuXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0zODc1PWludFxcbm5ldC9jb3JlL3NrYnVmZi5jOjM4NzY6c2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBsZW4sIGludCBobGVuKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4Nzcte1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMzkxMy1cXHR9XFxubmV0L2NvcmUvc2tidWZmLmM6MzkxNDpcXHRza2JfemVyb2NvcHlfY2xvbmUodG8sIGZyb20sIEdGUF9BVE9NSUMpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTM5MTUtXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0zOTM1LX1cXG5uZXQvY29yZS9za2J1ZmYuYzozOTM2OkVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7XFxubmV0L2NvcmUvc2tidWZmLmMtMzkzNy1cXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTQyMzQ9dm9pZCBza2Jfc3BsaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmYgKnNrYjEsIGNvbnN0IHUzMiBsZW4pXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy00MjQxLVxcdHNrYl9zaGluZm8oc2tiMSktXFx1MDAzZWZsYWdzIHw9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB6Y19mbGFncztcXG5uZXQvY29yZS9za2J1ZmYuYzo0MjQyOlxcdHNrYl96ZXJvY29weV9jbG9uZShza2IxLCBza2IsIDApO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTQyNDMtXFx0aWYgKGxlbiBcXHUwMDNjIHBvcylcXHQvKiBTcGxpdCBsaW5lIGlzIGluc2lkZSBoZWFkZXIuICovXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz00NzgwPXN0cnVjdCBza19idWZmICpza2Jfc2VnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqaGVhZF9za2IsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy01MDAzLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjUwMDQ6XFx0XFx0aWYgKHNrYl96ZXJvY29weV9jbG9uZShuc2tiLCBmcmFnX3NrYiwgR0ZQX0FUT01JQykpXFxubmV0L2NvcmUvc2tidWZmLmMtNTAwNS1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTUwMDktXFx0XFx0XFx0XFx0aWYgKHNrYl9vcnBoYW5fZnJhZ3MobGlzdF9za2IsIEdGUF9BVE9NSUMpIHx8XFxubmV0L2NvcmUvc2tidWZmLmM6NTAxMDpcXHRcXHRcXHRcXHQgICAgc2tiX3plcm9jb3B5X2Nsb25lKG5za2IsIGxpc3Rfc2tiLFxcbm5ldC9jb3JlL3NrYnVmZi5jLTUwMTEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEdGUF9BVE9NSUMpKVxcbi0tXFxubmV0L2lwdjQvaXBfb3V0cHV0LmM9OTQ5PXN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9pcF9vdXRwdXQuYy0xMjY1LVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjQvaXBfb3V0cHV0LmM6MTI2NjpcXHRcXHRcXHRlcnIgPSBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShza2IsIGZyb20sIGNvcHkpO1xcbm5ldC9pcHY0L2lwX291dHB1dC5jLTEyNjctXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMTM0My1cXG5uZXQvaXB2NC90Y3AuYzoxMzQ0OlxcdFxcdFxcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXFxubmV0L2lwdjQvdGNwLmMtMTM0NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgYmluZGluZyk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTQ0OT1zdGF0aWMgaW50IF9faXA2X2FwcGVuZF9kYXRhKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xODMxLVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjYvaXA2X291dHB1dC5jOjE4MzI6XFx0XFx0XFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc2tiLCBmcm9tLCBjb3B5KTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTgzMy1cXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9NzA1PW5mcW5sX2J1aWxkX3BhY2tldF9tZXNzYWdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtNzY5LVxcdFxcdGRhdGFfbGVuID0gbmZxbmxfZ2V0X2RhdGFfbGVuKGVudHNrYiwgUkVBRF9PTkNFKHF1ZXVlLVxcdTAwM2Vjb3B5X3JhbmdlKSk7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo3NzA6XFx0XFx0aGxlbiA9IHNrYl96ZXJvY29weV9oZWFkbGVuKGVudHNrYik7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy03NzEtXFx0XFx0aGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgaGxlbiwgZGF0YV9sZW4pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy05NTMtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo5NTQ6XFx0XFx0aWYgKHNrYl96ZXJvY29weShza2IsIGVudHNrYiwgZGF0YV9sZW4sIGhsZW4pKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtOTU1LVxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NDUxPXN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNDk3LVxcdGlmIChkcC1cXHUwMDNldXNlcl9mZWF0dXJlcyBcXHUwMDI2IE9WU19EUF9GX1VOQUxJR05FRClcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo0OTg6XFx0XFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTQ5OS1cXHRlbHNlXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy01ODQtXFx0LyogT25seSByZXNlcnZlIHJvb20gZm9yIGF0dHJpYnV0ZSBoZWFkZXIsIHBhY2tldCBkYXRhIGlzIGFkZGVkXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NTg1OlxcdCAqIGluIHNrYl96ZXJvY29weSgpICovXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNTg2LVxcdGlmICghKG5sYSA9IG5sYV9yZXNlcnZlKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfUEFDS0VULCAwKSkpIHtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU5MS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo1OTI6XFx0ZXJyID0gc2tiX3plcm9jb3B5KHVzZXJfc2tiLCBza2IsIHNrYl9sZW4sIGhsZW4pO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU5My1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L3hkcC94c2suYz05NjQ9c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTAwNS1cXG5uZXQveGRwL3hzay5jOjEwMDY6c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxubmV0L3hkcC94c2suYy0xMDA3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbm5ldC94ZHAveHNrLmM9MTA4Mj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTA4OS1cXHRpZiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX1RYX1NLQl9OT19MSU5FQVIpIHtcXG5uZXQveGRwL3hzay5jOjEwOTA6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XFxubmV0L3hkcC94c2suYy0xMDkxLVxcdFxcdGlmIChJU19FUlIoc2tiKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODo1OC4wMzQ3ODI4NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIyNTc1NjY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgc2tiX3plcm9jb3B5YCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgc2tiX3plcm9jb3B5YCB0aGluZyBhbmQgd2hlcmUgaXQncyB1c2VkLiBJdCdzIGNsZWFyIGZyb20gdGhlIGNvZGUgdGhhdCBpdCdzIGEgZm9jdXMgcG9pbnQuIEkgc2VlIGl0J3MgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYm90aCBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY2AsIHNvIGl0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBGdXJ0aGVybW9yZSwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCBhbmQgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAsIGFzIHRoZXkncmUgYWxzbyBrZXkgZnVuY3Rpb25zIGluIHRoaXMgY29udGV4dC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IGNydWNpYWwgY29uZmlndXJhdGlvbnMuIEknbSBhbHJlYWR5IGF3YXJlIHRoYXQgYENPTkZJR19ORVRfREVWTUVNYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBkZXZtZW0gYXNwZWN0LiBCdXQgd2hhdCBhYm91dCB0aGUgYHNrYl96ZXJvY29weWAgY29yZSBpdHNlbGY/IEFoLCBpdCByZXNpZGVzIGluIGBuZXQvY29yZS9za2J1ZmYuY2AsIHdoaWNoIGlzIGFsd2F5cyBjb21waWxlZCDigJMgc28gbm8gd29ycmllcyB0aGVyZS4gQW5kIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzIGFsd2F5cyBjb21waWxlZCB0b28uIEFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCwgaW4gYG5ldC9jb3JlL2RhdGFncmFtLmNgLCB0aGF0J3MgYW5vdGhlciBvbmUgdGhhdCdzIGFsd2F5cyBjb21waWxlZC5cblxuSG93ZXZlciwgYSBjbG9zZXIgbG9vayBhdCB0aGUgcGF0Y2ggcmV2ZWFscyB0aGF0IGl0IHNwZWNpZmljYWxseSBtb2RpZmllcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBhbmQgdGhhdCBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCB3aGVuIGEgYGJpbmRpbmdgIGlzICpub3QqIE5VTEwuIFRoZSBgYmluZGluZ2AgaXMgYSBgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmdgLiBTbywgY2xlYXJseSwgdGhpcyAqaXMqIGxpbmtlZCB0byBgQ09ORklHX05FVF9ERVZNRU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYE5FVF9ERVZNRU1gIGlzIGluY2x1ZGVkIGluIEVuYWJsZUNvbmZpZ3MuXG5cbk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgYE5FVF9ERVZNRU1gIGl0c2VsZiBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgY29uc2lkZXJpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjM5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjA0LjI2MDU0MjQ3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzgwMjI3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfREVWTUVNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTY2PWNvbmZpZyBTS0JfRVhURU5TSU9OU1xcbi0tXFxubmV0L0tjb25maWctNjgtXFxubmV0L0tjb25maWc6Njk6Y29uZmlnIE5FVF9ERVZNRU1cXG5uZXQvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjA2LjY0MDc3ODczOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDEwNzAxMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVyKipcblxuSG1tLCBzbyBgY29uZmlnIE5FVF9ERVZNRU1gIGlzICpkZWZpbmVkKiB0byBiZSAneScsIHJpZ2h0IG91dCBvZiB0aGUgZ2F0ZT8gVGhhdCBzZWVtc+KApmludGVyZXN0aW5nLiBJJ20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0LCBzbyBJJ2xsIGp1bXAgcmlnaHQgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLiBMZXQncyBzZWUuLi4gYG5ldC9LY29uZmlnYCwgYXJvdW5kIGxpbmUgNjksIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC4gSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBleHBsYW5hdGlvbnMsIGFuZCBwZXJoYXBzIGEgZGlyZWN0IGxpbmsgdG8gdGhlIHVuZGVybHlpbmcgZHJpdmVyIG9yIHN1YnN5c3RlbS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGluY2x1c2lvbiwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgaXQgYmVpbmcgYSBkZWZhdWx0LiBJcyB0aGlzIGEgY29yZSByZXF1aXJlbWVudCwgb3IgYSBtb3JlIHNwZWNpYWxpemVkIGZlYXR1cmUgdGhhdCBtaWdodCBpbmFkdmVydGVudGx5IGJlIGVuYWJsZWQgYnkgZGVmYXVsdD8gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGRlc2lnbiBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDQ4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MTAuMDUxNDgzMDkyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRjb25maWcgTkVUX1JFRElSRUNUXFxuICA2MTpcXHRcXHRib29sXFxuICA2MjpcXHRcXG4gIDYzOlxcdGNvbmZpZyBTS0JfREVDUllQVEVEXFxuICA2NDpcXHRcXHRib29sXFxuICA2NTpcXHRcXG4gIDY2OlxcdGNvbmZpZyBTS0JfRVhURU5TSU9OU1xcbiAgNjc6XFx0XFx0Ym9vbFxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgTkVUX0RFVk1FTVxcbiAgNzA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgNzE6XFx0XFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuICA3MjpcXHRcXHRkZXBlbmRzIG9uIERNQV9TSEFSRURfQlVGRkVSXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxcbiAgNzQ6XFx0XFxuICA3NTpcXHRjb25maWcgTkVUX1NIQVBFUlxcbiAgNzY6XFx0XFx0Ym9vbFxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgTkVUX0NSQzMyQ1xcbiAgNzk6XFx0XFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToxMC4wNTI2NTU5MDJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NzEwOTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQuXG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIGBORVRfREVWTUVNYCBpcyBlbmFibGVkLCBhIGRpcmVjdCBcInllc1wiIGFzIGluZGljYXRlZCBieSBgZGVmX2Jvb2wgeWAuIEhvd2V2ZXIsIHRoaXMgaXMgbW9yZSBpbnRlcmVzdGluZyB0aGFuIGp1c3QgYSBzaW1wbGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgc2VlIGl0IGhhcyBkZXBlbmRlbmNpZXMsIHNwZWNpZmljYWxseSBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gVGhhdCdzIHRoZSByZWFsIHN0b3J5IGhlcmUsIG5vdCBqdXN0IHRoYXQgaXQncyBzZXQuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCB1bmRlcnN0YW5kIHdoYXQgKml0J3MqIGFsbCBhYm91dC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgYE5FVF9ERVZNRU1gLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDg4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToxMy42MDk3Njg3MzZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODU5NjMzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERNQV9TSEFSRURfQlVGRkVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnPTIxMz1zb3VyY2UgXFxcImRyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy0yMTQtXFxuZHJpdmVycy9iYXNlL0tjb25maWc6MjE1OmNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTIxNi1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjE1Ljk5NTc0MDg5NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY1NTE0MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBzb21ldGhpbmcgaXMgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLCBhbmQgdGhlIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbGluZSAyMTUgc291bmRzIGxpa2UgYSBnb29kIHBvaW50IHRvIHplcm8gaW4gb24uIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21ldGhpbmcgZnVuZGFtZW50YWwsIHByb2JhYmx5IGEgY29yZSBvcHRpb24gcmVsYXRlZCB0byBzb21lIGRyaXZlciBvciBiYXNlIGZ1bmN0aW9uYWxpdHksIG9yIG1heWJlIGV2ZW4gYSBtYWNybyBkZWZpbml0aW9uLiBMZXQgbWUgcHVsbCB0aGF0IGZpbGUgYW5kIGdldCB0byBsaW5lIDIxNSwgSSBzdXNwZWN0IEkgY2FuIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIGFuZCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgd2lkZXIgY29uZmlndXJhdGlvbiBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MTkuMDYxMjU5NjdaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxMDpcXHRcXHRib29sXFxuIDIxMTpcXHRcXHRzZWxlY3QgR0xPQlxcbiAyMTI6XFx0XFxuIDIxMzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1xcXCJcXG4gMjE0OlxcdFxcbiAyMTU6XFx0Y29uZmlnIERNQV9TSEFSRURfQlVGRkVSXFxuIDIxNjpcXHRcXHRib29sXFxuIDIxNzpcXHRcXHRkZWZhdWx0IG5cXG4gMjE4OlxcdFxcdHNlbGVjdCBJUlFfV09SS1xcbiAyMTk6XFx0XFx0aGVscFxcbiAyMjA6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBmcmFtZXdvcmsgZm9yIGJ1ZmZlci1zaGFyaW5nIGJldHdlZW5cXG4gMjIxOlxcdFxcdCAgbXVsdGlwbGUgZHJpdmVycy4gQSBidWZmZXIgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSB1c2luZyBkcml2ZXJcXG4gMjIyOlxcdFxcdCAgQVBJcyBleHRlbnNpb247IHRoZSBmaWxlJ3MgZGVzY3JpcHRvciBjYW4gdGhlbiBiZSBwYXNzZWQgb24gdG8gb3RoZXJcXG4gMjIzOlxcdFxcdCAgZHJpdmVyLlxcbiAyMjQ6XFx0XFxuIDIyNTpcXHRjb25maWcgRE1BX0ZFTkNFX1RSQUNFXFxuIDIyNjpcXHRcXHRib29sIFxcXCJFbmFibGUgdmVyYm9zZSBETUFfRkVOQ0VfVFJBQ0UgbWVzc2FnZXNcXFwiXFxuIDIyNzpcXHRcXHRkZXBlbmRzIG9uIERNQV9TSEFSRURfQlVGRkVSXFxuIDIyODpcXHRcXHRoZWxwXFxuIDIyOTpcXHRcXHQgIEVuYWJsZSB0aGUgRE1BX0ZFTkNFX1RSQUNFIHByaW50a3MuIFRoaXMgd2lsbCBhZGQgZXh0cmFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MTkuMDYxMzkyMjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MDc0MTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIE1lbW9yeSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIFRoaXMgYERNQV9TSEFSRURfQlVGRkVSYCBmbGFn4oCmIHNlZW1zIGxpa2UgaXQncyBhIGJvb2xlYW4sIGFuZCB0aGUgZGVmYXVsdCBpcyBcIm5vXCIsIG1lYW5pbmcgaXQncyBkaXNhYmxlZC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBETUEgYW5kIHNoYXJlZCBtZW1vcnkgYXJjaGl0ZWN0dXJlcywgSSdtIHByZXR0eSBzdXJlIHdlIHNob3VsZCBiZSBlbmFibGluZyB0aGlzLiBFbmFibGluZyBzaGFyZWQgYnVmZmVycyB1c3VhbGx5IHVubG9ja3Mgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgYmVuZWZpdHMgYnkgcmVkdWNpbmcgZGF0YSBjb3BpZXMgYW5kIGFsbG93aW5nIG1vcmUgZGlyZWN0IGFjY2VzcyBmb3IgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBraW5kIG9mIGhhcmR3YXJlIHdlIGFyZSB3b3JraW5nIHdpdGguIFRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5IHN1YnN5c3RlbSwgcGFydGljdWxhcmx5IGNhY2hlIGNvaGVyZW5jeSBwcm90b2NvbHMsIGJ1dCBnZW5lcmFsbHkgc3BlYWtpbmcsIHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIHRoZSBgUEFHRV9QT09MYCBvcHRpb27igKYgdGhhdCBvbmUgbmVlZHMgc29tZSBtb3JlIHRob3VnaHQuIEnigJl2ZSBkZWFsdCB3aXRoIG1lbW9yeSBwb29scyBiZWZvcmUsIGJ1dCB0aGUgc3BlY2lmaWNzIGFsd2F5cyBtYXR0ZXIuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgaW1wbGVtZW50YXRpb24gaGFuZGxlcyBwYWdlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4gSXMgaXQgZm9yIGdlbmVyYWwtcHVycG9zZSBtZW1vcnksIG9yIGlzIGl0IHNwZWNpZmljYWxseSBnZWFyZWQgdG93YXJkcyBETUEgYnVmZmVycz8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgdmlydHVhbCBtZW1vcnkgc3lzdGVtPyBEb2VzIGl0IGludHJvZHVjZSBhbnkgZnJhZ21lbnRhdGlvbiBjb25jZXJucz8gVGhlIGRldmlsJ3MgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgdGhlIHBhZ2UgcG9vbCBpbXBsZW1lbnRhdGlvbiBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgbWVtb3J5IG1hbmFnZW1lbnQgdW5pdHMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaG93IGl0IGJlbmVmaXRzIG1lbW9yeSBlZmZpY2llbmN5IGFuZCB3aGV0aGVyIGl0IGltcHJvdmVzIG9yIGRlZ3JhZGVzIHBlcmZvcm1hbmNlLCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjUyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToyMi43NTIxMzc0MjZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODI2NjE3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz00ODc9Y29uZmlnIE5FVF9ERVZMSU5LXFxuLS1cXG5uZXQvS2NvbmZpZy00OTAtXFxubmV0L0tjb25maWc6NDkxOmNvbmZpZyBQQUdFX1BPT0xcXG5uZXQvS2NvbmZpZy00OTItXFx0Ym9vbFxcbm5ldC9LY29uZmlnLTQ5My1cXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xcbm5ldC9LY29uZmlnLTQ5NS1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MjUuMTM0ODA4Njk1WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjI4MDI0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG5ldC9LY29uZmlnYCwgd2hpY2ggaXMgdGhlIGRlIGZhY3RvIHN0YW5kYXJkIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGtlcm5lbCdzIEtjb25maWcgc3RydWN0dXJlLiBJJ20gYXNzdW1pbmcgdGhhdCB0aGUgc3BlY2lmaWNzIEknbSBhZnRlciBhcmUgbGlrZWx5IGluIHRoZSBnZW5lcmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzZWN0aW9uLCBhbmQgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlIEknbSBnb2luZyB0byBzdGFydCBhcm91bmQgbGluZSA0OTEgdG8gc2VlIGlmIHRoYXQgcmluZ3MgYSBiZWxsLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4g4oCTIHRoZSBLY29uZmlnIGZpbGVzIGFyZSBvZnRlbiBvcmdhbml6ZWQgbG9naWNhbGx5LCBhbmQgdGhhdCBwb3NpdGlvbiBmZWVscyBsaWtlIGEgZ29vZCBpbml0aWFsIGJldC4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gdHJhY2UgZGVwZW5kZW5jaWVzLCB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYywgYW5kIHF1aWNrbHkgaXNvbGF0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFuZCB0aGVpciBhc3NvY2lhdGVkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzAyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MjguNDU3NjE1OTY0WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODU6XFx0XFx0ICB3aXRoIHRoZSBoZWxwIG9mIEJQRiBwcm9ncmFtcy5cXG4gNDg2OlxcdFxcbiA0ODc6XFx0Y29uZmlnIE5FVF9ERVZMSU5LXFxuIDQ4ODpcXHRcXHRib29sXFxuIDQ4OTpcXHRcXHRkZWZhdWx0IG5cXG4gNDkwOlxcdFxcbiA0OTE6XFx0Y29uZmlnIFBBR0VfUE9PTFxcbiA0OTI6XFx0XFx0Ym9vbFxcbiA0OTM6XFx0XFxuIDQ5NDpcXHRjb25maWcgUEFHRV9QT09MX1NUQVRTXFxuIDQ5NTpcXHRcXHRkZWZhdWx0IG5cXG4gNDk2OlxcdFxcdGJvb2wgXFxcIlBhZ2UgcG9vbCBzdGF0c1xcXCJcXG4gNDk3OlxcdFxcdGRlcGVuZHMgb24gUEFHRV9QT09MXFxuIDQ5ODpcXHRcXHRoZWxwXFxuIDQ5OTpcXHRcXHQgIEVuYWJsZSBwYWdlIHBvb2wgc3RhdGlzdGljcyB0byB0cmFjayBwYWdlIGFsbG9jYXRpb24gYW5kIHJlY3ljbGluZ1xcbiA1MDA6XFx0XFx0ICBpbiBwYWdlIHBvb2xzLiBUaGlzIG9wdGlvbiBpbmN1cnMgYWRkaXRpb25hbCBDUFUgY29zdCBpbiBhbGxvY2F0aW9uXFxuIDUwMTpcXHRcXHQgIGFuZCByZWN5Y2xlIHBhdGhzIGFuZCBhZGRpdGlvbmFsIG1lbW9yeSBjb3N0IHRvIHN0b3JlIHRoZSBzdGF0aXN0aWNzLlxcbiA1MDI6XFx0XFx0ICBUaGVzZSBzdGF0aXN0aWNzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBpZlxcbiA1MDM6XFx0XFx0ICB0aGUgZHJpdmVyIHVzaW5nIHRoZSBwYWdlIHBvb2wgc3VwcG9ydHMgZXhwb3J0aW5nIHRoaXMgZGF0YS5cXG4gNTA0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToyOC40NTc4MDY0MzRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1MDg1MTIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBPcHRpbWl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIHRoaW5raW5nIGFib3V0IGhvdyB0byBvcHRpbWl6ZSBpdC4gRmlyc3QsIEkgc2VlIHRoYXQgYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuLiBNYWtlcyBzZW5zZSB0byBlbmFibGUgdGhhdDsgaXQgc2hvdWxkIGJlIGJlbmVmaWNpYWwuIFNvLCB0aGF0J3MgZGVmaW5pdGVseSBnb2luZyBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm93LCBJIHNob3VsZCBhZGQgYERNQV9TSEFSRURfQlVGRkVSYCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFzIHdlbGwuXG5cbkhvbGQgb24sIEkgc2VlIHRoYXQgYE5FVF9ERVZNRU1gIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgLiBUaGF0IG1lYW5zIGl0J3MgYXV0b21hdGljYWxseSBlbmFibGVkIGlmIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgcmlnaHQ/IEhtbSwgaXMgaXQgKnNhZmVyKiB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgIGFueXdheT8gTm8sIHRoYXQncyBwcm9iYWJseSBvdmVya2lsbCBhbmQgdW5uZWNlc3NhcnksIGFuZCBwb3RlbnRpYWxseSBjb25mdXNpbmcuIEV2ZW4gdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRlc2NyaWJlcyBgTkVUX0RFVk1FTWAgYXMgbm90IGJlaW5nIHVzZXIgc2VsZWN0YWJsZSAobm8gcHJvbXB0KSwgSSB0aGluayBpdCdzIG9rYXkgdG8gbGlzdCBpdC4gQWN0dWFsbHksIHdhaXQgYSBtaW51dGUsIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgIGFsc28gaGF2ZSBubyBwcm9tcHRzLlxuXG5UaGF0J3Mgb2RkLiBJZiB0aGV5J3JlIG5vdCB1c2VyLXNlbGVjdGFibGUsIGhvdyBjYW4gdGhleSBiZSBlbmFibGVkIHRocm91Z2ggdGhlIEtjb25maWcgc3lzdGVtPyBUaGV5IG11c3QgYmUgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIFNvLCBpdCdzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSB3aGF0IGNvbmZpZ3Mgc2VsZWN0IGBETUFfU0hBUkVEX0JVRkZFUmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxODgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OTozMy4yMDg2NjMwMTJaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4OTEzMTAzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdD02NT1BbnkgZXhwb3J0ZXJzIG9yIHVzZXJzIG9mIHRoZSBkbWEtYnVmIGJ1ZmZlciBzaGFyaW5nIGZyYW1ld29yayBtdXN0IGhhdmUgYVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdDo2Njonc2VsZWN0IERNQV9TSEFSRURfQlVGRkVSJyBpbiB0aGVpciByZXNwZWN0aXZlIEtjb25maWdzLlxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdC02Ny1cXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnPTY9Y29uZmlnIERSTV9BQ0NFTF9IQUJBTkFMQUJTXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZy0xMi1cXHRzZWxlY3QgSFdNT05cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZzoxMzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZy0xNC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTQ9Y29uZmlnIFNZTkNfRklMRVxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNi1cXHRkZWZhdWx0IG5cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo3OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9NTI9Y29uZmlnIERNQUJVRl9LVU5JVF9URVNUXFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy01NC1cXHRkZXBlbmRzIG9uIEtVTklUXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc6NTU6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNTYtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTYwPW1lbnVjb25maWcgRE1BQlVGX0hFQVBTXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjEtXFx0Ym9vbCBcXFwiRE1BLUJVRiBVc2VybGFuZCBNZW1vcnkgSGVhcHNcXFwiXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc6NjI6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9OD1tZW51Y29uZmlnIERSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTMtXFx0c2VsZWN0IEkyQ1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE0OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1LVxcdHNlbGVjdCBTWU5DX0ZJTEVcXG4tLVxcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnPTY9Y29uZmlnIFRFR1JBX0hPU1QxWFxcbi0tXFxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWc6OTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZy0xMC1cXHRzZWxlY3QgVEVHUkFfSE9TVDFYX0NPTlRFWFRfQlVTXFxuLS1cXG5kcml2ZXJzL2lpby9LY29uZmlnPTE1PWNvbmZpZyBJSU9fQlVGRkVSXFxuZHJpdmVycy9paW8vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJFbmFibGUgYnVmZmVyIHN1cHBvcnQgd2l0aGluIElJT1xcXCJcXG5kcml2ZXJzL2lpby9LY29uZmlnOjE3OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvaWlvL0tjb25maWctMTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9Mj1tZW51Y29uZmlnIElORklOSUJBTkRcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiAhQUxQSEFcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTktXFx0c2VsZWN0IElSUV9QT0xMXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00ND1jb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBNTVVcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0ODpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00OS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnPTM5PWNvbmZpZyBJT01NVUZEX1RFU1RcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQ0LVxcdGRlcGVuZHMgb24gSU9NTVVfUFRfQU1EVjE9eSB8fCBJT01NVUZEPUlPTU1VX1BUX0FNRFYxXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6NDU6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDYtXFx0c2VsZWN0IElPTU1VRkRfRFJJVkVSXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0zPWNvbmZpZyBWSURFT0JVRjJfQ09SRVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjQ6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc9MTM9Y29uZmlnIFZJREVPQlVGMl9ETUFfQ09OVElHXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0xNi1cXHRzZWxlY3QgVklERU9CVUYyX01FTU9QU1xcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjE3OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTE5PWNvbmZpZyBWSURFT0JVRjJfVk1BTExPQ1xcbi0tXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMjItXFx0c2VsZWN0IFZJREVPQlVGMl9NRU1PUFNcXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzoyMzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yNC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnPTE9Y29uZmlnIFZJREVPX1RFR1JBX1ZERVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWctNi1cXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnOjc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWctOC1cXHRzZWxlY3QgSU9NTVVfSU9WQVxcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWc9MzAxPWNvbmZpZyBRQ09NX0ZBU1RSUENcXG4tLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTMwNC1cXHRkZXBlbmRzIG9uIFJQTVNHXFxuZHJpdmVycy9taXNjL0tjb25maWc6MzA1OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTMwNi1cXHRzZWxlY3QgUUNPTV9TQ01cXG4tLVxcbmRyaXZlcnMvdGVlL0tjb25maWc9Mz1tZW51Y29uZmlnIFRFRVxcbi0tXFxuZHJpdmVycy90ZWUvS2NvbmZpZy02LVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcXG5kcml2ZXJzL3RlZS9LY29uZmlnOjc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy90ZWUvS2NvbmZpZy04LVxcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTkyPWNvbmZpZyBVU0JfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5MzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMveGVuL0tjb25maWc9MTQ1PWNvbmZpZyBYRU5fR05UREVWX0RNQUJVRlxcbi0tXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0xNDctXFx0ZGVwZW5kcyBvbiBYRU5fR05UREVWIFxcdTAwMjZcXHUwMDI2IFhFTl9HUkFOVF9ETUFfQUxMT0NcXG5kcml2ZXJzL3hlbi9LY29uZmlnOjE0ODpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0OS1cXHRoZWxwXFxuLS1cXG5zYW1wbGVzL0tjb25maWc9MjMwPWNvbmZpZyBTQU1QTEVfVkZJT19NREVWX01CT0NIU1xcbi0tXFxuc2FtcGxlcy9LY29uZmlnLTIzMy1cXHRzZWxlY3QgVkZJT19NREVWXFxuc2FtcGxlcy9LY29uZmlnOjIzNDpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5zYW1wbGVzL0tjb25maWctMjM1LVxcdGhlbHBcXG4tLVxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZz02PWNvbmZpZyBTTkRfU09DX0ZTTF9BU1JDXFxuLS1cXG5zb3VuZC9zb2MvZnNsL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5zb3VuZC9zb2MvZnNsL0tjb25maWc6OTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5zb3VuZC9zb2MvZnNsL0tjb25maWctMTAtXFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjM2LjA5OTk3Nzg1OVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMyNzE2NzA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERNQV9TSEFSRURfQlVGRkVSIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgRE1BX1NIQVJFRF9CVUZGRVJgLiBJIHNlZSBpdCdzIGRlZmluZWQgd2l0aCBgYm9vbGAgYW5kIGEgYGRlZmF1bHQgbmAuIEhtbSwgaW50ZXJlc3RpbmcuIEl0IGRvZXNuJ3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQsIHdoaWNoIG1lYW5zIHlvdSBjYW4ndCAqZXhwbGljaXRseSogZW5hYmxlIGl0IGZyb20gdGhlIHRvcCBsZXZlbCBpbiB0aGUgYC5jb25maWdgIGZpbGUuIEl0IG11c3QgYmUgc2VsZWN0ZWQgc29tZWhvdy4gTGV0IG1lIGNoZWNrLi4uIHdhaXQsIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgKmFsc28qIGRlZmluZXMgYGNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBpdCB0b28gaXMgYSBgYm9vbGAgd2l0aCBubyBwcm9tcHQuIFJpZ2h0LCBsZXQgbWUgZ28gYmFjayB0byBgZHJpdmVycy9iYXNlL0tjb25maWdgIGFuZCB0YWtlIGFub3RoZXIgbG9vazsgSSBtdXN0IGJlIG1pc3Npbmcgc29tZXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjQ3LjQyNzE1MDFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxNTpcXHRjb25maWcgRE1BX1NIQVJFRF9CVUZGRVJcXG4gMjE2OlxcdFxcdGJvb2xcXG4gMjE3OlxcdFxcdGRlZmF1bHQgblxcbiAyMTg6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuIDIxOTpcXHRcXHRoZWxwXFxuIDIyMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGZyYW1ld29yayBmb3IgYnVmZmVyLXNoYXJpbmcgYmV0d2VlblxcbiAyMjE6XFx0XFx0ICBtdWx0aXBsZSBkcml2ZXJzLiBBIGJ1ZmZlciBpcyBhc3NvY2lhdGVkIHdpdGggYSBmaWxlIHVzaW5nIGRyaXZlclxcbiAyMjI6XFx0XFx0ICBBUElzIGV4dGVuc2lvbjsgdGhlIGZpbGUncyBkZXNjcmlwdG9yIGNhbiB0aGVuIGJlIHBhc3NlZCBvbiB0byBvdGhlclxcbiAyMjM6XFx0XFx0ICBkcml2ZXIuXFxuIDIyNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6NDcuNDI3MzIxNDVaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMDA3NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBubyBwcm9tcHQsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgZW5hYmxlIGBETUFfU0hBUkVEX0JVRkZFUmAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBLYnVpbGQgd2lsbCBqdXN0IGlnbm9yZSBpdC4gV2FpdCwgZG9lcyBzeXprYWxsZXIgc29tZWhvdyBnZXQgYXJvdW5kIHRoaXM/IE5vLCBpdCBqdXN0IGFkZHMgYENPTkZJR19YWFg9eWAgYW5kIHJ1bnMgYG1ha2Ugb2xkZGVmY29uZmlnYC4gSWYgdGhlcmUncyBubyBwcm9tcHQgKmFuZCogaXQncyBub3Qgc2VsZWN0ZWQgYnkgYW55dGhpbmcgZWxzZSwgaXQgZ2V0cyBkcm9wcGVkLCBhcyBleHBlY3RlZC5cblxuQnV0LCBoYW5nIG9uLCBgTkVUX0RFVk1FTWAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgeWAsIHNvIGl0ICpzaG91bGQqIGJlIGVuYWJsZWQgYXV0b21hdGljYWxseSBpZiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIFJpZ2h0LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0byBlbmFibGUgdGhhdCBzZWxlY3RzICpib3RoKiBgRE1BX1NIQVJFRF9CVUZGRVJgICphbmQqIGBQQUdFX1BPT0xgLlxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gYFBBR0VfUE9PTGAgaXMgYWxzbyBhIGBib29sYCB3aXRob3V0IGEgcHJvbXB0LiBIbW0sIEkgbmVlZCB0byBjaGVjayB3aGF0IGFjdHVhbGx5IHNlbGVjdHMgYFBBR0VfUE9PTGAgdG8gc2VlIGhvdyBJIGNhbiBnZXQgaXQgcHVsbGVkIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg2NCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjUyLjIzNzQwMTc3NVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkxMjQ1NDk3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0Mzc6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTQ0PWNvbmZpZyBYRU5fTkVUREVWX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0OS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cXHRkZXBlbmRzIG9uIFBBR0VfU0laRV9MRVNTX1RIQU5fNjRLQlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTItXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnPTE4PWNvbmZpZyBORVRfQUlST0hBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnPTE4PWNvbmZpZyBBTElCQUJBX0VFQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gNjRCSVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTcyPWNvbmZpZyBCQ01HRU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzo4MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04Mi1cXHRzZWxlY3QgQlJPQURDT01fUEhZIGlmIEFSQ0hfQkNNMjgzNVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1OD1jb25maWcgQk5HRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI2OT1jb25maWcgQkNNQVNQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cXHRzZWxlY3QgTURJT19CQ01fVU5JTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZz02PWNvbmZpZyBFTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZz0xOT1jb25maWcgVFNORVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc6MjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjM9Y29uZmlnIEZFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXFx0c2VsZWN0IEZJWEVEX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjMyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMy1cXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE4PWNvbmZpZyBHVkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cXHRzZWxlY3QgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc9Nj1jb25maWcgSElOSUMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZzoxNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnPTQ9Y29uZmlnIExJQkVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkNvbW1vbiBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpXFxcIiBpZiBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjMtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NTpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjM1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM2LVxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUENTX01US19MWU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc6MTA6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cXHRzZWxlY3QgTUxYNF9DT1JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMS1cXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgRVRIRVJORVQgXFx1MDAyNlxcdTAwMjYgSU5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMzOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zNC1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTMzPWNvbmZpZyBNTFhTV19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE1MWFNXX0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM3LVxcdGRlZmF1bHQgbVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI3LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy04LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTEwLVxcdHNlbGVjdCBWQ0FQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzAtXFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMy1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yNS1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjctXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz0xMTA9Y29uZmlnIFJUQVNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTI5PWNvbmZpZyBSQVZCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXFx0c2VsZWN0IE1ESU9fQklUQkFOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM3LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnPTI1PWNvbmZpZyBTTklfTkVUU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTMwLVxcdHNlbGVjdCBNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc9MjY9Y29uZmlnIFRFSFVUSV9UTjQwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTUwPWNvbmZpZyBUSV9DUFNXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01Ny1cXHRzZWxlY3QgUkVHTUFQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTY1PWNvbmZpZyBUSV9DUFNXX1NXSVRDSERFVlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cXHRkZXBlbmRzIG9uIFRJX0NQVFMgfHwgIVRJX0NQVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTcxLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMy1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MjA0PWNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTAtXFx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9Mj1jb25maWcgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OTo1NS4xNDk4NjVaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk5MDg0NjYzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtcyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYFBBR0VfUE9PTGAgaXMgYWxtb3N0IGNlcnRhaW5seSBlbmFibGVkIGluIHN5emthbGxlciBjb25maWdzLiBJIG1lYW4sIGBCUEZfU1lTQ0FMTGAgdW5kZXIgYE5FVGAsIGBWRVRIYCwgYW5kIGBWSVJUSU9fTkVUYCBhbGwgc2VsZWN0IGl0LiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdGlvbi5cblxuTm93LCB3aGF0IGFib3V0IGBETUFfU0hBUkVEX0JVRkZFUmA/IExldCBtZSBzZWUuLi4gYFNZTkNfRklMRWAsIGBEUk1gLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBWSURFT0JVRjJfQ09SRWAsIGFuZCBgVVNCX0ZfRlNgIGFsbCBzZWxlY3QgaXQuIFNvLCB5ZWFoLCAqdmVyeSogbGlrZWx5IGVuYWJsZWQgdGhlcmUgdG9vLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc2FmZSB0aG91Z2gsIEkgd2FzIGNvbnNpZGVyaW5nIGFkZGluZyBgTkVUX0RFVk1FTWAgdG8gdGhlIEVuYWJsZUNvbmZpZ3MuIEJ1dCwgaGFuZyBvbi4uLnN5emthbGxlciBqdXN0IGFwcGVuZHMgYENPTkZJR19ORVRfREVWTUVNPXlgIGFuZCBzaW5jZSB0aGF0J3MgYGRlZl9ib29sIHlgLCBpdCB3aWxsIGJlIGVuYWJsZWQgb25seSBpZiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIElmIHRoZXkgYXJlbid0LCBpdCB3b24ndCBiZS5cblxuU28sIGluc3RlYWQgb2YgZXhwbGljaXRseSBlbmFibGluZyBpdCwgSSB3b25kZXIgaWYgSSBzaG91bGQgbGlzdCBzb21ldGhpbmcgbGlrZSBgRFJNYCBvciBgU1lOQ19GSUxFYCB0byBndWFyYW50ZWUgYERNQV9TSEFSRURfQlVGRkVSYCBpcyBlbmFibGVkPyBIbW0sIGBEUk1gIGlzIGEgd2hvbGUgbWFzc2l2ZSBzdWJzeXN0ZW0uLi4gSSdkIHJhdGhlciBhdm9pZCB0aGF0LiBgU1lOQ19GSUxFYCBpcyBtdWNoIHNtYWxsZXIgYW5kIG1vcmUgdGFyZ2V0ZWQuIFJpZ2h0LCBsZXQncyBnbyB3aXRoIGBTWU5DX0ZJTEVgLiBJJ2xsIGNoZWNrIHRoYXQgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTA6MTUuMDU4MzM4MzY3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDM0Mzk2NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTWU5DX0ZJTEVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kbWEtYnVmL0tjb25maWc9Mj1tZW51IFxcXCJETUFCVUYgb3B0aW9uc1xcXCJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy0zLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjQ6Y29uZmlnIFNZTkNfRklMRVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTUtXFx0Ym9vbCBcXFwiRXhwbGljaXQgU3luY2hyb25pemF0aW9uIEZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTA6MTguMDkyNzQxNTk0WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NDg0NDI3ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbiBmb3IgWmVyb2NvcHkgYW5kIFNLQiBGcmFnbWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgYFNZTkNfRklMRWAgY29uZmlnIGxvb2tzIGRpcmVjdGx5IHJlbGV2YW50IGJhc2VkIG9uIGl0cyBwcm9tcHQsIHNvIEknbGwgZGVmaW5pdGVseSBlbmFibGUgdGhhdCwgYWRkaW5nIGl0IHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gQWxzbywgc2luY2UgYFZFVEhgIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIsIGFuZCB0aGUgcGF0Y2ggbWVudGlvbnMgYE5FVF9ERVZNRU1gLCBJJ2xsIGluY2x1ZGUgYE5FVF9ERVZNRU1gIGFzIHdlbGwuIEZvciBub3csIEknbGwga2VlcCBpdCBzaW1wbGUgYW5kIGxpc3Qgb25seSBgTkVUX0RFVk1FTWAgYW5kIGBTWU5DX0ZJTEVgLlxuXG5UaGUgY29yZSBvZiB0aGUgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGNoYW5nZXMgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBhbiBgLUVGQVVMVGAgdG8gYC1FTVNHU0laRWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIHdoZW4gZGVhbGluZyB3aXRoIGludmFsaWQgZGF0YS4gRGVmaW5pdGVseSBgV29ydGhGdXp6aW5nOiB0cnVlYC5cblxuTm93IGZvciB0aGUgYEZvY3VzU3ltYm9sc2AuIEkgbmVlZCB0byBiZSBzdHJhdGVnaWMgaGVyZS4gSSB3YW50IHRvIHRhcmdldCB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGNoYW5nZWQgYnkgdGhlIHBhdGNoLCBzbyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgZnVuY3Rpb25zIGxpc3RlZCBhYm92ZTogIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBhbmQgYHNrYl96ZXJvY29weWAuIEFsc28sIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLCBzaW5jZSB0aGV5IGFyZSBjYWxsZWQgYnkgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiAgSSBjaGVja2VkIHdpdGggYSBxdWljayBgZ3JlcGAgZm9yIGBFWFBPUlRfU1lNQk9MLip6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBmb3VuZCBub3RoaW5nLiBIb3dldmVyLCBpdCdzIG5vdCBzdGF0aWMsIHNvIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEga2FsbHN5bXMuIFRoYXQncyBnb29kLiBTaW5jZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gICppcyogc3RhdGljLCBJIHNob3VsZCBhdm9pZCBpdC4gVGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uIGlzIGEgaG90IHBhdGgsIGFuZCB0aGF0IG1lYW5zIGl0J3MgbGlrZWx5IHRvIGJlIHJlYWNoZWQgcXVpY2tseS4gU28gSSBhbSBnb2luZyB0byBhdm9pZCBpdC5cblxuQWZ0ZXIgcmV2aWV3aW5nIHRoZSBwYXRjaCBhZ2FpbiwgSSBzZWUgaXQgbW9kaWZpZXMgaG93IGBza2JfZnJhZ3NfcmVhZGFibGVgIGlzIHVzZWQuICBTcGVjaWZpY2FsbHkgdGhlIGNoYW5nZSBpbnZvbHZlcyByZXR1cm5pbmcgYC1FTVNHU0laRWAgaW5zdGVhZCBvZiBgLUVGQVVMVGAuIFNvIEknbGwgYWRkIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0OlxuLSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgXG4tIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gXG4tIGBza2JfemVyb2NvcHlgXG5cblNvLCBteSBmaW5hbCBwbGFuIGlzOlxuXG5Db25maWdzOlxuLSBgTkVUX0RFVk1FTWBcbi0gYFNZTkNfRklMRWBcblxuRm9jdXNTeW1ib2xzOlxuLSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgXG4tIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gXG4tIGBza2JfemVyb2NvcHlgXG5cblRoZSBwYXRjaCBpcyBjaGFuZ2luZyBjcml0aWNhbCBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgZGVhbGluZyB3aXRoIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYHNrYmAgZGF0YSBhbmQgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiBmcmFnbWVudHMsIGFuZCBjaGFuZ2luZyBlcnJvciBjb2Rlcy4gVGhpcyBjbGVhcmx5IHdhcnJhbnRzIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjQ1LCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTA6MzMuNTc3MTczMjEyWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMDgwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJTWU5DX0ZJTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weVwiLFxuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJTWU5DX0ZJTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weVwiLFxuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 12:30:39 +0000 UTC FinishedAt: 2026-08-02 12:50:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "SYNC_FILE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "SYNC_FILE" ], "series_id": "fe69da0d-20d0-4862-8d7e-e225a73646a8" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "zerocopy_fill_skb_from_iter", "skb_zerocopy", "__zerocopy_sg_from_iter", "skb_zerocopy_iter_stream" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7U1lOQ19GSUxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weSYjMzQ7LAogICAgJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7LAogICAgJiMzNDtza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyAoemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyLCBza2JfemVyb2NvcHksIHRjcF9zZW5kbXNnX2xvY2tlZCkgdG8gaGFuZGxlIHVucmVhZGFibGUgc2tiIGZyYWdtZW50cyBhbmQgZml4IGVycm9yIGNvZGVzIGZvciBkZXZtZW0gYW5kIGl0ZXIgemVyb2NvcHkgcGF0aHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTI6NDc6MTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGF0YWdyYW0uYyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbmluZGV4IDE3M2I1ZDk3YmQ0MDkuLjZmOGZmZDYxYmNhYjQgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXG5AQCAtNjM4LDcgJiM0Mzs2MzgsNyBAQCBpbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbiBcbiBcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4tXHRcdHJldHVybiAtRUZBVUxUO1xuJiM0MztcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbiBcdHdoaWxlIChsZW5ndGggXHUwMDI2XHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XG4gXHRcdHN0cnVjdCBwYWdlICpoZWFkLCAqbGFzdF9oZWFkID0gTlVMTDtcbkBAIC03MTMsNyAmIzQzOzcxMyw3IEBAIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcbiBcdHN0cnVjdCBuZXRfaW92ICpuaW92O1xuIFxuIFx0aWYgKGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxuLVx0XHRyZXR1cm4gLUVGQVVMVDtcbiYjNDM7XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gXG4gXHQvKiBEZXZtZW0gZmlsbGluZyB3b3JrcyBieSB0YWtpbmcgYW4gSU9WRUMgZnJvbSB0aGUgdXNlciB3aGVyZSB0aGVcbiBcdCAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG9cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9za2J1ZmYuYyBiL25ldC9jb3JlL3NrYnVmZi5jXG5pbmRleCBiYTNkYmFjODBmYjQ5Li5hZWJlOGVhNzQ3NzZhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvc2tidWZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL3NrYnVmZi5jXG5AQCAtMzkyOCw2ICYjNDM7MzkyOCw5IEBAIHNrYl96ZXJvY29weShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgbGVuLCBpbnQgaGxlbilcbiBcdH1cbiBcdHNrYl9zaGluZm8odG8pLVx1MDAzZW5yX2ZyYWdzID0gajtcbiBcbiYjNDM7XHRpZiAoaSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgZnJvbS1cdTAwM2V1bnJlYWRhYmxlKVxuJiM0MztcdFx0dG8tXHUwMDNldW5yZWFkYWJsZSA9IDE7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMTg2YTM2YzY5ODc5OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTEyNzgsNiAmIzQzOzEyNzgsMTEgQEAgaW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG4gXHRcdGlmIChjb3B5IFx1MDAzZSBtc2dfZGF0YV9sZWZ0KG1zZykpXG4gXHRcdFx0Y29weSA9IG1zZ19kYXRhX2xlZnQobXNnKTtcbiBcbiYjNDM7XHRcdGlmICh6YyAhPSBNU0dfWkVST0NPUFkgXHUwMDI2XHUwMDI2IHVubGlrZWx5KCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkpIHtcbiYjNDM7XHRcdFx0dGNwX21hcmtfcHVzaCh0cCwgc2tiKTtcbiYjNDM7XHRcdFx0Z290byBuZXdfc2VnbWVudDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdGlmICh6YyA9PSAwKSB7XG4gXHRcdFx0Ym9vbCBtZXJnZSA9IHRydWU7XG4gXHRcdFx0aW50IGkgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7U1lOQ19GSUxFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weSYjMzQ7LAogICAgJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7LAogICAgJiMzNDtza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucyAoemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyLCBza2JfemVyb2NvcHksIHRjcF9zZW5kbXNnX2xvY2tlZCkgdG8gaGFuZGxlIHVucmVhZGFibGUgc2tiIGZyYWdtZW50cyBhbmQgZml4IGVycm9yIGNvZGVzIGZvciBkZXZtZW0gYW5kIGl0ZXIgemVyb2NvcHkgcGF0aHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMTI6NDc6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uYwppbmRleCAxNzNiNWQ5N2JkNDA5Li42ZjhmZmQ2MWJjYWI0IDEwMDY0NAotLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jb3JlL2RhdGFncmFtLmMKQEAgLTYzOCw3ICYjNDM7NjM4LDcgQEAgaW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWludCBmcmFnID0gc2tiX3NoaW5mbyhza2IpLSZndDtucl9mcmFnczsKIAogCWlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpCi0JCXJldHVybiAtRUZBVUxUOwomIzQzOwkJcmV0dXJuIC1FTVNHU0laRTsKIAogCXdoaWxlIChsZW5ndGggJmFtcDsmYW1wOyBpb3ZfaXRlcl9jb3VudChmcm9tKSkgewogCQlzdHJ1Y3QgcGFnZSAqaGVhZCwgKmxhc3RfaGVhZCA9IE5VTEw7CkBAIC03MTMsNyAmIzQzOzcxMyw3IEBAIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwKIAlzdHJ1Y3QgbmV0X2lvdiAqbmlvdjsKIAogCWlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpCi0JCXJldHVybiAtRUZBVUxUOwomIzQzOwkJcmV0dXJuIC1FTVNHU0laRTsKIAogCS8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZQogCSAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG8KZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmMKaW5kZXggYmEzZGJhYzgwZmI0OS4uYWViZThlYTc0Nzc2YSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2tidWZmLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvc2tidWZmLmMKQEAgLTM5MjgsNiAmIzQzOzM5MjgsOSBAQCBza2JfemVyb2NvcHkoc3RydWN0IHNrX2J1ZmYgKnRvLCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IGxlbiwgaW50IGhsZW4pCiAJfQogCXNrYl9zaGluZm8odG8pLSZndDtucl9mcmFncyA9IGo7CiAKJiM0MzsJaWYgKGkgJmd0OyAwICZhbXA7JmFtcDsgZnJvbS0mZ3Q7dW5yZWFkYWJsZSkKJiM0MzsJCXRvLSZndDt1bnJlYWRhYmxlID0gMTsKJiM0MzsKIAlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3AuYyBiL25ldC9pcHY0L3RjcC5jCmluZGV4IDQ1NTQ0MWYxYjY5NDkuLjE4NmEzNmM2OTg3OTggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcC5jCkBAIC0xMjc4LDYgJiM0MzsxMjc4LDExIEBAIGludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKQogCQlpZiAoY29weSAmZ3Q7IG1zZ19kYXRhX2xlZnQobXNnKSkKIAkJCWNvcHkgPSBtc2dfZGF0YV9sZWZ0KG1zZyk7CiAKJiM0MzsJCWlmICh6YyAhPSBNU0dfWkVST0NPUFkgJmFtcDsmYW1wOyB1bmxpa2VseSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKSB7CiYjNDM7CQkJdGNwX21hcmtfcHVzaCh0cCwgc2tiKTsKJiM0MzsJCQlnb3RvIG5ld19zZWdtZW50OwomIzQzOwkJfQomIzQzOwogCQlpZiAoemMgPT0gMCkgewogCQkJYm9vbCBtZXJnZSA9IHRydWU7CiAJCQlpbnQgaSA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7bnJfZnJhZ3M7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA0MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBQYXRjaCBmb3IgUm9idXN0bmVzcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBjb3JlIG5ldHdvcmtpbmcgY29kZTogYG5ldC9jb3JlL2RhdGFncmFtLmNgLCBgbmV0L2NvcmUvc2tidWZmLmNgLCBhbmQgYG5ldC9pcHY0L3RjcC5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBzdWJ0bGUsIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwsIGNoYW5nZXMgcmVsYXRlZCB0byB6ZXJvLWNvcHkgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgdW5yZWFkYWJsZSBza2IgZnJhZ21lbnRzIGluIGZ1bmN0aW9ucyBsaWtlIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIOKAkyByZXR1cm5pbmcgYC1FTVNHU0laRWAgaW5zdGVhZCBvZiBgLUVGQVVMVGAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLiBUaGVyZSYjMzk7cyBhbHNvIHNvbWUgbG9naWMgYWRkZWQgaW4gYHNrYl96ZXJvY29weWAgdG8gcHJvcGFnYXRlIHRoZSB1bnJlYWRhYmxlIGZsYWcsIGFuZCBhIG1vZGlmaWNhdGlvbiB0byBgdGNwX3NlbmRtc2dfbG9ja2VkYCB0aGF0IG1hcmtzIHB1c2ggYW5kIGp1bXBzIGlmIGAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGltcGFjdGluZyBUQ1AsIHNrYnVmZiBtYW5hZ2VtZW50LCBhbmQgZGF0YWdyYW0gaGFuZGxpbmcg4oCTIHNvLCBhcyBhbnkgZXhwZXJ0IGluIG5ldHdvcmtpbmcsIG15IGZpcnN0IHRob3VnaHQgaXMgZnV6emluZy4gV2UgbmVlZCB0byBzdWJqZWN0IHRoZXNlIGNoYW5nZXMgdG8gcmlnb3JvdXMgdGVzdGluZyB0byBmbHVzaCBvdXQgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIG9yIHJlZ3Jlc3Npb25zLgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHRhcmdldCB3aXRoIG15IGZ1enppbmcgZWZmb3J0cy4gRnJvbSB0aGUgcGF0Y2ggaXRzZWxmLCB0aGUgcHJpbWUgc3VzcGVjdHMgYXJlOgoKKiAgIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgCiogICBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gCiogICBgc2tiX3plcm9jb3B5YAoqICAgYHRjcF9zZW5kbXNnX2xvY2tlZGAKCkhtbSwgYHRjcF9zZW5kbXNnX2xvY2tlZGAgaXMgYSBob3QtcGF0aCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIHRyaWNreSBvbmU7IGZ1enppbmcgYSBob3QtcGF0aCBjb3VsZCBpbnRyb2R1Y2UgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIERvIEkgYXZvaWQgaXQgaW5pdGlhbGx5LCBvciBkbyBJIGZvY3VzIG9uIHRoYXQgY29kZSBmb3IgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eT8gYHNrYl96ZXJvY29weWAgaXMgYWxzbyBxdWl0ZSBjb21tb24sIHNvIHRoYXQgb25lIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vay4gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBzdGFydGluZyB3aXRoIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGFzIGdvb2QgaW5pdGlhbCBjYW5kaWRhdGVzLiBUaGV5JiMzOTtyZSBtb3JlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIGxvZ2ljIGNoYW5nZXMgaW4gdGhlIHBhdGNoIGFuZCBjYW4gc3RpbGwgYmUgZnV6emVkIHdpdGhvdXQgYmVpbmcgYXMgZGlzcnVwdGl2ZS4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBtYWtlIHN1cmUgdGhhdCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGlzIG5vdCBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGF0YWdyYW0uYz03MDY9c3RhdGljIGludFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDc6emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MDgtXHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc0OT1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjAtXHRlbHNlIGlmIChiaW5kaW5nKVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjE6XHRcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHNrYiwgZnJvbSwgbGVuZ3RoLCBiaW5kaW5nKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDAKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHplcm9jb3B5IFNLQiBGaWxsIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGlzIGEgKnN0YXRpYyogZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgc2NvcGUgYW5kIHBvdGVudGlhbCBjYWxsIHNpdGVzLiBHaXZlbiB0aGF0IGl0JiMzOTtzIHN0YXRpYywgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgYmVpbmcgKmRpcmVjdGx5KiBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIGN1cnJlbnQgY29kZWJhc2UgdG8gdHJ1bHkgdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgZGF0YSBmbG93LiBSaWdodCwgdGhlIGNvZGUgY29tbWVudCBzYXlzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4gTm93LCBJIHdhbnQgdG8gY29uZmlybSB0aGF0IHVuZGVyc3RhbmRpbmcuIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb24gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgZGlyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGF0IHRoYXQgbGV2ZWwgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYzPWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjctXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Njg6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY5LVx0XHRcdFx0c3RydWN0IGlvdl9pdGVyICpmcm9tLCBzaXplX3QgbGVuZ3RoKTtcbi0tXG5pb191cmluZy9uZXQuYz0xNDUwPXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyX2lvdmVjKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW9fdXJpbmcvbmV0LmMtMTQ1My1cdHNrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZChza2IpO1xuaW9fdXJpbmcvbmV0LmM6MTQ1NDpcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xuaW9fdXJpbmcvbmV0LmMtMTQ1NS19XG4tLVxuaW9fdXJpbmcvbmV0LmM9MTQ1Nz1zdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmlvX3VyaW5nL25ldC5jLTE0NjktXHRlbHNlIGlmICh1bmxpa2VseSghc2tiX3pjb3B5X21hbmFnZWQoc2tiKSkpXG5pb191cmluZy9uZXQuYzoxNDcwOlx0XHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcbmlvX3VyaW5nL25ldC5jLTE0NzEtXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz02MzM9RVhQT1JUX1NZTUJPTChza2JfY29weV9kYXRhZ3JhbV9mcm9tX2l0ZXJfZnVsbCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTYzNC1cbm5ldC9jb3JlL2RhdGFncmFtLmM6NjM1OmludCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjM2LVx0XHRcdFx0c3RydWN0IGlvdl9pdGVyICpmcm9tLCBzaXplX3QgbGVuZ3RoKVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmM9NzQ5PWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2Mi1cdGVsc2Vcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYzOlx0XHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03NjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OgoKKipQb3RlbnRpYWwgWmVyby1Db3B5IE9wdGltaXphdGlvbiBQb2ludHMgaW4gdGhlIEtlcm5lbCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlc2UgZnVuY3Rpb25zLiBJdCBhcHBlYXJzIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGlzIGV4cG9zZWQsIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGludGVuZGVkIGZvciBicm9hZGVyIHVzZSDigJMgaW50ZXJlc3RpbmcuIEFuZCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIG1pZ2h0IGFsc28gYmUgYSB2YWx1YWJsZSB0YXJnZXQgZm9yIG9wdGltaXphdGlvbjsgaXRzIG5hbWUgc3VnZ2VzdHMgaXQgZGVhbHMgd2l0aCBzY2F0dGVyLWdhdGhlciBsaXN0cywgd2hpY2ggYXJlIGtleSBpbiB6ZXJvLWNvcHkgc2NlbmFyaW9zLiBPZiBjb3Vyc2UsIHdlIGhhdmUgYHNrYl96ZXJvY29weWAgd2hpY2ggaXMgYW5vdGhlciB3ZWxsLWtub3duIHBsYXllciBpbiB0aGlzIGdhbWUgYW5kIGFsc28gZXhwb3NlZCBmb3Igd2lkZXIgdXNlLCBpdCBzaG91bGQgYmUgY29uc2lkZXJlZC4gQWxzbywgSSYjMzk7dmUgZ290IG15IGV5ZSBvbiBgdGNwX3NlbmRtc2dfbG9ja2VkYDsgaXQmIzM5O3MgYSB2aXRhbCBwYXJ0IG9mIHRoZSBUQ1Agc2VuZGluZyBwcm9jZXNzLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdXNpbmcgZGV2bWVtIG5lZWRzIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uIFRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHNldHRpbmdzIGFyZSBnb2luZyB0byBkaXJlY3RseSBpbXBhY3QgaG93IHdlbGwgdGhpcyB3b3Jrcy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBvdmVybG9vayBhbnkgcHJlLXJlcXVpc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGF0YWdyYW0uYz03MDY9c3RhdGljIGludFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDc6emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MDgtXHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc0OT1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjAtXHRlbHNlIGlmIChiaW5kaW5nKVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjE6XHRcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHNrYiwgZnJvbSwgbGVuZ3RoLCBiaW5kaW5nKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBEYXRhZ3JhbSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBhIHNwZWNpZmljIHBvaW50IGluIHRoZSBkYXRhZ3JhbSBoYW5kbGluZyBjb2RlLiBUaGUgYXJlYSBvZiBpbnRlcmVzdCBpcyBsaWtlbHkgd2l0aGluIHRoZSBgbmV0L2NvcmUvZGF0YWdyYW0uY2AgZmlsZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIHRoZSBmdW5jdGlvbiBjYWxsIEkmIzM5O20gbW9zdCBpbnRlcmVzdGVkIGluIHdpbGwgbGlrZWx5IGJlIGFyb3VuZCBsaW5lIDcwNy4gVGhhdCBzaG91bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGFuYWx5emUgdGhlIHNwZWNpZmljcyBhbmQgbmFycm93IGRvd24gdGhlIGFyZWEgSSYjMzk7bSB0cnlpbmcgdG8gbG9vayBhdC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY2xlYXIgaWRlYSBvZiB3aGF0IEkmIzM5O20gc2Vla2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9kYXRhZ3JhbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2OTA6XHRcdFx0XHRcdFx0cmVmcyYjNDM7JiM0Mzs7XG4gNjkxOlx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuIDY5MjpcdFx0XHRcdFx0fVxuIDY5MzpcdFx0XHRcdH1cbiA2OTQ6XHRcdFx0XHRpZiAocmVmcykge1xuIDY5NTpcdFx0XHRcdFx0cGFnZV9yZWZfc3ViKGxhc3RfaGVhZCwgcmVmcyk7XG4gNjk2Olx0XHRcdFx0XHRyZWZzID0gMDtcbiA2OTc6XHRcdFx0XHR9XG4gNjk4Olx0XHRcdFx0c2tiX2ZpbGxfcGFnZV9kZXNjX25vYWNjKHNrYiwgZnJhZyYjNDM7JiM0MzssIGhlYWQsIHN0YXJ0LCBzaXplKTtcbiA2OTk6XHRcdFx0fVxuIDcwMDpcdFx0XHRpZiAocmVmcylcbiA3MDE6XHRcdFx0XHRwYWdlX3JlZl9zdWIobGFzdF9oZWFkLCByZWZzKTtcbiA3MDI6XHRcdH1cbiA3MDM6XHRcdHJldHVybiAwO1xuIDcwNDpcdH1cbiA3MDU6XHRcbiA3MDY6XHRzdGF0aWMgaW50XG4gNzA3Olx0emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIDcwODpcdFx0XHRcdCAgICAgIGludCBsZW5ndGgsXG4gNzA5Olx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG4gNzEwOlx0e1xuIDcxMTpcdFx0aW50IGkgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4gNzEyOlx0XHRzaXplX3QgdmlydF9hZGRyLCBzaXplLCBvZmY7XG4gNzEzOlx0XHRzdHJ1Y3QgbmV0X2lvdiAqbmlvdjtcbiA3MTQ6XHRcbiA3MTU6XHRcdGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbiA3MTY6XHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiA3MTc6XHRcbiA3MTg6XHRcdC8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZVxuIDcxOTpcdFx0ICogaW92X2FkZHJzIGFyZSBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgaW4gYnl0ZXMgaW50byB0aGUgZG1hLWJ1ZiB0b1xuIDcyMDpcdFx0ICogc2VuZCBmcm9tLiBXZSBkbyBub3Qgc3VwcG9ydCBvdGhlciBpdGVyIHR5cGVzLlxuIDcyMTpcdFx0ICovXG4gNzIyOlx0XHRpZiAoaW92X2l0ZXJfdHlwZShmcm9tKSAhPSBJVEVSX0lPVkVDIFx1MDAyNlx1MDAyNlxuIDcyMzpcdFx0ICAgIGlvdl9pdGVyX3R5cGUoZnJvbSkgIT0gSVRFUl9VQlVGKVxuIDcyNDpcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiA3MjU6XHRcbiA3MjY6XHRcdHdoaWxlIChsZW5ndGggXHUwMDI2XHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XG4gNzI3Olx0XHRcdGlmIChpID09IE1BWF9TS0JfRlJBR1MpXG4gNzI4Olx0XHRcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiA3Mjk6XHRcbiA3MzA6XHRcdFx0dmlydF9hZGRyID0gKHNpemVfdClpdGVyX2lvdl9hZGRyKGZyb20pO1xuIDczMTpcdFx0XHRuaW92ID0gbmV0X2Rldm1lbV9nZXRfbmlvdl9hdChiaW5kaW5nLCB2aXJ0X2FkZHIsIFx1MDAyNm9mZiwgXHUwMDI2c2l6ZSk7XG4gNzMyOlx0XHRcdGlmICghbmlvdilcbiA3MzM6XHRcdFx0XHRyZXR1cm4gLUVGQVVMVDtcbiA3MzQ6XHRcbiA3MzU6XHRcdFx0c2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgbGVuZ3RoKTtcbiA3MzY6XHRcdFx0c2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgaXRlcl9pb3ZfbGVuKGZyb20pKTtcbiA3Mzc6XHRcbiA3Mzg6XHRcdFx0Z2V0X25ldG1lbShuZXRfaW92X3RvX25ldG1lbShuaW92KSk7XG4gNzM5Olx0XHRcdHNrYl9hZGRfcnhfZnJhZ19uZXRtZW0oc2tiLCBpLCBuZXRfaW92X3RvX25ldG1lbShuaW92KSwgb2ZmLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTcyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciBgZGV2bWVtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgaGFuZGxlZCBpbnRlcm5hbGx5LCBsaWtlIGEgc2V0dGluZyB0aGF0IGNvbnRyb2xzIG9yIHJlbGF0ZXMgdG8gaXQuIExldCYjMzk7cyBzZWUuLi4gYSBxdWljayBtZW50YWwgY2hlY2sgc3VnZ2VzdHMgdGhhdCBgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ2AgbWlnaHQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTtsbCBmb2N1cyBteSBpbnZlc3RpZ2F0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2tidWZmLmg9MTc1OT12b2lkIG1zZ196ZXJvY29weV9wdXRfYWJvcnQoc3RydWN0IHVidWZfaW5mbyAqdWFyZywgYm9vbCBoYXZlX3VyZWYpO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYwLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzYxOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYzPWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjUtXHRcdFx0ICAgIHNpemVfdCBsZW5ndGgsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjY6XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3Nzg9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzgwLVx0XHRcdCAgICAgc3RydWN0IHVidWZfaW5mbyAqdWFyZyxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc4MTpcdFx0XHQgICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc4Mi1cbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTcwNz16ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcwOC1cdFx0XHQgICAgICBpbnQgbGVuZ3RoLFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDk6XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcxMC17XG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUxLVx0XHRcdCAgICBzaXplX3QgbGVuZ3RoLFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NTI6XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NTMte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTI4LVxubmV0L2NvcmUvZGV2bWVtLmM6Mjk6c3RhdGljIERFRklORV9YQVJSQVlfRkxBR1MobmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ3MsIFhBX0ZMQUdTX0FMTE9DMSk7XG5uZXQvY29yZS9kZXZtZW0uYy0zMC1cbi0tXG5uZXQvY29yZS9kZXZtZW0uYz00Mz1zdGF0aWMgZG1hX2FkZHJfdCBuZXRfZGV2bWVtX2dldF9kbWFfYWRkcihjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy01MS1cbm5ldC9jb3JlL2Rldm1lbS5jOjUyOnN0YXRpYyB2b2lkIG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKVxubmV0L2NvcmUvZGV2bWVtLmMtNTMte1xubmV0L2NvcmUvZGV2bWVtLmM6NTQ6XHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9XG5uZXQvY29yZS9kZXZtZW0uYzo1NTpcdFx0Y29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcsIHJlZik7XG5uZXQvY29yZS9kZXZtZW0uYy01Ni1cbm5ldC9jb3JlL2Rldm1lbS5jOjU3Olx0SU5JVF9XT1JLKFx1MDAyNmJpbmRpbmctXHUwMDNldW5iaW5kX3csIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKTtcbm5ldC9jb3JlL2Rldm1lbS5jLTU4LVx0c2NoZWR1bGVfd29yayhcdTAwMjZiaW5kaW5nLVx1MDAzZXVuYmluZF93KTtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy02MC1cbm5ldC9jb3JlL2Rldm1lbS5jOjYxOnZvaWQgX19uZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2ZyZWUoc3RydWN0IHdvcmtfc3RydWN0ICp3cSlcbm5ldC9jb3JlL2Rldm1lbS5jLTYyLXtcbm5ldC9jb3JlL2Rldm1lbS5jOjYzOlx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBjb250YWluZXJfb2Yod3EsIHR5cGVvZigqYmluZGluZyksIHVuYmluZF93KTtcbm5ldC9jb3JlL2Rldm1lbS5jLTY0LVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTg3PXN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5jOjg4Om5ldF9kZXZtZW1fYWxsb2NfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxubmV0L2NvcmUvZGV2bWVtLmMtODkte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTExMj12b2lkIG5ldF9kZXZtZW1fZnJlZV9kbWFidWYoc3RydWN0IG5ldF9pb3YgKm5pb3YpXG5uZXQvY29yZS9kZXZtZW0uYy0xMTMte1xubmV0L2NvcmUvZGV2bWVtLmM6MTE0Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nKG5pb3YpO1xubmV0L2NvcmUvZGV2bWVtLmMtMTE1LVx0dW5zaWduZWQgbG9uZyBkbWFfYWRkciA9IG5ldF9kZXZtZW1fZ2V0X2RtYV9hZGRyKG5pb3YpO1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTEyMy1cbm5ldC9jb3JlL2Rldm1lbS5jOjEyNDp2b2lkIG5ldF9kZXZtZW1fdW5iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbm5ldC9jb3JlL2Rldm1lbS5jLTEyNS17XG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTI5LVxubmV0L2NvcmUvZGV2bWVtLmM6MTMwOlx0eGFfZXJhc2UoXHUwMDI2bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ3MsIGJpbmRpbmctXHUwMDNlaWQpO1xubmV0L2NvcmUvZGV2bWVtLmMtMTMxLVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTE1ND1pbnQgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcbm5ldC9jb3JlL2Rldm1lbS5jOjE1NTpcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyxcbm5ldC9jb3JlL2Rldm1lbS5jLTE1Ni1cdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTgyLVxubmV0L2NvcmUvZGV2bWVtLmM6MTgzOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcbm5ldC9jb3JlL2Rldm1lbS5jLTE4NC1uZXRfZGV2bWVtX2JpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnZkZXYsXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTg5LXtcbm5ldC9jb3JlL2Rldm1lbS5jOjE5MDpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xubmV0L2NvcmUvZGV2bWVtLmMtMTkxLVx0c3RhdGljIHUzMiBpZF9hbGxvY19uZXh0O1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTIxOC1cdGVyciA9IHBlcmNwdV9yZWZfaW5pdChcdTAwMjZiaW5kaW5nLVx1MDAzZXJlZixcbm5ldC9jb3JlL2Rldm1lbS5jOjIxOTpcdFx0XHQgICAgICBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3JlbGVhc2UsXG5uZXQvY29yZS9kZXZtZW0uYy0yMjAtXHRcdFx0ICAgICAgMCwgR0ZQX0tFUk5FTCk7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMzIxLVxubmV0L2NvcmUvZGV2bWVtLmM6MzIyOlx0ZXJyID0geGFfYWxsb2NfY3ljbGljKFx1MDAyNm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBcdTAwMjZiaW5kaW5nLVx1MDAzZWlkLFxubmV0L2NvcmUvZGV2bWVtLmMtMzIzLVx0XHRcdCAgICAgIGJpbmRpbmcsIHhhX2xpbWl0XzMyYiwgXHUwMDI2aWRfYWxsb2NfbmV4dCxcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy0zNTEtXG5uZXQvY29yZS9kZXZtZW0uYzozNTI6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKm5ldF9kZXZtZW1fbG9va3VwX2RtYWJ1Zih1MzIgaWQpXG5uZXQvY29yZS9kZXZtZW0uYy0zNTMte1xubmV0L2NvcmUvZGV2bWVtLmM6MzU0Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XG5uZXQvY29yZS9kZXZtZW0uYy0zNTUtXG5uZXQvY29yZS9kZXZtZW0uYy0zNTYtXHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvY29yZS9kZXZtZW0uYzozNTc6XHRiaW5kaW5nID0geGFfbG9hZChcdTAwMjZuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5ncywgaWQpO1xubmV0L2NvcmUvZGV2bWVtLmMtMzU4LVx0aWYgKGJpbmRpbmcpIHtcbm5ldC9jb3JlL2Rldm1lbS5jOjM1OTpcdFx0aWYgKCFuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2dldChiaW5kaW5nKSlcbm5ldC9jb3JlL2Rldm1lbS5jLTM2MC1cdFx0XHRiaW5kaW5nID0gTlVMTDtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYz0zNjc9dm9pZCBuZXRfZGV2bWVtX2dldF9uZXRfaW92KHN0cnVjdCBuZXRfaW92ICpuaW92KVxubmV0L2NvcmUvZGV2bWVtLmMtMzY4LXtcbm5ldC9jb3JlL2Rldm1lbS5jOjM2OTpcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfZ2V0KG5ldF9kZXZtZW1faW92X2JpbmRpbmcobmlvdikpO1xubmV0L2NvcmUvZGV2bWVtLmMtMzcwLX1cbi0tXG5uZXQvY29yZS9kZXZtZW0uYz0zNzI9dm9pZCBuZXRfZGV2bWVtX3B1dF9uZXRfaW92KHN0cnVjdCBuZXRfaW92ICpuaW92KVxubmV0L2NvcmUvZGV2bWVtLmMtMzczLXtcbm5ldC9jb3JlL2Rldm1lbS5jOjM3NDpcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KG5ldF9kZXZtZW1faW92X2JpbmRpbmcobmlvdikpO1xubmV0L2NvcmUvZGV2bWVtLmMtMzc1LX1cbm5ldC9jb3JlL2Rldm1lbS5jLTM3Ni1cbm5ldC9jb3JlL2Rldm1lbS5jOjM3NzpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kZXZtZW0uYy0zNzgtXHRcdFx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZClcbm5ldC9jb3JlL2Rldm1lbS5jLTM3OS17XG5uZXQvY29yZS9kZXZtZW0uYzozODA6XHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcbm5ldC9jb3JlL2Rldm1lbS5jLTM4MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkc3RfZGV2O1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTQyMy1cdGlmIChiaW5kaW5nKVxubmV0L2NvcmUvZGV2bWVtLmM6NDI0Olx0XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9jb3JlL2Rldm1lbS5jLTQyNS1cbi0tXG5uZXQvY29yZS9kZXZtZW0uYz00Mjk9c3RydWN0IG5ldF9pb3YgKlxubmV0L2NvcmUvZGV2bWVtLmM6NDMwOm5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXG5uZXQvY29yZS9kZXZtZW0uYy00MzEtXHRcdCAgICAgICBzaXplX3QgdmlydF9hZGRyLCBzaXplX3QgKm9mZiwgc2l6ZV90ICpzaXplKVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jPTQ0ND1pbnQgbXBfZG1hYnVmX2Rldm1lbV9pbml0KHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wpXG5uZXQvY29yZS9kZXZtZW0uYy00NDUte1xubmV0L2NvcmUvZGV2bWVtLmM6NDQ2Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBwb29sLVx1MDAzZW1wX3ByaXY7XG5uZXQvY29yZS9kZXZtZW0uYy00NDctXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtNDU5LVxubmV0L2NvcmUvZGV2bWVtLmM6NDYwOlx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19nZXQoYmluZGluZyk7XG5uZXQvY29yZS9kZXZtZW0uYy00NjEtXHRyZXR1cm4gMDtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYz00NjQ9bmV0bWVtX3JlZiBtcF9kbWFidWZfZGV2bWVtX2FsbG9jX25ldG1lbXMoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxubmV0L2NvcmUvZGV2bWVtLmMtNDY1LXtcbm5ldC9jb3JlL2Rldm1lbS5jOjQ2NjpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gcG9vbC1cdTAwM2VtcF9wcml2O1xubmV0L2NvcmUvZGV2bWVtLmMtNDY3LVx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmM9NDgzPXZvaWQgbXBfZG1hYnVmX2Rldm1lbV9kZXN0cm95KHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wpXG5uZXQvY29yZS9kZXZtZW0uYy00ODQte1xubmV0L2NvcmUvZGV2bWVtLmM6NDg1Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBwb29sLVx1MDAzZW1wX3ByaXY7XG5uZXQvY29yZS9kZXZtZW0uYy00ODYtXG5uZXQvY29yZS9kZXZtZW0uYzo0ODc6XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9jb3JlL2Rldm1lbS5jLTQ4OC19XG4tLVxubmV0L2NvcmUvZGV2bWVtLmM9NTA4PXN0YXRpYyBpbnQgbXBfZG1hYnVmX2Rldm1lbV9ubF9maWxsKHZvaWQgKm1wX3ByaXYsIHN0cnVjdCBza19idWZmICpyc3AsXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtNTEwLXtcbm5ldC9jb3JlL2Rldm1lbS5jOjUxMTpcdGNvbnN0IHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gbXBfcHJpdjtcbm5ldC9jb3JlL2Rldm1lbS5jLTUxMi1cdGludCB0eXBlID0gcnhxID8gTkVUREVWX0FfUVVFVUVfRE1BQlVGIDogTkVUREVWX0FfUEFHRV9QT09MX0RNQUJVRjtcbi0tXG5uZXQvY29yZS9kZXZtZW0uYz01MTc9c3RhdGljIHZvaWQgbXBfZG1hYnVmX2Rldm1lbV91bmluc3RhbGwodm9pZCAqbXBfcHJpdixcbi0tXG5uZXQvY29yZS9kZXZtZW0uYy01MTkte1xubmV0L2NvcmUvZGV2bWVtLmM6NTIwOlx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBtcF9wcml2O1xubmV0L2NvcmUvZGV2bWVtLmMtNTIxLVx0c3RydWN0IG5ldGRldl9yeF9xdWV1ZSAqYm91bmRfcnhxO1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTE2PXN0cnVjdCBuZXRsaW5rX2V4dF9hY2s7XG5uZXQvY29yZS9kZXZtZW0uaC0xNy1cbm5ldC9jb3JlL2Rldm1lbS5oOjE4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nIHtcbm5ldC9jb3JlL2Rldm1lbS5oLTE5LVx0c3RydWN0IGRtYV9idWYgKmRtYWJ1Zjtcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD04Mz1zdHJ1Y3QgZG1hYnVmX2dlbnBvb2xfY2h1bmtfb3duZXIge1xubmV0L2NvcmUvZGV2bWVtLmgtODQtXHRzdHJ1Y3QgbmV0X2lvdl9hcmVhIGFyZWE7XG5uZXQvY29yZS9kZXZtZW0uaDo4NTpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xubmV0L2NvcmUvZGV2bWVtLmgtODYtXG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtOTAtXG5uZXQvY29yZS9kZXZtZW0uaDo5MTp2b2lkIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3EpO1xubmV0L2NvcmUvZGV2bWVtLmg6OTI6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmgtOTMtbmV0X2Rldm1lbV9iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp2ZGV2LFxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oLTk3LVx0XHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbm5ldC9jb3JlL2Rldm1lbS5oOjk4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpuZXRfZGV2bWVtX2xvb2t1cF9kbWFidWYodTMyIGlkKTtcbm5ldC9jb3JlL2Rldm1lbS5oOjk5OnZvaWQgbmV0X2Rldm1lbV91bmJpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKTtcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMC1pbnQgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcbm5ldC9jb3JlL2Rldm1lbS5oOjEwMTpcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyxcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMi1cdFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTEwNT1uZXRfZGV2bWVtX2lvdl90b19jaHVua19vd25lcihjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uaC0xMTEtXG5uZXQvY29yZS9kZXZtZW0uaDoxMTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXG5uZXQvY29yZS9kZXZtZW0uaC0xMTMtbmV0X2Rldm1lbV9pb3ZfYmluZGluZyhjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xMzE9c3RhdGljIGlubGluZSBib29sXG5uZXQvY29yZS9kZXZtZW0uaDoxMzI6bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19nZXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9kZXZtZW0uaC0xMzMte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTEzNz1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9jb3JlL2Rldm1lbS5oOjEzODpuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbm5ldC9jb3JlL2Rldm1lbS5oLTEzOS17XG4tLVxubmV0L2NvcmUvZGV2bWVtLmg9MTQ2PXN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5oOjE0NzpuZXRfZGV2bWVtX2FsbG9jX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XG5uZXQvY29yZS9kZXZtZW0uaC0xNDgtdm9pZCBuZXRfZGV2bWVtX2ZyZWVfZG1hYnVmKHN0cnVjdCBuZXRfaW92ICpwcGlvdik7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMTUwLVxubmV0L2NvcmUvZGV2bWVtLmg6MTUxOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcbm5ldC9jb3JlL2Rldm1lbS5oLTE1Mi1uZXRfZGV2bWVtX2dldF9iaW5kaW5nKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZCk7XG5uZXQvY29yZS9kZXZtZW0uaD0xNTM9c3RydWN0IG5ldF9pb3YgKlxubmV0L2NvcmUvZGV2bWVtLmg6MTU0Om5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsIHNpemVfdCBhZGRyLFxubmV0L2NvcmUvZGV2bWVtLmgtMTU1LVx0XHQgICAgICAgc2l6ZV90ICpvZmYsIHNpemVfdCAqc2l6ZSk7XG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMTU3LSNlbHNlXG5uZXQvY29yZS9kZXZtZW0uaDoxNTg6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XG5uZXQvY29yZS9kZXZtZW0uaC0xNTktXG5uZXQvY29yZS9kZXZtZW0uaD0xNjA9c3RhdGljIGlubGluZSB2b2lkXG5uZXQvY29yZS9kZXZtZW0uaDoxNjE6bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9kZXZtZW0uaC0xNjIte1xuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTE2OT1zdGF0aWMgaW5saW5lIHZvaWQgbmV0X2Rldm1lbV9wdXRfbmV0X2lvdihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcbi0tXG5uZXQvY29yZS9kZXZtZW0uaC0xNzItXG5uZXQvY29yZS9kZXZtZW0uaDoxNzM6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXG5uZXQvY29yZS9kZXZtZW0uaC0xNzQtbmV0X2Rldm1lbV9iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp2ZGV2LFxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oLTE4My1cbm5ldC9jb3JlL2Rldm1lbS5oOjE4NDpzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpuZXRfZGV2bWVtX2xvb2t1cF9kbWFidWYodTMyIGlkKVxubmV0L2NvcmUvZGV2bWVtLmgtMTg1LXtcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xODk9c3RhdGljIGlubGluZSB2b2lkXG5uZXQvY29yZS9kZXZtZW0uaDoxOTA6bmV0X2Rldm1lbV91bmJpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxubmV0L2NvcmUvZGV2bWVtLmgtMTkxLXtcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xOTU9bmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcbm5ldC9jb3JlL2Rldm1lbS5oOjE5NjpcdFx0XHRcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLFxubmV0L2NvcmUvZGV2bWVtLmgtMTk3LVx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTIwMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5oOjIwNDpuZXRfZGV2bWVtX2FsbG9jX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbm5ldC9jb3JlL2Rldm1lbS5oLTIwNS17XG4tLVxubmV0L2NvcmUvZGV2bWVtLmg9MjE4PXN0YXRpYyBpbmxpbmUgdTMyIG5ldF9kZXZtZW1faW92X2JpbmRpbmdfaWQoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMjIyLVxubmV0L2NvcmUvZGV2bWVtLmg6MjIzOnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmgtMjI0LW5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5oPTIyOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpcbm5ldC9jb3JlL2Rldm1lbS5oOjIzMDpuZXRfZGV2bWVtX2dldF9uaW92X2F0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLCBzaXplX3QgYWRkcixcbm5ldC9jb3JlL2Rldm1lbS5oLTIzMS1cdFx0ICAgICAgIHNpemVfdCAqb2ZmLCBzaXplX3QgKnNpemUpXG4tLVxubmV0L2NvcmUvZGV2bWVtLmgtMjM1LVxubmV0L2NvcmUvZGV2bWVtLmg6MjM2OnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmgtMjM3LW5ldF9kZXZtZW1faW92X2JpbmRpbmcoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXG4tLVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYz0xMDEzPWludCBuZXRkZXZfbmxfYmluZF9yeF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTQte1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMDE1Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTYtXHR1MzIgaWZpbmRleCwgZG1hYnVmX2ZkLCByeHFfaWR4O1xuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTE1NT1pbnQgbmV0ZGV2X25sX2JpbmRfdHhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMTU2LXtcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTE1NzpcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYy0xMTU4LVx0c3RydWN0IG5ldF9kZXZpY2UgKmJpbmRfZGV2O1xuLS1cbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTQyNT12b2lkIG5ldGRldl9ubF9zb2NrX3ByaXZfZGVzdHJveShzdHJ1Y3QgbmV0ZGV2X25sX3NvY2sgKnByaXYpXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTE0MjYte1xubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxNDI3Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jOjE0Mjg6XHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqdGVtcDtcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTQyOS1cdG5ldGRldmljZV90cmFja2VyIGRldl90cmFja2VyO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTI9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTkxNC1cdFx0XHQgICAgIHN0cnVjdCB1YnVmX2luZm8gKnVhcmcsXG5uZXQvY29yZS9za2J1ZmYuYzoxOTE1Olx0XHRcdCAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXG5uZXQvY29yZS9za2J1ZmYuYy0xOTE2LXtcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwLmMtMTExNy17XG5uZXQvaXB2NC90Y3AuYzoxMTE4Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBOVUxMO1xubmV0L2lwdjQvdGNwLmMtMTExOS1cdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTE0MjUtXHRpZiAoYmluZGluZylcbm5ldC9pcHY0L3RjcC5jOjE0MjY6XHRcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xubmV0L2lwdjQvdGNwLmMtMTQyNy1cdHJldHVybiBjb3BpZWQgJiM0MzsgY29waWVkX3N5bjtcbi0tXG5uZXQvaXB2NC90Y3AuYy0xNDQ0LVx0aWYgKGJpbmRpbmcpXG5uZXQvaXB2NC90Y3AuYzoxNDQ1Olx0XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9pcHY0L3RjcC5jLTE0NDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTYxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgZXhwZXJ0aXNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgYGRldm1lbWAgQ29ubmVjdGlvbioqCgpBbHJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBkZXZtZW1gIGlzIHRpZWQgaW50byBzb21ldGhpbmcgc3BlY2lmaWMgd2l0aGluIHRoZSBuZXR3b3JrIGRldmljZSBtZW1vcnkgc3BhY2Ug4oCTIEkmIzM5O2Qgd2FnZXIgaXQmIzM5O3MgcmVsYXRlZCB0byBhIGBDT05GSUdfTkVUX0RFVk1FTWAgb3B0aW9uIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZsYWcuIEkgbmVlZCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSB0aGUgYG5ldC9jb3JlYCBkaXJlY3RvcnkuIEkmIzM5O2xsIGZvY3VzIG9uIGBkZXZtZW0uY2AsIGJlY2F1c2UgdGhhdCBmaWxlIG5hbWUgaXMgYSBzdHJvbmcgaW5kaWNhdG9yLCBhbmQgSSYjMzk7bGwgc2VlIHdoYXQgSSBjYW4gZmluZCBpbiBLY29uZmlnIG9yIE1ha2VmaWxlIGZpbGVzIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBtYXkgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldm1lbVxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9NDg9b2JqLSQoQ09ORklHX05FVF9URVNUKSAmIzQzOz0gbmV0X3Rlc3Qub1xubmV0L2NvcmUvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9ERVZNRU0pICYjNDM7PSBkZXZtZW0ub1xubmV0L2NvcmUvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX0RFQlVHX05FVCkgJiM0Mzs9IGxvY2tfZGVidWcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjQ5NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBUQ1AgVHJhbnNtaXNzaW9uKioKCkFscmlnaHQsIHRoZSBwdXp6bGUgcGllY2VzIGFyZSBzdGFydGluZyB0byBmaXQuIEl0IGxvb2tzIGxpa2UgdGhlIHN5c3RlbSByZXF1aXJlcyBgQ09ORklHX05FVF9ERVZNRU1gIHRvIGJlIGVuYWJsZWQsIHdoaWNoIGlzbiYjMzk7dCBhIHN1cnByaXNlIGdpdmVuIHRoZSBsaWtlbHkgbmVlZCBmb3IgZGlyZWN0IGFjY2VzcyB0byBkZXZpY2UgbWVtb3J5IGZvciBuZXR3b3JrIG9wZXJhdGlvbnMsIHByb2JhYmx5IGluIHNvbWUgbG93LWxldmVsIG5ldHdvcmsgZHJpdmVyLiBOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZmlndXJhdGlvbiBjb21lcyBpbnRvIHBsYXkuIE15IGltbWVkaWF0ZSBodW5jaCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgVENQIHRyYW5zbWlzc2lvbiBwYXRoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2lwdjQvdGNwLmNgLiBUaGF0IGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvcmUgbG9naWMgZm9yIHNlbmRpbmcgZGF0YSwgYW5kIGl0JiMzOTtzIGEgcHJpbWUgc3VzcGVjdCBmb3IgZW5jb3VudGVyaW5nIGRlcGVuZGVuY2llcyBvbiBtZW1vcnkgbWFwcGluZyBvciBkaXJlY3QgZGV2aWNlIG1lbW9yeSBhY2Nlc3MsIGVzcGVjaWFsbHkgaW4gc2NlbmFyaW9zIGludm9sdmluZyBoYXJkd2FyZSBvZmZsb2FkIG9yIHNwZWNpZmljIG5ldHdvcmtpbmcgaGFyZHdhcmUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgd2l0aGluIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGFuZCBzZWUgaG93IGBDT05GSUdfTkVUX0RFVk1FTWAgaXMgdXNlZC4gTXkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbmZpZyBvcHRpb24gaW1wYWN0cyBkYXRhIG1vdmVtZW50IGFuZCBtZW1vcnkgbWFuYWdlbWVudCBkdXJpbmcgdGhlIFRDUCBzZW5kIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9zZW5kbXNnX2xvY2tlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvc25tcC5yc3Q9MTM9dW5zaWduZWRfbG9uZyAgTElOVVhfTUlCX0RFTEFZRURBQ0tMT0NLRUQgICAgICAgICAgICB3cml0ZV9tb3N0bHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX2RlbGFja190aW1lcl9oYW5kbGVyLHRjcF9kZWxhY2tfdGltZXJcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9zbm1wLnJzdDoxNDp1bnNpZ25lZF9sb25nICBMSU5VWF9NSUJfVENQQVVUT0NPUktJTkcgICAgICAgICAgICAgIHdyaXRlX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfcHVzaCx0Y3Bfc2VuZG1zZ19sb2NrZWRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9zbm1wLnJzdC0xNS11bnNpZ25lZF9sb25nICBMSU5VWF9NSUJfVENQRlJPTVpFUk9XSU5ET1dBRFYgICAgICAgIHdyaXRlX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3Bfc2VsZWN0X3dpbmRvdyx0Y3BfdHJhbnNtaXQtc2tiXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYz0zMjM9c3RhdGljIGludCBzaXdfdGNwX3NlbmRwYWdlcyhzdHJ1Y3Qgc29ja2V0ICpzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2UsIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYy0zNDYtXHRcdGxvY2tfc29jayhzayk7XG5kcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3L3Npd19xcF90eC5jOjM0NzpcdFx0cnYgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFx1MDAyNm1zZywgYnl0ZXMpO1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYy0zNDgtXHRcdHJlbGVhc2Vfc29jayhzayk7XG4tLVxuaW5jbHVkZS9uZXQvdGNwLmg9MzY3PWludCB0Y3Bfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpO1xuaW5jbHVkZS9uZXQvdGNwLmg6MzY4OmludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTM2OS1pbnQgdGNwX3NlbmRtc2dfZmFzdG9wZW4oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCAqY29waWVkLFxuLS1cbmluY2x1ZGUvdHJhY2UvZXZlbnRzL3RjcC5oPTI4OT1UUkFDRV9FVkVOVCh0Y3BfcmV0cmFuc21pdF9zeW5hY2ssXG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmgtMzM0LVxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmg6MzM1OlRSQUNFX0VWRU5UKHRjcF9zZW5kbXNnX2xvY2tlZCxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL3RjcC5oLTMzNi1cdFRQX1BST1RPKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnLFxuLS1cbmtlcm5lbC9icGYvYnRmLmM9NjY1Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9yYXdfdHBfbnVsbF9hcmdzIHJhd190cF9udWxsX2FyZ3NbXSA9IHtcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jLTY3MzYtXHR7IFwmIzM0O3RjcF9zZW5kX3Jlc2V0XCYjMzQ7LCAweDExIH0sXG5rZXJuZWwvYnBmL2J0Zi5jOjY3Mzc6XHR7IFwmIzM0O3RjcF9zZW5kbXNnX2xvY2tlZFwmIzM0OywgMHgxMDAgfSxcbmtlcm5lbC9icGYvYnRmLmMtNjczOC1cdC8qIHRlZ3JhX2FwYl9kbWEgKi9cbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTA2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA4NS1cdC5yZWFkX3NrYlx0ICAgPSB0Y3BfcmVhZF9za2IsXG5uZXQvaXB2NC9hZl9pbmV0LmM6MTA4NjpcdC5zZW5kbXNnX2xvY2tlZCAgICA9IHRjcF9zZW5kbXNnX2xvY2tlZCxcbm5ldC9pcHY0L2FmX2luZXQuYy0xMDg3LVx0LnBlZWtfbGVuXHQgICA9IHRjcF9wZWVrX2xlbixcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE0PUVYUE9SVF9TWU1CT0xfR1BMKHRjcF9yYXRlX2NoZWNrX2FwcF9saW1pdGVkKTtcbm5ldC9pcHY0L3RjcC5jLTExMTUtXG5uZXQvaXB2NC90Y3AuYzoxMTE2OmludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwLmMtMTExNy17XG4tLVxubmV0L2lwdjQvdGNwLmMtMTI0MC1cbm5ldC9pcHY0L3RjcC5jOjEyNDE6XHRcdHRyYWNlX3RjcF9zZW5kbXNnX2xvY2tlZChzaywgbXNnLCBza2IsIHNpemVfZ29hbCk7XG5uZXQvaXB2NC90Y3AuYy0xMjQyLVxuLS1cbm5ldC9pcHY0L3RjcC5jLTE0NDgtfVxubmV0L2lwdjQvdGNwLmM6MTQ0OTpFWFBPUlRfU1lNQk9MX0dQTCh0Y3Bfc2VuZG1zZ19sb2NrZWQpO1xubmV0L2lwdjQvdGNwLmMtMTQ1MC1cbm5ldC9pcHY0L3RjcC5jPTE0NTE9aW50IHRjcF9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcbi0tXG5uZXQvaXB2NC90Y3AuYy0xNDU1LVx0bG9ja19zb2NrKHNrKTtcbm5ldC9pcHY0L3RjcC5jOjE0NTY6XHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIG1zZywgc2l6ZSk7XG5uZXQvaXB2NC90Y3AuYy0xNDU3LVx0cmVsZWFzZV9zb2NrKHNrKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9OTE9c3RhdGljIGludCB0Y3BfYnBmX3B1c2goc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBhcHBseV9ieXRlcyxcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTIyLVx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNm1zZ2hkci5tc2dfaXRlciwgSVRFUl9TT1VSQ0UsIFx1MDAyNmJ2ZWMsIDEsIHNpemUpO1xubmV0L2lwdjQvdGNwX2JwZi5jOjEyMzpcdFx0cmV0ID0gdGNwX3NlbmRtc2dfbG9ja2VkKHNrLCBcdTAwMjZtc2doZHIsIHNpemUpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTEyNC1cdFx0aWYgKHJldCBcdTAwM2M9IDApXG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYz02NjA9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9zdHJlYW1fb3BzID0ge1xuLS1cbm5ldC9pcHY2L2FmX2luZXQ2LmMtNjgxLVx0LnNwbGljZV9lb2ZcdCAgID0gaW5ldF9zcGxpY2VfZW9mLFxubmV0L2lwdjYvYWZfaW5ldDYuYzo2ODI6XHQuc2VuZG1zZ19sb2NrZWQgICAgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQsXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY4My1cdC5zcGxpY2VfcmVhZFx0ICAgPSB0Y3Bfc3BsaWNlX3JlYWQsXG4tLVxubmV0L3Rscy90bHNfbWFpbi5jPTE2OD1pbnQgdGxzX3B1c2hfc2coc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC90bHMvdGxzX21haW4uYy0xOTQtXG5uZXQvdGxzL3Rsc19tYWluLmM6MTk1Olx0XHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFx1MDAyNm1zZywgc2l6ZSk7XG5uZXQvdGxzL3Rsc19tYWluLmMtMTk2LVxuLS1cbm5ldC94ZnJtL2VzcGludGNwLmM9MjA2PXN0YXRpYyBpbnQgZXNwaW50Y3Bfc2VuZHNrbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYy0yMjUtXHRcdGlvdl9pdGVyX2J2ZWMoXHUwMDI2bXNnaGRyLm1zZ19pdGVyLCBJVEVSX1NPVVJDRSwgXHUwMDI2YnZlYywgMSwgc2ctXHUwMDNlbGVuZ3RoKTtcbm5ldC94ZnJtL2VzcGludGNwLmM6MjI2Olx0XHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFx1MDAyNm1zZ2hkciwgc2ctXHUwMDNlbGVuZ3RoKTtcbm5ldC94ZnJtL2VzcGludGNwLmMtMjI3LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9uZXRfdGltZXN0YW1waW5nLmM9MTE3PXN0YXRpYyBib29sIGJwZl90ZXN0X2RlbGF5KHN0cnVjdCBicGZfc29ja19vcHMgKnNrb3BzLCBjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYy0xODctXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jOjE4ODpTRUMoXCYjMzQ7ZmVudHJ5L3RjcF9zZW5kbXNnX2xvY2tlZFwmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9uZXRfdGltZXN0YW1waW5nLmM6MTg5OmludCBCUEZfUFJPRyh0cmFjZV90Y3Bfc2VuZG1zZ19sb2NrZWQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYy0xOTAtXHQgICAgIHNpemVfdCBzaXplKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY3MgoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRGF0YSBUcmFuc21pc3Npb24gUm91dGluZXMqKgoKUmlnaHQsIHNvIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzIGEgd2lkZWx5IHVzZWQgZnVuY3Rpb24sIGEga2VybmVsIHN5bWJvbC4gVGhpcyBtYWtlcyBzZW5zZTsgVENQIGlzIGZ1bmRhbWVudGFsLiBCdXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB6ZXJvLWNvcHkgbWVjaGFuaXNtcy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgYHNrYl96ZXJvY29weWAgYWxzbyBleHBvcnRlZD8gQSBxdWljayBjaGVjayByZXZlYWxzIGl0IGlzIGluZGVlZCBleHBvcnRlZCwgd2l0aCBgRVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5KWAuIEdvb2QuIFRoYXQgaW5kaWNhdGVzIGl0JiMzOTtzIGludGVuZGVkIGZvciBicm9hZGVyIHVzZSB3aXRoaW4gdGhlIEdQTC1saWNlbnNlZCBrZXJuZWwgc3BhY2UsIHdoaWNoIGlzIHdoYXQgSSYjMzk7ZCBleHBlY3QgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIG9wdGltaXphdGlvbnMuIE5vdywgd2hhdCBhYm91dCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYD8gSSYjMzk7bGwgcmUtZXhhbWluZSBgbmV0L2NvcmUvZGF0YWdyYW0uY2AgdG8gY29uZmlybSBpdHMgZXhwb3J0IHN0YXR1cy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3plcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjM9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Ny1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2ODppbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjktXHRcdFx0XHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpO1xuLS1cbmlvX3VyaW5nL25ldC5jPTE0NTA9c3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXJfaW92ZWMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pb191cmluZy9uZXQuYy0xNDUzLVx0c2tiX3pjb3B5X2Rvd25ncmFkZV9tYW5hZ2VkKHNrYik7XG5pb191cmluZy9uZXQuYzoxNDU0Olx0cmV0dXJuIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XG5pb191cmluZy9uZXQuYy0xNDU1LX1cbi0tXG5pb191cmluZy9uZXQuYz0xNDU3PXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW9fdXJpbmcvbmV0LmMtMTQ2OS1cdGVsc2UgaWYgKHVubGlrZWx5KCFza2JfemNvcHlfbWFuYWdlZChza2IpKSlcbmlvX3VyaW5nL25ldC5jOjE0NzA6XHRcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xuaW9fdXJpbmcvbmV0LmMtMTQ3MS1cbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzMz1FWFBPUlRfU1lNQk9MKHNrYl9jb3B5X2RhdGFncmFtX2Zyb21faXRlcl9mdWxsKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjM0LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo2MzU6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzYtXHRcdFx0XHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVx0ZWxzZVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjM6XHRcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqQ2hlY2tpbmcgRnVuY3Rpb24gRXhwb3J0IFZpc2liaWxpdHkqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29kZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgaXMgYWN0dWFsbHkgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS4gSSBtZWFuLCB0aGVyZSYjMzk7cyBubyBwb2ludCBpbiB0cnlpbmcgdG8gKnVzZSogaXQgaWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIHByb3Blcmx5LCByaWdodD8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSYjMzk7cyBzeW1ib2wgdGFibGVzIGlmIG5lY2Vzc2FyeS4gVGhpcyBmZWVscyBsaWtlIGEgYmFzaWMgc2FuaXR5IGNoZWNrLCBidXQgaXTigJlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBObyBzdXJwcmlzZXMgYXJlIHdlbGNvbWUsIGVzcGVjaWFsbHkgZWFybHkgb24uIEl0JiMzOTtsbCBzYXZlIG1lIGEgaGVhZGFjaGUgZG93biB0aGUgbGluZS4gTGV0JiMzOTtzIHNlZSBpZiBpdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9jb3JlL2RhdGFncmFtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYzNTpcdGludCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiA2MzY6XHRcdFx0XHRcdHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwgc2l6ZV90IGxlbmd0aClcbiA2Mzc6XHR7XG4gNjM4Olx0XHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbiA2Mzk6XHRcbiA2NDA6XHRcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4gNjQxOlx0XHRcdHJldHVybiAtRU1TR1NJWkU7XG4gNjQyOlx0XG4gNjQzOlx0XHR3aGlsZSAobGVuZ3RoIFx1MDAyNlx1MDAyNiBpb3ZfaXRlcl9jb3VudChmcm9tKSkge1xuIDY0NDpcdFx0XHRzdHJ1Y3QgcGFnZSAqaGVhZCwgKmxhc3RfaGVhZCA9IE5VTEw7XG4gNjQ1Olx0XHRcdHN0cnVjdCBwYWdlICpwYWdlc1tNQVhfU0tCX0ZSQUdTXTtcbiA2NDY6XHRcdFx0aW50IHJlZnMsIG9yZGVyLCBuID0gMDtcbiA2NDc6XHRcdFx0c2l6ZV90IHN0YXJ0O1xuIDY0ODpcdFx0XHRzc2l6ZV90IGNvcGllZDtcbiA2NDk6XHRcbiA2NTA6XHRcdFx0aWYgKGZyYWcgPT0gTUFYX1NLQl9GUkFHUylcbiA2NTE6XHRcdFx0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIDY1MjpcdFxuIDY1MzpcdFx0XHRjb3BpZWQgPSBpb3ZfaXRlcl9nZXRfcGFnZXMyKGZyb20sIHBhZ2VzLCBsZW5ndGgsXG4gNjU0Olx0XHRcdFx0XHRcdCAgICBNQVhfU0tCX0ZSQUdTIC0gZnJhZywgXHUwMDI2c3RhcnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjEwNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSXMgSXQgRXhwb3J0ZWQ/IFRoZSBDcnVjaWFsIFZlcmlmaWNhdGlvbioqCgpSaWdodCwgbGV0IG1lIGp1c3QgcGF1c2UgaGVyZS4gQmVmb3JlIEkgZXZlbiBiZWdpbiB0byBlbGFib3JhdGUgb3IgY29uc2lkZXIgYW55IGZ1cnRoZXIgaW1wbGljYXRpb25zLCBJICptdXN0KiB2ZXJpZnkgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJcyBpdCBleHBvcnRlZD8gSSYjMzk7bSByZWZlcnJpbmcsIG9mIGNvdXJzZSwgdG8gdGhlIGRhdGEsIHRoZSBtb2RlbCwgdGhlIGNvbmZpZ3VyYXRpb24g4oCTIHdoYXRldmVyIGNydWNpYWwgY29tcG9uZW50IHdlJiMzOTtyZSBkaXNjdXNzaW5nLiBJdCBzZWVtcyBvYnZpb3VzLCBidXQgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRoYXQgb3Zlcmxvb2tpbmcgdGhpcyBiYXNpYyBjaGVjayBpcyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIuIFlvdSBjYW4gZ2V0IGludG8gYW5hbHlzaXMgcGFyYWx5c2lzLgoKV2UmIzM5O3JlIGF0IHRoZSBwb2ludCB3aGVyZSB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdoYXRldmVyICYjMzQ7aXQmIzM0OyBpcywgaXMgYWN0dWFsbHkgaW4gYSB1c2FibGUgc3RhdGUuIE90aGVyd2lzZSwgd2UmIzM5O3JlIHRhbGtpbmcgdGhlb3J5LCBhIHdhc3RlIG9mIHRpbWUuIEkgY2FuJiMzOTt0IGJ1aWxkIG15IGFuYWx5c2lzIG9uIGEgZm91bmRhdGlvbiBvZiBwb3RlbnRpYWxseSBpbmNvcnJlY3Qgb3IgaW5hY2Nlc3NpYmxlIGRhdGEuIFRoaXMgY2hlY2sgaXMgcGFyYW1vdW50OiBJIG11c3QgY29uZmlybSB0aGUgZXhwb3J0IHByb2Nlc3MgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3IgZWxzZSBJJiMzOTttIGRlYWQgaW4gdGhlIHdhdGVyLiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBvdXRwdXRzIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjb21wbGV0ZSBhbmQgaW4gdGhlIHJpZ2h0IGZvcm1hdC4KCk9ubHkgKmFmdGVyKiB0aGlzIHZlcmlmaWNhdGlvbiBjYW4gSSBwcm9jZWVkIHdpdGggY29uZmlkZW5jZSBhbmQgYSBjbGVhciBoZWFkLiBJdCYjMzk7cyB0aGUgZmlyc3QgYW5kIGFyZ3VhYmx5IG1vc3QgaW1wb3J0YW50IHN0ZXAuIFdlJiMzOTtyZSBvbiB0aGUgc2FtZSBwYWdlLCByaWdodD8gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIGFuZCBjb21tb24gc2Vuc2UgY2hlY2ssIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gc3RhdGUgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2NvcmUvZGF0YWdyYW0uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzAwOlx0XHRcdGlmIChyZWZzKVxuIDcwMTpcdFx0XHRcdHBhZ2VfcmVmX3N1YihsYXN0X2hlYWQsIHJlZnMpO1xuIDcwMjpcdFx0fVxuIDcwMzpcdFx0cmV0dXJuIDA7XG4gNzA0Olx0fVxuIDcwNTpcdFxuIDcwNjpcdHN0YXRpYyBpbnRcbiA3MDc6XHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4gNzA4Olx0XHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbiA3MDk6XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1ODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBmdW5jdGlvbiBpcyBkZWZpbmVkLiBJIHNlZW0gdG8gcmVjYWxsIHNlZWluZyBpdCBpbiB0aGUgY29udGV4dCBvZiBuZXR3b3JrIGRhdGFncmFtIGhhbmRsaW5nLiBBaCwgeWVzLCBpdCYjMzk7cyBwcm9iYWJseSBleHBvcnRlZCBpbiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGJ5IGhlYWRpbmcgb3ZlciB0byBsaW5lIDcwNCBpbiB0aGF0IGZpbGU7IEkgbmVlZCB0byBjb25maXJtIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9jb3JlL2RhdGFncmFtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzA0Olx0fVxuIDcwNTpcdFxuIDcwNjpcdHN0YXRpYyBpbnRcbiA3MDc6XHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4gNzA4Olx0XHRcdFx0ICAgICAgaW50IGxlbmd0aCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4NzIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeW1ib2wgRXhwb3J0IElzc3VlcyoqCgpIbW0sIHNvIHRoZSBmdW5jdGlvbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2Agd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0LCB3aGljaCBpcyBleHBlY3RlZC4gSG93ZXZlciwgaXQmIzM5O3Mgbm90IGJlaW5nIGV4cG9ydGVkIGVpdGhlciwgYXQgbGVhc3Qgbm90IGV4cGxpY2l0bHkuIFRoYXQmIzM5O3MgYSBiaXQgb2RkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGluIHRoZSBidWlsZCBwcm9jZXNzLiBMZXQgbWUgcXVpY2tseSBzY2FuIHRoZSBjb2RlIC0gc3BlY2lmaWNhbGx5LCBpcyB0aGVyZSBhbiBgRVhQT1JUX1NZTUJPTCgpYCBjYWxsIG9uIHRoZSBmdW5jdGlvbiAqaXRzZWxmKiBhdCB0aGUgZW5kIG9mIHRoZSBkZWNsYXJhdGlvbj8gU29tZXRoaW5nIGxpa2UgYEVYUE9SVF9TWU1CT0woemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKTtgIGlzIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzEyNgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBTY29wZSBvZiBhIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGZ1bmN0aW9uIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBpdCYjMzk7cyBub3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgcGlxdWVzIG15IGludGVyZXN0LiBCdXQgaXMgaXQgYWN0dWFsbHkgYWNjZXNzaWJsZSBvdXRzaWRlIGl0cyBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQ/IE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCYjMzk7cyAqbm90KiBleHBvcnRlZCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCBtZSBiYWNrdHJhY2sg4oCTIEkgcmVjYWxsIHNlZWluZyB0aGlzIGZ1bmN0aW9uIHVzZWQgc29tZXdoZXJlIGluIGBpb191cmluZy9uZXQuY2AsIHdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgaXQgKm1pZ2h0KiBiZSBleHBvcnRlZC4gV2FpdCwgb3IgY291bGQgaXQgYmUgcGFydCBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIHN0cnVjdD8gSXQgY291bGQganVzdCBiZSB0aGF0IGBpb191cmluZ2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBpbiB3aGljaCBjYXNlIHRoZSB2aXNpYmlsaXR5IHJ1bGVzIHdvdWxkIGJlIGRpZmZlcmVudC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGlvX3VyaW5nYCBpcyBpbmRlZWQgYSBidWlsdC1pbiBtb2R1bGUuIFllcywgaXQgaXMhIE9rYXksIHNvIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgb3RoZXIgZnVuY3Rpb25zLiBSaWdodCwgSSBrbm93IGBza2JfemVyb2NvcHlgIGlzIGV4cG9ydGVkLCB0aGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoaXMgcHV6emxlLiBOb3csIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIEkgbmVlZCB0byBjaGVjayBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLCBhbmQgc2VlIGhvdyB0aGF0IGlzIGxpbmtlZCBvciB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjItXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjM6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzczLXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3NDpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cdTAwM2Vzaywgc2tiLCBcdTAwMjZtc2ctXHUwMDNlbXNnX2l0ZXIsIGxlbixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3NS1cdFx0XHRcdCAgICAgICBOVUxMKTtcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTcwNz16ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc0OTppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc1MC1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc0LX1cbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzc1OkVYUE9SVF9TWU1CT0woX196ZXJvY29weV9zZ19mcm9tX2l0ZXIpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03ODc9aW50IHplcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTQtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc5NTpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc5Ni19XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xOTMzLVxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcdGVyciA9IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sXG5uZXQvY29yZS9za2J1ZmYuYy0xOTM1LVx0XHRcdFx0ICAgICAgYmluZGluZyk7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTgwPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9maWxsX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cdGlmICh6Y29weSlcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo4ODpcdFx0cmV0dXJuIF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgTlVMTCwgc2tiLFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTg5LVx0XHRcdFx0XHQgICAgICAgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yMzktXHQvKiBJZiAmIzM5O3ZzayYjMzk7ICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI0MDpcdCAqIHdpbGwgbmV2ZXIgY2FsbCAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyBiZWxvdyB3aXRob3V0XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQxLVx0ICogc2V0dGluZyBza2Igb3duZXIgaW4gJiMzOTtza2Jfc2V0X293bmVyX3coKSYjMzk7LiBUaGUgb25seSBjYXNlXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0Ni1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XHQvKiBTZXQgb3duZXIgaGVyZSwgYmVjYXVzZSAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyB1c2VzXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVx0ICogb3duZXIgb2Ygc2tiIHdpdGhvdXQgY2hlY2sgdG8gdXBkYXRlICYjMzk7c2tfd21lbV9hbGxvYyYjMzk7LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYwNQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIEZvY3VzIFN5bWJvbHMgZm9yIFplcm9jb3B5IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHBsYWNlcyB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLiBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHNpbmNlIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBjYWxscyBib3RoIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgYW5kIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLiBUaGF0JiMzOTtzIGRlZmluaXRlbHkgb25lIHRvIGtlZXAgaW4gbWluZC4gQW5kLCBvZiBjb3Vyc2UsIGBza2JfemVyb2NvcHlgIGl0c2VsZiBpcyBhIHByaW1lIGNhbmRpZGF0ZS4KClRoZW4gdGhlcmUmIzM5O3MgYHRjcF9zZW5kbXNnX2xvY2tlZGAuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBob3QgcGF0aCBmdW5jdGlvbiwgYSByZWFsbHkgKmhvdCogcGF0aC4gQnV0IHRoZSBwcm9tcHQgc2FpZCB0byBhdm9pZCB0aG9zZSBnZW5lcmljIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEl0IHdhbnRzIHVzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIEhtbSwgYHRjcF9zZW5kbXNnX2xvY2tlZGAgKmlzKiBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2guLi5hbmQgaXQmIzM5O3MgdGhlIG1haW4gZnVuY3Rpb24gZm9yIFRDUCBtZXNzYWdlIHNlbmRpbmcuIElmIHdlIHNraXAgaXQsIHdlIG1pZ2h0IG1pc3MgdGhlIFRDUCBwYXJ0IGVudGlyZWx5LgoKV2FpdCwgaXMgdGhlcmUgYW4gYWx0ZXJuYXRpdmU/IExldCYjMzk7cyBjaGVjayBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYC4gTWF5YmUgdGhhdCBwcm92aWRlcyBhIGxlc3MgZ2VuZXJpYyBlbnRyeSBwb2ludC4gSSYjMzk7bGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpdCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NrYl96ZXJvY29weV9pdGVyX3N0cmVhbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Nzg6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzktXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTkxMD1FWFBPUlRfU1lNQk9MX0dQTChtc2dfemVyb2NvcHlfdWJ1Zl9vcHMpO1xubmV0L2NvcmUvc2tidWZmLmMtMTkxMS1cbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvY29yZS9za2J1ZmYuYy0xOTEzLVx0XHRcdCAgICAgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxubmV0L2NvcmUvc2tidWZmLmM6MTk1MDpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0pO1xubmV0L2NvcmUvc2tidWZmLmMtMTk1MS1cbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTEzNDMtXG5uZXQvaXB2NC90Y3AuYzoxMzQ0Olx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXG5uZXQvaXB2NC90Y3AuYy0xMzQ1LVx0XHRcdFx0XHRcdCAgICAgICBiaW5kaW5nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MDEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipEZWx2aW5nIGludG8gc2tiX3plcm9jb3B5IGFuZCBUQ1AgVHJhbnNtaXNzaW9uKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCAtIGFoYSwgdGhhdCYjMzk7cyBhbiBpbnRlcmVzdGluZyBvbmUuIEl0JiMzOTtzIGV4cG9ydGVkLCBhbmQgc3BlY2lmaWNhbGx5IGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIFNlZW1zIGxpa2UgYSBuYXR1cmFsIHBvaW50IHRvIGZvY3VzIG9uLCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSB6ZXJvLWNvcHkgbG9naWMgd2l0aGluIHRoZSBUQ1Agc2VuZGluZyBwYXRoLiBUaGF0JiMzOTtzIGEgc29saWQgc3ltYm9sIHRvIHN0YXJ0IHRyYWNpbmcgZG93biB0aGUgcmFiYml0IGhvbGUuCgpOb3csIHdoYXQgYWJvdXQgdGhlIG1vcmUgZ2VuZXJhbCBgc2tiX3plcm9jb3B5YD8gSXMgYGl0ZXJfc3RyZWFtYCBhIG1vcmUgc3BlY2lhbGl6ZWQgdmVyc2lvbj8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdHdvLiBJcyBgaXRlcl9zdHJlYW1gIGEgc3Vic2V0LCBhIG1vcmUgbW9kZXJuIHJlcGxhY2VtZW50LCBvciBhIGRpZmZlcmVudCBmdW5jdGlvbmFsIGZhY2V0IG9mIHRoZSB6ZXJvLWNvcHkgbWVjaGFuaXNtPyBQZXJoYXBzIGBza2JfemVyb2NvcHlgIGVuY29tcGFzc2VzIGEgYnJvYWRlciByYW5nZSBvZiB6ZXJvLWNvcHkgc2NlbmFyaW9zLCBhbmQgYGl0ZXJfc3RyZWFtYCBmb2N1c2VzIG9uIHRoZSBpdGVyYXRpdmUsIHN0cmVhbS1vcmllbnRlZCBjYXNlcy4gT3IgbWF5YmUgdGhleSBhcmUgY29tcGxldGVseSB1bnJlbGF0ZWQuIEkgc2hvdWxkIHJldmlldyB3aGVyZSBgc2tiX3plcm9jb3B5YCBpcyB1c2VkIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tiX3plcm9jb3B5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oPTQxMz1leHRlcm4gc3RydWN0IGRlbnRyeSAqeGVuX25ldGJhY2tfZGJnX3Jvb3Q7XG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgtNDE1LVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmg6NDE2OnZvaWQgeGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlLFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgtNDE3LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpO1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmg6NDE4OnZvaWQgeGVudmlmX3NrYl96ZXJvY29weV9jb21wbGV0ZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSk7XG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaC00MTktXG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNDktICogY291bnRlciBiZWNhdXNlIGNvcmUgZHJpdmVyIGNhbGxzIGludG8geGVudmlmX3plcm9jb3B5X2NhbGxiYWNrXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1MDogKiB3aGljaCBjYWxscyB4ZW52aWZfc2tiX3plcm9jb3B5X2NvbXBsZXRlLlxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTEtICovXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1Mjp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jLTUzLVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTgtXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1OTp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYy02MC17XG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jPTExNzI9c3RhdGljIGludCB4ZW52aWZfdHhfc3VibWl0KHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjEwLVx0XHRcdHN0cnVjdCBza19idWZmICpuc2tiID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZWZyYWdfbGlzdDtcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjExOlx0XHRcdHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShxdWV1ZSwgbnNrYik7XG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIxMi1cdFx0XHRpZiAoeGVudmlmX2hhbmRsZV9mcmFnX2xpc3QocXVldWUsIHNrYikpIHtcbi0tXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIxNS1cdFx0XHRcdFx0XHQgICBcJiMzNDtOb3QgZW5vdWdoIG1lbW9yeSB0byBjb25zb2xpZGF0ZSBmcmFnX2xpc3QhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjE2Olx0XHRcdFx0eGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHF1ZXVlLCBza2IpO1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyMTctXHRcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIzMy1cdFx0XHRpZiAoc2tiX3NoaW5mbyhza2IpLVx1MDAzZWRlc3RydWN0b3JfYXJnKVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEyMzQ6XHRcdFx0XHR4ZW52aWZfc2tiX3plcm9jb3B5X3ByZXBhcmUocXVldWUsIHNrYik7XG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIzNS1cdFx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTI3Mi1cdFx0aWYgKHNrYl9zaGluZm8oc2tiKS1cdTAwM2VkZXN0cnVjdG9yX2FyZykge1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEyNzM6XHRcdFx0eGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHF1ZXVlLCBza2IpO1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyNzQtXHRcdFx0cXVldWUtXHUwMDNlc3RhdHMudHhfemVyb2NvcHlfc2VudCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jPTEyODM9c3RhdGljIHZvaWQgeGVudmlmX3plcm9jb3B5X2NhbGxiYWNrKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEzMTQtXHRcdHF1ZXVlLVx1MDAzZXN0YXRzLnR4X3plcm9jb3B5X2ZhaWwmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEzMTU6XHR4ZW52aWZfc2tiX3plcm9jb3B5X2NvbXBsZXRlKHF1ZXVlKTtcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMzE2LX1cbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3Njg9aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3MC1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3MTpzdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzcyLVx0XHRcdFx0XHQgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbilcbi0tXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Nzg6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzktXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD00MjY5PXZvaWQgc2tiX2NvcHlfYW5kX2NzdW1fZGV2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHU4ICp0byk7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjQyNzA6dW5zaWduZWQgaW50IHNrYl96ZXJvY29weV9oZWFkbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpmcm9tKTtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDI3MTppbnQgc2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTQyNzItXHRcdCBpbnQgbGVuLCBpbnQgaGxlbik7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTgxMj1FWFBPUlRfU1lNQk9MX0dQTChtc2dfemVyb2NvcHlfcmVhbGxvYyk7XG5uZXQvY29yZS9za2J1ZmYuYy0xODEzLVxubmV0L2NvcmUvc2tidWZmLmM6MTgxNDpzdGF0aWMgYm9vbCBza2JfemVyb2NvcHlfbm90aWZ5X2V4dGVuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgbG8sIHUxNiBsZW4pXG5uZXQvY29yZS9za2J1ZmYuYy0xODE1LXtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xODM0PXN0YXRpYyB2b2lkIF9fbXNnX3plcm9jb3B5X2NhbGxiYWNrKHN0cnVjdCB1YnVmX2luZm9fbXNnemMgKnVhcmcpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTg3MC1cdGlmICghdGFpbCB8fCBTS0JfRVhUX0VSUih0YWlsKS1cdTAwM2VlZS5lZV9vcmlnaW4gIT0gU09fRUVfT1JJR0lOX1pFUk9DT1BZIHx8XG5uZXQvY29yZS9za2J1ZmYuYzoxODcxOlx0ICAgICFza2JfemVyb2NvcHlfbm90aWZ5X2V4dGVuZCh0YWlsLCBsbywgbGVuKSkge1xubmV0L2NvcmUvc2tidWZmLmMtMTg3Mi1cdFx0X19za2JfcXVldWVfdGFpbChxLCBza2IpO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTEtXG5uZXQvY29yZS9za2J1ZmYuYzoxOTEyOmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cdFx0XHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xOTQ5LX1cbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NTEtXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTk2MD1FWFBPUlRfU1lNQk9MX0dQTChfX3NrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZCk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTYxLVxubmV0L2NvcmUvc2tidWZmLmM6MTk2MjpzdGF0aWMgaW50IHNrYl96ZXJvY29weV9jbG9uZShzdHJ1Y3Qgc2tfYnVmZiAqbnNrYiwgc3RydWN0IHNrX2J1ZmYgKm9yaWcsXG5uZXQvY29yZS9za2J1ZmYuYy0xOTYzLVx0XHRcdCAgICAgIGdmcF90IGdmcF9tYXNrKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTIyMjU9c3RydWN0IHNrX2J1ZmYgKl9fcHNrYl9jb3B5X2ZjbG9uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGVhZHJvb20sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMjI0OS1cdFx0aWYgKHNrYl9vcnBoYW5fZnJhZ3Moc2tiLCBnZnBfbWFzaykgfHxcbm5ldC9jb3JlL3NrYnVmZi5jOjIyNTA6XHRcdCAgICBza2JfemVyb2NvcHlfY2xvbmUobiwgc2tiLCBnZnBfbWFzaykpIHtcbm5ldC9jb3JlL3NrYnVmZi5jLTIyNTEtXHRcdFx0a2ZyZWVfc2tiKG4pO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTM4Mjg9RVhQT1JUX1NZTUJPTChfX3NrYl9jaGVja3N1bV9jb21wbGV0ZSk7XG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzgzMC0gLyoqXG5uZXQvY29yZS9za2J1ZmYuYzozODMxOiAqXHRza2JfemVyb2NvcHlfaGVhZGxlbiAtIENhbGN1bGF0ZSBoZWFkcm9vbSBuZWVkZWQgZm9yIHNrYl96ZXJvY29weSgpXG5uZXQvY29yZS9za2J1ZmYuYy0zODMyLSAqXHRAZnJvbTogc291cmNlIGJ1ZmZlclxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM4MzQtICpcdENhbGN1bGF0ZXMgdGhlIGFtb3VudCBvZiBsaW5lYXIgaGVhZHJvb20gbmVlZGVkIGluIHRoZSAmIzM5O3RvJiMzOTsgc2tiIHBhc3NlZFxubmV0L2NvcmUvc2tidWZmLmM6MzgzNTogKlx0aW50byBza2JfemVyb2NvcHkoKS5cbm5ldC9jb3JlL3NrYnVmZi5jLTM4MzYtICovXG5uZXQvY29yZS9za2J1ZmYuYz0zODM3PXVuc2lnbmVkIGludFxubmV0L2NvcmUvc2tidWZmLmM6MzgzODpza2JfemVyb2NvcHlfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSlcbm5ldC9jb3JlL3NrYnVmZi5jLTM4Mzkte1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM4NTQtfVxubmV0L2NvcmUvc2tidWZmLmM6Mzg1NTpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHlfaGVhZGxlbik7XG5uZXQvY29yZS9za2J1ZmYuYy0zODU2LVxubmV0L2NvcmUvc2tidWZmLmMtMzg1Ny0vKipcbm5ldC9jb3JlL3NrYnVmZi5jOjM4NTg6ICpcdHNrYl96ZXJvY29weSAtIFplcm8gY29weSBza2IgdG8gc2tiXG5uZXQvY29yZS9za2J1ZmYuYy0zODU5LSAqXHRAdG86IGRlc3RpbmF0aW9uIGJ1ZmZlclxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjYtICpcbm5ldC9jb3JlL3NrYnVmZi5jOjM4Njc6ICpcdFRoZSBgaGxlbmAgYXMgY2FsY3VsYXRlZCBieSBza2JfemVyb2NvcHlfaGVhZGxlbigpIHNwZWNpZmllcyB0aGVcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjgtICpcdGhlYWRyb29tIGluIHRoZSBgdG9gIGJ1ZmZlci5cbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0zODc1PWludFxubmV0L2NvcmUvc2tidWZmLmM6Mzg3Njpza2JfemVyb2NvcHkoc3RydWN0IHNrX2J1ZmYgKnRvLCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IGxlbiwgaW50IGhsZW4pXG5uZXQvY29yZS9za2J1ZmYuYy0zODc3LXtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zOTEzLVx0fVxubmV0L2NvcmUvc2tidWZmLmM6MzkxNDpcdHNrYl96ZXJvY29weV9jbG9uZSh0bywgZnJvbSwgR0ZQX0FUT01JQyk7XG5uZXQvY29yZS9za2J1ZmYuYy0zOTE1LVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTM5MzUtfVxubmV0L2NvcmUvc2tidWZmLmM6MzkzNjpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHkpO1xubmV0L2NvcmUvc2tidWZmLmMtMzkzNy1cbi0tXG5uZXQvY29yZS9za2J1ZmYuYz00MjM0PXZvaWQgc2tiX3NwbGl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmICpza2IxLCBjb25zdCB1MzIgbGVuKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTQyNDEtXHRza2Jfc2hpbmZvKHNrYjEpLVx1MDAzZWZsYWdzIHw9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2VmbGFncyBcdTAwMjYgemNfZmxhZ3M7XG5uZXQvY29yZS9za2J1ZmYuYzo0MjQyOlx0c2tiX3plcm9jb3B5X2Nsb25lKHNrYjEsIHNrYiwgMCk7XG5uZXQvY29yZS9za2J1ZmYuYy00MjQzLVx0aWYgKGxlbiBcdTAwM2MgcG9zKVx0LyogU3BsaXQgbGluZSBpcyBpbnNpZGUgaGVhZGVyLiAqL1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTQ3ODA9c3RydWN0IHNrX2J1ZmYgKnNrYl9zZWdtZW50KHN0cnVjdCBza19idWZmICpoZWFkX3NrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy01MDAzLVxubmV0L2NvcmUvc2tidWZmLmM6NTAwNDpcdFx0aWYgKHNrYl96ZXJvY29weV9jbG9uZShuc2tiLCBmcmFnX3NrYiwgR0ZQX0FUT01JQykpXG5uZXQvY29yZS9za2J1ZmYuYy01MDA1LVx0XHRcdGdvdG8gZXJyO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTUwMDktXHRcdFx0XHRpZiAoc2tiX29ycGhhbl9mcmFncyhsaXN0X3NrYiwgR0ZQX0FUT01JQykgfHxcbm5ldC9jb3JlL3NrYnVmZi5jOjUwMTA6XHRcdFx0XHQgICAgc2tiX3plcm9jb3B5X2Nsb25lKG5za2IsIGxpc3Rfc2tiLFxubmV0L2NvcmUvc2tidWZmLmMtNTAxMS1cdFx0XHRcdFx0XHQgICAgICAgR0ZQX0FUT01JQykpXG4tLVxubmV0L2lwdjQvaXBfb3V0cHV0LmM9OTQ5PXN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L2lwdjQvaXBfb3V0cHV0LmMtMTI2NS1cdFx0fSBlbHNlIHtcbm5ldC9pcHY0L2lwX291dHB1dC5jOjEyNjY6XHRcdFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc2tiLCBmcm9tLCBjb3B5KTtcbm5ldC9pcHY0L2lwX291dHB1dC5jLTEyNjctXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTEzNDMtXG5uZXQvaXB2NC90Y3AuYzoxMzQ0Olx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXG5uZXQvaXB2NC90Y3AuYy0xMzQ1LVx0XHRcdFx0XHRcdCAgICAgICBiaW5kaW5nKTtcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTQ0OT1zdGF0aWMgaW50IF9faXA2X2FwcGVuZF9kYXRhKHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTgzMS1cdFx0fSBlbHNlIHtcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYzoxODMyOlx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHNrYiwgZnJvbSwgY29weSk7XG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTgzMy1cdFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9NzA1PW5mcW5sX2J1aWxkX3BhY2tldF9tZXNzYWdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTc2OS1cdFx0ZGF0YV9sZW4gPSBuZnFubF9nZXRfZGF0YV9sZW4oZW50c2tiLCBSRUFEX09OQ0UocXVldWUtXHUwMDNlY29weV9yYW5nZSkpO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo3NzA6XHRcdGhsZW4gPSBza2JfemVyb2NvcHlfaGVhZGxlbihlbnRza2IpO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy03NzEtXHRcdGhsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGhsZW4sIGRhdGFfbGVuKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTk1My1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM6OTU0Olx0XHRpZiAoc2tiX3plcm9jb3B5KHNrYiwgZW50c2tiLCBkYXRhX2xlbiwgaGxlbikpXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTk1NS1cdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz00NTE9c3RhdGljIGludCBxdWV1ZV91c2Vyc3BhY2VfcGFja2V0KHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNDk3LVx0aWYgKGRwLVx1MDAzZXVzZXJfZmVhdHVyZXMgXHUwMDI2IE9WU19EUF9GX1VOQUxJR05FRClcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjQ5ODpcdFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNDk5LVx0ZWxzZVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU4NC1cdC8qIE9ubHkgcmVzZXJ2ZSByb29tIGZvciBhdHRyaWJ1dGUgaGVhZGVyLCBwYWNrZXQgZGF0YSBpcyBhZGRlZFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NTg1Olx0ICogaW4gc2tiX3plcm9jb3B5KCkgKi9cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU4Ni1cdGlmICghKG5sYSA9IG5sYV9yZXNlcnZlKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfUEFDS0VULCAwKSkpIHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy01OTEtXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo1OTI6XHRlcnIgPSBza2JfemVyb2NvcHkodXNlcl9za2IsIHNrYiwgc2tiX2xlbiwgaGxlbik7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy01OTMtXHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmM9OTY0PXN0YXRpYyBpbnQgeHNrX3NrYl9tZXRhZGF0YShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpidWZmZXIsXG4tLVxubmV0L3hkcC94c2suYy0xMDA1LVxubmV0L3hkcC94c2suYzoxMDA2OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYl96ZXJvY29weShzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxubmV0L3hkcC94c2suYy0xMDA3LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpXG4tLVxubmV0L3hkcC94c2suYz0xMDgyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeHNrX2J1aWxkX3NrYihzdHJ1Y3QgeGRwX3NvY2sgKnhzLFxuLS1cbm5ldC94ZHAveHNrLmMtMTA4OS1cdGlmIChkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjYgSUZGX1RYX1NLQl9OT19MSU5FQVIpIHtcbm5ldC94ZHAveHNrLmM6MTA5MDpcdFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XG5uZXQveGRwL3hzay5jLTEwOTEtXHRcdGlmIChJU19FUlIoc2tiKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDIzOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgc2tiX3plcm9jb3B5YCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBza2JfemVyb2NvcHlgIHRoaW5nIGFuZCB3aGVyZSBpdCYjMzk7cyB1c2VkLiBJdCYjMzk7cyBjbGVhciBmcm9tIHRoZSBjb2RlIHRoYXQgaXQmIzM5O3MgYSBmb2N1cyBwb2ludC4gSSBzZWUgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYm90aCBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY2AsIHNvIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gRnVydGhlcm1vcmUsIEkgc2hvdWxkIGludmVzdGlnYXRlIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLCBhcyB0aGV5JiMzOTtyZSBhbHNvIGtleSBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBjcnVjaWFsIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGFscmVhZHkgYXdhcmUgdGhhdCBgQ09ORklHX05FVF9ERVZNRU1gIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIGRldm1lbSBhc3BlY3QuIEJ1dCB3aGF0IGFib3V0IHRoZSBgc2tiX3plcm9jb3B5YCBjb3JlIGl0c2VsZj8gQWgsIGl0IHJlc2lkZXMgaW4gYG5ldC9jb3JlL3NrYnVmZi5jYCwgd2hpY2ggaXMgYWx3YXlzIGNvbXBpbGVkIOKAkyBzbyBubyB3b3JyaWVzIHRoZXJlLiBBbmQgYHRjcF9zZW5kbXNnX2xvY2tlZGAgaXMgYWx3YXlzIGNvbXBpbGVkIHRvby4gQW5kIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLCBpbiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AsIHRoYXQmIzM5O3MgYW5vdGhlciBvbmUgdGhhdCYjMzk7cyBhbHdheXMgY29tcGlsZWQuCgpIb3dldmVyLCBhIGNsb3NlciBsb29rIGF0IHRoZSBwYXRjaCByZXZlYWxzIHRoYXQgaXQgc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIHdoZW4gYSBgYmluZGluZ2AgaXMgKm5vdCogTlVMTC4gVGhlIGBiaW5kaW5nYCBpcyBhIGBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZ2AuIFNvLCBjbGVhcmx5LCB0aGlzICppcyogbGlua2VkIHRvIGBDT05GSUdfTkVUX0RFVk1FTWAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgTkVUX0RFVk1FTWAgaXMgaW5jbHVkZWQgaW4gRW5hYmxlQ29uZmlncy4KCk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgYE5FVF9ERVZNRU1gIGl0c2VsZiBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgY29uc2lkZXJpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfREVWTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTY2PWNvbmZpZyBTS0JfRVhURU5TSU9OU1xuLS1cbm5ldC9LY29uZmlnLTY4LVxubmV0L0tjb25maWc6Njk6Y29uZmlnIE5FVF9ERVZNRU1cbm5ldC9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTA0OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBQYXJhbWV0ZXIqKgoKSG1tLCBzbyBgY29uZmlnIE5FVF9ERVZNRU1gIGlzICpkZWZpbmVkKiB0byBiZSAmIzM5O3kmIzM5OywgcmlnaHQgb3V0IG9mIHRoZSBnYXRlPyBUaGF0IHNlZW1z4oCmaW50ZXJlc3RpbmcuIEkmIzM5O20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0LCBzbyBJJiMzOTtsbCBqdW1wIHJpZ2h0IGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIHNlZS4uLiBgbmV0L0tjb25maWdgLCBhcm91bmQgbGluZSA2OSwgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBleHBsYW5hdGlvbnMsIGFuZCBwZXJoYXBzIGEgZGlyZWN0IGxpbmsgdG8gdGhlIHVuZGVybHlpbmcgZHJpdmVyIG9yIHN1YnN5c3RlbS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGluY2x1c2lvbiwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgaXQgYmVpbmcgYSBkZWZhdWx0LiBJcyB0aGlzIGEgY29yZSByZXF1aXJlbWVudCwgb3IgYSBtb3JlIHNwZWNpYWxpemVkIGZlYXR1cmUgdGhhdCBtaWdodCBpbmFkdmVydGVudGx5IGJlIGVuYWJsZWQgYnkgZGVmYXVsdD8gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGRlc2lnbiBkZWNpc2lvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDYwOlx0Y29uZmlnIE5FVF9SRURJUkVDVFxuICA2MTpcdFx0Ym9vbFxuICA2MjpcdFxuICA2MzpcdGNvbmZpZyBTS0JfREVDUllQVEVEXG4gIDY0Olx0XHRib29sXG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIFNLQl9FWFRFTlNJT05TXG4gIDY3Olx0XHRib29sXG4gIDY4Olx0XG4gIDY5Olx0Y29uZmlnIE5FVF9ERVZNRU1cbiAgNzA6XHRcdGRlZl9ib29sIHlcbiAgNzE6XHRcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuICA3MjpcdFx0ZGVwZW5kcyBvbiBETUFfU0hBUkVEX0JVRkZFUlxuICA3MzpcdFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcbiAgNzQ6XHRcbiAgNzU6XHRjb25maWcgTkVUX1NIQVBFUlxuICA3NjpcdFx0Ym9vbFxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBORVRfQ1JDMzJDXG4gIDc5Olx0XHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDg4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBgTkVUX0RFVk1FTWAgaXMgZW5hYmxlZCwgYSBkaXJlY3QgJiMzNDt5ZXMmIzM0OyBhcyBpbmRpY2F0ZWQgYnkgYGRlZl9ib29sIHlgLiBIb3dldmVyLCB0aGlzIGlzIG1vcmUgaW50ZXJlc3RpbmcgdGhhbiBqdXN0IGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIHNlZSBpdCBoYXMgZGVwZW5kZW5jaWVzLCBzcGVjaWZpY2FsbHkgb24gYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3MgdGhlIHJlYWwgc3RvcnkgaGVyZSwgbm90IGp1c3QgdGhhdCBpdCYjMzk7cyBzZXQuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCB1bmRlcnN0YW5kIHdoYXQgKml0JiMzOTtzKiBhbGwgYWJvdXQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBgTkVUX0RFVk1FTWAuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBETUFfU0hBUkVEX0JVRkZFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvS2NvbmZpZz0yMTM9c291cmNlIFwmIzM0O2RyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9iYXNlL0tjb25maWctMjE0LVxuZHJpdmVycy9iYXNlL0tjb25maWc6MjE1OmNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9iYXNlL0tjb25maWctMjE2LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTc4MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBzb21ldGhpbmcgaXMgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLCBhbmQgdGhlIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbGluZSAyMTUgc291bmRzIGxpa2UgYSBnb29kIHBvaW50IHRvIHplcm8gaW4gb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZXRoaW5nIGZ1bmRhbWVudGFsLCBwcm9iYWJseSBhIGNvcmUgb3B0aW9uIHJlbGF0ZWQgdG8gc29tZSBkcml2ZXIgb3IgYmFzZSBmdW5jdGlvbmFsaXR5LCBvciBtYXliZSBldmVuIGEgbWFjcm8gZGVmaW5pdGlvbi4gTGV0IG1lIHB1bGwgdGhhdCBmaWxlIGFuZCBnZXQgdG8gbGluZSAyMTUsIEkgc3VzcGVjdCBJIGNhbiBxdWlja2x5IHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uLCBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIHdpZGVyIGNvbmZpZ3VyYXRpb24gc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMTA6XHRcdGJvb2xcbiAyMTE6XHRcdHNlbGVjdCBHTE9CXG4gMjEyOlx0XG4gMjEzOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1wmIzM0O1xuIDIxNDpcdFxuIDIxNTpcdGNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxuIDIxNjpcdFx0Ym9vbFxuIDIxNzpcdFx0ZGVmYXVsdCBuXG4gMjE4Olx0XHRzZWxlY3QgSVJRX1dPUktcbiAyMTk6XHRcdGhlbHBcbiAyMjA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZnJhbWV3b3JrIGZvciBidWZmZXItc2hhcmluZyBiZXR3ZWVuXG4gMjIxOlx0XHQgIG11bHRpcGxlIGRyaXZlcnMuIEEgYnVmZmVyIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUgdXNpbmcgZHJpdmVyXG4gMjIyOlx0XHQgIEFQSXMgZXh0ZW5zaW9uOyB0aGUgZmlsZSYjMzk7cyBkZXNjcmlwdG9yIGNhbiB0aGVuIGJlIHBhc3NlZCBvbiB0byBvdGhlclxuIDIyMzpcdFx0ICBkcml2ZXIuXG4gMjI0Olx0XG4gMjI1Olx0Y29uZmlnIERNQV9GRU5DRV9UUkFDRVxuIDIyNjpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgdmVyYm9zZSBETUFfRkVOQ0VfVFJBQ0UgbWVzc2FnZXNcJiMzNDtcbiAyMjc6XHRcdGRlcGVuZHMgb24gRE1BX1NIQVJFRF9CVUZGRVJcbiAyMjg6XHRcdGhlbHBcbiAyMjk6XHRcdCAgRW5hYmxlIHRoZSBETUFfRkVOQ0VfVFJBQ0UgcHJpbnRrcy4gVGhpcyB3aWxsIGFkZCBleHRyYVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjI1MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBNZW1vcnkgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoaXMgYERNQV9TSEFSRURfQlVGRkVSYCBmbGFn4oCmIHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBib29sZWFuLCBhbmQgdGhlIGRlZmF1bHQgaXMgJiMzNDtubyYjMzQ7LCBtZWFuaW5nIGl0JiMzOTtzIGRpc2FibGVkLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIERNQSBhbmQgc2hhcmVkIG1lbW9yeSBhcmNoaXRlY3R1cmVzLCBJJiMzOTttIHByZXR0eSBzdXJlIHdlIHNob3VsZCBiZSBlbmFibGluZyB0aGlzLiBFbmFibGluZyBzaGFyZWQgYnVmZmVycyB1c3VhbGx5IHVubG9ja3Mgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgYmVuZWZpdHMgYnkgcmVkdWNpbmcgZGF0YSBjb3BpZXMgYW5kIGFsbG93aW5nIG1vcmUgZGlyZWN0IGFjY2VzcyBmb3IgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBraW5kIG9mIGhhcmR3YXJlIHdlIGFyZSB3b3JraW5nIHdpdGguIFRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5IHN1YnN5c3RlbSwgcGFydGljdWxhcmx5IGNhY2hlIGNvaGVyZW5jeSBwcm90b2NvbHMsIGJ1dCBnZW5lcmFsbHkgc3BlYWtpbmcsIHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCB0aGUgYFBBR0VfUE9PTGAgb3B0aW9u4oCmIHRoYXQgb25lIG5lZWRzIHNvbWUgbW9yZSB0aG91Z2h0LiBJ4oCZdmUgZGVhbHQgd2l0aCBtZW1vcnkgcG9vbHMgYmVmb3JlLCBidXQgdGhlIHNwZWNpZmljcyBhbHdheXMgbWF0dGVyLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgcGFnZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24uIElzIGl0IGZvciBnZW5lcmFsLXB1cnBvc2UgbWVtb3J5LCBvciBpcyBpdCBzcGVjaWZpY2FsbHkgZ2VhcmVkIHRvd2FyZHMgRE1BIGJ1ZmZlcnM/IEhvdyBkb2VzIGl0IGludGVyYWN0IHdpdGggdGhlIHZpcnR1YWwgbWVtb3J5IHN5c3RlbT8gRG9lcyBpdCBpbnRyb2R1Y2UgYW55IGZyYWdtZW50YXRpb24gY29uY2VybnM/IFRoZSBkZXZpbCYjMzk7cyBpbiB0aGUgZGV0YWlscywgc28gSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyB0aGUgcGFnZSBwb29sIGltcGxlbWVudGF0aW9uIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBtZW1vcnkgbWFuYWdlbWVudCB1bml0cy4gSSBuZWVkIHRvIGRldGVybWluZSBob3cgaXQgYmVuZWZpdHMgbWVtb3J5IGVmZmljaWVuY3kgYW5kIHdoZXRoZXIgaXQgaW1wcm92ZXMgb3IgZGVncmFkZXMgcGVyZm9ybWFuY2UsIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xuLS1cbm5ldC9LY29uZmlnLTQ5MC1cbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXG5uZXQvS2NvbmZpZy00OTItXHRib29sXG5uZXQvS2NvbmZpZy00OTMtXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xubmV0L0tjb25maWctNDk1LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzAyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG5ldC9LY29uZmlnYCwgd2hpY2ggaXMgdGhlIGRlIGZhY3RvIHN0YW5kYXJkIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN0cnVjdHVyZS4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IHRoZSBzcGVjaWZpY3MgSSYjMzk7bSBhZnRlciBhcmUgbGlrZWx5IGluIHRoZSBnZW5lcmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzZWN0aW9uLCBhbmQgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYXJvdW5kIGxpbmUgNDkxIHRvIHNlZSBpZiB0aGF0IHJpbmdzIGEgYmVsbC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIOKAkyB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgb2Z0ZW4gb3JnYW5pemVkIGxvZ2ljYWxseSwgYW5kIHRoYXQgcG9zaXRpb24gZmVlbHMgbGlrZSBhIGdvb2QgaW5pdGlhbCBiZXQuIEZyb20gdGhlcmUgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBkZXBlbmRlbmNpZXMsIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljLCBhbmQgcXVpY2tseSBpc29sYXRlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDg1Olx0XHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxuIDQ4NjpcdFxuIDQ4NzpcdGNvbmZpZyBORVRfREVWTElOS1xuIDQ4ODpcdFx0Ym9vbFxuIDQ4OTpcdFx0ZGVmYXVsdCBuXG4gNDkwOlx0XG4gNDkxOlx0Y29uZmlnIFBBR0VfUE9PTFxuIDQ5MjpcdFx0Ym9vbFxuIDQ5MzpcdFxuIDQ5NDpcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbiA0OTU6XHRcdGRlZmF1bHQgblxuIDQ5NjpcdFx0Ym9vbCBcJiMzNDtQYWdlIHBvb2wgc3RhdHNcJiMzNDtcbiA0OTc6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gNDk4Olx0XHRoZWxwXG4gNDk5Olx0XHQgIEVuYWJsZSBwYWdlIHBvb2wgc3RhdGlzdGljcyB0byB0cmFjayBwYWdlIGFsbG9jYXRpb24gYW5kIHJlY3ljbGluZ1xuIDUwMDpcdFx0ICBpbiBwYWdlIHBvb2xzLiBUaGlzIG9wdGlvbiBpbmN1cnMgYWRkaXRpb25hbCBDUFUgY29zdCBpbiBhbGxvY2F0aW9uXG4gNTAxOlx0XHQgIGFuZCByZWN5Y2xlIHBhdGhzIGFuZCBhZGRpdGlvbmFsIG1lbW9yeSBjb3N0IHRvIHN0b3JlIHRoZSBzdGF0aXN0aWNzLlxuIDUwMjpcdFx0ICBUaGVzZSBzdGF0aXN0aWNzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBpZlxuIDUwMzpcdFx0ICB0aGUgZHJpdmVyIHVzaW5nIHRoZSBwYWdlIHBvb2wgc3VwcG9ydHMgZXhwb3J0aW5nIHRoaXMgZGF0YS5cbiA1MDQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxODgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gT3B0aW9ucyBmb3IgT3B0aW1pemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIHRoaW5raW5nIGFib3V0IGhvdyB0byBvcHRpbWl6ZSBpdC4gRmlyc3QsIEkgc2VlIHRoYXQgYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuLiBNYWtlcyBzZW5zZSB0byBlbmFibGUgdGhhdDsgaXQgc2hvdWxkIGJlIGJlbmVmaWNpYWwuIFNvLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgZ29pbmcgaW50byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIE5vdywgSSBzaG91bGQgYWRkIGBETUFfU0hBUkVEX0JVRkZFUmAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBhcyB3ZWxsLgoKSG9sZCBvbiwgSSBzZWUgdGhhdCBgTkVUX0RFVk1FTWAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgeWAuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYXV0b21hdGljYWxseSBlbmFibGVkIGlmIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgcmlnaHQ/IEhtbSwgaXMgaXQgKnNhZmVyKiB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgIGFueXdheT8gTm8sIHRoYXQmIzM5O3MgcHJvYmFibHkgb3ZlcmtpbGwgYW5kIHVubmVjZXNzYXJ5LCBhbmQgcG90ZW50aWFsbHkgY29uZnVzaW5nLiBFdmVuIHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgYE5FVF9ERVZNRU1gIGFzIG5vdCBiZWluZyB1c2VyIHNlbGVjdGFibGUgKG5vIHByb21wdCksIEkgdGhpbmsgaXQmIzM5O3Mgb2theSB0byBsaXN0IGl0LiBBY3R1YWxseSwgd2FpdCBhIG1pbnV0ZSwgYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAgYWxzbyBoYXZlIG5vIHByb21wdHMuCgpUaGF0JiMzOTtzIG9kZC4gSWYgdGhleSYjMzk7cmUgbm90IHVzZXItc2VsZWN0YWJsZSwgaG93IGNhbiB0aGV5IGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUgS2NvbmZpZyBzeXN0ZW0/IFRoZXkgbXVzdCBiZSBzZWxlY3RlZCBieSBvdGhlciBjb25maWd1cmF0aW9ucy4gU28sIGl0JiMzOTtzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSB3aGF0IGNvbmZpZ3Mgc2VsZWN0IGBETUFfU0hBUkVEX0JVRkZFUmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdD02NT1BbnkgZXhwb3J0ZXJzIG9yIHVzZXJzIG9mIHRoZSBkbWEtYnVmIGJ1ZmZlciBzaGFyaW5nIGZyYW1ld29yayBtdXN0IGhhdmUgYVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0OjY2OiYjMzk7c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSJiMzOTsgaW4gdGhlaXIgcmVzcGVjdGl2ZSBLY29uZmlncy5cbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdC02Ny1cbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZz02PWNvbmZpZyBEUk1fQUNDRUxfSEFCQU5BTEFCU1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnLTEyLVx0c2VsZWN0IEhXTU9OXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZzoxMzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL0tjb25maWctMTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZz00PWNvbmZpZyBTWU5DX0ZJTEVcbi0tXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02LVx0ZGVmYXVsdCBuXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy04LVx0aGVscFxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTUyPWNvbmZpZyBETUFCVUZfS1VOSVRfVEVTVFxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTU0LVx0ZGVwZW5kcyBvbiBLVU5JVFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc6NTU6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTU2LVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZz02MD1tZW51Y29uZmlnIERNQUJVRl9IRUFQU1xuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjEtXHRib29sIFwmIzM0O0RNQS1CVUYgVXNlcmxhbmQgTWVtb3J5IEhlYXBzXCYjMzQ7XG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo2MjpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjMtXHRoZWxwXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9OD1tZW51Y29uZmlnIERSTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEzLVx0c2VsZWN0IEkyQ1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTQ6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1LVx0c2VsZWN0IFNZTkNfRklMRVxuLS1cbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnPTY9Y29uZmlnIFRFR1JBX0hPU1QxWFxuLS1cbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZzo5Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZy0xMC1cdHNlbGVjdCBURUdSQV9IT1NUMVhfQ09OVEVYVF9CVVNcbi0tXG5kcml2ZXJzL2lpby9LY29uZmlnPTE1PWNvbmZpZyBJSU9fQlVGRkVSXG5kcml2ZXJzL2lpby9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnVmZmVyIHN1cHBvcnQgd2l0aGluIElJT1wmIzM0O1xuZHJpdmVycy9paW8vS2NvbmZpZzoxNzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9paW8vS2NvbmZpZy0xOC1cdGhlbHBcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTctXHRkZXBlbmRzIG9uICFBTFBIQVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6ODpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOS1cdHNlbGVjdCBJUlFfUE9MTFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTQ0PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUVNXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDctXHRkZXBlbmRzIG9uIE1NVVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDg6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9Mzk9Y29uZmlnIElPTU1VRkRfVEVTVFxuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQ0LVx0ZGVwZW5kcyBvbiBJT01NVV9QVF9BTURWMT15IHx8IElPTU1VRkQ9SU9NTVVfUFRfQU1EVjFcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnOjQ1Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy00Ni1cdHNlbGVjdCBJT01NVUZEX0RSSVZFUlxuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTM9Y29uZmlnIFZJREVPQlVGMl9DT1JFXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzo0Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy01LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0xMz1jb25maWcgVklERU9CVUYyX0RNQV9DT05USUdcbi0tXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0xNi1cdHNlbGVjdCBWSURFT0JVRjJfTUVNT1BTXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzoxNzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMTgtXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0xOT1jb25maWcgVklERU9CVUYyX1ZNQUxMT0Ncbi0tXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yMi1cdHNlbGVjdCBWSURFT0JVRjJfTUVNT1BTXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzoyMzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMjQtXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWc9MT1jb25maWcgVklERU9fVEVHUkFfVkRFXG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWctNi1cdGRlcGVuZHMgb24gVklERU9fREVWXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZzo3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy04LVx0c2VsZWN0IElPTU1VX0lPVkFcbi0tXG5kcml2ZXJzL21pc2MvS2NvbmZpZz0zMDE9Y29uZmlnIFFDT01fRkFTVFJQQ1xuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnLTMwNC1cdGRlcGVuZHMgb24gUlBNU0dcbmRyaXZlcnMvbWlzYy9LY29uZmlnOjMwNTpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9taXNjL0tjb25maWctMzA2LVx0c2VsZWN0IFFDT01fU0NNXG4tLVxuZHJpdmVycy90ZWUvS2NvbmZpZz0zPW1lbnVjb25maWcgVEVFXG4tLVxuZHJpdmVycy90ZWUvS2NvbmZpZy02LVx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxuZHJpdmVycy90ZWUvS2NvbmZpZzo3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL3RlZS9LY29uZmlnLTgtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1Jcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxOTM6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZz0xNDU9Y29uZmlnIFhFTl9HTlRERVZfRE1BQlVGXG4tLVxuZHJpdmVycy94ZW4vS2NvbmZpZy0xNDctXHRkZXBlbmRzIG9uIFhFTl9HTlRERVYgXHUwMDI2XHUwMDI2IFhFTl9HUkFOVF9ETUFfQUxMT0NcbmRyaXZlcnMveGVuL0tjb25maWc6MTQ4Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0OS1cdGhlbHBcbi0tXG5zYW1wbGVzL0tjb25maWc9MjMwPWNvbmZpZyBTQU1QTEVfVkZJT19NREVWX01CT0NIU1xuLS1cbnNhbXBsZXMvS2NvbmZpZy0yMzMtXHRzZWxlY3QgVkZJT19NREVWXG5zYW1wbGVzL0tjb25maWc6MjM0Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5zYW1wbGVzL0tjb25maWctMjM1LVx0aGVscFxuLS1cbnNvdW5kL3NvYy9mc2wvS2NvbmZpZz02PWNvbmZpZyBTTkRfU09DX0ZTTF9BU1JDXG4tLVxuc291bmQvc29jL2ZzbC9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIEhBU19ETUFcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZzo5Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5zb3VuZC9zb2MvZnNsL0tjb25maWctMTAtXHRzZWxlY3QgUkVHTUFQX01NSU9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0NTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIERNQV9TSEFSRURfQlVGRkVSIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBETUFfU0hBUkVEX0JVRkZFUmAuIEkgc2VlIGl0JiMzOTtzIGRlZmluZWQgd2l0aCBgYm9vbGAgYW5kIGEgYGRlZmF1bHQgbmAuIEhtbSwgaW50ZXJlc3RpbmcuIEl0IGRvZXNuJiMzOTt0IGhhdmUgYSBkaXJlY3QgcHJvbXB0LCB3aGljaCBtZWFucyB5b3UgY2FuJiMzOTt0ICpleHBsaWNpdGx5KiBlbmFibGUgaXQgZnJvbSB0aGUgdG9wIGxldmVsIGluIHRoZSBgLmNvbmZpZ2AgZmlsZS4gSXQgbXVzdCBiZSBzZWxlY3RlZCBzb21laG93LiBMZXQgbWUgY2hlY2suLi4gd2FpdCwgYGRyaXZlcnMvYmFzZS9LY29uZmlnYCAqYWxzbyogZGVmaW5lcyBgY29uZmlnIERNQV9TSEFSRURfQlVGRkVSYCwgYW5kIGl0IHRvbyBpcyBhIGBib29sYCB3aXRoIG5vIHByb21wdC4gUmlnaHQsIGxldCBtZSBnbyBiYWNrIHRvIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgYW5kIHRha2UgYW5vdGhlciBsb29rOyBJIG11c3QgYmUgbWlzc2luZyBzb21ldGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxNTpcdGNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxuIDIxNjpcdFx0Ym9vbFxuIDIxNzpcdFx0ZGVmYXVsdCBuXG4gMjE4Olx0XHRzZWxlY3QgSVJRX1dPUktcbiAyMTk6XHRcdGhlbHBcbiAyMjA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZnJhbWV3b3JrIGZvciBidWZmZXItc2hhcmluZyBiZXR3ZWVuXG4gMjIxOlx0XHQgIG11bHRpcGxlIGRyaXZlcnMuIEEgYnVmZmVyIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGZpbGUgdXNpbmcgZHJpdmVyXG4gMjIyOlx0XHQgIEFQSXMgZXh0ZW5zaW9uOyB0aGUgZmlsZSYjMzk7cyBkZXNjcmlwdG9yIGNhbiB0aGVuIGJlIHBhc3NlZCBvbiB0byBvdGhlclxuIDIyMzpcdFx0ICBkcml2ZXIuXG4gMjI0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODY0CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBubyBwcm9tcHQsIHNvIEkgY2FuJiMzOTt0IGRpcmVjdGx5IGVuYWJsZSBgRE1BX1NIQVJFRF9CVUZGRVJgIGluIGBFbmFibGVDb25maWdzYC4gS2J1aWxkIHdpbGwganVzdCBpZ25vcmUgaXQuIFdhaXQsIGRvZXMgc3l6a2FsbGVyIHNvbWVob3cgZ2V0IGFyb3VuZCB0aGlzPyBObywgaXQganVzdCBhZGRzIGBDT05GSUdfWFhYPXlgIGFuZCBydW5zIGBtYWtlIG9sZGRlZmNvbmZpZ2AuIElmIHRoZXJlJiMzOTtzIG5vIHByb21wdCAqYW5kKiBpdCYjMzk7cyBub3Qgc2VsZWN0ZWQgYnkgYW55dGhpbmcgZWxzZSwgaXQgZ2V0cyBkcm9wcGVkLCBhcyBleHBlY3RlZC4KCkJ1dCwgaGFuZyBvbiwgYE5FVF9ERVZNRU1gIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgLCBzbyBpdCAqc2hvdWxkKiBiZSBlbmFibGVkIGF1dG9tYXRpY2FsbHkgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgc2F0aXNmaWVkLiBSaWdodCwgdGhlIGRlcGVuZGVuY2llcyBhcmUgYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIGZpbmQgc29tZXRoaW5nIHRvIGVuYWJsZSB0aGF0IHNlbGVjdHMgKmJvdGgqIGBETUFfU0hBUkVEX0JVRkZFUmAgKmFuZCogYFBBR0VfUE9PTGAuCgpOb3csIHdhaXQgYSBtaW51dGUuLi4gYFBBR0VfUE9PTGAgaXMgYWxzbyBhIGBib29sYCB3aXRob3V0IGEgcHJvbXB0LiBIbW0sIEkgbmVlZCB0byBjaGVjayB3aGF0IGFjdHVhbGx5IHNlbGVjdHMgYFBBR0VfUE9PTGAgdG8gc2VlIGhvdyBJIGNhbiBnZXQgaXQgcHVsbGVkIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cdHNlbGVjdCBORVRfU0hBUEVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cdHNlbGVjdCBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiA2NEJJVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1Bcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXHRzZWxlY3QgRklYRURfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7Q29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcJiMzNDsgaWYgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cdHNlbGVjdCBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cdHNlbGVjdCBWQ0FQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXHRzZWxlY3QgTUZEX1NZU0NPTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgUEFHRV9QT09MYCBpcyBhbG1vc3QgY2VydGFpbmx5IGVuYWJsZWQgaW4gc3l6a2FsbGVyIGNvbmZpZ3MuIEkgbWVhbiwgYEJQRl9TWVNDQUxMYCB1bmRlciBgTkVUYCwgYFZFVEhgLCBhbmQgYFZJUlRJT19ORVRgIGFsbCBzZWxlY3QgaXQuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdGlvbi4KCk5vdywgd2hhdCBhYm91dCBgRE1BX1NIQVJFRF9CVUZGRVJgPyBMZXQgbWUgc2VlLi4uIGBTWU5DX0ZJTEVgLCBgRFJNYCwgYElORklOSUJBTkRfVVNFUl9NRU1gLCBgVklERU9CVUYyX0NPUkVgLCBhbmQgYFVTQl9GX0ZTYCBhbGwgc2VsZWN0IGl0LiBTbywgeWVhaCwgKnZlcnkqIGxpa2VseSBlbmFibGVkIHRoZXJlIHRvby4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHNhZmUgdGhvdWdoLCBJIHdhcyBjb25zaWRlcmluZyBhZGRpbmcgYE5FVF9ERVZNRU1gIHRvIHRoZSBFbmFibGVDb25maWdzLiBCdXQsIGhhbmcgb24uLi5zeXprYWxsZXIganVzdCBhcHBlbmRzIGBDT05GSUdfTkVUX0RFVk1FTT15YCBhbmQgc2luY2UgdGhhdCYjMzk7cyBgZGVmX2Jvb2wgeWAsIGl0IHdpbGwgYmUgZW5hYmxlZCBvbmx5IGlmIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZC4gSWYgdGhleSBhcmVuJiMzOTt0LCBpdCB3b24mIzM5O3QgYmUuCgpTbywgaW5zdGVhZCBvZiBleHBsaWNpdGx5IGVuYWJsaW5nIGl0LCBJIHdvbmRlciBpZiBJIHNob3VsZCBsaXN0IHNvbWV0aGluZyBsaWtlIGBEUk1gIG9yIGBTWU5DX0ZJTEVgIHRvIGd1YXJhbnRlZSBgRE1BX1NIQVJFRF9CVUZGRVJgIGlzIGVuYWJsZWQ/IEhtbSwgYERSTWAgaXMgYSB3aG9sZSBtYXNzaXZlIHN1YnN5c3RlbS4uLiBJJiMzOTtkIHJhdGhlciBhdm9pZCB0aGF0LiBgU1lOQ19GSUxFYCBpcyBtdWNoIHNtYWxsZXIgYW5kIG1vcmUgdGFyZ2V0ZWQuIFJpZ2h0LCBsZXQmIzM5O3MgZ28gd2l0aCBgU1lOQ19GSUxFYC4gSSYjMzk7bGwgY2hlY2sgdGhhdCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1lOQ19GSUxFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTI9bWVudSBcJiMzNDtETUFCVUYgb3B0aW9uc1wmIzM0O1xuZHJpdmVycy9kbWEtYnVmL0tjb25maWctMy1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjQ6Y29uZmlnIFNZTkNfRklMRVxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNS1cdGJvb2wgXCYjMzQ7RXhwbGljaXQgU3luY2hyb25pemF0aW9uIEZyYW1ld29ya1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI0NQoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiAxMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbiBmb3IgWmVyb2NvcHkgYW5kIFNLQiBGcmFnbWVudHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIHRoZSBgU1lOQ19GSUxFYCBjb25maWcgbG9va3MgZGlyZWN0bHkgcmVsZXZhbnQgYmFzZWQgb24gaXRzIHByb21wdCwgc28gSSYjMzk7bGwgZGVmaW5pdGVseSBlbmFibGUgdGhhdCwgYWRkaW5nIGl0IHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gQWxzbywgc2luY2UgYFZFVEhgIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIsIGFuZCB0aGUgcGF0Y2ggbWVudGlvbnMgYE5FVF9ERVZNRU1gLCBJJiMzOTtsbCBpbmNsdWRlIGBORVRfREVWTUVNYCBhcyB3ZWxsLiBGb3Igbm93LCBJJiMzOTtsbCBrZWVwIGl0IHNpbXBsZSBhbmQgbGlzdCBvbmx5IGBORVRfREVWTUVNYCBhbmQgYFNZTkNfRklMRWAuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGNoYW5nZXMgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBhbiBgLUVGQVVMVGAgdG8gYC1FTVNHU0laRWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIHdoZW4gZGVhbGluZyB3aXRoIGludmFsaWQgZGF0YS4gRGVmaW5pdGVseSBgV29ydGhGdXp6aW5nOiB0cnVlYC4KCk5vdyBmb3IgdGhlIGBGb2N1c1N5bWJvbHNgLiBJIG5lZWQgdG8gYmUgc3RyYXRlZ2ljIGhlcmUuIEkgd2FudCB0byB0YXJnZXQgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBjaGFuZ2VkIGJ5IHRoZSBwYXRjaCwgc28gdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmU6ICBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCwgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCwgYW5kIGBza2JfemVyb2NvcHlgLiBBbHNvLCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCwgc2luY2UgdGhleSBhcmUgY2FsbGVkIGJ5IGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuICBJIGNoZWNrZWQgd2l0aCBhIHF1aWNrIGBncmVwYCBmb3IgYEVYUE9SVF9TWU1CT0wuKnplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgYW5kIGZvdW5kIG5vdGhpbmcuIEhvd2V2ZXIsIGl0JiMzOTtzIG5vdCBzdGF0aWMsIHNvIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEga2FsbHN5bXMuIFRoYXQmIzM5O3MgZ29vZC4gU2luY2UgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCAqaXMqIHN0YXRpYywgSSBzaG91bGQgYXZvaWQgaXQuIFRoZSBgdGNwX3NlbmRtc2dfbG9ja2VkYCBmdW5jdGlvbiBpcyBhIGhvdCBwYXRoLCBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgcmVhY2hlZCBxdWlja2x5LiBTbyBJIGFtIGdvaW5nIHRvIGF2b2lkIGl0LgoKQWZ0ZXIgcmV2aWV3aW5nIHRoZSBwYXRjaCBhZ2FpbiwgSSBzZWUgaXQgbW9kaWZpZXMgaG93IGBza2JfZnJhZ3NfcmVhZGFibGVgIGlzIHVzZWQuICBTcGVjaWZpY2FsbHkgdGhlIGNoYW5nZSBpbnZvbHZlcyByZXR1cm5pbmcgYC1FTVNHU0laRWAgaW5zdGVhZCBvZiBgLUVGQVVMVGAuIFNvIEkmIzM5O2xsIGFkZCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdDoKLSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgCi0gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAKLSBgc2tiX3plcm9jb3B5YAoKU28sIG15IGZpbmFsIHBsYW4gaXM6CgpDb25maWdzOgotIGBORVRfREVWTUVNYAotIGBTWU5DX0ZJTEVgCgpGb2N1c1N5bWJvbHM6Ci0gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYAotIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gCi0gYHNrYl96ZXJvY29weWAKClRoZSBwYXRjaCBpcyBjaGFuZ2luZyBjcml0aWNhbCBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgZGVhbGluZyB3aXRoIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYHNrYmAgZGF0YSBhbmQgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiBmcmFnbWVudHMsIGFuZCBjaGFuZ2luZyBlcnJvciBjb2Rlcy4gVGhpcyBjbGVhcmx5IHdhcnJhbnRzIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDEyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWTUVNJiMzNDssCiAgICAmIzM0O1NZTkNfRklMRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3plcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciYjMzQ7LAogICAgJiMzNDtza2JfemVyb2NvcHkmIzM0OywKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0RFVk1FTSYjMzQ7LAogICAgJiMzNDtTWU5DX0ZJTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5JiMzNDssCiAgICAmIzM0O19femVyb2NvcHlfc2dfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weV9pdGVyX3N0cmVhbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zICh6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIsIHNrYl96ZXJvY29weSwgdGNwX3NlbmRtc2dfbG9ja2VkKSB0byBoYW5kbGUgdW5yZWFkYWJsZSBza2IgZnJhZ21lbnRzIGFuZCBmaXggZXJyb3IgY29kZXMgZm9yIGRldm1lbSBhbmQgaXRlciB6ZXJvY29weSBwYXRocy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0NzoxOS40OTYzNzc2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQyMzI4OTg3NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0RFVk1FTVwiLFxuICAgIFwiU1lOQ19GSUxFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyXCIsXG4gICAgXCJza2JfemVyb2NvcHlcIixcbiAgICBcIl9femVyb2NvcHlfc2dfZnJvbV9pdGVyXCIsXG4gICAgXCJza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zICh6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIsIHNrYl96ZXJvY29weSwgdGNwX3NlbmRtc2dfbG9ja2VkKSB0byBoYW5kbGUgdW5yZWFkYWJsZSBza2IgZnJhZ21lbnRzIGFuZCBmaXggZXJyb3IgY29kZXMgZm9yIGRldm1lbSBhbmQgaXRlciB6ZXJvY29weSBwYXRocy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjE5LjQ5NjM4MjgxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzNDgzMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyIDEyOjQ3OjE4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RhdGFncmFtLmMgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuaW5kZXggMTczYjVkOTdiZDQwOS4uNmY4ZmZkNjFiY2FiNCAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuKysrIGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xcbkBAIC02MzgsNyArNjM4LDcgQEAgaW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuIFxcbiBcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbi1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4gXFxuIFxcdHdoaWxlIChsZW5ndGggXFx1MDAyNlxcdTAwMjYgaW92X2l0ZXJfY291bnQoZnJvbSkpIHtcXG4gXFx0XFx0c3RydWN0IHBhZ2UgKmhlYWQsICpsYXN0X2hlYWQgPSBOVUxMO1xcbkBAIC03MTMsNyArNzEzLDcgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbiBcXHRzdHJ1Y3QgbmV0X2lvdiAqbmlvdjtcXG4gXFxuIFxcdGlmIChpIFxcdTAwMjZcXHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbi1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4rXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4gXFxuIFxcdC8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZVxcbiBcXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmNcXG5pbmRleCBiYTNkYmFjODBmYjQ5Li5hZWJlOGVhNzQ3NzZhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL3NrYnVmZi5jXFxuKysrIGIvbmV0L2NvcmUvc2tidWZmLmNcXG5AQCAtMzkyOCw2ICszOTI4LDkgQEAgc2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBsZW4sIGludCBobGVuKVxcbiBcXHR9XFxuIFxcdHNrYl9zaGluZm8odG8pLVxcdTAwM2Vucl9mcmFncyA9IGo7XFxuIFxcbitcXHRpZiAoaSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgZnJvbS1cXHUwMDNldW5yZWFkYWJsZSlcXG4rXFx0XFx0dG8tXFx1MDAzZXVucmVhZGFibGUgPSAxO1xcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5KTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xcbmluZGV4IDQ1NTQ0MWYxYjY5NDkuLjE4NmEzNmM2OTg3OTggMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwLmNcXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xcbkBAIC0xMjc4LDYgKzEyNzgsMTEgQEAgaW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuIFxcdFxcdGlmIChjb3B5IFxcdTAwM2UgbXNnX2RhdGFfbGVmdChtc2cpKVxcbiBcXHRcXHRcXHRjb3B5ID0gbXNnX2RhdGFfbGVmdChtc2cpO1xcbiBcXG4rXFx0XFx0aWYgKHpjICE9IE1TR19aRVJPQ09QWSBcXHUwMDI2XFx1MDAyNiB1bmxpa2VseSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKSB7XFxuK1xcdFxcdFxcdHRjcF9tYXJrX3B1c2godHAsIHNrYik7XFxuK1xcdFxcdFxcdGdvdG8gbmV3X3NlZ21lbnQ7XFxuK1xcdFxcdH1cXG4rXFxuIFxcdFxcdGlmICh6YyA9PSAwKSB7XFxuIFxcdFxcdFxcdGJvb2wgbWVyZ2UgPSB0cnVlO1xcbiBcXHRcXHRcXHRpbnQgaSA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjIwLjAwMDU0MTY1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE5MzcyODcxODg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJTWU5DX0ZJTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weVwiLFxuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjFmYmNkMmYwZTI1Y2UyNTUwZGVhMzI2YjA1MDIzNTI3MTE3NGU1OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTI6NDc6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xuaW5kZXggMTczYjVkOTdiZDQwOS4uNmY4ZmZkNjFiY2FiNCAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2RhdGFncmFtLmNcbisrKyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbkBAIC02MzgsNyArNjM4LDcgQEAgaW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0aW50IGZyYWcgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4gXG4gXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxuLVx0XHRyZXR1cm4gLUVGQVVMVDtcbitcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiBcbiBcdHdoaWxlIChsZW5ndGggXHUwMDI2XHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XG4gXHRcdHN0cnVjdCBwYWdlICpoZWFkLCAqbGFzdF9oZWFkID0gTlVMTDtcbkBAIC03MTMsNyArNzEzLDcgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4gXG4gXHRpZiAoaSBcdTAwMjZcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4tXHRcdHJldHVybiAtRUZBVUxUO1xuK1x0XHRyZXR1cm4gLUVNU0dTSVpFO1xuIFxuIFx0LyogRGV2bWVtIGZpbGxpbmcgd29ya3MgYnkgdGFraW5nIGFuIElPVkVDIGZyb20gdGhlIHVzZXIgd2hlcmUgdGhlXG4gXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuY1xuaW5kZXggYmEzZGJhYzgwZmI0OS4uYWViZThlYTc0Nzc2YSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL3NrYnVmZi5jXG4rKysgYi9uZXQvY29yZS9za2J1ZmYuY1xuQEAgLTM5MjgsNiArMzkyOCw5IEBAIHNrYl96ZXJvY29weShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgbGVuLCBpbnQgaGxlbilcbiBcdH1cbiBcdHNrYl9zaGluZm8odG8pLVx1MDAzZW5yX2ZyYWdzID0gajtcbiBcbitcdGlmIChpIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBmcm9tLVx1MDAzZXVucmVhZGFibGUpXG4rXHRcdHRvLVx1MDAzZXVucmVhZGFibGUgPSAxO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuY1xuaW5kZXggNDU1NDQxZjFiNjk0OS4uMTg2YTM2YzY5ODc5OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcC5jXG4rKysgYi9uZXQvaXB2NC90Y3AuY1xuQEAgLTEyNzgsNiArMTI3OCwxMSBAQCBpbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcbiBcdFx0aWYgKGNvcHkgXHUwMDNlIG1zZ19kYXRhX2xlZnQobXNnKSlcbiBcdFx0XHRjb3B5ID0gbXNnX2RhdGFfbGVmdChtc2cpO1xuIFxuK1x0XHRpZiAoemMgIT0gTVNHX1pFUk9DT1BZIFx1MDAyNlx1MDAyNiB1bmxpa2VseSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKSB7XG4rXHRcdFx0dGNwX21hcmtfcHVzaCh0cCwgc2tiKTtcbitcdFx0XHRnb3RvIG5ld19zZWdtZW50O1xuK1x0XHR9XG4rXG4gXHRcdGlmICh6YyA9PSAwKSB7XG4gXHRcdFx0Ym9vbCBtZXJnZSA9IHRydWU7XG4gXHRcdFx0aW50IGkgPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlbnJfZnJhZ3M7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0NzoyMC4wMDA1NDQwMzdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTAwMzczMjkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgUGF0Y2ggZm9yIFJvYnVzdG5lc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCB0b3VjaGVzIHNvbWUgcHJldHR5IGNvcmUgbmV0d29ya2luZyBjb2RlOiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AsIGBuZXQvY29yZS9za2J1ZmYuY2AsIGFuZCBgbmV0L2lwdjQvdGNwLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIHNvbWUgc3VidGxlLCBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsLCBjaGFuZ2VzIHJlbGF0ZWQgdG8gemVyby1jb3B5IG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCBob3cgd2UgaGFuZGxlIHVucmVhZGFibGUgc2tiIGZyYWdtZW50cyBpbiBmdW5jdGlvbnMgbGlrZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCDigJMgcmV0dXJuaW5nIGAtRU1TR1NJWkVgIGluc3RlYWQgb2YgYC1FRkFVTFRgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gVGhlcmUncyBhbHNvIHNvbWUgbG9naWMgYWRkZWQgaW4gYHNrYl96ZXJvY29weWAgdG8gcHJvcGFnYXRlIHRoZSB1bnJlYWRhYmxlIGZsYWcsIGFuZCBhIG1vZGlmaWNhdGlvbiB0byBgdGNwX3NlbmRtc2dfbG9ja2VkYCB0aGF0IG1hcmtzIHB1c2ggYW5kIGp1bXBzIGlmIGAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgLlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaW1wYWN0aW5nIFRDUCwgc2tidWZmIG1hbmFnZW1lbnQsIGFuZCBkYXRhZ3JhbSBoYW5kbGluZyDigJMgc28sIGFzIGFueSBleHBlcnQgaW4gbmV0d29ya2luZywgbXkgZmlyc3QgdGhvdWdodCBpcyBmdXp6aW5nLiBXZSBuZWVkIHRvIHN1YmplY3QgdGhlc2UgY2hhbmdlcyB0byByaWdvcm91cyB0ZXN0aW5nIHRvIGZsdXNoIG91dCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgb3IgcmVncmVzc2lvbnMuXG5cbkkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0byB0YXJnZXQgd2l0aCBteSBmdXp6aW5nIGVmZm9ydHMuIEZyb20gdGhlIHBhdGNoIGl0c2VsZiwgdGhlIHByaW1lIHN1c3BlY3RzIGFyZTpcblxuKiAgIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgXG4qICAgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYFxuKiAgIGBza2JfemVyb2NvcHlgXG4qICAgYHRjcF9zZW5kbXNnX2xvY2tlZGBcblxuSG1tLCBgdGNwX3NlbmRtc2dfbG9ja2VkYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGF0J3MgYSBiaXQgb2YgYSB0cmlja3kgb25lOyBmdXp6aW5nIGEgaG90LXBhdGggY291bGQgaW50cm9kdWNlIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLiBEbyBJIGF2b2lkIGl0IGluaXRpYWxseSwgb3IgZG8gSSBmb2N1cyBvbiB0aGF0IGNvZGUgZm9yIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHk/IGBza2JfemVyb2NvcHlgIGlzIGFsc28gcXVpdGUgY29tbW9uLCBzbyB0aGF0IG9uZSBpcyBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2suIEknbSBsZWFuaW5nIHRvd2FyZCBzdGFydGluZyB3aXRoIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGFzIGdvb2QgaW5pdGlhbCBjYW5kaWRhdGVzLiBUaGV5J3JlIG1vcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgbG9naWMgY2hhbmdlcyBpbiB0aGUgcGF0Y2ggYW5kIGNhbiBzdGlsbCBiZSBmdXp6ZWQgd2l0aG91dCBiZWluZyBhcyBkaXNydXB0aXZlLlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUgbWFrZSBzdXJlIHRoYXQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBpcyBub3Qgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6MjYuOTAwOTIwMTQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDg4MjE3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGF0YWdyYW0uYz03MDY9c3RhdGljIGludFxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzA3Onplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcwOC1cXHRcXHRcXHQgICAgICBpbnQgbGVuZ3RoLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjAtXFx0ZWxzZSBpZiAoYmluZGluZylcXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc2MTpcXHRcXHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShza2IsIGZyb20sIGxlbmd0aCwgYmluZGluZyk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjItXFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0NzoyOS43NDk3NTA0NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk5Mjc4NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgemVyb2NvcHkgU0tCIEZpbGwgRnVuY3Rpb25zKipcblxuT2theSwgc28gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBpcyBhICpzdGF0aWMqIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHNjb3BlIGFuZCBwb3RlbnRpYWwgY2FsbCBzaXRlcy4gR2l2ZW4gdGhhdCBpdCdzIHN0YXRpYywgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBiZWluZyAqZGlyZWN0bHkqIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgY3VycmVudCBjb2RlYmFzZSB0byB0cnVseSB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBkYXRhIGZsb3cuIFJpZ2h0LCB0aGUgY29kZSBjb21tZW50IHNheXMgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAuIE5vdywgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCB1bmRlcnN0YW5kaW5nLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGRpcmVjdGx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGF0IHRoYXQgbGV2ZWwgdG8gZ2V0IHRoZSBiaWcgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgwMCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjMyLjg0OTAzMjE5MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTI2MTQxMTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjM9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY3LVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2ODppbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY5LVxcdFxcdFxcdFxcdHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwgc2l6ZV90IGxlbmd0aCk7XFxuLS1cXG5pb191cmluZy9uZXQuYz0xNDUwPXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyX2lvdmVjKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pb191cmluZy9uZXQuYy0xNDUzLVxcdHNrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZChza2IpO1xcbmlvX3VyaW5nL25ldC5jOjE0NTQ6XFx0cmV0dXJuIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XFxuaW9fdXJpbmcvbmV0LmMtMTQ1NS19XFxuLS1cXG5pb191cmluZy9uZXQuYz0xNDU3PXN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pb191cmluZy9uZXQuYy0xNDY5LVxcdGVsc2UgaWYgKHVubGlrZWx5KCFza2JfemNvcHlfbWFuYWdlZChza2IpKSlcXG5pb191cmluZy9uZXQuYzoxNDcwOlxcdFxcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xcbmlvX3VyaW5nL25ldC5jLTE0NzEtXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzMz1FWFBPUlRfU1lNQk9MKHNrYl9jb3B5X2RhdGFncmFtX2Zyb21faXRlcl9mdWxsKTtcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTYzNC1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjYzNTppbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzYtXFx0XFx0XFx0XFx0c3RydWN0IGlvdl9pdGVyICpmcm9tLCBzaXplX3QgbGVuZ3RoKVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjItXFx0ZWxzZVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYzOlxcdFxcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjM1Ljc3NTE4MDA0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDA5NjA4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipQb3RlbnRpYWwgWmVyby1Db3B5IE9wdGltaXphdGlvbiBQb2ludHMgaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZXNlIGZ1bmN0aW9ucy4gSXQgYXBwZWFycyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBpcyBleHBvc2VkLCBtZWFuaW5nIGl0J3MgbGlrZWx5IGludGVuZGVkIGZvciBicm9hZGVyIHVzZSDigJMgaW50ZXJlc3RpbmcuIEFuZCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIG1pZ2h0IGFsc28gYmUgYSB2YWx1YWJsZSB0YXJnZXQgZm9yIG9wdGltaXphdGlvbjsgaXRzIG5hbWUgc3VnZ2VzdHMgaXQgZGVhbHMgd2l0aCBzY2F0dGVyLWdhdGhlciBsaXN0cywgd2hpY2ggYXJlIGtleSBpbiB6ZXJvLWNvcHkgc2NlbmFyaW9zLiBPZiBjb3Vyc2UsIHdlIGhhdmUgYHNrYl96ZXJvY29weWAgd2hpY2ggaXMgYW5vdGhlciB3ZWxsLWtub3duIHBsYXllciBpbiB0aGlzIGdhbWUgYW5kIGFsc28gZXhwb3NlZCBmb3Igd2lkZXIgdXNlLCBpdCBzaG91bGQgYmUgY29uc2lkZXJlZC4gQWxzbywgSSd2ZSBnb3QgbXkgZXllIG9uIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgOyBpdCdzIGEgdml0YWwgcGFydCBvZiB0aGUgVENQIHNlbmRpbmcgcHJvY2Vzcy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdXNpbmcgZGV2bWVtIG5lZWRzIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uIFRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHNldHRpbmdzIGFyZSBnb2luZyB0byBkaXJlY3RseSBpbXBhY3QgaG93IHdlbGwgdGhpcyB3b3Jrcy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGFueSBwcmUtcmVxdWlzaXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYzNSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjM5LjU3NjE0MzMwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzY0Njg0MjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2RhdGFncmFtLmM9NzA2PXN0YXRpYyBpbnRcXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjcwNzp6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MDgtXFx0XFx0XFx0ICAgICAgaW50IGxlbmd0aCxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9NzQ5PWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYwLVxcdGVsc2UgaWYgKGJpbmRpbmcpXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NjE6XFx0XFx0cmV0ID0gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc2tiLCBmcm9tLCBsZW5ndGgsIGJpbmRpbmcpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NDIuMzQwODM1NTE5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4ODY0OTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgRGF0YWdyYW0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gemVybyBpbiBvbiBhIHNwZWNpZmljIHBvaW50IGluIHRoZSBkYXRhZ3JhbSBoYW5kbGluZyBjb2RlLiBUaGUgYXJlYSBvZiBpbnRlcmVzdCBpcyBsaWtlbHkgd2l0aGluIHRoZSBgbmV0L2NvcmUvZGF0YWdyYW0uY2AgZmlsZS4gR2l2ZW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJ20gbG9va2luZyBhdCwgdGhlIGZ1bmN0aW9uIGNhbGwgSSdtIG1vc3QgaW50ZXJlc3RlZCBpbiB3aWxsIGxpa2VseSBiZSBhcm91bmQgbGluZSA3MDcuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBhbmFseXplIHRoZSBzcGVjaWZpY3MgYW5kIG5hcnJvdyBkb3duIHRoZSBhcmVhIEknbSB0cnlpbmcgdG8gbG9vayBhdC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgY29kZSB3aXRoIGEgY2xlYXIgaWRlYSBvZiB3aGF0IEknbSBzZWVraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTcyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NDUuMjI5NTAwMDg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDQxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2NvcmUvZGF0YWdyYW0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2OTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2OTA6XFx0XFx0XFx0XFx0XFx0XFx0cmVmcysrO1xcbiA2OTE6XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDY5MjpcXHRcXHRcXHRcXHRcXHR9XFxuIDY5MzpcXHRcXHRcXHRcXHR9XFxuIDY5NDpcXHRcXHRcXHRcXHRpZiAocmVmcykge1xcbiA2OTU6XFx0XFx0XFx0XFx0XFx0cGFnZV9yZWZfc3ViKGxhc3RfaGVhZCwgcmVmcyk7XFxuIDY5NjpcXHRcXHRcXHRcXHRcXHRyZWZzID0gMDtcXG4gNjk3OlxcdFxcdFxcdFxcdH1cXG4gNjk4OlxcdFxcdFxcdFxcdHNrYl9maWxsX3BhZ2VfZGVzY19ub2FjYyhza2IsIGZyYWcrKywgaGVhZCwgc3RhcnQsIHNpemUpO1xcbiA2OTk6XFx0XFx0XFx0fVxcbiA3MDA6XFx0XFx0XFx0aWYgKHJlZnMpXFxuIDcwMTpcXHRcXHRcXHRcXHRwYWdlX3JlZl9zdWIobGFzdF9oZWFkLCByZWZzKTtcXG4gNzAyOlxcdFxcdH1cXG4gNzAzOlxcdFxcdHJldHVybiAwO1xcbiA3MDQ6XFx0fVxcbiA3MDU6XFx0XFxuIDcwNjpcXHRzdGF0aWMgaW50XFxuIDcwNzpcXHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuIDcwODpcXHRcXHRcXHRcXHQgICAgICBpbnQgbGVuZ3RoLFxcbiA3MDk6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxuIDcxMDpcXHR7XFxuIDcxMTpcXHRcXHRpbnQgaSA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuIDcxMjpcXHRcXHRzaXplX3QgdmlydF9hZGRyLCBzaXplLCBvZmY7XFxuIDcxMzpcXHRcXHRzdHJ1Y3QgbmV0X2lvdiAqbmlvdjtcXG4gNzE0OlxcdFxcbiA3MTU6XFx0XFx0aWYgKGkgXFx1MDAyNlxcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxuIDcxNjpcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA3MTc6XFx0XFxuIDcxODpcXHRcXHQvKiBEZXZtZW0gZmlsbGluZyB3b3JrcyBieSB0YWtpbmcgYW4gSU9WRUMgZnJvbSB0aGUgdXNlciB3aGVyZSB0aGVcXG4gNzE5OlxcdFxcdCAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG9cXG4gNzIwOlxcdFxcdCAqIHNlbmQgZnJvbS4gV2UgZG8gbm90IHN1cHBvcnQgb3RoZXIgaXRlciB0eXBlcy5cXG4gNzIxOlxcdFxcdCAqL1xcbiA3MjI6XFx0XFx0aWYgKGlvdl9pdGVyX3R5cGUoZnJvbSkgIT0gSVRFUl9JT1ZFQyBcXHUwMDI2XFx1MDAyNlxcbiA3MjM6XFx0XFx0ICAgIGlvdl9pdGVyX3R5cGUoZnJvbSkgIT0gSVRFUl9VQlVGKVxcbiA3MjQ6XFx0XFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuIDcyNTpcXHRcXG4gNzI2OlxcdFxcdHdoaWxlIChsZW5ndGggXFx1MDAyNlxcdTAwMjYgaW92X2l0ZXJfY291bnQoZnJvbSkpIHtcXG4gNzI3OlxcdFxcdFxcdGlmIChpID09IE1BWF9TS0JfRlJBR1MpXFxuIDcyODpcXHRcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA3Mjk6XFx0XFxuIDczMDpcXHRcXHRcXHR2aXJ0X2FkZHIgPSAoc2l6ZV90KWl0ZXJfaW92X2FkZHIoZnJvbSk7XFxuIDczMTpcXHRcXHRcXHRuaW92ID0gbmV0X2Rldm1lbV9nZXRfbmlvdl9hdChiaW5kaW5nLCB2aXJ0X2FkZHIsIFxcdTAwMjZvZmYsIFxcdTAwMjZzaXplKTtcXG4gNzMyOlxcdFxcdFxcdGlmICghbmlvdilcXG4gNzMzOlxcdFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiA3MzQ6XFx0XFxuIDczNTpcXHRcXHRcXHRzaXplID0gbWluX3Qoc2l6ZV90LCBzaXplLCBsZW5ndGgpO1xcbiA3MzY6XFx0XFx0XFx0c2l6ZSA9IG1pbl90KHNpemVfdCwgc2l6ZSwgaXRlcl9pb3ZfbGVuKGZyb20pKTtcXG4gNzM3OlxcdFxcbiA3Mzg6XFx0XFx0XFx0Z2V0X25ldG1lbShuZXRfaW92X3RvX25ldG1lbShuaW92KSk7XFxuIDczOTpcXHRcXHRcXHRza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHNrYiwgaSwgbmV0X2lvdl90b19uZXRtZW0obmlvdiksIG9mZixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NDUuMjMwOTU2NDY1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTc1MzI4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIHNldHRpbmcgZm9yIGBkZXZtZW1gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9yIGlmIHRoaXMgaXMgc29tZXRoaW5nIGhhbmRsZWQgaW50ZXJuYWxseSwgbGlrZSBhIHNldHRpbmcgdGhhdCBjb250cm9scyBvciByZWxhdGVzIHRvIGl0LiBMZXQncyBzZWUuLi4gYSBxdWljayBtZW50YWwgY2hlY2sgc3VnZ2VzdHMgdGhhdCBgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ2AgbWlnaHQgYmUgdGhlIHBsYWNlIHRvIHN0YXJ0LiBJJ2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzIsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ3OjQ4LjI0ODQ5Mjg3NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MDU5NTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc2tidWZmLmg9MTc1OT12b2lkIG1zZ196ZXJvY29weV9wdXRfYWJvcnQoc3RydWN0IHVidWZfaW5mbyAqdWFyZywgYm9vbCBoYXZlX3VyZWYpO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2MC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjE6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTc2Mz1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjUtXFx0XFx0XFx0ICAgIHNpemVfdCBsZW5ndGgsXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzY2OlxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY3LVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzc4PWludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzgwLVxcdFxcdFxcdCAgICAgc3RydWN0IHVidWZfaW5mbyAqdWFyZyxcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3ODE6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzgyLVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzA4LVxcdFxcdFxcdCAgICAgIGludCBsZW5ndGgsXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDk6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MTAte1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NTEtXFx0XFx0XFx0ICAgIHNpemVfdCBsZW5ndGgsXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NTI6XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUzLXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTI4LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjI5OnN0YXRpYyBERUZJTkVfWEFSUkFZX0ZMQUdTKG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBYQV9GTEFHU19BTExPQzEpO1xcbm5ldC9jb3JlL2Rldm1lbS5jLTMwLVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9NDM9c3RhdGljIGRtYV9hZGRyX3QgbmV0X2Rldm1lbV9nZXRfZG1hX2FkZHIoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy01MS1cXG5uZXQvY29yZS9kZXZtZW0uYzo1MjpzdGF0aWMgdm9pZCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZilcXG5uZXQvY29yZS9kZXZtZW0uYy01My17XFxubmV0L2NvcmUvZGV2bWVtLmM6NTQ6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPVxcbm5ldC9jb3JlL2Rldm1lbS5jOjU1OlxcdFxcdGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nLCByZWYpO1xcbm5ldC9jb3JlL2Rldm1lbS5jLTU2LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjU3OlxcdElOSVRfV09SSyhcXHUwMDI2YmluZGluZy1cXHUwMDNldW5iaW5kX3csIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKTtcXG5uZXQvY29yZS9kZXZtZW0uYy01OC1cXHRzY2hlZHVsZV93b3JrKFxcdTAwMjZiaW5kaW5nLVxcdTAwM2V1bmJpbmRfdyk7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy02MC1cXG5uZXQvY29yZS9kZXZtZW0uYzo2MTp2b2lkIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3EpXFxubmV0L2NvcmUvZGV2bWVtLmMtNjIte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjYzOlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gY29udGFpbmVyX29mKHdxLCB0eXBlb2YoKmJpbmRpbmcpLCB1bmJpbmRfdyk7XFxubmV0L2NvcmUvZGV2bWVtLmMtNjQtXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYz04Nz1zdHJ1Y3QgbmV0X2lvdiAqXFxubmV0L2NvcmUvZGV2bWVtLmM6ODg6bmV0X2Rldm1lbV9hbGxvY19kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmMtODkte1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MTEyPXZvaWQgbmV0X2Rldm1lbV9mcmVlX2RtYWJ1ZihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG5uZXQvY29yZS9kZXZtZW0uYy0xMTMte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjExNDpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IG5ldF9kZXZtZW1faW92X2JpbmRpbmcobmlvdik7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTE1LVxcdHVuc2lnbmVkIGxvbmcgZG1hX2FkZHIgPSBuZXRfZGV2bWVtX2dldF9kbWFfYWRkcihuaW92KTtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTEyMy1cXG5uZXQvY29yZS9kZXZtZW0uYzoxMjQ6dm9pZCBuZXRfZGV2bWVtX3VuYmluZF9kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmMtMTI1LXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTEyOS1cXG5uZXQvY29yZS9kZXZtZW0uYzoxMzA6XFx0eGFfZXJhc2UoXFx1MDAyNm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBiaW5kaW5nLVxcdTAwM2VpZCk7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTMxLVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MTU0PWludCBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeHFfaWR4LFxcbm5ldC9jb3JlL2Rldm1lbS5jOjE1NTpcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXFxubmV0L2NvcmUvZGV2bWVtLmMtMTU2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy0xODItXFxubmV0L2NvcmUvZGV2bWVtLmM6MTgzOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uYy0xODQtbmV0X2Rldm1lbV9iaW5kX2RtYWJ1ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp2ZGV2LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtMTg5LXtcXG5uZXQvY29yZS9kZXZtZW0uYzoxOTA6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTkxLVxcdHN0YXRpYyB1MzIgaWRfYWxsb2NfbmV4dDtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTIxOC1cXHRlcnIgPSBwZXJjcHVfcmVmX2luaXQoXFx1MDAyNmJpbmRpbmctXFx1MDAzZXJlZixcXG5uZXQvY29yZS9kZXZtZW0uYzoyMTk6XFx0XFx0XFx0ICAgICAgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19yZWxlYXNlLFxcbm5ldC9jb3JlL2Rldm1lbS5jLTIyMC1cXHRcXHRcXHQgICAgICAwLCBHRlBfS0VSTkVMKTtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jLTMyMS1cXG5uZXQvY29yZS9kZXZtZW0uYzozMjI6XFx0ZXJyID0geGFfYWxsb2NfY3ljbGljKFxcdTAwMjZuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5ncywgXFx1MDAyNmJpbmRpbmctXFx1MDAzZWlkLFxcbm5ldC9jb3JlL2Rldm1lbS5jLTMyMy1cXHRcXHRcXHQgICAgICBiaW5kaW5nLCB4YV9saW1pdF8zMmIsIFxcdTAwMjZpZF9hbGxvY19uZXh0LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtMzUxLVxcbm5ldC9jb3JlL2Rldm1lbS5jOjM1MjpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9sb29rdXBfZG1hYnVmKHUzMiBpZClcXG5uZXQvY29yZS9kZXZtZW0uYy0zNTMte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM1NDpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcXG5uZXQvY29yZS9kZXZtZW0uYy0zNTUtXFxubmV0L2NvcmUvZGV2bWVtLmMtMzU2LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvY29yZS9kZXZtZW0uYzozNTc6XFx0YmluZGluZyA9IHhhX2xvYWQoXFx1MDAyNm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdzLCBpZCk7XFxubmV0L2NvcmUvZGV2bWVtLmMtMzU4LVxcdGlmIChiaW5kaW5nKSB7XFxubmV0L2NvcmUvZGV2bWVtLmM6MzU5OlxcdFxcdGlmICghbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19nZXQoYmluZGluZykpXFxubmV0L2NvcmUvZGV2bWVtLmMtMzYwLVxcdFxcdFxcdGJpbmRpbmcgPSBOVUxMO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MzY3PXZvaWQgbmV0X2Rldm1lbV9nZXRfbmV0X2lvdihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG5uZXQvY29yZS9kZXZtZW0uYy0zNjgte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM2OTpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2dldChuZXRfZGV2bWVtX2lvdl9iaW5kaW5nKG5pb3YpKTtcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzAtfVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9MzcyPXZvaWQgbmV0X2Rldm1lbV9wdXRfbmV0X2lvdihzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzMte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM3NDpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChuZXRfZGV2bWVtX2lvdl9iaW5kaW5nKG5pb3YpKTtcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzUtfVxcbm5ldC9jb3JlL2Rldm1lbS5jLTM3Ni1cXG5uZXQvY29yZS9kZXZtZW0uYzozNzc6c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKm5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9jb3JlL2Rldm1lbS5jLTM3OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZClcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzkte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjM4MDpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcXG5uZXQvY29yZS9kZXZtZW0uYy0zODEtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRzdF9kZXY7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy00MjMtXFx0aWYgKGJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmM6NDI0OlxcdFxcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xcbm5ldC9jb3JlL2Rldm1lbS5jLTQyNS1cXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jPTQyOT1zdHJ1Y3QgbmV0X2lvdiAqXFxubmV0L2NvcmUvZGV2bWVtLmM6NDMwOm5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXFxubmV0L2NvcmUvZGV2bWVtLmMtNDMxLVxcdFxcdCAgICAgICBzaXplX3QgdmlydF9hZGRyLCBzaXplX3QgKm9mZiwgc2l6ZV90ICpzaXplKVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9NDQ0PWludCBtcF9kbWFidWZfZGV2bWVtX2luaXQoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbClcXG5uZXQvY29yZS9kZXZtZW0uYy00NDUte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjQ0NjpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IHBvb2wtXFx1MDAzZW1wX3ByaXY7XFxubmV0L2NvcmUvZGV2bWVtLmMtNDQ3LVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtNDU5LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjQ2MDpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX2dldChiaW5kaW5nKTtcXG5uZXQvY29yZS9kZXZtZW0uYy00NjEtXFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYz00NjQ9bmV0bWVtX3JlZiBtcF9kbWFidWZfZGV2bWVtX2FsbG9jX25ldG1lbXMoc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCwgZ2ZwX3QgZ2ZwKVxcbm5ldC9jb3JlL2Rldm1lbS5jLTQ2NS17XFxubmV0L2NvcmUvZGV2bWVtLmM6NDY2OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gcG9vbC1cXHUwMDNlbXBfcHJpdjtcXG5uZXQvY29yZS9kZXZtZW0uYy00NjctXFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYz00ODM9dm9pZCBtcF9kbWFidWZfZGV2bWVtX2Rlc3Ryb3koc3RydWN0IHBhZ2VfcG9vbCAqcG9vbClcXG5uZXQvY29yZS9kZXZtZW0uYy00ODQte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjQ4NTpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IHBvb2wtXFx1MDAzZW1wX3ByaXY7XFxubmV0L2NvcmUvZGV2bWVtLmMtNDg2LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjQ4NzpcXHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcXG5uZXQvY29yZS9kZXZtZW0uYy00ODgtfVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmM9NTA4PXN0YXRpYyBpbnQgbXBfZG1hYnVmX2Rldm1lbV9ubF9maWxsKHZvaWQgKm1wX3ByaXYsIHN0cnVjdCBza19idWZmICpyc3AsXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy01MTAte1xcbm5ldC9jb3JlL2Rldm1lbS5jOjUxMTpcXHRjb25zdCBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IG1wX3ByaXY7XFxubmV0L2NvcmUvZGV2bWVtLmMtNTEyLVxcdGludCB0eXBlID0gcnhxID8gTkVUREVWX0FfUVVFVUVfRE1BQlVGIDogTkVUREVWX0FfUEFHRV9QT09MX0RNQUJVRjtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5jPTUxNz1zdGF0aWMgdm9pZCBtcF9kbWFidWZfZGV2bWVtX3VuaW5zdGFsbCh2b2lkICptcF9wcml2LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtNTE5LXtcXG5uZXQvY29yZS9kZXZtZW0uYzo1MjA6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBtcF9wcml2O1xcbm5ldC9jb3JlL2Rldm1lbS5jLTUyMS1cXHRzdHJ1Y3QgbmV0ZGV2X3J4X3F1ZXVlICpib3VuZF9yeHE7XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNj1zdHJ1Y3QgbmV0bGlua19leHRfYWNrO1xcbm5ldC9jb3JlL2Rldm1lbS5oLTE3LVxcbm5ldC9jb3JlL2Rldm1lbS5oOjE4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nIHtcXG5uZXQvY29yZS9kZXZtZW0uaC0xOS1cXHRzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmg9ODM9c3RydWN0IGRtYWJ1Zl9nZW5wb29sX2NodW5rX293bmVyIHtcXG5uZXQvY29yZS9kZXZtZW0uaC04NC1cXHRzdHJ1Y3QgbmV0X2lvdl9hcmVhIGFyZWE7XFxubmV0L2NvcmUvZGV2bWVtLmg6ODU6XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmc7XFxubmV0L2NvcmUvZGV2bWVtLmgtODYtXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC05MC1cXG5uZXQvY29yZS9kZXZtZW0uaDo5MTp2b2lkIF9fbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19mcmVlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd3EpO1xcbm5ldC9jb3JlL2Rldm1lbS5oOjkyOnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uaC05My1uZXRfZGV2bWVtX2JpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnZkZXYsXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC05Ny1cXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5uZXQvY29yZS9kZXZtZW0uaDo5ODpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9sb29rdXBfZG1hYnVmKHUzMiBpZCk7XFxubmV0L2NvcmUvZGV2bWVtLmg6OTk6dm9pZCBuZXRfZGV2bWVtX3VuYmluZF9kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpO1xcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMC1pbnQgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcXG5uZXQvY29yZS9kZXZtZW0uaDoxMDE6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLFxcbm5ldC9jb3JlL2Rldm1lbS5oLTEwMi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTEwNT1uZXRfZGV2bWVtX2lvdl90b19jaHVua19vd25lcihjb25zdCBzdHJ1Y3QgbmV0X2lvdiAqbmlvdilcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oLTExMS1cXG5uZXQvY29yZS9kZXZtZW0uaDoxMTI6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXFxubmV0L2NvcmUvZGV2bWVtLmgtMTEzLW5ldF9kZXZtZW1faW92X2JpbmRpbmcoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xMzE9c3RhdGljIGlubGluZSBib29sXFxubmV0L2NvcmUvZGV2bWVtLmg6MTMyOm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfZ2V0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTEzMy17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xMzc9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L2NvcmUvZGV2bWVtLmg6MTM4Om5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTEzOS17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNDY9c3RydWN0IG5ldF9pb3YgKlxcbm5ldC9jb3JlL2Rldm1lbS5oOjE0NzpuZXRfZGV2bWVtX2FsbG9jX2RtYWJ1ZihzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyk7XFxubmV0L2NvcmUvZGV2bWVtLmgtMTQ4LXZvaWQgbmV0X2Rldm1lbV9mcmVlX2RtYWJ1ZihzdHJ1Y3QgbmV0X2lvdiAqcHBpb3YpO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmgtMTUwLVxcbm5ldC9jb3JlL2Rldm1lbS5oOjE1MTpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXFxubmV0L2NvcmUvZGV2bWVtLmgtMTUyLW5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKTtcXG5uZXQvY29yZS9kZXZtZW0uaD0xNTM9c3RydWN0IG5ldF9pb3YgKlxcbm5ldC9jb3JlL2Rldm1lbS5oOjE1NDpuZXRfZGV2bWVtX2dldF9uaW92X2F0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nLCBzaXplX3QgYWRkcixcXG5uZXQvY29yZS9kZXZtZW0uaC0xNTUtXFx0XFx0ICAgICAgIHNpemVfdCAqb2ZmLCBzaXplX3QgKnNpemUpO1xcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmgtMTU3LSNlbHNlXFxubmV0L2NvcmUvZGV2bWVtLmg6MTU4OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xcbm5ldC9jb3JlL2Rldm1lbS5oLTE1OS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNjA9c3RhdGljIGlubGluZSB2b2lkXFxubmV0L2NvcmUvZGV2bWVtLmg6MTYxOm5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTE2Mi17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNjk9c3RhdGljIGlubGluZSB2b2lkIG5ldF9kZXZtZW1fcHV0X25ldF9pb3Yoc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC0xNzItXFxubmV0L2NvcmUvZGV2bWVtLmg6MTczOnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxcbm5ldC9jb3JlL2Rldm1lbS5oLTE3NC1uZXRfZGV2bWVtX2JpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnZkZXYsXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaC0xODMtXFxubmV0L2NvcmUvZGV2bWVtLmg6MTg0OnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKm5ldF9kZXZtZW1fbG9va3VwX2RtYWJ1Zih1MzIgaWQpXFxubmV0L2NvcmUvZGV2bWVtLmgtMTg1LXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTE4OT1zdGF0aWMgaW5saW5lIHZvaWRcXG5uZXQvY29yZS9kZXZtZW0uaDoxOTA6bmV0X2Rldm1lbV91bmJpbmRfZG1hYnVmKHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL2Rldm1lbS5oLTE5MS17XFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xOTU9bmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhxX2lkeCxcXG5uZXQvY29yZS9kZXZtZW0uaDoxOTY6XFx0XFx0XFx0XFx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsXFxubmV0L2NvcmUvZGV2bWVtLmgtMTk3LVxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTIwMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfaW92ICpcXG5uZXQvY29yZS9kZXZtZW0uaDoyMDQ6bmV0X2Rldm1lbV9hbGxvY19kbWFidWYoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcpXFxubmV0L2NvcmUvZGV2bWVtLmgtMjA1LXtcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTIxOD1zdGF0aWMgaW5saW5lIHUzMiBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nX2lkKGNvbnN0IHN0cnVjdCBuZXRfaW92ICpuaW92KVxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmgtMjIyLVxcbm5ldC9jb3JlL2Rldm1lbS5oOjIyMzpzdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uaC0yMjQtbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBkbWFidWZfaWQpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0yMjk9c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2lvdiAqXFxubmV0L2NvcmUvZGV2bWVtLmg6MjMwOm5ldF9kZXZtZW1fZ2V0X25pb3ZfYXQoc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcsIHNpemVfdCBhZGRyLFxcbm5ldC9jb3JlL2Rldm1lbS5oLTIzMS1cXHRcXHQgICAgICAgc2l6ZV90ICpvZmYsIHNpemVfdCAqc2l6ZSlcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oLTIzNS1cXG5uZXQvY29yZS9kZXZtZW0uaDoyMzY6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqXFxubmV0L2NvcmUvZGV2bWVtLmgtMjM3LW5ldF9kZXZtZW1faW92X2JpbmRpbmcoY29uc3Qgc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTEwMTM9aW50IG5ldGRldl9ubF9iaW5kX3J4X2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTQte1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTAxNTpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZztcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTEwMTYtXFx0dTMyIGlmaW5kZXgsIGRtYWJ1Zl9mZCwgcnhxX2lkeDtcXG4tLVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM9MTE1NT1pbnQgbmV0ZGV2X25sX2JpbmRfdHhfZG9pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTE1Ni17XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxMTU3OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTE1OC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqYmluZF9kZXY7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jPTE0MjU9dm9pZCBuZXRkZXZfbmxfc29ja19wcml2X2Rlc3Ryb3koc3RydWN0IG5ldGRldl9ubF9zb2NrICpwcml2KVxcbm5ldC9jb3JlL25ldGRldi1nZW5sLmMtMTQyNi17XFxubmV0L2NvcmUvbmV0ZGV2LWdlbmwuYzoxNDI3OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nO1xcbm5ldC9jb3JlL25ldGRldi1nZW5sLmM6MTQyODpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqdGVtcDtcXG5uZXQvY29yZS9uZXRkZXYtZ2VubC5jLTE0MjktXFx0bmV0ZGV2aWNlX3RyYWNrZXIgZGV2X3RyYWNrZXI7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xOTEyPWludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxNC1cXHRcXHRcXHQgICAgIHN0cnVjdCB1YnVmX2luZm8gKnVhcmcsXFxubmV0L2NvcmUvc2tidWZmLmM6MTkxNTpcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTYte1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9MTExNj1pbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG5uZXQvaXB2NC90Y3AuYy0xMTE3LXtcXG5uZXQvaXB2NC90Y3AuYzoxMTE4OlxcdHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpiaW5kaW5nID0gTlVMTDtcXG5uZXQvaXB2NC90Y3AuYy0xMTE5LVxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwLmMtMTQyNS1cXHRpZiAoYmluZGluZylcXG5uZXQvaXB2NC90Y3AuYzoxNDI2OlxcdFxcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xcbm5ldC9pcHY0L3RjcC5jLTE0MjctXFx0cmV0dXJuIGNvcGllZCArIGNvcGllZF9zeW47XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDQ0LVxcdGlmIChiaW5kaW5nKVxcbm5ldC9pcHY0L3RjcC5jOjE0NDU6XFx0XFx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoYmluZGluZyk7XFxubmV0L2lwdjQvdGNwLmMtMTQ0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NTAuOTg5MDk3NDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MzI4OTQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzc3VtaW5nIHRoZSBjb250ZXh0IGlzIG15IGV4cGVydGlzZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgYGRldm1lbWAgQ29ubmVjdGlvbioqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYGRldm1lbWAgaXMgdGllZCBpbnRvIHNvbWV0aGluZyBzcGVjaWZpYyB3aXRoaW4gdGhlIG5ldHdvcmsgZGV2aWNlIG1lbW9yeSBzcGFjZSDigJMgSSdkIHdhZ2VyIGl0J3MgcmVsYXRlZCB0byBhIGBDT05GSUdfTkVUX0RFVk1FTWAgb3B0aW9uIG9yIGEgc2ltaWxhciBjb25maWd1cmF0aW9uIGZsYWcuIEkgbmVlZCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0J3MgaW1wbGVtZW50ZWQuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IHRoZSBgbmV0L2NvcmVgIGRpcmVjdG9yeS4gSSdsbCBmb2N1cyBvbiBgZGV2bWVtLmNgLCBiZWNhdXNlIHRoYXQgZmlsZSBuYW1lIGlzIGEgc3Ryb25nIGluZGljYXRvciwgYW5kIEknbGwgc2VlIHdoYXQgSSBjYW4gZmluZCBpbiBLY29uZmlnIG9yIE1ha2VmaWxlIGZpbGVzIHdpdGhpbiB0aGF0IGRpcmVjdG9yeS4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyB0aGVyZSBtYXkgYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMTYxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NTQuNDMyMzkwNTcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTg5NDMwNDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldm1lbVxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9NYWtlZmlsZT00OD1vYmotJChDT05GSUdfTkVUX1RFU1QpICs9IG5ldF90ZXN0Lm9cXG5uZXQvY29yZS9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfTkVUX0RFVk1FTSkgKz0gZGV2bWVtLm9cXG5uZXQvY29yZS9NYWtlZmlsZS01MC1vYmotJChDT05GSUdfREVCVUdfTkVUKSArPSBsb2NrX2RlYnVnLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDc6NTcuNjIxODI5MjE5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTU5NDQzNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBUQ1AgVHJhbnNtaXNzaW9uKipcblxuQWxyaWdodCwgdGhlIHB1enpsZSBwaWVjZXMgYXJlIHN0YXJ0aW5nIHRvIGZpdC4gSXQgbG9va3MgbGlrZSB0aGUgc3lzdGVtIHJlcXVpcmVzIGBDT05GSUdfTkVUX0RFVk1FTWAgdG8gYmUgZW5hYmxlZCwgd2hpY2ggaXNuJ3QgYSBzdXJwcmlzZSBnaXZlbiB0aGUgbGlrZWx5IG5lZWQgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gZGV2aWNlIG1lbW9yeSBmb3IgbmV0d29yayBvcGVyYXRpb25zLCBwcm9iYWJseSBpbiBzb21lIGxvdy1sZXZlbCBuZXR3b3JrIGRyaXZlci4gTm93LCBsZXQncyBkcmlsbCBkb3duLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoZXJlIHRoaXMgY29uZmlndXJhdGlvbiBjb21lcyBpbnRvIHBsYXkuIE15IGltbWVkaWF0ZSBodW5jaCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgVENQIHRyYW5zbWlzc2lvbiBwYXRoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2lwdjQvdGNwLmNgLiBUaGF0IGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvcmUgbG9naWMgZm9yIHNlbmRpbmcgZGF0YSwgYW5kIGl0J3MgYSBwcmltZSBzdXNwZWN0IGZvciBlbmNvdW50ZXJpbmcgZGVwZW5kZW5jaWVzIG9uIG1lbW9yeSBtYXBwaW5nIG9yIGRpcmVjdCBkZXZpY2UgbWVtb3J5IGFjY2VzcywgZXNwZWNpYWxseSBpbiBzY2VuYXJpb3MgaW52b2x2aW5nIGhhcmR3YXJlIG9mZmxvYWQgb3Igc3BlY2lmaWMgbmV0d29ya2luZyBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHdpdGhpbiBgdGNwX3NlbmRtc2dfbG9ja2VkYCBhbmQgc2VlIGhvdyBgQ09ORklHX05FVF9ERVZNRU1gIGlzIHVzZWQuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb25maWcgb3B0aW9uIGltcGFjdHMgZGF0YSBtb3ZlbWVudCBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgZHVyaW5nIHRoZSBUQ1Agc2VuZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ5NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjAyLjg3Nzc3NjU5NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzOTc2MDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3Bfc2VuZG1zZ19sb2NrZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL3NubXAucnN0PTEzPXVuc2lnbmVkX2xvbmcgIExJTlVYX01JQl9ERUxBWUVEQUNLTE9DS0VEICAgICAgICAgICAgd3JpdGVfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9kZWxhY2tfdGltZXJfaGFuZGxlcix0Y3BfZGVsYWNrX3RpbWVyXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL3NubXAucnN0OjE0OnVuc2lnbmVkX2xvbmcgIExJTlVYX01JQl9UQ1BBVVRPQ09SS0lORyAgICAgICAgICAgICAgd3JpdGVfbW9zdGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9wdXNoLHRjcF9zZW5kbXNnX2xvY2tlZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9zbm1wLnJzdC0xNS11bnNpZ25lZF9sb25nICBMSU5VWF9NSUJfVENQRlJPTVpFUk9XSU5ET1dBRFYgICAgICAgIHdyaXRlX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3Bfc2VsZWN0X3dpbmRvdyx0Y3BfdHJhbnNtaXQtc2tiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3L3Npd19xcF90eC5jPTMyMz1zdGF0aWMgaW50IHNpd190Y3Bfc2VuZHBhZ2VzKHN0cnVjdCBzb2NrZXQgKnMsIHN0cnVjdCBwYWdlICoqcGFnZSwgaW50IG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9zaXcvc2l3X3FwX3R4LmMtMzQ2LVxcdFxcdGxvY2tfc29jayhzayk7XFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3Npdy9zaXdfcXBfdHguYzozNDc6XFx0XFx0cnYgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFxcdTAwMjZtc2csIGJ5dGVzKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3L3Npd19xcF90eC5jLTM0OC1cXHRcXHRyZWxlYXNlX3NvY2soc2spO1xcbi0tXFxuaW5jbHVkZS9uZXQvdGNwLmg9MzY3PWludCB0Y3Bfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpO1xcbmluY2x1ZGUvbmV0L3RjcC5oOjM2ODppbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSk7XFxuaW5jbHVkZS9uZXQvdGNwLmgtMzY5LWludCB0Y3Bfc2VuZG1zZ19mYXN0b3BlbihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50ICpjb3BpZWQsXFxuLS1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy90Y3AuaD0yODk9VFJBQ0VfRVZFTlQodGNwX3JldHJhbnNtaXRfc3luYWNrLFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmgtMzM0LVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL3RjcC5oOjMzNTpUUkFDRV9FVkVOVCh0Y3Bfc2VuZG1zZ19sb2NrZWQsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvdGNwLmgtMzM2LVxcdFRQX1BST1RPKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz02NjU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX3Jhd190cF9udWxsX2FyZ3MgcmF3X3RwX251bGxfYXJnc1tdID0ge1xcbi0tXFxua2VybmVsL2JwZi9idGYuYy02NzM2LVxcdHsgXFxcInRjcF9zZW5kX3Jlc2V0XFxcIiwgMHgxMSB9LFxcbmtlcm5lbC9icGYvYnRmLmM6NjczNzpcXHR7IFxcXCJ0Y3Bfc2VuZG1zZ19sb2NrZWRcXFwiLCAweDEwMCB9LFxcbmtlcm5lbC9icGYvYnRmLmMtNjczOC1cXHQvKiB0ZWdyYV9hcGJfZG1hICovXFxuLS1cXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTA2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYy0xMDg1LVxcdC5yZWFkX3NrYlxcdCAgID0gdGNwX3JlYWRfc2tiLFxcbm5ldC9pcHY0L2FmX2luZXQuYzoxMDg2OlxcdC5zZW5kbXNnX2xvY2tlZCAgICA9IHRjcF9zZW5kbXNnX2xvY2tlZCxcXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA4Ny1cXHQucGVla19sZW5cXHQgICA9IHRjcF9wZWVrX2xlbixcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTExMTQ9RVhQT1JUX1NZTUJPTF9HUEwodGNwX3JhdGVfY2hlY2tfYXBwX2xpbWl0ZWQpO1xcbm5ldC9pcHY0L3RjcC5jLTExMTUtXFxubmV0L2lwdjQvdGNwLmM6MTExNjppbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG5uZXQvaXB2NC90Y3AuYy0xMTE3LXtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEyNDAtXFxubmV0L2lwdjQvdGNwLmM6MTI0MTpcXHRcXHR0cmFjZV90Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIG1zZywgc2tiLCBzaXplX2dvYWwpO1xcbm5ldC9pcHY0L3RjcC5jLTEyNDItXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDQ4LX1cXG5uZXQvaXB2NC90Y3AuYzoxNDQ5OkVYUE9SVF9TWU1CT0xfR1BMKHRjcF9zZW5kbXNnX2xvY2tlZCk7XFxubmV0L2lwdjQvdGNwLmMtMTQ1MC1cXG5uZXQvaXB2NC90Y3AuYz0xNDUxPWludCB0Y3Bfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDU1LVxcdGxvY2tfc29jayhzayk7XFxubmV0L2lwdjQvdGNwLmM6MTQ1NjpcXHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIG1zZywgc2l6ZSk7XFxubmV0L2lwdjQvdGNwLmMtMTQ1Ny1cXHRyZWxlYXNlX3NvY2soc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTkxPXN0YXRpYyBpbnQgdGNwX2JwZl9wdXNoKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYXBwbHlfYnl0ZXMsXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTIyLVxcdFxcdGlvdl9pdGVyX2J2ZWMoXFx1MDAyNm1zZ2hkci5tc2dfaXRlciwgSVRFUl9TT1VSQ0UsIFxcdTAwMjZidmVjLCAxLCBzaXplKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTIzOlxcdFxcdHJldCA9IHRjcF9zZW5kbXNnX2xvY2tlZChzaywgXFx1MDAyNm1zZ2hkciwgc2l6ZSk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTEyNC1cXHRcXHRpZiAocmV0IFxcdTAwM2M9IDApXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTY2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY4MS1cXHQuc3BsaWNlX2VvZlxcdCAgID0gaW5ldF9zcGxpY2VfZW9mLFxcbm5ldC9pcHY2L2FmX2luZXQ2LmM6NjgyOlxcdC5zZW5kbXNnX2xvY2tlZCAgICA9IHRjcF9zZW5kbXNnX2xvY2tlZCxcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY4My1cXHQuc3BsaWNlX3JlYWRcXHQgICA9IHRjcF9zcGxpY2VfcmVhZCxcXG4tLVxcbm5ldC90bHMvdGxzX21haW4uYz0xNjg9aW50IHRsc19wdXNoX3NnKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC90bHMvdGxzX21haW4uYy0xOTQtXFxubmV0L3Rscy90bHNfbWFpbi5jOjE5NTpcXHRcXHRyZXQgPSB0Y3Bfc2VuZG1zZ19sb2NrZWQoc2ssIFxcdTAwMjZtc2csIHNpemUpO1xcbm5ldC90bHMvdGxzX21haW4uYy0xOTYtXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jPTIwNj1zdGF0aWMgaW50IGVzcGludGNwX3NlbmRza21zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L3hmcm0vZXNwaW50Y3AuYy0yMjUtXFx0XFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2bXNnaGRyLm1zZ19pdGVyLCBJVEVSX1NPVVJDRSwgXFx1MDAyNmJ2ZWMsIDEsIHNnLVxcdTAwM2VsZW5ndGgpO1xcbm5ldC94ZnJtL2VzcGludGNwLmM6MjI2OlxcdFxcdHJldCA9IHRjcF9zZW5kbXNnX2xvY2tlZChzaywgXFx1MDAyNm1zZ2hkciwgc2ctXFx1MDAzZWxlbmd0aCk7XFxubmV0L3hmcm0vZXNwaW50Y3AuYy0yMjctXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jPTExNz1zdGF0aWMgYm9vbCBicGZfdGVzdF9kZWxheShzdHJ1Y3QgYnBmX3NvY2tfb3BzICpza29wcywgY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYy0xODctXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL25ldF90aW1lc3RhbXBpbmcuYzoxODg6U0VDKFxcXCJmZW50cnkvdGNwX3NlbmRtc2dfbG9ja2VkXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jOjE4OTppbnQgQlBGX1BST0codHJhY2VfdGNwX3NlbmRtc2dfbG9ja2VkLCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvbmV0X3RpbWVzdGFtcGluZy5jLTE5MC1cXHQgICAgIHNpemVfdCBzaXplKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODowNS43MTc1NDUyNDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MzAwMDUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEYXRhIFRyYW5zbWlzc2lvbiBSb3V0aW5lcyoqXG5cblJpZ2h0LCBzbyBgdGNwX3NlbmRtc2dfbG9ja2VkYCBpcyBhIHdpZGVseSB1c2VkIGZ1bmN0aW9uLCBhIGtlcm5lbCBzeW1ib2wuIFRoaXMgbWFrZXMgc2Vuc2U7IFRDUCBpcyBmdW5kYW1lbnRhbC4gQnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gemVyby1jb3B5IG1lY2hhbmlzbXMuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGlzIGBza2JfemVyb2NvcHlgIGFsc28gZXhwb3J0ZWQ/IEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCBpcyBpbmRlZWQgZXhwb3J0ZWQsIHdpdGggYEVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSlgLiBHb29kLiBUaGF0IGluZGljYXRlcyBpdCdzIGludGVuZGVkIGZvciBicm9hZGVyIHVzZSB3aXRoaW4gdGhlIEdQTC1saWNlbnNlZCBrZXJuZWwgc3BhY2UsIHdoaWNoIGlzIHdoYXQgSSdkIGV4cGVjdCBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gb3B0aW1pemF0aW9ucy4gTm93LCB3aGF0IGFib3V0IGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgPyBJJ2xsIHJlLWV4YW1pbmUgYG5ldC9jb3JlL2RhdGFncmFtLmNgIHRvIGNvbmZpcm0gaXRzIGV4cG9ydCBzdGF0dXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY3MiwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjA5LjcxMDU2MzEzMloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4MzUzMDcwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYzPWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Ny1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Njg6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2OS1cXHRcXHRcXHRcXHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpO1xcbi0tXFxuaW9fdXJpbmcvbmV0LmM9MTQ1MD1zdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcl9pb3ZlYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW9fdXJpbmcvbmV0LmMtMTQ1My1cXHRza2JfemNvcHlfZG93bmdyYWRlX21hbmFnZWQoc2tiKTtcXG5pb191cmluZy9uZXQuYzoxNDU0OlxcdHJldHVybiB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xcbmlvX3VyaW5nL25ldC5jLTE0NTUtfVxcbi0tXFxuaW9fdXJpbmcvbmV0LmM9MTQ1Nz1zdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuaW9fdXJpbmcvbmV0LmMtMTQ2OS1cXHRlbHNlIGlmICh1bmxpa2VseSghc2tiX3pjb3B5X21hbmFnZWQoc2tiKSkpXFxuaW9fdXJpbmcvbmV0LmM6MTQ3MDpcXHRcXHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcXG5pb191cmluZy9uZXQuYy0xNDcxLVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz02MzM9RVhQT1JUX1NZTUJPTChza2JfY29weV9kYXRhZ3JhbV9mcm9tX2l0ZXJfZnVsbCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzQtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo2MzU6aW50IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjM2LVxcdFxcdFxcdFxcdHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwgc2l6ZV90IGxlbmd0aClcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9NzQ5PWludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYyLVxcdGVsc2VcXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc2MzpcXHRcXHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc2tiLCBmcm9tLCBsZW5ndGgpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODoxMi40OTQxMDEwNDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2Mzk2MjU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkNoZWNraW5nIEZ1bmN0aW9uIEV4cG9ydCBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29kZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnVuY3Rpb24gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAgaXMgYWN0dWFsbHkgdmlzaWJsZSBhbmQgYWNjZXNzaWJsZS4gSSBtZWFuLCB0aGVyZSdzIG5vIHBvaW50IGluIHRyeWluZyB0byAqdXNlKiBpdCBpZiBpdCdzIG5vdCBleHBvcnRlZCBwcm9wZXJseSwgcmlnaHQ/IEknbGwgcXVpY2tseSBjaGVjayB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSdzIHN5bWJvbCB0YWJsZXMgaWYgbmVjZXNzYXJ5LiBUaGlzIGZlZWxzIGxpa2UgYSBiYXNpYyBzYW5pdHkgY2hlY2ssIGJ1dCBpdOKAmXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAuIE5vIHN1cnByaXNlcyBhcmUgd2VsY29tZSwgZXNwZWNpYWxseSBlYXJseSBvbi4gSXQnbGwgc2F2ZSBtZSBhIGhlYWRhY2hlIGRvd24gdGhlIGxpbmUuIExldCdzIHNlZSBpZiBpdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTUzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MTguNzU4MDY4MzI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9kYXRhZ3JhbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzNTpcXHRpbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuIDYzNjpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sIHNpemVfdCBsZW5ndGgpXFxuIDYzNzpcXHR7XFxuIDYzODpcXHRcXHRpbnQgZnJhZyA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlbnJfZnJhZ3M7XFxuIDYzOTpcXHRcXG4gNjQwOlxcdFxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxuIDY0MTpcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA2NDI6XFx0XFxuIDY0MzpcXHRcXHR3aGlsZSAobGVuZ3RoIFxcdTAwMjZcXHUwMDI2IGlvdl9pdGVyX2NvdW50KGZyb20pKSB7XFxuIDY0NDpcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqaGVhZCwgKmxhc3RfaGVhZCA9IE5VTEw7XFxuIDY0NTpcXHRcXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZXNbTUFYX1NLQl9GUkFHU107XFxuIDY0NjpcXHRcXHRcXHRpbnQgcmVmcywgb3JkZXIsIG4gPSAwO1xcbiA2NDc6XFx0XFx0XFx0c2l6ZV90IHN0YXJ0O1xcbiA2NDg6XFx0XFx0XFx0c3NpemVfdCBjb3BpZWQ7XFxuIDY0OTpcXHRcXG4gNjUwOlxcdFxcdFxcdGlmIChmcmFnID09IE1BWF9TS0JfRlJBR1MpXFxuIDY1MTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVNU0dTSVpFO1xcbiA2NTI6XFx0XFxuIDY1MzpcXHRcXHRcXHRjb3BpZWQgPSBpb3ZfaXRlcl9nZXRfcGFnZXMyKGZyb20sIHBhZ2VzLCBsZW5ndGgsXFxuIDY1NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgTUFYX1NLQl9GUkFHUyAtIGZyYWcsIFxcdTAwMjZzdGFydCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjE4Ljc1ODMwOTM5N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTE2MDAwOTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKklzIEl0IEV4cG9ydGVkPyBUaGUgQ3J1Y2lhbCBWZXJpZmljYXRpb24qKlxuXG5SaWdodCwgbGV0IG1lIGp1c3QgcGF1c2UgaGVyZS4gQmVmb3JlIEkgZXZlbiBiZWdpbiB0byBlbGFib3JhdGUgb3IgY29uc2lkZXIgYW55IGZ1cnRoZXIgaW1wbGljYXRpb25zLCBJICptdXN0KiB2ZXJpZnkgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBJcyBpdCBleHBvcnRlZD8gSSdtIHJlZmVycmluZywgb2YgY291cnNlLCB0byB0aGUgZGF0YSwgdGhlIG1vZGVsLCB0aGUgY29uZmlndXJhdGlvbiDigJMgd2hhdGV2ZXIgY3J1Y2lhbCBjb21wb25lbnQgd2UncmUgZGlzY3Vzc2luZy4gSXQgc2VlbXMgb2J2aW91cywgYnV0IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IG92ZXJsb29raW5nIHRoaXMgYmFzaWMgY2hlY2sgaXMgYSByZWNpcGUgZm9yIGRpc2FzdGVyLiBZb3UgY2FuIGdldCBpbnRvIGFuYWx5c2lzIHBhcmFseXNpcy5cblxuV2UncmUgYXQgdGhlIHBvaW50IHdoZXJlIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hhdGV2ZXIgXCJpdFwiIGlzLCBpcyBhY3R1YWxseSBpbiBhIHVzYWJsZSBzdGF0ZS4gT3RoZXJ3aXNlLCB3ZSdyZSB0YWxraW5nIHRoZW9yeSwgYSB3YXN0ZSBvZiB0aW1lLiBJIGNhbid0IGJ1aWxkIG15IGFuYWx5c2lzIG9uIGEgZm91bmRhdGlvbiBvZiBwb3RlbnRpYWxseSBpbmNvcnJlY3Qgb3IgaW5hY2Nlc3NpYmxlIGRhdGEuIFRoaXMgY2hlY2sgaXMgcGFyYW1vdW50OiBJIG11c3QgY29uZmlybSB0aGUgZXhwb3J0IHByb2Nlc3MgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3IgZWxzZSBJJ20gZGVhZCBpbiB0aGUgd2F0ZXIuIFdlIG5lZWQgdG8gY2hlY2sgdGhlIG91dHB1dHMgdG8gZW5zdXJlIHRoZSBkYXRhIGlzIGNvbXBsZXRlIGFuZCBpbiB0aGUgcmlnaHQgZm9ybWF0LlxuXG5Pbmx5ICphZnRlciogdGhpcyB2ZXJpZmljYXRpb24gY2FuIEkgcHJvY2VlZCB3aXRoIGNvbmZpZGVuY2UgYW5kIGEgY2xlYXIgaGVhZC4gSXQncyB0aGUgZmlyc3QgYW5kIGFyZ3VhYmx5IG1vc3QgaW1wb3J0YW50IHN0ZXAuIFdlJ3JlIG9uIHRoZSBzYW1lIHBhZ2UsIHJpZ2h0PyBUaGlzIGlzIGEgZnVuZGFtZW50YWwgYW5kIGNvbW1vbiBzZW5zZSBjaGVjaywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIHN0YXRlIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEwNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MjYuMjc0MzEyNTkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9kYXRhZ3JhbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwMCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDcwMDpcXHRcXHRcXHRpZiAocmVmcylcXG4gNzAxOlxcdFxcdFxcdFxcdHBhZ2VfcmVmX3N1YihsYXN0X2hlYWQsIHJlZnMpO1xcbiA3MDI6XFx0XFx0fVxcbiA3MDM6XFx0XFx0cmV0dXJuIDA7XFxuIDcwNDpcXHR9XFxuIDcwNTpcXHRcXG4gNzA2OlxcdHN0YXRpYyBpbnRcXG4gNzA3OlxcdHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcXG4gNzA4OlxcdFxcdFxcdFxcdCAgICAgIGludCBsZW5ndGgsXFxuIDcwOTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MjYuMjc0NDI3OTcxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTMxODg2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBmdW5jdGlvbiBpcyBkZWZpbmVkLiBJIHNlZW0gdG8gcmVjYWxsIHNlZWluZyBpdCBpbiB0aGUgY29udGV4dCBvZiBuZXR3b3JrIGRhdGFncmFtIGhhbmRsaW5nLiBBaCwgeWVzLCBpdCdzIHByb2JhYmx5IGV4cG9ydGVkIGluIGBuZXQvY29yZS9kYXRhZ3JhbS5jYC4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgaGVhZGluZyBvdmVyIHRvIGxpbmUgNzA0IGluIHRoYXQgZmlsZTsgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTg2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODoyOS43Mjc2MjE2NjFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9jb3JlL2RhdGFncmFtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzA0LFxuICBcIkxpbmVDb3VudFwiOiA1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDQ6XFx0fVxcbiA3MDU6XFx0XFxuIDcwNjpcXHRzdGF0aWMgaW50XFxuIDcwNzpcXHR6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuIDcwODpcXHRcXHRcXHRcXHQgICAgICBpbnQgbGVuZ3RoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODoyOS43Mjc3OTMyODFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxNjc5NTY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgU3ltYm9sIEV4cG9ydCBJc3N1ZXMqKlxuXG5IbW0sIHNvIHRoZSBmdW5jdGlvbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYCB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIGlzIGV4cGVjdGVkLiBIb3dldmVyLCBpdCdzIG5vdCBiZWluZyBleHBvcnRlZCBlaXRoZXIsIGF0IGxlYXN0IG5vdCBleHBsaWNpdGx5LiBUaGF0J3MgYSBiaXQgb2RkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgaW4gdGhlIGJ1aWxkIHByb2Nlc3MuIExldCBtZSBxdWlja2x5IHNjYW4gdGhlIGNvZGUgLSBzcGVjaWZpY2FsbHksIGlzIHRoZXJlIGFuIGBFWFBPUlRfU1lNQk9MKClgIGNhbGwgb24gdGhlIGZ1bmN0aW9uICppdHNlbGYqIGF0IHRoZSBlbmQgb2YgdGhlIGRlY2xhcmF0aW9uPyBTb21ldGhpbmcgbGlrZSBgRVhQT1JUX1NZTUJPTCh6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIpO2AgaXMgd2hhdCBJJ20gbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODcyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODozMy40NDQ1OTI3NDVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTI1OTgyMzcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6MzYuNDk3MjAxMzcyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzU5MjUxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZnVuY3Rpb24gYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGl0J3Mgbm90IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBUaGF0IHBpcXVlcyBteSBpbnRlcmVzdC4gQnV0IGlzIGl0IGFjdHVhbGx5IGFjY2Vzc2libGUgb3V0c2lkZSBpdHMgY3VycmVudCBjb21waWxhdGlvbiB1bml0PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQncyAqbm90KiBleHBvcnRlZCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCBtZSBiYWNrdHJhY2sg4oCTIEkgcmVjYWxsIHNlZWluZyB0aGlzIGZ1bmN0aW9uIHVzZWQgc29tZXdoZXJlIGluIGBpb191cmluZy9uZXQuY2AsIHdoaWNoIGxlYWRzIG1lIHRvIGJlbGlldmUgaXQgKm1pZ2h0KiBiZSBleHBvcnRlZC4gV2FpdCwgb3IgY291bGQgaXQgYmUgcGFydCBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIHN0cnVjdD8gSXQgY291bGQganVzdCBiZSB0aGF0IGBpb191cmluZ2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsLCBpbiB3aGljaCBjYXNlIHRoZSB2aXNpYmlsaXR5IHJ1bGVzIHdvdWxkIGJlIGRpZmZlcmVudC4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGlvX3VyaW5nYCBpcyBpbmRlZWQgYSBidWlsdC1pbiBtb2R1bGUuIFllcywgaXQgaXMhIE9rYXksIHNvIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgb3RoZXIgZnVuY3Rpb25zLiBSaWdodCwgSSBrbm93IGBza2JfemVyb2NvcHlgIGlzIGV4cG9ydGVkLCB0aGF0J3MgYSBrZXkgcGllY2Ugb2YgdGhpcyBwdXp6bGUuIE5vdywgdG8gaW52ZXN0aWdhdGUgZnVydGhlciwgSSBuZWVkIHRvIGNoZWNrIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAsIGFuZCBzZWUgaG93IHRoYXQgaXMgbGlua2VkIG9yIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjQxLjEzMzEzMTczN1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNDY5OTUzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2MzppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3My17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc0OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cXHUwMDNlc2ssIHNrYiwgXFx1MDAyNm1zZy1cXHUwMDNlbXNnX2l0ZXIsIGxlbixcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzUtXFx0XFx0XFx0XFx0ICAgICAgIE5VTEwpO1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NDk6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc3NC19XFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NzU6RVhQT1JUX1NZTUJPTChfX3plcm9jb3B5X3NnX2Zyb21faXRlcik7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc4Nz1pbnQgemVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk0LVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzk1OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTYtfVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MzMtXFxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcXHRlcnIgPSBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrLCBza2IsIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sXFxubmV0L2NvcmUvc2tidWZmLmMtMTkzNS1cXHRcXHRcXHRcXHQgICAgICBiaW5kaW5nKTtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz04MD1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfZmlsbF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cXHRpZiAoemNvcHkpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjg4OlxcdFxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIE5VTEwsIHNrYixcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODktXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTIxMj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8sXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjM5LVxcdC8qIElmICd2c2snICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDA6XFx0ICogd2lsbCBuZXZlciBjYWxsICdfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJyBiZWxvdyB3aXRob3V0XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0MS1cXHQgKiBzZXR0aW5nIHNrYiBvd25lciBpbiAnc2tiX3NldF9vd25lcl93KCknLiBUaGUgb25seSBjYXNlXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ2LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XFx0LyogU2V0IG93bmVyIGhlcmUsIGJlY2F1c2UgJ19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCknIHVzZXNcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVxcdCAqIG93bmVyIG9mIHNrYiB3aXRob3V0IGNoZWNrIHRvIHVwZGF0ZSAnc2tfd21lbV9hbGxvYycuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjQzLjYzNzgzNzcxOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTI1OTk0NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRm9jdXMgU3ltYm9scyBmb3IgWmVyb2NvcHkgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHBsYWNlcyB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzLiBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHNpbmNlIGl0J3MgZXhwb3J0ZWQgYW5kIGNhbGxzIGJvdGggYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAuIFRoYXQncyBkZWZpbml0ZWx5IG9uZSB0byBrZWVwIGluIG1pbmQuIEFuZCwgb2YgY291cnNlLCBgc2tiX3plcm9jb3B5YCBpdHNlbGYgaXMgYSBwcmltZSBjYW5kaWRhdGUuXG5cblRoZW4gdGhlcmUncyBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gSXQncyBkZWZpbml0ZWx5IGEgaG90IHBhdGggZnVuY3Rpb24sIGEgcmVhbGx5ICpob3QqIHBhdGguIEJ1dCB0aGUgcHJvbXB0IHNhaWQgdG8gYXZvaWQgdGhvc2UgZ2VuZXJpYyBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJdCB3YW50cyB1cyB0byBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLiBIbW0sIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgICppcyogZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLi4uYW5kIGl0J3MgdGhlIG1haW4gZnVuY3Rpb24gZm9yIFRDUCBtZXNzYWdlIHNlbmRpbmcuIElmIHdlIHNraXAgaXQsIHdlIG1pZ2h0IG1pc3MgdGhlIFRDUCBwYXJ0IGVudGlyZWx5LlxuXG5XYWl0LCBpcyB0aGVyZSBhbiBhbHRlcm5hdGl2ZT8gTGV0J3MgY2hlY2sgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAuIE1heWJlIHRoYXQgcHJvdmlkZXMgYSBsZXNzIGdlbmVyaWMgZW50cnkgcG9pbnQuIEknbGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpdCB0byBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjA1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ4OjQ5LjE2MzgzNjQwOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg0NDA4MzYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc4OmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MTExNj1pbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEzNDMtXFxubmV0L2lwdjQvdGNwLmM6MTM0NDpcXHRcXHRcXHRlcnIgPSBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc2ssIHNrYiwgbXNnLCBjb3B5LCB1YXJnLFxcbm5ldC9pcHY0L3RjcC5jLTEzNDUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJpbmRpbmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODo1Mi4wMDc5Mjc2MDdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNDYzMTAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRGVsdmluZyBpbnRvIHNrYl96ZXJvY29weSBhbmQgVENQIFRyYW5zbWlzc2lvbioqXG5cblJpZ2h0LCBsZXQncyBzZWUuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIC0gYWhhLCB0aGF0J3MgYW4gaW50ZXJlc3Rpbmcgb25lLiBJdCdzIGV4cG9ydGVkLCBhbmQgc3BlY2lmaWNhbGx5IGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIFNlZW1zIGxpa2UgYSBuYXR1cmFsIHBvaW50IHRvIGZvY3VzIG9uLCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSB6ZXJvLWNvcHkgbG9naWMgd2l0aGluIHRoZSBUQ1Agc2VuZGluZyBwYXRoLiBUaGF0J3MgYSBzb2xpZCBzeW1ib2wgdG8gc3RhcnQgdHJhY2luZyBkb3duIHRoZSByYWJiaXQgaG9sZS5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBtb3JlIGdlbmVyYWwgYHNrYl96ZXJvY29weWA/IElzIGBpdGVyX3N0cmVhbWAgYSBtb3JlIHNwZWNpYWxpemVkIHZlcnNpb24/IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHR3by4gSXMgYGl0ZXJfc3RyZWFtYCBhIHN1YnNldCwgYSBtb3JlIG1vZGVybiByZXBsYWNlbWVudCwgb3IgYSBkaWZmZXJlbnQgZnVuY3Rpb25hbCBmYWNldCBvZiB0aGUgemVyby1jb3B5IG1lY2hhbmlzbT8gUGVyaGFwcyBgc2tiX3plcm9jb3B5YCBlbmNvbXBhc3NlcyBhIGJyb2FkZXIgcmFuZ2Ugb2YgemVyby1jb3B5IHNjZW5hcmlvcywgYW5kIGBpdGVyX3N0cmVhbWAgZm9jdXNlcyBvbiB0aGUgaXRlcmF0aXZlLCBzdHJlYW0tb3JpZW50ZWQgY2FzZXMuIE9yIG1heWJlIHRoZXkgYXJlIGNvbXBsZXRlbHkgdW5yZWxhdGVkLiBJIHNob3VsZCByZXZpZXcgd2hlcmUgYHNrYl96ZXJvY29weWAgaXMgdXNlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NjAxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDg6NTUuNjQyNTYxODg3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkyMjE1NDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrYl96ZXJvY29weVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaD00MTM9ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnhlbl9uZXRiYWNrX2RiZ19yb290O1xcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svY29tbW9uLmgtNDE1LVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oOjQxNjp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShzdHJ1Y3QgeGVudmlmX3F1ZXVlICpxdWV1ZSxcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9jb21tb24uaC00MTctXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oOjQxODp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2NvbW1vbi5oLTQxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jLTQ5LSAqIGNvdW50ZXIgYmVjYXVzZSBjb3JlIGRyaXZlciBjYWxscyBpbnRvIHhlbnZpZl96ZXJvY29weV9jYWxsYmFja1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL2ludGVyZmFjZS5jOjUwOiAqIHdoaWNoIGNhbGxzIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUuXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTEtICovXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmM6NTI6dm9pZCB4ZW52aWZfc2tiX3plcm9jb3B5X3ByZXBhcmUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUsXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNTMtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYy01OC1cXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9pbnRlcmZhY2UuYzo1OTp2b2lkIHhlbnZpZl9za2JfemVyb2NvcHlfY29tcGxldGUoc3RydWN0IHhlbnZpZl9xdWV1ZSAqcXVldWUpXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svaW50ZXJmYWNlLmMtNjAte1xcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jPTExNzI9c3RhdGljIGludCB4ZW52aWZfdHhfc3VibWl0KHN0cnVjdCB4ZW52aWZfcXVldWUgKnF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyMTAtXFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKm5za2IgPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWZyYWdfbGlzdDtcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmM6MTIxMTpcXHRcXHRcXHR4ZW52aWZfc2tiX3plcm9jb3B5X3ByZXBhcmUocXVldWUsIG5za2IpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjEyLVxcdFxcdFxcdGlmICh4ZW52aWZfaGFuZGxlX2ZyYWdfbGlzdChxdWV1ZSwgc2tiKSkge1xcbi0tXFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEyMTUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgXFxcIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvbnNvbGlkYXRlIGZyYWdfbGlzdCFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjE2OlxcdFxcdFxcdFxcdHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShxdWV1ZSwgc2tiKTtcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIxNy1cXHRcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjMzLVxcdFxcdFxcdGlmIChza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWRlc3RydWN0b3JfYXJnKVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYzoxMjM0OlxcdFxcdFxcdFxcdHhlbnZpZl9za2JfemVyb2NvcHlfcHJlcGFyZShxdWV1ZSwgc2tiKTtcXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMtMTIzNS1cXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjcyLVxcdFxcdGlmIChza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWRlc3RydWN0b3JfYXJnKSB7XFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEyNzM6XFx0XFx0XFx0eGVudmlmX3NrYl96ZXJvY29weV9wcmVwYXJlKHF1ZXVlLCBza2IpO1xcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMjc0LVxcdFxcdFxcdHF1ZXVlLVxcdTAwM2VzdGF0cy50eF96ZXJvY29weV9zZW50Kys7XFxuLS1cXG5kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmM9MTI4Mz1zdGF0aWMgdm9pZCB4ZW52aWZfemVyb2NvcHlfY2FsbGJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYy0xMzE0LVxcdFxcdHF1ZXVlLVxcdTAwM2VzdGF0cy50eF96ZXJvY29weV9mYWlsKys7XFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jOjEzMTU6XFx0eGVudmlmX3NrYl96ZXJvY29weV9jb21wbGV0ZShxdWV1ZSk7XFxuZHJpdmVycy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jLTEzMTYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzY4PWludCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3MC1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NzE6c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc4OmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9NDI2OT12b2lkIHNrYl9jb3B5X2FuZF9jc3VtX2Rldihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqdG8pO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDI3MDp1bnNpZ25lZCBpbnQgc2tiX3plcm9jb3B5X2hlYWRsZW4oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKmZyb20pO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6NDI3MTppbnQgc2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC00MjcyLVxcdFxcdCBpbnQgbGVuLCBpbnQgaGxlbik7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xODEyPUVYUE9SVF9TWU1CT0xfR1BMKG1zZ196ZXJvY29weV9yZWFsbG9jKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xODEzLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE4MTQ6c3RhdGljIGJvb2wgc2tiX3plcm9jb3B5X25vdGlmeV9leHRlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxvLCB1MTYgbGVuKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE4MTUte1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTgzND1zdGF0aWMgdm9pZCBfX21zZ196ZXJvY29weV9jYWxsYmFjayhzdHJ1Y3QgdWJ1Zl9pbmZvX21zZ3pjICp1YXJnKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTg3MC1cXHRpZiAoIXRhaWwgfHwgU0tCX0VYVF9FUlIodGFpbCktXFx1MDAzZWVlLmVlX29yaWdpbiAhPSBTT19FRV9PUklHSU5fWkVST0NPUFkgfHxcXG5uZXQvY29yZS9za2J1ZmYuYzoxODcxOlxcdCAgICAhc2tiX3plcm9jb3B5X25vdGlmeV9leHRlbmQodGFpbCwgbG8sIGxlbikpIHtcXG5uZXQvY29yZS9za2J1ZmYuYy0xODcyLVxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwocSwgc2tiKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTk2MD1FWFBPUlRfU1lNQk9MX0dQTChfX3NrYl96Y29weV9kb3duZ3JhZGVfbWFuYWdlZCk7XFxubmV0L2NvcmUvc2tidWZmLmMtMTk2MS1cXG5uZXQvY29yZS9za2J1ZmYuYzoxOTYyOnN0YXRpYyBpbnQgc2tiX3plcm9jb3B5X2Nsb25lKHN0cnVjdCBza19idWZmICpuc2tiLCBzdHJ1Y3Qgc2tfYnVmZiAqb3JpZyxcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTYzLVxcdFxcdFxcdCAgICAgIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MjIyNT1zdHJ1Y3Qgc2tfYnVmZiAqX19wc2tiX2NvcHlfZmNsb25lKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZWFkcm9vbSxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTIyNDktXFx0XFx0aWYgKHNrYl9vcnBoYW5fZnJhZ3Moc2tiLCBnZnBfbWFzaykgfHxcXG5uZXQvY29yZS9za2J1ZmYuYzoyMjUwOlxcdFxcdCAgICBza2JfemVyb2NvcHlfY2xvbmUobiwgc2tiLCBnZnBfbWFzaykpIHtcXG5uZXQvY29yZS9za2J1ZmYuYy0yMjUxLVxcdFxcdFxcdGtmcmVlX3NrYihuKTtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTM4Mjg9RVhQT1JUX1NZTUJPTChfX3NrYl9jaGVja3N1bV9jb21wbGV0ZSk7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0zODMwLSAvKipcXG5uZXQvY29yZS9za2J1ZmYuYzozODMxOiAqXFx0c2tiX3plcm9jb3B5X2hlYWRsZW4gLSBDYWxjdWxhdGUgaGVhZHJvb20gbmVlZGVkIGZvciBza2JfemVyb2NvcHkoKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4MzItICpcXHRAZnJvbTogc291cmNlIGJ1ZmZlclxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMzgzNC0gKlxcdENhbGN1bGF0ZXMgdGhlIGFtb3VudCBvZiBsaW5lYXIgaGVhZHJvb20gbmVlZGVkIGluIHRoZSAndG8nIHNrYiBwYXNzZWRcXG5uZXQvY29yZS9za2J1ZmYuYzozODM1OiAqXFx0aW50byBza2JfemVyb2NvcHkoKS5cXG5uZXQvY29yZS9za2J1ZmYuYy0zODM2LSAqL1xcbm5ldC9jb3JlL3NrYnVmZi5jPTM4Mzc9dW5zaWduZWQgaW50XFxubmV0L2NvcmUvc2tidWZmLmM6MzgzODpza2JfemVyb2NvcHlfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSlcXG5uZXQvY29yZS9za2J1ZmYuYy0zODM5LXtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NTQtfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjM4NTU6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2hlYWRsZW4pO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NTYtXFxubmV0L2NvcmUvc2tidWZmLmMtMzg1Ny0vKipcXG5uZXQvY29yZS9za2J1ZmYuYzozODU4OiAqXFx0c2tiX3plcm9jb3B5IC0gWmVybyBjb3B5IHNrYiB0byBza2JcXG5uZXQvY29yZS9za2J1ZmYuYy0zODU5LSAqXFx0QHRvOiBkZXN0aW5hdGlvbiBidWZmZXJcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjYtICpcXG5uZXQvY29yZS9za2J1ZmYuYzozODY3OiAqXFx0VGhlIGBobGVuYCBhcyBjYWxjdWxhdGVkIGJ5IHNrYl96ZXJvY29weV9oZWFkbGVuKCkgc3BlY2lmaWVzIHRoZVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4NjgtICpcXHRoZWFkcm9vbSBpbiB0aGUgYHRvYCBidWZmZXIuXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0zODc1PWludFxcbm5ldC9jb3JlL3NrYnVmZi5jOjM4NzY6c2tiX3plcm9jb3B5KHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBsZW4sIGludCBobGVuKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM4Nzcte1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMzkxMy1cXHR9XFxubmV0L2NvcmUvc2tidWZmLmM6MzkxNDpcXHRza2JfemVyb2NvcHlfY2xvbmUodG8sIGZyb20sIEdGUF9BVE9NSUMpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTM5MTUtXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0zOTM1LX1cXG5uZXQvY29yZS9za2J1ZmYuYzozOTM2OkVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weSk7XFxubmV0L2NvcmUvc2tidWZmLmMtMzkzNy1cXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTQyMzQ9dm9pZCBza2Jfc3BsaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmYgKnNrYjEsIGNvbnN0IHUzMiBsZW4pXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy00MjQxLVxcdHNrYl9zaGluZm8oc2tiMSktXFx1MDAzZWZsYWdzIHw9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiB6Y19mbGFncztcXG5uZXQvY29yZS9za2J1ZmYuYzo0MjQyOlxcdHNrYl96ZXJvY29weV9jbG9uZShza2IxLCBza2IsIDApO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTQyNDMtXFx0aWYgKGxlbiBcXHUwMDNjIHBvcylcXHQvKiBTcGxpdCBsaW5lIGlzIGluc2lkZSBoZWFkZXIuICovXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz00NzgwPXN0cnVjdCBza19idWZmICpza2Jfc2VnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqaGVhZF9za2IsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy01MDAzLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjUwMDQ6XFx0XFx0aWYgKHNrYl96ZXJvY29weV9jbG9uZShuc2tiLCBmcmFnX3NrYiwgR0ZQX0FUT01JQykpXFxubmV0L2NvcmUvc2tidWZmLmMtNTAwNS1cXHRcXHRcXHRnb3RvIGVycjtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTUwMDktXFx0XFx0XFx0XFx0aWYgKHNrYl9vcnBoYW5fZnJhZ3MobGlzdF9za2IsIEdGUF9BVE9NSUMpIHx8XFxubmV0L2NvcmUvc2tidWZmLmM6NTAxMDpcXHRcXHRcXHRcXHQgICAgc2tiX3plcm9jb3B5X2Nsb25lKG5za2IsIGxpc3Rfc2tiLFxcbm5ldC9jb3JlL3NrYnVmZi5jLTUwMTEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIEdGUF9BVE9NSUMpKVxcbi0tXFxubmV0L2lwdjQvaXBfb3V0cHV0LmM9OTQ5PXN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC9pcF9vdXRwdXQuYy0xMjY1LVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjQvaXBfb3V0cHV0LmM6MTI2NjpcXHRcXHRcXHRlcnIgPSBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShza2IsIGZyb20sIGNvcHkpO1xcbm5ldC9pcHY0L2lwX291dHB1dC5jLTEyNjctXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMTM0My1cXG5uZXQvaXB2NC90Y3AuYzoxMzQ0OlxcdFxcdFxcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXFxubmV0L2lwdjQvdGNwLmMtMTM0NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgYmluZGluZyk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmM9MTQ0OT1zdGF0aWMgaW50IF9faXA2X2FwcGVuZF9kYXRhKHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY2L2lwNl9vdXRwdXQuYy0xODMxLVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjYvaXA2X291dHB1dC5jOjE4MzI6XFx0XFx0XFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc2tiLCBmcm9tLCBjb3B5KTtcXG5uZXQvaXB2Ni9pcDZfb3V0cHV0LmMtMTgzMy1cXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9NzA1PW5mcW5sX2J1aWxkX3BhY2tldF9tZXNzYWdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5mcW5sX2luc3RhbmNlICpxdWV1ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtNzY5LVxcdFxcdGRhdGFfbGVuID0gbmZxbmxfZ2V0X2RhdGFfbGVuKGVudHNrYiwgUkVBRF9PTkNFKHF1ZXVlLVxcdTAwM2Vjb3B5X3JhbmdlKSk7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo3NzA6XFx0XFx0aGxlbiA9IHNrYl96ZXJvY29weV9oZWFkbGVuKGVudHNrYik7XFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy03NzEtXFx0XFx0aGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgaGxlbiwgZGF0YV9sZW4pO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy05NTMtXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo5NTQ6XFx0XFx0aWYgKHNrYl96ZXJvY29weShza2IsIGVudHNrYiwgZGF0YV9sZW4sIGhsZW4pKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtOTU1LVxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9NDUxPXN0YXRpYyBpbnQgcXVldWVfdXNlcnNwYWNlX3BhY2tldChzdHJ1Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNDk3LVxcdGlmIChkcC1cXHUwMDNldXNlcl9mZWF0dXJlcyBcXHUwMDI2IE9WU19EUF9GX1VOQUxJR05FRClcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo0OTg6XFx0XFx0aGxlbiA9IG1pbihza2JfemVyb2NvcHlfaGVhZGxlbihza2IpLCBjdXRsZW4pO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTQ5OS1cXHRlbHNlXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy01ODQtXFx0LyogT25seSByZXNlcnZlIHJvb20gZm9yIGF0dHJpYnV0ZSBoZWFkZXIsIHBhY2tldCBkYXRhIGlzIGFkZGVkXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6NTg1OlxcdCAqIGluIHNrYl96ZXJvY29weSgpICovXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtNTg2LVxcdGlmICghKG5sYSA9IG5sYV9yZXNlcnZlKHVzZXJfc2tiLCBPVlNfUEFDS0VUX0FUVFJfUEFDS0VULCAwKSkpIHtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU5MS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzo1OTI6XFx0ZXJyID0gc2tiX3plcm9jb3B5KHVzZXJfc2tiLCBza2IsIHNrYl9sZW4sIGhsZW4pO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTU5My1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L3hkcC94c2suYz05NjQ9c3RhdGljIGludCB4c2tfc2tiX21ldGFkYXRhKHN0cnVjdCBza19idWZmICpza2IsIHZvaWQgKmJ1ZmZlcixcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTAwNS1cXG5uZXQveGRwL3hzay5jOjEwMDY6c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiX3plcm9jb3B5KHN0cnVjdCB4ZHBfc29jayAqeHMsXFxubmV0L3hkcC94c2suYy0xMDA3LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB4ZHBfZGVzYyAqZGVzYylcXG4tLVxcbm5ldC94ZHAveHNrLmM9MTA4Mj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtMTA4OS1cXHRpZiAoZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIFxcdTAwMjYgSUZGX1RYX1NLQl9OT19MSU5FQVIpIHtcXG5uZXQveGRwL3hzay5jOjEwOTA6XFx0XFx0c2tiID0geHNrX2J1aWxkX3NrYl96ZXJvY29weSh4cywgZGVzYyk7XFxubmV0L3hkcC94c2suYy0xMDkxLVxcdFxcdGlmIChJU19FUlIoc2tiKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0ODo1OC4wMzQ3ODI4NTVaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIyNTc1NjY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgc2tiX3plcm9jb3B5YCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgc2tiX3plcm9jb3B5YCB0aGluZyBhbmQgd2hlcmUgaXQncyB1c2VkLiBJdCdzIGNsZWFyIGZyb20gdGhlIGNvZGUgdGhhdCBpdCdzIGEgZm9jdXMgcG9pbnQuIEkgc2VlIGl0J3MgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYm90aCBgbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuY2AgYW5kIGBuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguY2AsIHNvIGl0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBGdXJ0aGVybW9yZSwgSSBzaG91bGQgaW52ZXN0aWdhdGUgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCBhbmQgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAsIGFzIHRoZXkncmUgYWxzbyBrZXkgZnVuY3Rpb25zIGluIHRoaXMgY29udGV4dC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IGNydWNpYWwgY29uZmlndXJhdGlvbnMuIEknbSBhbHJlYWR5IGF3YXJlIHRoYXQgYENPTkZJR19ORVRfREVWTUVNYCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBkZXZtZW0gYXNwZWN0LiBCdXQgd2hhdCBhYm91dCB0aGUgYHNrYl96ZXJvY29weWAgY29yZSBpdHNlbGY/IEFoLCBpdCByZXNpZGVzIGluIGBuZXQvY29yZS9za2J1ZmYuY2AsIHdoaWNoIGlzIGFsd2F5cyBjb21waWxlZCDigJMgc28gbm8gd29ycmllcyB0aGVyZS4gQW5kIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzIGFsd2F5cyBjb21waWxlZCB0b28uIEFuZCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyYCwgaW4gYG5ldC9jb3JlL2RhdGFncmFtLmNgLCB0aGF0J3MgYW5vdGhlciBvbmUgdGhhdCdzIGFsd2F5cyBjb21waWxlZC5cblxuSG93ZXZlciwgYSBjbG9zZXIgbG9vayBhdCB0aGUgcGF0Y2ggcmV2ZWFscyB0aGF0IGl0IHNwZWNpZmljYWxseSBtb2RpZmllcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBhbmQgdGhhdCBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCB3aGVuIGEgYGJpbmRpbmdgIGlzICpub3QqIE5VTEwuIFRoZSBgYmluZGluZ2AgaXMgYSBgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmdgLiBTbywgY2xlYXJseSwgdGhpcyAqaXMqIGxpbmtlZCB0byBgQ09ORklHX05FVF9ERVZNRU1gLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYE5FVF9ERVZNRU1gIGlzIGluY2x1ZGVkIGluIEVuYWJsZUNvbmZpZ3MuXG5cbk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgYE5FVF9ERVZNRU1gIGl0c2VsZiBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IG5lZWQgY29uc2lkZXJpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjM5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjA0LjI2MDU0MjQ3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzgwMjI3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfREVWTUVNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTY2PWNvbmZpZyBTS0JfRVhURU5TSU9OU1xcbi0tXFxubmV0L0tjb25maWctNjgtXFxubmV0L0tjb25maWc6Njk6Y29uZmlnIE5FVF9ERVZNRU1cXG5uZXQvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCB5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjA2LjY0MDc3ODczOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDEwNzAxMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVyKipcblxuSG1tLCBzbyBgY29uZmlnIE5FVF9ERVZNRU1gIGlzICpkZWZpbmVkKiB0byBiZSAneScsIHJpZ2h0IG91dCBvZiB0aGUgZ2F0ZT8gVGhhdCBzZWVtc+KApmludGVyZXN0aW5nLiBJJ20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGF0LCBzbyBJJ2xsIGp1bXAgcmlnaHQgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLiBMZXQncyBzZWUuLi4gYG5ldC9LY29uZmlnYCwgYXJvdW5kIGxpbmUgNjksIHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZC4gSSdtIGV4cGVjdGluZyB0byBzZWUgZGVwZW5kZW5jaWVzLCBleHBsYW5hdGlvbnMsIGFuZCBwZXJoYXBzIGEgZGlyZWN0IGxpbmsgdG8gdGhlIHVuZGVybHlpbmcgZHJpdmVyIG9yIHN1YnN5c3RlbS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgaXRzIGluY2x1c2lvbiwgYW5kIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgb2YgaXQgYmVpbmcgYSBkZWZhdWx0LiBJcyB0aGlzIGEgY29yZSByZXF1aXJlbWVudCwgb3IgYSBtb3JlIHNwZWNpYWxpemVkIGZlYXR1cmUgdGhhdCBtaWdodCBpbmFkdmVydGVudGx5IGJlIGVuYWJsZWQgYnkgZGVmYXVsdD8gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIGRlc2lnbiBkZWNpc2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDQ4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MTAuMDUxNDgzMDkyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRjb25maWcgTkVUX1JFRElSRUNUXFxuICA2MTpcXHRcXHRib29sXFxuICA2MjpcXHRcXG4gIDYzOlxcdGNvbmZpZyBTS0JfREVDUllQVEVEXFxuICA2NDpcXHRcXHRib29sXFxuICA2NTpcXHRcXG4gIDY2OlxcdGNvbmZpZyBTS0JfRVhURU5TSU9OU1xcbiAgNjc6XFx0XFx0Ym9vbFxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgTkVUX0RFVk1FTVxcbiAgNzA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgNzE6XFx0XFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuICA3MjpcXHRcXHRkZXBlbmRzIG9uIERNQV9TSEFSRURfQlVGRkVSXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxcbiAgNzQ6XFx0XFxuICA3NTpcXHRjb25maWcgTkVUX1NIQVBFUlxcbiAgNzY6XFx0XFx0Ym9vbFxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgTkVUX0NSQzMyQ1xcbiAgNzk6XFx0XFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToxMC4wNTI2NTU5MDJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NzEwOTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQuXG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIGBORVRfREVWTUVNYCBpcyBlbmFibGVkLCBhIGRpcmVjdCBcInllc1wiIGFzIGluZGljYXRlZCBieSBgZGVmX2Jvb2wgeWAuIEhvd2V2ZXIsIHRoaXMgaXMgbW9yZSBpbnRlcmVzdGluZyB0aGFuIGp1c3QgYSBzaW1wbGUgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgc2VlIGl0IGhhcyBkZXBlbmRlbmNpZXMsIHNwZWNpZmljYWxseSBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gVGhhdCdzIHRoZSByZWFsIHN0b3J5IGhlcmUsIG5vdCBqdXN0IHRoYXQgaXQncyBzZXQuIFRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGRyaWxsIGRvd24gaW50byBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCB1bmRlcnN0YW5kIHdoYXQgKml0J3MqIGFsbCBhYm91dC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgYE5FVF9ERVZNRU1gLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDg4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToxMy42MDk3Njg3MzZaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODU5NjMzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERNQV9TSEFSRURfQlVGRkVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnPTIxMz1zb3VyY2UgXFxcImRyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy0yMTQtXFxuZHJpdmVycy9iYXNlL0tjb25maWc6MjE1OmNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTIxNi1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjE1Ljk5NTc0MDg5NVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY1NTE0MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyBzb21ldGhpbmcgaXMgY29uZmlndXJlZCBpbiB0aGUga2VybmVsLCBhbmQgdGhlIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgbGluZSAyMTUgc291bmRzIGxpa2UgYSBnb29kIHBvaW50IHRvIHplcm8gaW4gb24uIEknbSBleHBlY3RpbmcgdG8gZmluZCBzb21ldGhpbmcgZnVuZGFtZW50YWwsIHByb2JhYmx5IGEgY29yZSBvcHRpb24gcmVsYXRlZCB0byBzb21lIGRyaXZlciBvciBiYXNlIGZ1bmN0aW9uYWxpdHksIG9yIG1heWJlIGV2ZW4gYSBtYWNybyBkZWZpbml0aW9uLiBMZXQgbWUgcHVsbCB0aGF0IGZpbGUgYW5kIGdldCB0byBsaW5lIDIxNSwgSSBzdXNwZWN0IEkgY2FuIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24sIGFuZCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHdpdGhpbiB0aGUgd2lkZXIgY29uZmlndXJhdGlvbiBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MTkuMDYxMjU5NjdaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxMDpcXHRcXHRib29sXFxuIDIxMTpcXHRcXHRzZWxlY3QgR0xPQlxcbiAyMTI6XFx0XFxuIDIxMzpcXHRzb3VyY2UgXFxcImRyaXZlcnMvYmFzZS9yZWdtYXAvS2NvbmZpZ1xcXCJcXG4gMjE0OlxcdFxcbiAyMTU6XFx0Y29uZmlnIERNQV9TSEFSRURfQlVGRkVSXFxuIDIxNjpcXHRcXHRib29sXFxuIDIxNzpcXHRcXHRkZWZhdWx0IG5cXG4gMjE4OlxcdFxcdHNlbGVjdCBJUlFfV09SS1xcbiAyMTk6XFx0XFx0aGVscFxcbiAyMjA6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBmcmFtZXdvcmsgZm9yIGJ1ZmZlci1zaGFyaW5nIGJldHdlZW5cXG4gMjIxOlxcdFxcdCAgbXVsdGlwbGUgZHJpdmVycy4gQSBidWZmZXIgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSB1c2luZyBkcml2ZXJcXG4gMjIyOlxcdFxcdCAgQVBJcyBleHRlbnNpb247IHRoZSBmaWxlJ3MgZGVzY3JpcHRvciBjYW4gdGhlbiBiZSBwYXNzZWQgb24gdG8gb3RoZXJcXG4gMjIzOlxcdFxcdCAgZHJpdmVyLlxcbiAyMjQ6XFx0XFxuIDIyNTpcXHRjb25maWcgRE1BX0ZFTkNFX1RSQUNFXFxuIDIyNjpcXHRcXHRib29sIFxcXCJFbmFibGUgdmVyYm9zZSBETUFfRkVOQ0VfVFJBQ0UgbWVzc2FnZXNcXFwiXFxuIDIyNzpcXHRcXHRkZXBlbmRzIG9uIERNQV9TSEFSRURfQlVGRkVSXFxuIDIyODpcXHRcXHRoZWxwXFxuIDIyOTpcXHRcXHQgIEVuYWJsZSB0aGUgRE1BX0ZFTkNFX1RSQUNFIHByaW50a3MuIFRoaXMgd2lsbCBhZGQgZXh0cmFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MTkuMDYxMzkyMjFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY5MDc0MTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIE1lbW9yeSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIFRoaXMgYERNQV9TSEFSRURfQlVGRkVSYCBmbGFn4oCmIHNlZW1zIGxpa2UgaXQncyBhIGJvb2xlYW4sIGFuZCB0aGUgZGVmYXVsdCBpcyBcIm5vXCIsIG1lYW5pbmcgaXQncyBkaXNhYmxlZC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBETUEgYW5kIHNoYXJlZCBtZW1vcnkgYXJjaGl0ZWN0dXJlcywgSSdtIHByZXR0eSBzdXJlIHdlIHNob3VsZCBiZSBlbmFibGluZyB0aGlzLiBFbmFibGluZyBzaGFyZWQgYnVmZmVycyB1c3VhbGx5IHVubG9ja3Mgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgYmVuZWZpdHMgYnkgcmVkdWNpbmcgZGF0YSBjb3BpZXMgYW5kIGFsbG93aW5nIG1vcmUgZGlyZWN0IGFjY2VzcyBmb3IgRGlyZWN0IE1lbW9yeSBBY2Nlc3Mgb3BlcmF0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBraW5kIG9mIGhhcmR3YXJlIHdlIGFyZSB3b3JraW5nIHdpdGguIFRoZSBrZXkgaGVyZSBpcyB0byBjb25maXJtIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbWVtb3J5IHN1YnN5c3RlbSwgcGFydGljdWxhcmx5IGNhY2hlIGNvaGVyZW5jeSBwcm90b2NvbHMsIGJ1dCBnZW5lcmFsbHkgc3BlYWtpbmcsIHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5Ob3csIHRoZSBgUEFHRV9QT09MYCBvcHRpb27igKYgdGhhdCBvbmUgbmVlZHMgc29tZSBtb3JlIHRob3VnaHQuIEnigJl2ZSBkZWFsdCB3aXRoIG1lbW9yeSBwb29scyBiZWZvcmUsIGJ1dCB0aGUgc3BlY2lmaWNzIGFsd2F5cyBtYXR0ZXIuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgaW1wbGVtZW50YXRpb24gaGFuZGxlcyBwYWdlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbi4gSXMgaXQgZm9yIGdlbmVyYWwtcHVycG9zZSBtZW1vcnksIG9yIGlzIGl0IHNwZWNpZmljYWxseSBnZWFyZWQgdG93YXJkcyBETUEgYnVmZmVycz8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgdmlydHVhbCBtZW1vcnkgc3lzdGVtPyBEb2VzIGl0IGludHJvZHVjZSBhbnkgZnJhZ21lbnRhdGlvbiBjb25jZXJucz8gVGhlIGRldmlsJ3MgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgdGhlIHBhZ2UgcG9vbCBpbXBsZW1lbnRhdGlvbiBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggb3RoZXIgbWVtb3J5IG1hbmFnZW1lbnQgdW5pdHMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaG93IGl0IGJlbmVmaXRzIG1lbW9yeSBlZmZpY2llbmN5IGFuZCB3aGV0aGVyIGl0IGltcHJvdmVzIG9yIGRlZ3JhZGVzIHBlcmZvcm1hbmNlLCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzLiBJJ2xsIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIGl0cyBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjUyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToyMi43NTIxMzc0MjZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODI2NjE3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz00ODc9Y29uZmlnIE5FVF9ERVZMSU5LXFxuLS1cXG5uZXQvS2NvbmZpZy00OTAtXFxubmV0L0tjb25maWc6NDkxOmNvbmZpZyBQQUdFX1BPT0xcXG5uZXQvS2NvbmZpZy00OTItXFx0Ym9vbFxcbm5ldC9LY29uZmlnLTQ5My1cXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xcbm5ldC9LY29uZmlnLTQ5NS1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MjUuMTM0ODA4Njk1WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjI4MDI0MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYG5ldC9LY29uZmlnYCwgd2hpY2ggaXMgdGhlIGRlIGZhY3RvIHN0YW5kYXJkIGZvciB0aGlzIGtpbmQgb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGtlcm5lbCdzIEtjb25maWcgc3RydWN0dXJlLiBJJ20gYXNzdW1pbmcgdGhhdCB0aGUgc3BlY2lmaWNzIEknbSBhZnRlciBhcmUgbGlrZWx5IGluIHRoZSBnZW5lcmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzZWN0aW9uLCBhbmQgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlIEknbSBnb2luZyB0byBzdGFydCBhcm91bmQgbGluZSA0OTEgdG8gc2VlIGlmIHRoYXQgcmluZ3MgYSBiZWxsLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4g4oCTIHRoZSBLY29uZmlnIGZpbGVzIGFyZSBvZnRlbiBvcmdhbml6ZWQgbG9naWNhbGx5LCBhbmQgdGhhdCBwb3NpdGlvbiBmZWVscyBsaWtlIGEgZ29vZCBpbml0aWFsIGJldC4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gdHJhY2UgZGVwZW5kZW5jaWVzLCB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25hbCBsb2dpYywgYW5kIHF1aWNrbHkgaXNvbGF0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFuZCB0aGVpciBhc3NvY2lhdGVkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzAyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6MjguNDU3NjE1OTY0WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODU6XFx0XFx0ICB3aXRoIHRoZSBoZWxwIG9mIEJQRiBwcm9ncmFtcy5cXG4gNDg2OlxcdFxcbiA0ODc6XFx0Y29uZmlnIE5FVF9ERVZMSU5LXFxuIDQ4ODpcXHRcXHRib29sXFxuIDQ4OTpcXHRcXHRkZWZhdWx0IG5cXG4gNDkwOlxcdFxcbiA0OTE6XFx0Y29uZmlnIFBBR0VfUE9PTFxcbiA0OTI6XFx0XFx0Ym9vbFxcbiA0OTM6XFx0XFxuIDQ5NDpcXHRjb25maWcgUEFHRV9QT09MX1NUQVRTXFxuIDQ5NTpcXHRcXHRkZWZhdWx0IG5cXG4gNDk2OlxcdFxcdGJvb2wgXFxcIlBhZ2UgcG9vbCBzdGF0c1xcXCJcXG4gNDk3OlxcdFxcdGRlcGVuZHMgb24gUEFHRV9QT09MXFxuIDQ5ODpcXHRcXHRoZWxwXFxuIDQ5OTpcXHRcXHQgIEVuYWJsZSBwYWdlIHBvb2wgc3RhdGlzdGljcyB0byB0cmFjayBwYWdlIGFsbG9jYXRpb24gYW5kIHJlY3ljbGluZ1xcbiA1MDA6XFx0XFx0ICBpbiBwYWdlIHBvb2xzLiBUaGlzIG9wdGlvbiBpbmN1cnMgYWRkaXRpb25hbCBDUFUgY29zdCBpbiBhbGxvY2F0aW9uXFxuIDUwMTpcXHRcXHQgIGFuZCByZWN5Y2xlIHBhdGhzIGFuZCBhZGRpdGlvbmFsIG1lbW9yeSBjb3N0IHRvIHN0b3JlIHRoZSBzdGF0aXN0aWNzLlxcbiA1MDI6XFx0XFx0ICBUaGVzZSBzdGF0aXN0aWNzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBpZlxcbiA1MDM6XFx0XFx0ICB0aGUgZHJpdmVyIHVzaW5nIHRoZSBwYWdlIHBvb2wgc3VwcG9ydHMgZXhwb3J0aW5nIHRoaXMgZGF0YS5cXG4gNTA0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OToyOC40NTc4MDY0MzRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc1MDg1MTIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBPcHRpbWl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIHRoaW5raW5nIGFib3V0IGhvdyB0byBvcHRpbWl6ZSBpdC4gRmlyc3QsIEkgc2VlIHRoYXQgYFBBR0VfUE9PTGAgaXMgYSBib29sZWFuLiBNYWtlcyBzZW5zZSB0byBlbmFibGUgdGhhdDsgaXQgc2hvdWxkIGJlIGJlbmVmaWNpYWwuIFNvLCB0aGF0J3MgZGVmaW5pdGVseSBnb2luZyBpbnRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm93LCBJIHNob3VsZCBhZGQgYERNQV9TSEFSRURfQlVGRkVSYCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFzIHdlbGwuXG5cbkhvbGQgb24sIEkgc2VlIHRoYXQgYE5FVF9ERVZNRU1gIGlzIGRlZmluZWQgYXMgYGRlZl9ib29sIHlgLiBUaGF0IG1lYW5zIGl0J3MgYXV0b21hdGljYWxseSBlbmFibGVkIGlmIGl0cyBkZXBlbmRlbmNpZXMgYXJlIHNhdGlzZmllZCwgcmlnaHQ/IEhtbSwgaXMgaXQgKnNhZmVyKiB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgIGFueXdheT8gTm8sIHRoYXQncyBwcm9iYWJseSBvdmVya2lsbCBhbmQgdW5uZWNlc3NhcnksIGFuZCBwb3RlbnRpYWxseSBjb25mdXNpbmcuIEV2ZW4gdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIGRlc2NyaWJlcyBgTkVUX0RFVk1FTWAgYXMgbm90IGJlaW5nIHVzZXIgc2VsZWN0YWJsZSAobm8gcHJvbXB0KSwgSSB0aGluayBpdCdzIG9rYXkgdG8gbGlzdCBpdC4gQWN0dWFsbHksIHdhaXQgYSBtaW51dGUsIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgIGFsc28gaGF2ZSBubyBwcm9tcHRzLlxuXG5UaGF0J3Mgb2RkLiBJZiB0aGV5J3JlIG5vdCB1c2VyLXNlbGVjdGFibGUsIGhvdyBjYW4gdGhleSBiZSBlbmFibGVkIHRocm91Z2ggdGhlIEtjb25maWcgc3lzdGVtPyBUaGV5IG11c3QgYmUgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMuIFNvLCBpdCdzIHdvcnRoIGNoZWNraW5nIHRvIHNlZSB3aGF0IGNvbmZpZ3Mgc2VsZWN0IGBETUFfU0hBUkVEX0JVRkZFUmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcxODgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OTozMy4yMDg2NjMwMTJaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4OTEzMTAzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdD02NT1BbnkgZXhwb3J0ZXJzIG9yIHVzZXJzIG9mIHRoZSBkbWEtYnVmIGJ1ZmZlciBzaGFyaW5nIGZyYW1ld29yayBtdXN0IGhhdmUgYVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdDo2Njonc2VsZWN0IERNQV9TSEFSRURfQlVGRkVSJyBpbiB0aGVpciByZXNwZWN0aXZlIEtjb25maWdzLlxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdC02Ny1cXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnPTY9Y29uZmlnIERSTV9BQ0NFTF9IQUJBTkFMQUJTXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZy0xMi1cXHRzZWxlY3QgSFdNT05cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZzoxMzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZy0xNC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTQ9Y29uZmlnIFNZTkNfRklMRVxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNi1cXHRkZWZhdWx0IG5cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo3OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9NTI9Y29uZmlnIERNQUJVRl9LVU5JVF9URVNUXFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy01NC1cXHRkZXBlbmRzIG9uIEtVTklUXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc6NTU6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNTYtXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTYwPW1lbnVjb25maWcgRE1BQlVGX0hFQVBTXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjEtXFx0Ym9vbCBcXFwiRE1BLUJVRiBVc2VybGFuZCBNZW1vcnkgSGVhcHNcXFwiXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc6NjI6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9OD1tZW51Y29uZmlnIERSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTMtXFx0c2VsZWN0IEkyQ1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE0OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1LVxcdHNlbGVjdCBTWU5DX0ZJTEVcXG4tLVxcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnPTY9Y29uZmlnIFRFR1JBX0hPU1QxWFxcbi0tXFxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWc6OTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZy0xMC1cXHRzZWxlY3QgVEVHUkFfSE9TVDFYX0NPTlRFWFRfQlVTXFxuLS1cXG5kcml2ZXJzL2lpby9LY29uZmlnPTE1PWNvbmZpZyBJSU9fQlVGRkVSXFxuZHJpdmVycy9paW8vS2NvbmZpZy0xNi1cXHRib29sIFxcXCJFbmFibGUgYnVmZmVyIHN1cHBvcnQgd2l0aGluIElJT1xcXCJcXG5kcml2ZXJzL2lpby9LY29uZmlnOjE3OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvaWlvL0tjb25maWctMTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9Mj1tZW51Y29uZmlnIElORklOSUJBTkRcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiAhQUxQSEFcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTktXFx0c2VsZWN0IElSUV9QT0xMXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00ND1jb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDctXFx0ZGVwZW5kcyBvbiBNTVVcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0ODpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00OS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnPTM5PWNvbmZpZyBJT01NVUZEX1RFU1RcXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQ0LVxcdGRlcGVuZHMgb24gSU9NTVVfUFRfQU1EVjE9eSB8fCBJT01NVUZEPUlPTU1VX1BUX0FNRFYxXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6NDU6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDYtXFx0c2VsZWN0IElPTU1VRkRfRFJJVkVSXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0zPWNvbmZpZyBWSURFT0JVRjJfQ09SRVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjQ6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc9MTM9Y29uZmlnIFZJREVPQlVGMl9ETUFfQ09OVElHXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0xNi1cXHRzZWxlY3QgVklERU9CVUYyX01FTU9QU1xcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjE3OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTE5PWNvbmZpZyBWSURFT0JVRjJfVk1BTExPQ1xcbi0tXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMjItXFx0c2VsZWN0IFZJREVPQlVGMl9NRU1PUFNcXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZzoyMzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yNC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnPTE9Y29uZmlnIFZJREVPX1RFR1JBX1ZERVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWctNi1cXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnOjc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWctOC1cXHRzZWxlY3QgSU9NTVVfSU9WQVxcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWc9MzAxPWNvbmZpZyBRQ09NX0ZBU1RSUENcXG4tLVxcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTMwNC1cXHRkZXBlbmRzIG9uIFJQTVNHXFxuZHJpdmVycy9taXNjL0tjb25maWc6MzA1OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvbWlzYy9LY29uZmlnLTMwNi1cXHRzZWxlY3QgUUNPTV9TQ01cXG4tLVxcbmRyaXZlcnMvdGVlL0tjb25maWc9Mz1tZW51Y29uZmlnIFRFRVxcbi0tXFxuZHJpdmVycy90ZWUvS2NvbmZpZy02LVxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcXG5kcml2ZXJzL3RlZS9LY29uZmlnOjc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy90ZWUvS2NvbmZpZy04LVxcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTkyPWNvbmZpZyBVU0JfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5MzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMveGVuL0tjb25maWc9MTQ1PWNvbmZpZyBYRU5fR05UREVWX0RNQUJVRlxcbi0tXFxuZHJpdmVycy94ZW4vS2NvbmZpZy0xNDctXFx0ZGVwZW5kcyBvbiBYRU5fR05UREVWIFxcdTAwMjZcXHUwMDI2IFhFTl9HUkFOVF9ETUFfQUxMT0NcXG5kcml2ZXJzL3hlbi9LY29uZmlnOjE0ODpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0OS1cXHRoZWxwXFxuLS1cXG5zYW1wbGVzL0tjb25maWc9MjMwPWNvbmZpZyBTQU1QTEVfVkZJT19NREVWX01CT0NIU1xcbi0tXFxuc2FtcGxlcy9LY29uZmlnLTIzMy1cXHRzZWxlY3QgVkZJT19NREVWXFxuc2FtcGxlcy9LY29uZmlnOjIzNDpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5zYW1wbGVzL0tjb25maWctMjM1LVxcdGhlbHBcXG4tLVxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZz02PWNvbmZpZyBTTkRfU09DX0ZTTF9BU1JDXFxuLS1cXG5zb3VuZC9zb2MvZnNsL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5zb3VuZC9zb2MvZnNsL0tjb25maWc6OTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5zb3VuZC9zb2MvZnNsL0tjb25maWctMTAtXFx0c2VsZWN0IFJFR01BUF9NTUlPXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjM2LjA5OTk3Nzg1OVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMyNzE2NzA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERNQV9TSEFSRURfQlVGRkVSIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgRE1BX1NIQVJFRF9CVUZGRVJgLiBJIHNlZSBpdCdzIGRlZmluZWQgd2l0aCBgYm9vbGAgYW5kIGEgYGRlZmF1bHQgbmAuIEhtbSwgaW50ZXJlc3RpbmcuIEl0IGRvZXNuJ3QgaGF2ZSBhIGRpcmVjdCBwcm9tcHQsIHdoaWNoIG1lYW5zIHlvdSBjYW4ndCAqZXhwbGljaXRseSogZW5hYmxlIGl0IGZyb20gdGhlIHRvcCBsZXZlbCBpbiB0aGUgYC5jb25maWdgIGZpbGUuIEl0IG11c3QgYmUgc2VsZWN0ZWQgc29tZWhvdy4gTGV0IG1lIGNoZWNrLi4uIHdhaXQsIGBkcml2ZXJzL2Jhc2UvS2NvbmZpZ2AgKmFsc28qIGRlZmluZXMgYGNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBpdCB0b28gaXMgYSBgYm9vbGAgd2l0aCBubyBwcm9tcHQuIFJpZ2h0LCBsZXQgbWUgZ28gYmFjayB0byBgZHJpdmVycy9iYXNlL0tjb25maWdgIGFuZCB0YWtlIGFub3RoZXIgbG9vazsgSSBtdXN0IGJlIG1pc3Npbmcgc29tZXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjQ3LjQyNzE1MDFaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmFzZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxNSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIxNTpcXHRjb25maWcgRE1BX1NIQVJFRF9CVUZGRVJcXG4gMjE2OlxcdFxcdGJvb2xcXG4gMjE3OlxcdFxcdGRlZmF1bHQgblxcbiAyMTg6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuIDIxOTpcXHRcXHRoZWxwXFxuIDIyMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGZyYW1ld29yayBmb3IgYnVmZmVyLXNoYXJpbmcgYmV0d2VlblxcbiAyMjE6XFx0XFx0ICBtdWx0aXBsZSBkcml2ZXJzLiBBIGJ1ZmZlciBpcyBhc3NvY2lhdGVkIHdpdGggYSBmaWxlIHVzaW5nIGRyaXZlclxcbiAyMjI6XFx0XFx0ICBBUElzIGV4dGVuc2lvbjsgdGhlIGZpbGUncyBkZXNjcmlwdG9yIGNhbiB0aGVuIGJlIHBhc3NlZCBvbiB0byBvdGhlclxcbiAyMjM6XFx0XFx0ICBkcml2ZXIuXFxuIDIyNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NDk6NDcuNDI3MzIxNDVaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxMDA3NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBubyBwcm9tcHQsIHNvIEkgY2FuJ3QgZGlyZWN0bHkgZW5hYmxlIGBETUFfU0hBUkVEX0JVRkZFUmAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBLYnVpbGQgd2lsbCBqdXN0IGlnbm9yZSBpdC4gV2FpdCwgZG9lcyBzeXprYWxsZXIgc29tZWhvdyBnZXQgYXJvdW5kIHRoaXM/IE5vLCBpdCBqdXN0IGFkZHMgYENPTkZJR19YWFg9eWAgYW5kIHJ1bnMgYG1ha2Ugb2xkZGVmY29uZmlnYC4gSWYgdGhlcmUncyBubyBwcm9tcHQgKmFuZCogaXQncyBub3Qgc2VsZWN0ZWQgYnkgYW55dGhpbmcgZWxzZSwgaXQgZ2V0cyBkcm9wcGVkLCBhcyBleHBlY3RlZC5cblxuQnV0LCBoYW5nIG9uLCBgTkVUX0RFVk1FTWAgaXMgZGVmaW5lZCBhcyBgZGVmX2Jvb2wgeWAsIHNvIGl0ICpzaG91bGQqIGJlIGVuYWJsZWQgYXV0b21hdGljYWxseSBpZiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIFJpZ2h0LCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyB0byBlbmFibGUgdGhhdCBzZWxlY3RzICpib3RoKiBgRE1BX1NIQVJFRF9CVUZGRVJgICphbmQqIGBQQUdFX1BPT0xgLlxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gYFBBR0VfUE9PTGAgaXMgYWxzbyBhIGBib29sYCB3aXRob3V0IGEgcHJvbXB0LiBIbW0sIEkgbmVlZCB0byBjaGVjayB3aGF0IGFjdHVhbGx5IHNlbGVjdHMgYFBBR0VfUE9PTGAgdG8gc2VlIGhvdyBJIGNhbiBnZXQgaXQgcHVsbGVkIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg2NCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDEyOjQ5OjUyLjIzNzQwMTc3NVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkxMjQ1NDk3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzYtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0Mzc6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTQ0PWNvbmZpZyBYRU5fTkVUREVWX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0OS1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cXHRkZXBlbmRzIG9uIFBBR0VfU0laRV9MRVNTX1RIQU5fNjRLQlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTg4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9LY29uZmlnOjYxMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTItXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnPTE4PWNvbmZpZyBORVRfQUlST0hBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnPTE4PWNvbmZpZyBBTElCQUJBX0VFQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gNjRCSVRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTcyPWNvbmZpZyBCQ01HRU5FVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzo4MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04Mi1cXHRzZWxlY3QgQlJPQURDT01fUEhZIGlmIEFSQ0hfQkNNMjgzNVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxNS1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1OD1jb25maWcgQk5HRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI2OT1jb25maWcgQkNNQVNQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cXHRzZWxlY3QgTURJT19CQ01fVU5JTUFDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZz02PWNvbmZpZyBFTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctMTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZz0xOT1jb25maWcgVFNORVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc6MjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjM9Y29uZmlnIEZFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXFx0c2VsZWN0IEZJWEVEX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjMyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMy1cXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE4PWNvbmZpZyBHVkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjk1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cXHRzZWxlY3QgUkVBTFRFS19QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzoxNTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc9Nj1jb25maWcgSElOSUMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZzoxNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnPTQ9Y29uZmlnIExJQkVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkNvbW1vbiBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpXFxcIiBpZiBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjMtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NTpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjM1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM2LVxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUENTX01US19MWU5YSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy05LVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc6MTA6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cXHRzZWxlY3QgTUxYNF9DT1JFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zMS1cXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXFx1MDAyNlxcdTAwMjYgRVRIRVJORVQgXFx1MDAyNlxcdTAwMjYgSU5FVCBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgTUxYNV9DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMzOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zNC1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTMzPWNvbmZpZyBNTFhTV19QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE1MWFNXX0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM3LVxcdGRlZmF1bHQgbVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI3LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy04LVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTEwLVxcdHNlbGVjdCBWQ0FQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9Mjg9Y29uZmlnIExBTjk2OVhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzAtXFx0ZGVwZW5kcyBvbiBTUEFSWDVfU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTg9Y29uZmlnIE1JQ1JPU09GVF9NQU5BXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMy1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yNS1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZz0yMD1jb25maWcgSU9OSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjctXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZz0xMTA9Y29uZmlnIFJUQVNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTI5PWNvbmZpZyBSQVZCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXFx0c2VsZWN0IE1ESU9fQklUQkFOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM3LVxcdHNlbGVjdCBQSFlMSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnPTI1PWNvbmZpZyBTTklfTkVUU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTMwLVxcdHNlbGVjdCBNSUlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUEhZTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc9MjY9Y29uZmlnIFRFSFVUSV9UTjQwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMC1cXHRzZWxlY3QgRldfTE9BREVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTUwPWNvbmZpZyBUSV9DUFNXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01Ny1cXHRzZWxlY3QgUkVHTUFQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTY1PWNvbmZpZyBUSV9DUFNXX1NXSVRDSERFVlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cXHRkZXBlbmRzIG9uIFRJX0NQVFMgfHwgIVRJX0NQVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTcxLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMy1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9MjA0PWNvbmZpZyBUSV9JQ1NTR19QUlVFVEhfU1IxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMTAtXFx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9Mj1jb25maWcgTVQ3Nl9DT1JFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMjo0OTo1NS4xNDk4NjVaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk5MDg0NjYzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtcyoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYFBBR0VfUE9PTGAgaXMgYWxtb3N0IGNlcnRhaW5seSBlbmFibGVkIGluIHN5emthbGxlciBjb25maWdzLiBJIG1lYW4sIGBCUEZfU1lTQ0FMTGAgdW5kZXIgYE5FVGAsIGBWRVRIYCwgYW5kIGBWSVJUSU9fTkVUYCBhbGwgc2VsZWN0IGl0LiBUaGF0J3MgYSBzdHJvbmcgaW5kaWNhdGlvbi5cblxuTm93LCB3aGF0IGFib3V0IGBETUFfU0hBUkVEX0JVRkZFUmA/IExldCBtZSBzZWUuLi4gYFNZTkNfRklMRWAsIGBEUk1gLCBgSU5GSU5JQkFORF9VU0VSX01FTWAsIGBWSURFT0JVRjJfQ09SRWAsIGFuZCBgVVNCX0ZfRlNgIGFsbCBzZWxlY3QgaXQuIFNvLCB5ZWFoLCAqdmVyeSogbGlrZWx5IGVuYWJsZWQgdGhlcmUgdG9vLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc2FmZSB0aG91Z2gsIEkgd2FzIGNvbnNpZGVyaW5nIGFkZGluZyBgTkVUX0RFVk1FTWAgdG8gdGhlIEVuYWJsZUNvbmZpZ3MuIEJ1dCwgaGFuZyBvbi4uLnN5emthbGxlciBqdXN0IGFwcGVuZHMgYENPTkZJR19ORVRfREVWTUVNPXlgIGFuZCBzaW5jZSB0aGF0J3MgYGRlZl9ib29sIHlgLCBpdCB3aWxsIGJlIGVuYWJsZWQgb25seSBpZiBpdHMgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQuIElmIHRoZXkgYXJlbid0LCBpdCB3b24ndCBiZS5cblxuU28sIGluc3RlYWQgb2YgZXhwbGljaXRseSBlbmFibGluZyBpdCwgSSB3b25kZXIgaWYgSSBzaG91bGQgbGlzdCBzb21ldGhpbmcgbGlrZSBgRFJNYCBvciBgU1lOQ19GSUxFYCB0byBndWFyYW50ZWUgYERNQV9TSEFSRURfQlVGRkVSYCBpcyBlbmFibGVkPyBIbW0sIGBEUk1gIGlzIGEgd2hvbGUgbWFzc2l2ZSBzdWJzeXN0ZW0uLi4gSSdkIHJhdGhlciBhdm9pZCB0aGF0LiBgU1lOQ19GSUxFYCBpcyBtdWNoIHNtYWxsZXIgYW5kIG1vcmUgdGFyZ2V0ZWQuIFJpZ2h0LCBsZXQncyBnbyB3aXRoIGBTWU5DX0ZJTEVgLiBJJ2xsIGNoZWNrIHRoYXQgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1NDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTA6MTUuMDU4MzM4MzY3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDM0Mzk2NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTWU5DX0ZJTEVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9kbWEtYnVmL0tjb25maWc9Mj1tZW51IFxcXCJETUFCVUYgb3B0aW9uc1xcXCJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy0zLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjQ6Y29uZmlnIFNZTkNfRklMRVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTUtXFx0Ym9vbCBcXFwiRXhwbGljaXQgU3luY2hyb25pemF0aW9uIEZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTA6MTguMDkyNzQxNTk0WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NDg0NDI3ODY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbiBmb3IgWmVyb2NvcHkgYW5kIFNLQiBGcmFnbWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgYFNZTkNfRklMRWAgY29uZmlnIGxvb2tzIGRpcmVjdGx5IHJlbGV2YW50IGJhc2VkIG9uIGl0cyBwcm9tcHQsIHNvIEknbGwgZGVmaW5pdGVseSBlbmFibGUgdGhhdCwgYWRkaW5nIGl0IHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gQWxzbywgc2luY2UgYFZFVEhgIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIsIGFuZCB0aGUgcGF0Y2ggbWVudGlvbnMgYE5FVF9ERVZNRU1gLCBJJ2xsIGluY2x1ZGUgYE5FVF9ERVZNRU1gIGFzIHdlbGwuIEZvciBub3csIEknbGwga2VlcCBpdCBzaW1wbGUgYW5kIGxpc3Qgb25seSBgTkVUX0RFVk1FTWAgYW5kIGBTWU5DX0ZJTEVgLlxuXG5UaGUgY29yZSBvZiB0aGUgcGF0Y2ggcmV2b2x2ZXMgYXJvdW5kIGNoYW5nZXMgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBhbiBgLUVGQVVMVGAgdG8gYC1FTVNHU0laRWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIHdoZW4gZGVhbGluZyB3aXRoIGludmFsaWQgZGF0YS4gRGVmaW5pdGVseSBgV29ydGhGdXp6aW5nOiB0cnVlYC5cblxuTm93IGZvciB0aGUgYEZvY3VzU3ltYm9sc2AuIEkgbmVlZCB0byBiZSBzdHJhdGVnaWMgaGVyZS4gSSB3YW50IHRvIHRhcmdldCB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGNoYW5nZWQgYnkgdGhlIHBhdGNoLCBzbyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyB0aGUgZnVuY3Rpb25zIGxpc3RlZCBhYm92ZTogIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgLCBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBhbmQgYHNrYl96ZXJvY29weWAuIEFsc28sIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLCBzaW5jZSB0aGV5IGFyZSBjYWxsZWQgYnkgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcmAuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiAgSSBjaGVja2VkIHdpdGggYSBxdWljayBgZ3JlcGAgZm9yIGBFWFBPUlRfU1lNQk9MLip6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJgIGFuZCBmb3VuZCBub3RoaW5nLiBIb3dldmVyLCBpdCdzIG5vdCBzdGF0aWMsIHNvIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCB2aWEga2FsbHN5bXMuIFRoYXQncyBnb29kLiBTaW5jZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gICppcyogc3RhdGljLCBJIHNob3VsZCBhdm9pZCBpdC4gVGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uIGlzIGEgaG90IHBhdGgsIGFuZCB0aGF0IG1lYW5zIGl0J3MgbGlrZWx5IHRvIGJlIHJlYWNoZWQgcXVpY2tseS4gU28gSSBhbSBnb2luZyB0byBhdm9pZCBpdC5cblxuQWZ0ZXIgcmV2aWV3aW5nIHRoZSBwYXRjaCBhZ2FpbiwgSSBzZWUgaXQgbW9kaWZpZXMgaG93IGBza2JfZnJhZ3NfcmVhZGFibGVgIGlzIHVzZWQuICBTcGVjaWZpY2FsbHkgdGhlIGNoYW5nZSBpbnZvbHZlcyByZXR1cm5pbmcgYC1FTVNHU0laRWAgaW5zdGVhZCBvZiBgLUVGQVVMVGAuIFNvIEknbGwgYWRkIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0OlxuLSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgXG4tIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gXG4tIGBza2JfemVyb2NvcHlgXG5cblNvLCBteSBmaW5hbCBwbGFuIGlzOlxuXG5Db25maWdzOlxuLSBgTkVUX0RFVk1FTWBcbi0gYFNZTkNfRklMRWBcblxuRm9jdXNTeW1ib2xzOlxuLSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgXG4tIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gXG4tIGBza2JfemVyb2NvcHlgXG5cblRoZSBwYXRjaCBpcyBjaGFuZ2luZyBjcml0aWNhbCBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgZGVhbGluZyB3aXRoIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgYHNrYmAgZGF0YSBhbmQgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiBmcmFnbWVudHMsIGFuZCBjaGFuZ2luZyBlcnJvciBjb2Rlcy4gVGhpcyBjbGVhcmx5IHdhcnJhbnRzIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjQ1LCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTI6NTA6MzMuNTc3MTczMjEyWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMDgwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJTWU5DX0ZJTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weVwiLFxuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJTWU5DX0ZJTEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weVwiLFxuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMgKHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlciwgc2tiX3plcm9jb3B5LCB0Y3Bfc2VuZG1zZ19sb2NrZWQpIHRvIGhhbmRsZSB1bnJlYWRhYmxlIHNrYiBmcmFnbWVudHMgYW5kIGZpeCBlcnJvciBjb2RlcyBmb3IgZGV2bWVtIGFuZCBpdGVyIHplcm9jb3B5IHBhdGhzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[1] Phase: Succeeded StartedAt: 2026-08-02 12:50:46 +0000 UTC FinishedAt: 2026-08-02 12:50:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 12:50:46 +0000 UTC FinishedAt: 2026-08-02 12:50:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2] Phase: Succeeded StartedAt: 2026-08-02 12:50:46 +0000 UTC FinishedAt: 2026-08-02 16:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 12:50:46 +0000 UTC FinishedAt: 2026-08-02 16:42:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 12:50:46 +0000 UTC FinishedAt: 2026-08-02 12:50:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 12:50:46 +0000 UTC FinishedAt: 2026-08-02 12:50:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcqh69/series-workflowcqh69-convert-artifact-2018198801/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 12:50:56 +0000 UTC FinishedAt: 2026-08-02 13:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 12:50:56 +0000 UTC FinishedAt: 2026-08-02 13:14:58 +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:*0dab497f-4d2e-472a-9efa-8c427d7c9bf7,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-workflowcqh69/series-workflowcqh69-convert-artifact-2018198801/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": "2b14c1e0-2493-4f41-a8af-3afdd3b0688f", "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-workflowcqh69/series-workflowcqh69-build-action-2239571647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 12:50:56 +0000 UTC FinishedAt: 2026-08-02 13:14:48 +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:*0dab497f-4d2e-472a-9efa-8c427d7c9bf7,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-workflowcqh69/series-workflowcqh69-convert-artifact-2018198801/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": "2b14c1e0-2493-4f41-a8af-3afdd3b0688f", "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-workflowcqh69/series-workflowcqh69-build-action-2239571647/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 13:14:58 +0000 UTC FinishedAt: 2026-08-02 13:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 13:14:58 +0000 UTC FinishedAt: 2026-08-02 13:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 13:14:58 +0000 UTC FinishedAt: 2026-08-02 13:15:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 13:14:58 +0000 UTC FinishedAt: 2026-08-02 13:15:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcqh69/series-workflowcqh69-convert-artifact-2951400420/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 13:15:08 +0000 UTC FinishedAt: 2026-08-02 13:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 13:15:08 +0000 UTC FinishedAt: 2026-08-02 13:16:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b14c1e0-2493-4f41-a8af-3afdd3b0688f,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-workflowcqh69/series-workflowcqh69-build-action-2239571647/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-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 13:16:58 +0000 UTC FinishedAt: 2026-08-02 13:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 13:16:58 +0000 UTC FinishedAt: 2026-08-02 13:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 13:16:58 +0000 UTC FinishedAt: 2026-08-02 13:37:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 13:16:58 +0000 UTC FinishedAt: 2026-08-02 13:37:02 +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:*0dab497f-4d2e-472a-9efa-8c427d7c9bf7,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-workflowcqh69/series-workflowcqh69-convert-artifact-2951400420/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": "aefc916c-97c2-4f50-9df0-5362866055eb", "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-workflowcqh69/series-workflowcqh69-build-action-2397623664/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 13:16:58 +0000 UTC FinishedAt: 2026-08-02 13:36:41 +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:*0dab497f-4d2e-472a-9efa-8c427d7c9bf7,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-workflowcqh69/series-workflowcqh69-convert-artifact-2951400420/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": "aefc916c-97c2-4f50-9df0-5362866055eb", "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-workflowcqh69/series-workflowcqh69-build-action-2397623664/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 13:37:02 +0000 UTC FinishedAt: 2026-08-02 13:37:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 13:37:02 +0000 UTC FinishedAt: 2026-08-02 13:37:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 13:37:02 +0000 UTC FinishedAt: 2026-08-02 13:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 13:37:02 +0000 UTC FinishedAt: 2026-08-02 13:38:59 +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:*aefc916c-97c2-4f50-9df0-5362866055eb,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-workflowcqh69/series-workflowcqh69-build-action-2397623664/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-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 16:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 16:42:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*2b14c1e0-2493-4f41-a8af-3afdd3b0688f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aefc916c-97c2-4f50-9df0-5362866055eb,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-workflowcqh69/series-workflowcqh69-build-action-2239571647/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-workflowcqh69/series-workflowcqh69-build-action-2397623664/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 13:39:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 13:39:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcqh69/series-workflowcqh69-convert-artifact-3566951533/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 13:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 13:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 13:39:10 +0000 UTC FinishedAt: 2026-08-02 13:39:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 13:39:20 +0000 UTC FinishedAt: 2026-08-02 16:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqh69[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zerocopy_fill_skb_from_iter","skb_zerocopy","__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","SYNC_FILE"],"series_id":"fe69da0d-20d0-4862-8d7e-e225a73646a8","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 13:39:20 +0000 UTC FinishedAt: 2026-08-02 16:41:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b14c1e0-2493-4f41-a8af-3afdd3b0688f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aefc916c-97c2-4f50-9df0-5362866055eb,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-workflowcqh69/series-workflowcqh69-build-action-2239571647/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-workflowcqh69/series-workflowcqh69-build-action-2397623664/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-workflowcqh69/series-workflowcqh69-convert-artifact-3566951533/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,}