Name: series-workflowk7nrm Phase: Succeeded StartedAt: 2026-08-30 16:02:50 +0000 UTC FinishedAt: 2026-08-30 18:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[0] Phase: Succeeded StartedAt: 2026-08-30 16:02:50 +0000 UTC FinishedAt: 2026-08-30 16:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 16:02:50 +0000 UTC FinishedAt: 2026-08-30 16:39: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": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGB", "PCI", "PTP_1588_CLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGB", "PCI", "PTP_1588_CLOCK" ], "series_id": "fa1d6ac2-fefc-4e8b-b726-35f20de56c64" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "igb_ptp_init", "ptp_clock_register", "igb_ptp_reset", "igb_ptp_hwtstamp_set" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdiX3B0cF9pbml0JiMzNDssCiAgICAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX3Jlc2V0JiMzNDssCiAgICAmIzM0O2lnYl9wdHBfaHd0c3RhbXBfc2V0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2tgIHNwaW5sb2NrIGJlZm9yZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyKClgIHRvIGVuc3VyZSB0aGUgbG9jayBpcyBpbml0aWFsaXplZCBiZWZvcmUgdGhlIFBUUCBjbG9jayBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBhbmQgaXRzIGNhbGxiYWNrcyBjYW4gYmUgaW52b2tlZC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgaW5pdGlhbGl6YXRpb24gb3JkZXIgZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBidWZmZXIgaGFuZGxpbmcsIG9yIGRhdGEgY29weWluZyB0byB1c2VyIHNwYWNlLiBBbnkgbG9ja2luZyBvciB1bmluaXRpYWxpemVkIGxvY2sgaXNzdWVzIGFyZSBjYXVnaHQgYnkgc3RhbmRhcmQgZGVidWcgZmFjaWxpdGllcyAoTE9DS0RFUCwgQ09ORklHX0RFQlVHX1NQSU5MT0NLKSBlbmFibGVkIGluIHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBidWcgaW4gdGhlIEludGVsIGlnYiBkcml2ZXIgYnkgaW5pdGlhbGl6aW5nIHRoZSBhZGFwdGVyJiMzOTtzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyN2QxM2VjYjgyMDQxODUwYzVkYTliNTc2NmU4ZmJhZDZmZmYyZDQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTY6Mjc6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcbmluZGV4IDYzOGQ4MjQyYjY2YmIuLjJhNGVhMzI3YWMzNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXG5AQCAtMTM3OCw2ICYjNDM7MTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4gXHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuIFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbkBAIC0xMzg4LDcgJiM0MzsxMzg5LDYgQEAgdm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdCBhZGFwdGVyLVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lKTtcbiBcdFx0YWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEO1xuIFxuLVx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2spO1xuIFx0XHRJTklUX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcbiBcbiBcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcHRwX2ZsYWdzIFx1MDAyNiBJR0JfUFRQX09WRVJGTE9XX0NIRUNLKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjExbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdiX3B0cF9pbml0JiMzNDssCiAgICAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX3Jlc2V0JiMzNDssCiAgICAmIzM0O2lnYl9wdHBfaHd0c3RhbXBfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGJ1ZyBpbiB0aGUgSW50ZWwgaWdiIGRyaXZlciBieSBpbml0aWFsaXppbmcgdGhlIGFkYXB0ZXImIzM5O3MgdG1yZWdfbG9jayBzcGlubG9jayBiZWZvcmUgY2FsbGluZyBwdHBfY2xvY2tfcmVnaXN0ZXIoKS4gUHJpb3IgdG8gdGhpcyBmaXgsIHJlZ2lzdGVyaW5nIHRoZSBQVFAgY2xvY2sgZXhwb3NlZCBjYWxsYmFja3MgdG8gdXNlcnNwYWNlL3N1YnN5c3RlbXMgYW5kIGlnYl9wdHBfcmVzZXQoKSB0aGF0IGFjcXVpcmUgdG1yZWdfbG9jayBiZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLiBpZ2IgaXMgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIGFuZCBQVFAgY2xvY2sgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZXhlcmNpc2VkIHZpYSBQT1NJWCBjbG9jayBhbmQgUFRQIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI3ZDEzZWNiODIwNDE4NTBjNWRhOWI1NzY2ZThmYmFkNmZmZjJkNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAzMCAxNjoyNzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jCmluZGV4IDYzOGQ4MjQyYjY2YmIuLjJhNGVhMzI3YWMzNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYwpAQCAtMTM3OCw2ICYjNDM7MTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJcmV0dXJuOwogCX0KIAomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spOwogCWFkYXB0ZXItJmd0O3B0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2FkYXB0ZXItJmd0O3B0cF9jYXBzLAogCQkJCQkJJmFtcDthZGFwdGVyLSZndDtwZGV2LSZndDtkZXYpOwogCWlmIChJU19FUlIoYWRhcHRlci0mZ3Q7cHRwX2Nsb2NrKSkgewpAQCAtMTM4OCw3ICYjNDM7MTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJCSBhZGFwdGVyLSZndDtuZXRkZXYtJmd0O25hbWUpOwogCQlhZGFwdGVyLSZndDtwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEOwogCi0JCXNwaW5fbG9ja19pbml0KCZhbXA7YWRhcHRlci0mZ3Q7dG1yZWdfbG9jayk7CiAJCUlOSVRfV09SSygmYW1wO2FkYXB0ZXItJmd0O3B0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspOwogCiAJCWlmIChhZGFwdGVyLSZndDtwdHBfZmxhZ3MgJmFtcDsgSUdCX1BUUF9PVkVSRkxPV19DSEVDSykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzOAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDc4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElHQiBQVFAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggYW5kIHdoYXQgaXQmIzM5O3MgdHJ5aW5nIHRvIGFjaGlldmUuIFRoZSBkaWZmIHBvaW50cyB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY2AsIHdoaWNoIGlzIHRoZSBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGRyaXZlciYjMzk7cyBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjb21wb25lbnQuIFRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgYHNwaW5fbG9ja19pbml0YCBjYWxsIGZvciBgYWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AuIFByZXR0eSBzdHJhaWdodGZvcndhcmQsIGxvb2tzIGxpa2UgYSBzeW5jaHJvbml6YXRpb24gZml4IHJlbGF0ZWQgdG8gdGhlIFBUUCBjbG9jayBpbml0aWFsaXphdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBmb3IgZnV6emluZyBpczogaXMgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlIGluIGEgZnV6emluZyBjb250ZXh0PyBUaGlzIGRyaXZlciwgYGlnYmAsIGhhcyB0byBiZSBlbXVsYXRlZCBpbiB0aGUgZW52aXJvbm1lbnQuIEkgcmVtZW1iZXIgc2VlaW5nIGBpZ2JgIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzIGluIFFFTVUsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9yIHJlbGV2YW50IGd1aWRlbGluZXMgdG8gY29uZmlybS4gVGhlIHJ1bGUgaXMsIGNvZGUgcGF0aHMgbm90IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYXJlbiYjMzk7dCB3b3J0aCBmdXp6aW5nLgoKSSByZWNhbGwgUUVNVSBhZGRlZCBgaWdiYCBzdXBwb3J0IGluIHZlcnNpb24gOC4wLCB3aGljaCBtZWFucyBpdCBzaG91bGQgYmUgZW11bGF0ZWQuIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGlzLCAqaG93KiBpcyBgaWdiX3B0cF9pbml0YCBjYWxsZWQ/IElzIGl0IG9ubHkgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgb3BlcmF0aW9uPyBJZiBpdCYjMzk7cyBvbmx5IGNhbGxlZCB3aGVuIGEgZGV2aWNlIGlzIGZpcnN0IGluaXRpYWxpemVkLCB0aGVuIGl0IGlzIG5vdCBpZGVhbCBmb3IgZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgaWdiX3B0cF9pbml0YCB0byBjb25maXJtIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGF0IG90aGVyIHRpbWVzIHRvIG1ha2UgaXQgd29ydGggZnV6emluZy4gSSYjMzk7bGwgcmVhY2ggZm9yIG15IHRvb2xzIHRvIHRyYWNrIGRvd24gdGhlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdiX3B0cF9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTc2OS12b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMyMDQ9c3RhdGljIGludCBpZ2JfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cdC8qIGRvIGh3IHRzdGFtcCBpbml0IGFmdGVyIHJlc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzU4NjpcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM1ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI5OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMDAtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzA1OnZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMwNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxOAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGlnYl9wdHAuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzNzguIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgaGVhcnQgb2Ygc29tZSBjcml0aWNhbCBQVFAgZnVuY3Rpb25hbGl0eSByZXNpZGVzIGluIHRoZSBJR0IgZHJpdmVyLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGltZXN0YW1waW5nLCBwZXJoYXBzIGhhbmRsaW5nIG9mIGhhcmR3YXJlIHRpbWVzdGFtcHMsIG9yIG1heWJlIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBQVFAgY2xvY2sgaXRzZWxmLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHJhY2UgY29uZGl0aW9ucywgb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBpbXBhY3QgdGhlIGFjY3VyYWN5IGFuZCBlZmZpY2llbmN5IG9mIHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTttIGhvcGluZyB0byBpZGVudGlmeSBhbnkgc3VidGxlIGVkZ2UgY2FzZXMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM2MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm1heF9hZGogPSA2MjQ5OTk5OTtcbjEzNjE6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX2V4dF90cyA9IElHQl9OX0VYVFRTO1xuMTM2MjpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm5fcGVyX291dCA9IElHQl9OX1BFUk9VVDtcbjEzNjM6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX3BpbnMgPSBJR0JfTl9TRFA7XG4xMzY0Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc3VwcG9ydGVkX2V4dHRzX2ZsYWdzID0gUFRQX1JJU0lOR19FREdFIHxcbjEzNjU6XHRcdFx0XHRcdFx0XHRcdCAgUFRQX0ZBTExJTkdfRURHRSB8XG4xMzY2Olx0XHRcdFx0XHRcdFx0XHQgIFBUUF9TVFJJQ1RfRkxBR1M7XG4xMzY3Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMucHBzID0gMTtcbjEzNjg6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cdTAwM2VzZHBfY29uZmlnO1xuMTM2OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XG4xMzcwOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xuMTM3MTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4X2kyMTA7XG4xMzcyOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XG4xMzczOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xuMTM3NDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbjEzNzU6XHRcdFx0YnJlYWs7XG4xMzc2Olx0XHRkZWZhdWx0OlxuMTM3NzpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4xMzc4Olx0XHRcdHJldHVybjtcbjEzNzk6XHRcdH1cbjEzODA6XHRcbjEzODE6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4xMzgyOlx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuMTM4MzpcdFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuMTM4NDpcdFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbjEzODU6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuMTM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O3B0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuMTM4NzpcdFx0fSBlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykge1xuMTM4ODpcdFx0XHRkZXZfaW5mbyhcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDthZGRlZCBQSEMgb24gJXNcXG5cJiMzNDssXG4xMzg5Olx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuMTM5MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XG4xMzkxOlx0XG4xMzkyOlx0XHRcdElOSVRfV09SSyhcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xuMTM5MzpcdFxuMTM5NDpcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXG4xMzk1Olx0XHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcbjEzOTY6XHRcdFx0XHRcdFx0ICBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKTtcbjEzOTc6XHRcbjEzOTg6XHRcdFx0YWRhcHRlci1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9IEhXVFNUQU1QX0ZJTFRFUl9OT05FO1xuMTM5OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXRzdGFtcF9jb25maWcudHhfdHlwZSA9IEhXVFNUQU1QX1RYX09GRjtcbjE0MDA6XHRcbjE0MDE6XHRcdFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcbjE0MDI6XHRcdH1cbjE0MDM6XHR9XG4xNDA0Olx0XG4xNDA1Olx0LyoqXG4xNDA2Olx0ICogaWdiX3B0cF9zZHBfaW5pdCAtIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggaW5pdHMgdGhlIFNEUCBjb25maWcgc3RydWN0c1xuMTQwNzpcdCAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cbjE0MDg6XHQgKiovXG4xNDA5Olx0dm9pZCBpZ2JfcHRwX3NkcF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTY1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElHQiBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiB0aGUgYGlnYmAgZHJpdmVyIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZSBgc3Bpbl9sb2NrX2luaXQoJmFtcDthZGFwdGVyLSZndDt0bXJlZ19sb2NrKWAgd2FzIGJlaW5nIGluaXRpYWxpemVkICphZnRlciogYHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2FkYXB0ZXItJmd0O3B0cF9jYXBzLCAmYW1wO2FkYXB0ZXItJmd0O3BkZXYtJmd0O2RldilgLiBUaGlzIG1lYW5zIHRoYXQgaWYgYHB0cF9jbG9ja19yZWdpc3RlcmAgb3IgYW55IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBQVFAgY2xvY2sgbWV0aG9kcyAobGlrZSBgYWRqdGltZWAsIGBnZXR0aW1leGApIHdlcmUgdG8gdG91Y2ggYHRtcmVnX2xvY2tgIGJlZm9yZSBpdCYjMzk7cyBpbml0aWFsaXplZCwgd2UgaGF2ZSBhIHByb2JsZW0uCgpUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLCBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiByZWxldmFudCB0byBmdXp6aW5nLiBUaGUgZ3VpZGVsaW5lcyBzdGF0ZSBub3QgdG8gY29uc2lkZXIgcGF0Y2hlcyBhZmZlY3RpbmcgdW5yZWFjaGFibGUgY29kZSBwYXRocy4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgaWdiYCBpcyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIuICBJcyBpdCBlbXVsYXRlZCBpbiBRRU1VPyBDYW4gaXQgYmUgdGVzdGVkIHdpdGggc3RhbmRhcmQgc3l6a2FsbGVyPyAgSSBrbm93IHRoYXQgUUVNVSBoYXMgYC1kZXZpY2UgaWdiYCBpbiB2ZXJzaW9uIDguMCwgYnV0IEkgZG9uJiMzOTt0IGtub3cgdGhlIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cC4gVHlwaWNhbGx5LCBzeXprYWxsZXIgZm9jdXNlcyBvbiB2aXJ0dWFsaXplZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgdmlydGlvLW5ldGAgb3IgdGhlIGBkdW1teSBuZXRgIGRldmljZSwgYW5kIGFsc28gc3VwcG9ydHMgYHR1bmAuIEdDRSB1c2VzIGB2aXJ0aW9fbmV0YCBvciBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBCYXNlZCBvbiB0aGF0LCBJIGh5cG90aGVzaXplIHN5emthbGxlciBwcm9iYWJseSBkb2VzbiYjMzk7dCB0ZXN0IFBDSSBkcml2ZXJzIHVubGVzcyB0aGV5IGFyZSB2aXJ0dWFsaXplZCAobGlrZSBgdmlydGlvYCkgb3IgVVNCIGdhZGdldHMuCgpPa2F5LCBsZXQmIzM5O3MgZm9jdXMgb24gdGhlIHdvcmRpbmcgb2YgdGhlIHByb21wdCwgc3BlY2lmaWNhbGx5OiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4uLkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiAgVGhhdCBwaHJhc2UgaXMgdGhlIGtleS4gSXMgYGlnYmAgYSAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llJiMzNDsgZHJpdmVyIHRoYXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZT8KCkFscmlnaHQsIGxldCYjMzk7cyBjb25maXJtIHRoZSBwcm9iZSBiZWhhdmlvci4gYGlnYl9wdHBfaW5pdGAgc2VlbXMgdG8gYmUgY2FsbGVkIE9OTFkgZnJvbSBgaWdiX3Byb2JlYC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGlnYl9wdHBfaW5pdGAgY2FuIGJlIGNhbGxlZCBhdCBydW50aW1lIHRocm91Z2ggYSBzeXNjYWxsLCBvciBub3QuIElmIHRoaXMgZnVuY3Rpb24gaXMgb25seSBldmVyIGNhbGxlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB0aGVuIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzICpub3QqIGZ1enppbmcgaXQsIGJlY2F1c2Ugc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzIG5vdCBwcm9iZSBvciB0cmlnZ2VyIHBoeXNpY2FsIGRldmljZXMgdW5sZXNzIHRoZXkgYXJlIHNwZWNpZmljYWxseSBzZXR1cCB2aWEgc3lzZnMgb3IgUUVNVSBhbmQgUENJIGhvdHBsdWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBgaWdiX3B0cF9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZ2JfcHRwX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTc2OS12b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMyMDQ9c3RhdGljIGludCBpZ2JfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cdC8qIGRvIGh3IHRzdGFtcCBpbml0IGFmdGVyIHJlc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzU4NjpcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM1ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI5OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMDAtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzA1OnZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMwNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBhYm91dCBgaWdiX3B0cF9pbml0YC4gSSBiZWxpZXZlIGl0JiMzOTtzIG9ubHkgY2FsbGVkIHdpdGhpbiBgaWdiX3Byb2JlYCwgYnV0IEkmIzM5O2QgYmV0dGVyIGJlIGNlcnRhaW4uIFNvLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoYXQgZnVuY3Rpb24mIzM5O3MgY2FsbCBncmFwaCB0byB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLgoKTm93LCBhIHJlbGF0ZWQgcXVlc3Rpb24gb2NjdXJzIHRvIG1lOiBBcmUgYGlnYl9wdHBfcmVzZXRgIGFuZCBgaWdiX3B0cF9zdG9wYCB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgY29kZT8gSSBzaG91bGQgaW52ZXN0aWdhdGUgd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBjYWxsZWQsIHRvbywgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgUFRQIGluaXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biBwcm9jZXNzLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGVzZSBhcmUgdXRpbGl6ZWQgaW4gdGhlIG92ZXJhbGwgbGlmZWN5Y2xlLiBUaW1lIHRvIGV4YW1pbmUgdGhlIGNhbGwgc2l0ZXMgb2YgYGlnYl9wdHBfc3RvcGAgYW5kIGBpZ2JfcHRwX3Jlc2V0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdiX3B0cF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2OTp2b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3MDp2b2lkIGlnYl9wdHBfcmVzZXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzE6dm9pZCBpZ2JfcHRwX3N1c3BlbmQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzI6dm9pZCBpZ2JfcHRwX3J4X2hhbmcoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzM6dm9pZCBpZ2JfcHRwX3R4X2hhbmcoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzQ6dm9pZCBpZ2JfcHRwX3J4X3JndHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzU6aW50IGlnYl9wdHBfcnhfcGt0c3RhbXAoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIHZvaWQgKnZhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTc3Ni1cdFx0XHRrdGltZV90ICp0aW1lc3RhbXApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3NzppbnQgaWdiX3B0cF9od3RzdGFtcF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC03NzgtXHRcdFx0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3OTppbnQgaWdiX3B0cF9od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC03ODAtXHRcdFx0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjb25maWcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MjI4OT12b2lkIGlnYl9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjQ2Mi1cdGlmIChhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyBcdTAwMjYgSUdCX1BUUF9FTkFCTEVEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjQ2MzpcdFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTI0NjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MzAzNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlnYl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTMwNjItXHQubmRvX3hza193YWtldXAgICAgICAgICA9IGlnYl94c2tfd2FrZXVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzA2MzpcdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzA2NDpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzA2NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMyMDQ9c3RhdGljIGludCBpZ2JfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cdC8qIGRvIGh3IHRzdGFtcCBpbml0IGFmdGVyIHJlc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzU4NjpcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM1ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9Mzg3MT1zdGF0aWMgdm9pZCBpZ2JfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM4ODEtXHRpZ2JfcmVtb3ZlX2kyYyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjM4ODI6XHRpZ2JfcHRwX3N0b3AoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zODgzLVx0LyogVGhlIHdhdGNoZG9nIHRpbWVyIG1heSBiZSByZXNjaGVkdWxlZCwgc28gZXhwbGljaXRseVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTU1NjI9c3RhdGljIHZvaWQgaWdiX3dhdGNoZG9nX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTU3ODItXHRpZ2Jfc3Bvb2ZfY2hlY2soYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo1NzgzOlx0aWdiX3B0cF9yeF9oYW5nKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NTc4NDpcdGlnYl9wdHBfdHhfaGFuZyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTU3ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9ODkwOT12b2lkIGlnYl9wcm9jZXNzX3NrYl9maWVsZHMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTg5MjAtXHQgICAgIWlnYl90ZXN0X3N0YXRlcnIocnhfZGVzYywgRTEwMDBfUlhEQURWX1NUQVRfVFNJUCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4OTIxOlx0XHRpZ2JfcHRwX3J4X3JndHN0YW1wKHJ4X3JpbmctXHUwMDNlcV92ZWN0b3IsIHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04OTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTkwMjU9c3RhdGljIGludCBpZ2JfY2xlYW5fcnhfaXJxKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBjb25zdCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTkwNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo5MDc2Olx0XHRcdHRzX2hkcl9sZW4gPSBpZ2JfcHRwX3J4X3BrdHN0YW1wKHJ4X3JpbmctXHUwMDNlcV92ZWN0b3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy05MDc3LVx0XHRcdFx0XHRcdFx0IHBrdGJ1ZiwgXHUwMDI2dGltZXN0YW1wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz05NDk0PXN0YXRpYyBpbnQgX19pZ2Jfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGJvb2wgKmVuYWJsZV93YWtlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTk1MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo5NTEwOlx0aWdiX3B0cF9zdXNwZW5kKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtOTUxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3MjpzdGF0aWMgdm9pZCBpZ2JfcHRwX3R4X2h3dHN0YW1wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjczOnN0YXRpYyB2b2lkIGlnYl9wdHBfc2RwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc1LS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgdGhlIDgyNTc2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjc2OnN0YXRpYyB1NjQgaWdiX3B0cF9yZWFkXzgyNTc2KHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05Mi0vKiBTWVNUSU0gcmVhZCBhY2Nlc3MgZm9yIHRoZSA4MjU4MCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5MzpzdGF0aWMgdTY0IGlnYl9wdHBfcmVhZF84MjU4MChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTE0LS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgSTIxMC9JMjExICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjExNTpzdGF0aWMgdm9pZCBpZ2JfcHRwX3JlYWRfaTIxMChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExNi1cdFx0XHQgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMzpzdGF0aWMgdm9pZCBpZ2JfcHRwX3dyaXRlX2kyMTAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ2OiAqIGlnYl9wdHBfc3lzdGltX3RvX2h3dHN0YW1wIC0gY29udmVydCBzeXN0ZW0gdGltZSB2YWx1ZSB0byBodyB0aW1lc3RhbXBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3LSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTYxLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTYyOnN0YXRpYyB2b2lkIGlnYl9wdHBfc3lzdGltX3RvX2h3dHN0YW1wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTYzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqaHd0c3RhbXBzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTkzLS8qIFBUUCBjbG9jayBvcGVyYXRpb25zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE5NDpzdGF0aWMgaW50IGlnYl9wdHBfYWRqZmluZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xOTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyMDg6c3RhdGljIGludCBpZ2JfcHRwX2FkamZpbmVfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjA5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjI4OnN0YXRpYyBpbnQgaWdiX3B0cF9hZGp0aW1lXzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI0MTpzdGF0aWMgaW50IGlnYl9wdHBfYWRqdGltZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI1MDpcdGlnYl9wdHBfcmVhZF9pMjEwKGlnYiwgXHUwMDI2bm93KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUxLVx0bm93ID0gdGltZXNwZWM2NF9hZGQobm93LCB0aGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjUyOlx0aWdiX3B0cF93cml0ZV9pMjEwKGlnYiwgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICopXHUwMDI2bm93KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNTk6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNjAtXHRcdFx0XHQgIHN0cnVjdCB0aW1lc3BlYzY0ICp0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Mjg2OnN0YXRpYyBpbnQgaWdiX3B0cF9nZXR0aW1leF84MjU4MChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjg3LVx0XHRcdFx0ICBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjMxNDpzdGF0aWMgaW50IGlnYl9wdHBfZ2V0dGltZXhfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzE1LVx0XHRcdFx0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzM2OnN0YXRpYyBpbnQgaWdiX3B0cF9zZXR0aW1lXzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzctXHRcdFx0XHQgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozNTU6c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzU2LVx0XHRcdFx0Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozNjQ6XHRpZ2JfcHRwX3dyaXRlX2kyMTAoaWdiLCB0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTQyMz1zdGF0aWMgdm9pZCBpZ2JfcGluX3Blcm91dChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmlnYiwgaW50IGNoYW4sIGludCBwaW4sIGludCBmcmVxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNDg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo0ODk6c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy00OTAtXHRcdFx0XHRcdHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjQwOnN0YXRpYyBpbnQgaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NDEtXHRcdFx0XHQgICAgICAgc3RydWN0IHB0cF9jbG9ja19yZXF1ZXN0ICpycSwgaW50IG9uKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3Nzk6c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03ODAtXHRcdFx0XHQgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Nzg1OnN0YXRpYyBpbnQgaWdiX3B0cF92ZXJpZnlfcGluKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCB1bnNpZ25lZCBpbnQgcGluLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03ODYtXHRcdFx0ICAgICAgZW51bSBwdHBfcGluX2Z1bmN0aW9uIGZ1bmMsIHVuc2lnbmVkIGludCBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzk5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4MDA6ICogaWdiX3B0cF90eF93b3JrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwMS0gKiBAd29yazogcG9pbnRlciB0byB3b3JrIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODA1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODA2OnN0YXRpYyB2b2lkIGlnYl9wdHBfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04MzEtXHRpZiAodHN5bmN0eGN0bCBcdTAwMjYgRTEwMDBfVFNZTkNUWENUTF9WQUxJRClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODMyOlx0XHRpZ2JfcHRwX3R4X2h3dHN0YW1wKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04MzMtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjgzODpzdGF0aWMgdm9pZCBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg1My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODU0OiAqIGlnYl9wdHBfcnhfaGFuZyAtIGRldGVjdCBlcnJvciBjYXNlIHdoZW4gUnggdGltZXN0YW1wIHJlZ2lzdGVycyBsYXRjaGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg1NS0gKiBAYWRhcHRlcjogcHJpdmF0ZSBuZXR3b3JrIGFkYXB0ZXIgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04NjEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4NjI6dm9pZCBpZ2JfcHRwX3J4X2hhbmcoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04NjMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODk0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4OTU6ICogaWdiX3B0cF90eF9oYW5nIC0gZGV0ZWN0IGVycm9yIGNhc2Ugd2hlcmUgVHggdGltZXN0YW1wIG5ldmVyIGZpbmlzaGVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg5Ni0gKiBAYWRhcHRlcjogcHJpdmF0ZSBuZXR3b3JrIGFkYXB0ZXIgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg5Ny0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODk4OnZvaWQgaWdiX3B0cF90eF9oYW5nKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkyOC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTI5OiAqIGlnYl9wdHBfdHhfaHd0c3RhbXAgLSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBmb3IgVFggdGltZSBzdGFtcFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05MzAtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTM1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTM2OnN0YXRpYyB2b2lkIGlnYl9wdHBfdHhfaHd0c3RhbXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5NDc6XHRpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChhZGFwdGVyLCBcdTAwMjZzaGh3dHN0YW1wcywgcmVndmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQ4LVx0LyogYWRqdXN0IHRpbWVzdGFtcCBmb3IgdGhlIFRYIGxhdGVuY3kgYmFzZWQgb24gbGluayBzcGVlZCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTc5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5ODA6ICogaWdiX3B0cF9yeF9wa3RzdGFtcCAtIHJldHJpZXZlIFJ4IHBlciBwYWNrZXQgdGltZXN0YW1wXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTk4MS0gKiBAcV92ZWN0b3I6IFBvaW50ZXIgdG8gaW50ZXJydXB0IHNwZWNpZmljIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTkwLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTkxOmludCBpZ2JfcHRwX3J4X3BrdHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCB2b2lkICp2YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTkyLVx0XHRcdGt0aW1lX3QgKnRpbWVzdGFtcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwMTI6XHRpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChhZGFwdGVyLCBcdTAwMjZ0cywgbGU2NF90b19jcHUocmVndmFsWzFdKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDM0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDM1OiAqIGlnYl9wdHBfcnhfcmd0c3RhbXAgLSByZXRyaWV2ZSBSeCB0aW1lc3RhbXAgc3RvcmVkIGluIHJlZ2lzdGVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMzYtICogQHFfdmVjdG9yOiBQb2ludGVyIHRvIGludGVycnVwdCBzcGVjaWZpYyBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwNDEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDQyOnZvaWQgaWdiX3B0cF9yeF9yZ3RzdGFtcChzdHJ1Y3QgaWdiX3FfdmVjdG9yICpxX3ZlY3Rvciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA0My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDY4Olx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgc2tiX2h3dHN0YW1wcyhza2IpLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDY5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA5My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTA5NDogKiBpZ2JfcHRwX2h3dHN0YW1wX2dldCAtIGdldCBoYXJkd2FyZSB0aW1lIHN0YW1waW5nIGNvbmZpZ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDk1LSAqIEBuZXRkZXY6IG5ldGRldiBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExMDEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMTAyOmludCBpZ2JfcHRwX2h3dHN0YW1wX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTAzLVx0XHRcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTExMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTExMzogKiBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZSAtIHNldHVwIGhhcmR3YXJlIGZvciB0aW1lc3RhbXBpbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTExNC0gKiBAYWRhcHRlcjogbmV0d29ya2luZyBkZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTI4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMTI5OnN0YXRpYyBpbnQgaWdiX3B0cF9zZXRfdGltZXN0YW1wX21vZGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTMwLVx0XHRcdFx0ICAgICAgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyNzUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyNzY6ICogaWdiX3B0cF9od3RzdGFtcF9zZXQgLSBzZXQgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBjb25maWdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI3Ny0gKiBAbmV0ZGV2OiBuZXRkZXYgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjgwLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI4MTppbnQgaWdiX3B0cF9od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI4Mi1cdFx0XHQgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyODg6XHRlcnIgPSBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZShhZGFwdGVyLCBjb25maWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjg5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyOTgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyOTk6ICogaWdiX3B0cF9pbml0IC0gSW5pdGlhbGl6ZSBQVFAgZnVuY3Rpb25hbGl0eVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMwNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMxNi1cdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5wcHMgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzE3Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1NzY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMTg6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV84MjU3NjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxOTpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5nZXR0aW1leDY0ID0gaWdiX3B0cF9nZXR0aW1leF84MjU3NjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMDpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5zZXR0aW1lNjQgPSBpZ2JfcHRwX3NldHRpbWVfODI1NzY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMjE6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMjpcdFx0YWRhcHRlci1cdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTc2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzIzLVx0XHRhZGFwdGVyLVx1MDAzZWNjLm1hc2sgPSBDWUNMRUNPVU5URVJfTUFTSyg2NCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzMwLVx0Y2FzZSBlMTAwMF9pMzUwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzMxOlx0XHRpZ2JfcHRwX3NkcF9pbml0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzMyLVx0XHRzbnByaW50ZihhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm5hbWUsIDE2LCBcJiMzNDslcG1cJiMzNDssIG5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzQyLVx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnBpbl9jb25maWcgPSBhZGFwdGVyLVx1MDAzZXNkcF9jb25maWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDM6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqZmluZSA9IGlnYl9wdHBfYWRqZmluZV84MjU4MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0NDpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5hZGp0aW1lID0gaWdiX3B0cF9hZGp0aW1lXzgyNTc2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ1Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4XzgyNTgwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ2Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnNldHRpbWU2NCA9IGlnYl9wdHBfc2V0dGltZV84MjU3NjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0NzpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5lbmFibGUgPSBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXzgyNTgwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ4Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0OTpcdFx0YWRhcHRlci1cdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTgwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzUwLVx0XHRhZGFwdGVyLVx1MDAzZWNjLm1hc2sgPSBDWUNMRUNPVU5URVJfTUFTSyhJR0JfTkJJVFNfODI1ODApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1Ni1cdGNhc2UgZTEwMDBfaTIxMTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM1NzpcdFx0aWdiX3B0cF9zZHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1OC1cdFx0c25wcmludGYoYWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uYW1lLCAxNiwgXCYjMzQ7JXBtXCYjMzQ7LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM2OC1cdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cdTAwM2VzZHBfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzY5Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzA6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzcxOlx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4X2kyMTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzI6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzM6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzc0Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM3NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzkyOlx0XHRJTklUX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzOTUtXHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM5NjpcdFx0XHRcdFx0ICBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0MDE6XHRcdGlnYl9wdHBfcmVzZXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDA1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDA2OiAqIGlnYl9wdHBfc2RwX2luaXQgLSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGluaXRzIHRoZSBTRFAgY29uZmlnIHN0cnVjdHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQwNy0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDA5OnZvaWQgaWdiX3B0cF9zZHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQyMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQyMzogKiBpZ2JfcHRwX3N1c3BlbmQgLSBEaXNhYmxlIFBUUCB3b3JrIGl0ZW1zIGFuZCBwcmVwYXJlIGZvciBzdXNwZW5kXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjQtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDI4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDI5OnZvaWQgaWdiX3B0cF9zdXNwZW5kKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDQ1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDQ2OiAqIGlnYl9wdHBfc3RvcCAtIERpc2FibGUgUFRQIGRldmljZSBhbmQgc3RvcCB0aGUgb3ZlcmZsb3cgY2hlY2suXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NDctICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1MC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NTE6dm9pZCBpZ2JfcHRwX3N0b3Aoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ1MzpcdGlnYl9wdHBfc3VzcGVuZChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NjQ6ICogaWdiX3B0cF9yZXNldCAtIFJlLWVuYWJsZSB0aGUgYWRhcHRlciBmb3IgUFRQIGZvbGxvd2luZyBhIHJlc2V0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDY1LSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NjgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDY5OnZvaWQgaWdiX3B0cF9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NzAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3NC1cdC8qIHJlc2V0IHRoZSB0c3RhbXBfY29uZmlnICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NzU6XHRpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZShhZGFwdGVyLCBcdTAwMjZhZGFwdGVyLVx1MDAzZXRzdGFtcF9jb25maWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDc2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUwNS1cdFx0a3RpbWVfZ2V0X3JlYWxfdHM2NChcdTAwMjZ0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1MDY6XHRcdGlnYl9wdHBfd3JpdGVfaTIxMChhZGFwdGVyLCBcdTAwMjZ0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE1MDctXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MzQxPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzozODM6XHRcdFx0dHNfaGRyX2xlbiA9IGlnYl9wdHBfcnhfcGt0c3RhbXAocnhfcmluZy1cdTAwM2VxX3ZlY3RvcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzg0LVx0XHRcdFx0XHRcdFx0IHhkcC1cdTAwM2VkYXRhLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBLY29uZmlnIGZvciBJR0IqKgoKT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSBzb21ldGhpbmcsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSBmb3IgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uIG9yIGRyaXZlci1yZWxhdGVkIHdvcmsuIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBJR0IgZHJpdmVyJiMzOTtzIGF2YWlsYWJpbGl0eSwgY2hlY2sgaWYgaXQmIzM5O3MgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgc2VlIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBleHBvc2VkLiBJJiMzOTtsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZCBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBpdHMgaW5jbHVzaW9uIG9yIGJlaGF2aW9yLiBUaGlzIGFsc28gbWVhbnMgdW5kZXJzdGFuZGluZyBob3cgdGhlIElHQiBtb2R1bGUgaW50ZXJhY3RzIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG5ldHdvcmsgc3ViLXN5c3RlbXMgb3IgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gaGVyZSwgSSBjYW4gYXNjZXJ0YWluIHdoYXQgb3B0aW9ucyBJIG5lZWQgdG8gc2V0LCBhbmQgaG93IHRvIHZlcmlmeSB0aGVpciBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElHQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTgxPWNvbmZpZyBFMTAwMEVfSFdUU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjkwOmNvbmZpZyBJR0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctOTEtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSA4MjU3NS84MjU3NiBQQ0ktRXhwcmVzcyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTA5OmNvbmZpZyBJR0JfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTEwLVx0Ym9vbCBcJiMzNDtJbnRlbChSKSBQQ0ktRXhwcmVzcyBHaWdhYml0IGFkYXB0ZXJzIEhXTU9OIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTExOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTIwOmNvbmZpZyBJR0JfRENBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyMS1cdGJvb2wgXCYjMzQ7RGlyZWN0IENhY2hlIEFjY2VzcyAoRENBKSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEyOTpjb25maWcgSUdCVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTMwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgODI1NzYgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjUxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEVsaWdpYmlsaXR5IG9mIHRoZSBpZ2IgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgcnVsZXM6IHRoZSBmdXp6aW5nIGV4Y2x1c2lvbiBjcml0ZXJpYS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgaGF2ZSB0byBiZSBwcmVjaXNlLiBUaGUgbWFpbiBpc3N1ZSBoZXJlIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWdiYCBkcml2ZXIsIHdhcnJhbnRzIGZ1enppbmcgZWZmb3J0cy4gVGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcmUgbXkgZ3VpZGUuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBhIHNpbXBsZSBkb2N1bWVudGF0aW9uIGNoYW5nZSwgb3IgZGVjb3JhdGl2ZSBsb2dnaW5nIGNoYW5nZT8gTm8sIHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgYnVnIGZpeC4gQnV0IGxldCYjMzk7cyB2ZXJpZnkgaWYgdGhlIGBpZ2JgIGRyaXZlciBjb2RlIGlzIGV2ZW4gcmVhY2hhYmxlIGluIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUga2V5IHF1ZXN0aW9uOiBDYW4gSSBydW4gdGhpcyBpbiBRRU1VPwoKV2FpdCBhIG1pbnV0ZSwgUUVNVSAqZG9lcyogc3VwcG9ydCBgaWdiYCBub3cuIEl0IHdhcyBhZGRlZCBpbiB2ZXJzaW9uIDguMCwgYWNjb3JkaW5nIHRvIG15IGtub3dsZWRnZS4gKFRoYXQmIzM5O3MgYGh3L25ldC9pZ2IuY2AsIHJpZ2h0PyBJbnRlbCA4MjU3NikuIFNvLCB0aGF0JiMzOTtzIG5vdCBhIGRlYWwtYnJlYWtlci4gSXMgYGlnYmAgaW4gdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IE5vLCBpdCYjMzk7cyBhbiBJbnRlbCBOSUMgZHJpdmVyLCBhbmQgbm90IGEgUENJZSBzd2l0Y2ggb3IgU21hcnROSUMuCgpUaGUgcGF0Y2ggaXRzZWxmIGZvY3VzZXMgb24gYGlnYl9wdHAuY2AuIElzIGBpZ2JfcHRwX2luaXRgIHJlYWNoZWQgb25seSBkdXJpbmcgcHJvYmUsIG9yIGlzIHRoaXMgcGF0Y2ggZml4aW5nIG90aGVyIGlzc3Vlcz8gTGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGNvZGUgaW4gdGhhdCBmaWxlLgoKT2theSwgaGVyZSYjMzk7cyB0aGUgY29kZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW92ZXMgYSBzcGlubG9jayBpbml0aWFsaXphdGlvbiBiZWZvcmUgdGhlIFBUUCBjbG9jayByZWdpc3RyYXRpb24uIFRoZSBjcnVjaWFsIHBvaW50OiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBjcmVhdGVzIHRoZSBgL2Rldi9wdHBYYCBkZXZpY2UsIHJpZ2h0PyBUaGlzIGV4cG9zZXMgdGhlIGRyaXZlciYjMzk7cyBQVFAgZnVuY3Rpb25hbGl0eSB0byB1c2Vyc3BhY2UgdmlhIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgL2Rldi9wdHBYYCBkZXZpY2UsIGBjbG9ja19nZXR0aW1lKENMT0NLX0dFVFRJTUUsIC4uLilgIG9yIHB0cCBpb2N0bHMgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMuIFRob3NlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIG5vdyByYWNlLWZyZWUgd2l0aCB0aGlzIHBhdGNoLCBjYWxsIGBhZGFwdGVyLSZndDtwdHBfY2Fwcy5nZXR0aW1leDY0YCBhbmQgc2ltaWxhciBvbmVzLiBUaGUgZml4IHByZXZlbnRzIGEgcmFjZSBjb25kaXRpb24gb24gYCZhbXA7YWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AuCgpDcnVjaWFsbHksIGNhbiB0aGlzIGJlIGZ1enplZD8gTGV0JiMzOTtzIHRoaW5rLiBTeXprYWxsZXIgYW5kIG90aGVyIGZ1enppbmcgdG9vbHMgKmNhbiogaW50ZXJhY3Qgd2l0aCBQVFAgY2xvY2tzLiBTeXprYWxsZXIgc3VwcG9ydHMgYHN5el9wdHAuLi5gIHN5c2NhbGxzIG9yIHRoZSBzdGFuZGFyZCBgY2xvY2tfYWRqdGltZWAsIGBjbG9ja19nZXR0aW1lYCwgYW5kIFBUUCBpb2N0bHMgb24gYC9kZXYvcHRwMGAgZGV2aWNlcywgcmlnaHQ/IEFuZCBJICprbm93KiBRRU1VIHN1cHBvcnRzIHRoZSBgLWRldmljZSBpZ2JgIG9wdGlvbi4gU28sIHRoZSBoYXJkd2FyZSAqaXMqIHRoZXJlLCBhbmQgdGhlIGludGVyZmFjZSAqaXMqIGF2YWlsYWJsZS4gSXQgbG9va3MgbGlrZSB0aGUgUFRQIGNsb2NrIGRyaXZlciB3aWxsIGJlIHRlc3RlZC4KClRoaXMgaXMgY3JpdGljYWwuIENhbiB0aGUgaWdiIGRldmljZSBiZSBwcmVzZW50IGluIFFFTVU/IFllcywgdmlhIGAtZGV2aWNlIGlnYmAuIEFyZSBQVFAgY2xvY2sgaW9jdGxzIC8gc3lzY2FsbHMgdGVzdGVkIG9uIGAvZGV2L3B0cCpgIG9yIGlnYiBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudD8gWWVzLCBzeXprYWxsZXIgZG9lcyBleGFjdGx5IHRoYXQuIFRoZSBwcm9iZSBpcyBhdCBib290LCBzdXJlLCBidXQgdGhlIGV4cG9zZWQgYC9kZXYvcHRwWGAgaW50ZXJmYWNlICppcyogYXZhaWxhYmxlLgoKVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIHRoYXQgY291bGQgbGVhZCB0byBjcmFzaGVzIG9yIGxvY2tkZXAgd2FybmluZ3MuIEl0JiMzOTtzIHJlbGF0ZWQgdG8gYSBQVFAgY2xvY2suIEl0IGxvb2tzIGxpa2UgdGhlIGZ1enplcnMgKmNhbiogZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguIFNvLCB0aGlzICppcyogYSBmdXp6aW5nLWVsaWdpYmxlIHBhdGNoLCBzaW5jZSBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBUaGUgZml4IGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4NTpcdFx0aGVscFxuICA4NjpcdFx0IFNheSBZIHRvIGVuYWJsZSBoYXJkd2FyZSBzdXBwb3J0ZWQgY3Jvc3MtdGltZXN0YW1waW5nIG9uIFBDSFxuICA4NzpcdFx0IGRldmljZXMuIFRoZSBjcm9zcy10aW1lc3RhbXAgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFBUUCBjbG9ja1xuICA4ODpcdFx0IGRyaXZlciBwcmVjaXNlIGNyb3NzLXRpbWVzdGFtcCBpb2N0bCAoUFRQX1NZU19PRkZTRVRfUFJFQ0lTRSkuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIElHQlxuICA5MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgODI1NzUvODI1NzYgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDkyOlx0XHRkZXBlbmRzIG9uIFBDSVxuICA5MzpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA5NDpcdFx0c2VsZWN0IEkyQ1xuICA5NTpcdFx0c2VsZWN0IEkyQ19BTEdPQklUXG4gIDk2Olx0XHRoZWxwXG4gIDk3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIDgyNTc1LzgyNTc2IGdpZ2FiaXQgZXRoZXJuZXQgZmFtaWx5IG9mXG4gIDk4Olx0XHQgIGFkYXB0ZXJzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ29cbiAgOTk6XHRcdCAgdG8gdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuIDEwMDpcdFxuIDEwMTpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAxMDI6XHRcbiAxMDM6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gMTA0Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2lnYi5yc3RcdTAwM2UuXG4gMTA1Olx0XG4gMTA2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAxMDc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaWdiLlxuIDEwODpcdFxuIDEwOTpcdGNvbmZpZyBJR0JfSFdNT05cbiAxMTA6XHRcdGJvb2wgXCYjMzQ7SW50ZWwoUikgUENJLUV4cHJlc3MgR2lnYWJpdCBhZGFwdGVycyBIV01PTiBzdXBwb3J0XCYjMzQ7XG4gMTExOlx0XHRkZWZhdWx0IHlcbiAxMTI6XHRcdGRlcGVuZHMgb24gSUdCIFx1MDAyNlx1MDAyNiBIV01PTiBcdTAwMjZcdTAwMjYgIShJR0I9eSBcdTAwMjZcdTAwMjYgSFdNT049bSlcbiAxMTM6XHRcdGhlbHBcbiAxMTQ6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZXJtYWwgc2Vuc29yIGRhdGEgb24gSW50ZWwgZGV2aWNlcy5cbiAxMTU6XHRcbiAxMTY6XHRcdCAgU29tZSBvZiBvdXIgZGV2aWNlcyBjb250YWluIHRoZXJtYWwgc2Vuc29ycywgYm90aCBleHRlcm5hbCBhbmQgaW50ZXJuYWwuXG4gMTE3Olx0XHQgIFRoaXMgZGF0YSBpcyBhdmFpbGFibGUgdmlhIHRoZSBod21vbiBzeXNmcyBpbnRlcmZhY2UgYW5kIGV4cG9zZXNcbiAxMTg6XHRcdCAgdGhlIG9uYm9hcmQgc2Vuc29ycy5cbiAxMTk6XHRcbiAxMjA6XHRjb25maWcgSUdCX0RDQVxuIDEyMTpcdFx0Ym9vbCBcJiMzNDtEaXJlY3QgQ2FjaGUgQWNjZXNzIChEQ0EpIFN1cHBvcnRcJiMzNDtcbiAxMjI6XHRcdGRlZmF1bHQgeVxuIDEyMzpcdFx0ZGVwZW5kcyBvbiBJR0IgXHUwMDI2XHUwMDI2IERDQSBcdTAwMjZcdTAwMjYgIShJR0I9eSBcdTAwMjZcdTAwMjYgRENBPW0pXG4gMTI0Olx0XHRoZWxwXG4gMTI1Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERpcmVjdCBDYWNoZSBBY2Nlc3MgKERDQSkgaW4gdGhlXG4gMTI2Olx0XHQgIGRyaXZlci4gIERDQSBpcyBhIG1ldGhvZCBmb3Igd2FybWluZyB0aGUgQ1BVIGNhY2hlIGJlZm9yZSBkYXRhXG4gMTI3Olx0XHQgIGlzIHVzZWQsIHdpdGggdGhlIGludGVudCBvZiBsZXNzZW5pbmcgdGhlIGltcGFjdCBvZiBjYWNoZSBtaXNzZXMuXG4gMTI4Olx0XG4gMTI5Olx0Y29uZmlnIElHQlZGXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjU3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgSUdCIERyaXZlciBCdWlsZCBQcm9jZXNzKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBJbnRlbCBJR0IgZHJpdmVyIGlzIGFjdHVhbGx5IGdldHRpbmcgY29tcGlsZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHRlcm1zIG9mIGJ1aWxkIGluc3RydWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIHRvIHRoZSBgaWdiL01ha2VmaWxlYCB0byBzZWUgaG93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGhhbmRsZXMgdGhlIGBpZ2JfcHRwLmNgIHNvdXJjZSBmaWxlLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmxhZ3Mgb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBmb3IgUFRQIHN1cHBvcnQuIFVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRlcyBgaWdiX3B0cC5jYCBpcyBjcnVjaWFsIGJlZm9yZSBJIGRpdmUgaW50byBhbnkgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0IyBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uXG4gICAzOlx0I1xuICAgNDpcdCMgTWFrZWZpbGUgZm9yIHRoZSBJbnRlbChSKSA4MjU3NSBQQ0ktRXhwcmVzcyBldGhlcm5ldCBkcml2ZXJcbiAgIDU6XHQjXG4gICA2Olx0XG4gICA3Olx0b2JqLSQoQ09ORklHX0lHQikgJiM0Mzs9IGlnYi5vXG4gICA4Olx0XG4gICA5Olx0aWdiLXkgOj0gaWdiX21haW4ubyBpZ2JfZXRodG9vbC5vIGUxMDAwXzgyNTc1Lm8gXFxcbiAgMTA6XHRcdCBlMTAwMF9tYWMubyBlMTAwMF9udm0ubyBlMTAwMF9waHkubyBlMTAwMF9tYngubyBcXFxuICAxMTpcdFx0IGUxMDAwX2kyMTAubyBpZ2JfcHRwLm8gaWdiX2h3bW9uLm8gaWdiX3hzay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzY3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgSWdiIERyaXZlciBmb3IgUFRQIERlcGVuZGVuY3kqKgoKT2theSwgbGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBJZ2IgZHJpdmVyJiMzOTtzIHN1cHBvcnQgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfUFRQXzE1ODhfQ0xPQ0tgLiBUaGUgbW9zdCBkaXJlY3Qgcm91dGUsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgZXhwbGljaXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNgLiBNeSBleHBlY3RhdGlvbiBpcyB0byBmaW5kIGEgYnVuY2ggb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyBvciBzaW1pbGFyIHByZXByb2Nlc3NvciBjaGVja3MgdGhhdCB3aWxsIHJldmVhbCB3aGV0aGVyIHRoZSBQVFAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIElnYiBkcml2ZXIgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBiYXNlZCBvbiB0aGF0IHBhcnRpY3VsYXIga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIGEgcmVsYXRlZCBvbmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfUFRQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDQ1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgaW4gS2NvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBQVFAgY2xvY2sgY29uZmlndXJhdGlvbiBvcHRpb25zIGFnYWluLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgd2l0aGluIHRoZSBLY29uZmlnIHN5c3RlbS4gSSBrbm93IHRoaXMgcGFydGljdWxhciB2YXJpYWJsZSBpcyBrZXkgd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3Igb3B0aW9uYWwgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgY2xvY2tzLCBidXQgdGhlIHByZWNpc2UgZGV0YWlscyBlbHVkZSBtZSBhdCB0aGlzIHRpbWUuIEkgbmVlZCBhIGNvbmNyZXRlIGRhdGEgcG9pbnQuIEFyZSB3ZSBtYWtpbmcgdGhpcyBhIG1hbmRhdG9yeSBmZWF0dXJlLCBvciBhbGxvd2luZyB0aGUgZW5kLXVzZXIgdG8gZGV0ZXJtaW5lIGl0cyBpbmNsdXNpb24sIGJhc2VkIG9uIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBhbmQgdXNlIGNhc2UgcmVxdWlyZW1lbnRzPyBJIG5lZWQgdG8ga25vdyB0aGUgaW1wbGljYXRpb25zIG9mIGVpdGhlciBjaG9pY2UsIGJvdGggaW4gdGVybXMgb2YgY29kZSBzaXplLCBkcml2ZXIgc2VsZWN0aW9uLCBhbmQgb2YgY291cnNlLCB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBzeXN0ZW0gcGVyZm9ybWFuY2UuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCBhbmQgZGV0ZXJtaW5lIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgaGF2ZSB0byBtYWtlIGEgZGVjaXNpb24gYWJvdXQgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzMTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgdGhlIFBUUCBDbG9jayBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBQVFAgc3R1ZmYuIExldCYjMzk7cyBzZWUuLi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoYXQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCBvcHRpb24uIFJpZ2h0LCBpdCYjMzk7cyBwcm9iYWJseSBkZWZpbmVkIGluIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBnbyBwb2tlIGFyb3VuZCBpbiB0aGVyZSBhbmQgc2VlIGhvdyBpdCYjMzk7cyBoYW5kbGVkLiBNYXliZSBJIG5lZWQgdG8gY2hlY2sgZGVwZW5kZW5jaWVzIG9yIHNlZSB3aGVyZSBpdCYjMzk7cyByZWZlcmVuY2VkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucy4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFx0ICBhbHNvIGVuYWJsZSBhdCBsZWFzdCBvbmUgY2xvY2sgZHJpdmVyIGFzIHdlbGwuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMjg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcHRwLlxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAzMTpcdFx0dHJpc3RhdGVcbiAgMzI6XHRcdGRlZmF1bHQgeSBpZiBQVFBfMTU4OF9DTE9DSz1uXG4gIDMzOlx0XHRkZWZhdWx0IFBUUF8xNTg4X0NMT0NLXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIERyaXZlcnMgdGhhdCBjYW4gb3B0aW9uYWxseSB1c2UgdGhlIFBUUF8xNTg4X0NMT0NLIGZyYW1ld29ya1xuICAzNjpcdFx0ICBzaG91bGQgZGVwZW5kIG9uIHRoaXMgc3ltYm9sIHRvIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGJ1aWx0XG4gIDM3Olx0XHQgIGludG8gdm1saW51eCB3aGlsZSB0aGUgUFRQIHN1cHBvcnQgaXRzZWxmIGlzIGluIGEgbG9hZGFibGVcbiAgMzg6XHRcdCAgbW9kdWxlLlxuICAzOTpcdFx0ICBJZiBQVFAgc3VwcG9ydCBpcyBkaXNhYmxlZCwgdGhpcyBkZXBlbmRlbmN5IHdpbGwgc3RpbGwgYmVcbiAgNDA6XHRcdCAgbWV0LCBhbmQgZHJpdmVycyByZWZlciB0byBkdW1teSBoZWxwZXJzLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcbiAgNDM6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbiAgNDQ6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBUUCBDbG9jayBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgcGxheSBhcm91bmQgd2l0aCB0aGlzIFBUUF8xNTg4X0NMT0NLIHNldHRpbmcuIEkgd2FudCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBoYXBwZW5zIHdoZW4gSSBkaXNhYmxlIGl0LiBSaWdodCwgc28gaWYgUFRQXzE1ODhfQ0xPQ0sgaXMgc2V0IHRvICYjMzk7biYjMzk7IOKAkyBtZWFuaW5nIGRpc2FibGVkIOKAkyB0aGVuIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbiBzaG91bGQganVzdCBiZSBhIHN0dWIsIGFzIHRoZSBkb2N1bWVudGF0aW9uIHNheXMuIFRoYXQgaW1wbGllcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24sIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gVGltZSB0byBkaWcgaW50byBgaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmhgIGFuZCBjb25maXJtIHRoYXQgdGhlIHJlZ2lzdGVyIGZ1bmN0aW9uIGlzLCBhcyBleHBlY3RlZCwgYSBzdHViLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbnVsbC1pbXBsZW1lbnRhdGlvbiBzbyBJIGtub3cgcHJlY2lzZWx5IHdoYXQgSSYjMzk7bSBsb3NpbmcgYnkgZGlzYWJsaW5nIHRoZSBQVFAgY2xvY2suIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTMyMT1zdGF0aWMgaW5saW5lIHU2NCBhZGp1c3RfYnlfc2NhbGVkX3BwbSh1NjQgYmFzZSwgbG9uZyBzY2FsZWRfcHBtKVxuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTMzMy0vKipcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjMzNDogKiBwdHBfY2xvY2tfcmVnaXN0ZXIoKSAtIHJlZ2lzdGVyIGEgUFRQIGhhcmR3YXJlIGNsb2NrIGRyaXZlclxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzM1LSAqXG4tLVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzQ0LVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzQ1OmV4dGVybiBzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzQ2LVx0XHRcdFx0XHQgICAgc3RydWN0IGRldmljZSAqcGFyZW50KTtcbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD0zNTQ9ZXh0ZXJuIGludCBwdHBfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrICpwdHApO1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTM1OC0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzU5OiAqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzYwLSAqIEBldmVudDogIE1lc3NhZ2Ugc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGV2ZW50LlxuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTM2Mz1leHRlcm4gdm9pZCBwdHBfY2xvY2tfZXZlbnQoc3RydWN0IHB0cF9jbG9jayAqcHRwLFxuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTM2OC0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzY5OiAqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzcwLSAqL1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTM5MD1pbnQgcHRwX2Nsb2NrX2luZGV4X2J5X2RldihzdHJ1Y3QgZGV2aWNlICpwYXJlbnQpO1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQwMC0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6NDAxOiAqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDAyLSAqIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD00MDg9aW50IHB0cF9maW5kX3BpbihzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsXG4tLVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDE4LSAqXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0MTk6KiBAcHRwOiAgICBUaGUgY2xvY2sgb2J0YWluZWQgZnJvbSBwdHBfY2xvY2tfcmVnaXN0ZXIoKS5cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQyMC0qIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD00MjY9aW50IHB0cF9maW5kX3Bpbl91bmxvY2tlZChzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsXG4tLVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDMxLSAqXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0MzI6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00MzMtICogQGRlbGF5OiAgbnVtYmVyIG9mIGppZmZpZXMgdG8gd2FpdCBiZWZvcmUgcXVldWluZ1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQzNz1pbnQgcHRwX3NjaGVkdWxlX3dvcmtlcihzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsIHVuc2lnbmVkIGxvbmcgZGVsYXkpO1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0MS0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6NDQyOiAqIEBwdHA6ICAgICBUaGUgY2xvY2sgb2J0YWluZWQgZnJvbSBwdHBfY2xvY2tfcmVnaXN0ZXIoKS5cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0My0gKi9cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQ0ND12b2lkIHB0cF9jYW5jZWxfd29ya2VyX3N5bmMoc3RydWN0IHB0cF9jbG9jayAqcHRwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDYtI2Vsc2VcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjQ0NzpzdGF0aWMgaW5saW5lIHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDgtXHRcdFx0XHRcdFx0ICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE5MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBQVFAgQ2xvY2sgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQVFAgY2xvY2tzIGFyZSBiZWluZyByZWdpc3RlcmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwganVtcCByaWdodCBpbnRvIGBkcml2ZXJzL3B0cC9wdHBfY2xvY2suY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbi4gSSB3YW50IHRvIHJlYWQgYXJvdW5kIHRoYXQgZnVuY3Rpb24sIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQsIHNlZSB3aGF0IGl0IHRha2VzIGFzIGlucHV0LCBhbmQgZ2V0IGEgZmVlbCBmb3IgaG93IHRoZSBjbG9jayByZWdpc3RyYXRpb24gcHJvY2VzcyBpcyBhcmNoaXRlY3RlZCB3aXRoaW4gdGhlIGRyaXZlci4gSeKAmW0gaG9waW5nIHRvIGdsZWFuIHRoZSByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkLCB0b28uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBwdHBfY2xvY2sgXFwqcHRwX2Nsb2NrX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTMyMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwdHBfcGVyb3V0X2xvb3BiYWNrX29wcyA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0zMjctXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzozMjg6c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTMyOS1cdFx0XHRcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU3NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIGhlcmUuCgoqKkRlY29uc3RydWN0aW5nIGBwdHBfY2xvY2tfcmVnaXN0ZXJgKioKCkFscmlnaHQsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgaW1hZ2luZSBpdCYjMzk7cyB0aGUgcG9pbnQgd2hlcmUgYSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjbG9jaywgcHJlc3VtYWJseSBhIGhhcmR3YXJlIG9yIHNvZnR3YXJlIFBUUCBjbG9jaywgaXMgZm9ybWFsbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIHRoZSBtb21lbnQgdGhlIGtlcm5lbCByZWNvZ25pemVzIGFuZCBiZWdpbnMgbWFuYWdpbmcgdGhpcyBjbG9jayBhcyBhIHNvdXJjZSBvZiBwcmVjaXNlIHRpbWUuIEl0JiMzOTtzIHNpbWlsYXIgdG8gb3RoZXIgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgSSBleHBlY3QuCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3Mgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLiBXaGF0IGlzIGJlaW5nIHBhc3NlZCBpbnRvIHRoaXMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uPyBJcyBpdCBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgdGhhdCBkZXNjcmliZXMgdGhlIGNsb2NrJiMzOTtzIGNhcGFiaWxpdGllcywgaXRzIGhhcmR3YXJlIGFkZHJlc3MsIGFueSBhc3NvY2lhdGVkIGRyaXZlcnMgb3IgaW50ZXJydXB0IGhhbmRsZXJzPyBQZXJoYXBzIGl0JiMzOTtzIHNpbWlsYXIgdG8gdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIG5ldHdvcmsgY2FyZC4KCk5leHQsIEkgbmVlZCB0byBrbm93IHdoYXQgaGFwcGVucyBkdXJpbmcgcmVnaXN0cmF0aW9uLiBEb2VzIGl0IGFsbG9jYXRlIHNvbWUga2VybmVsIHJlc291cmNlcz8gUG9zc2libHkgbWVtb3J5IHRvIGhvbGQgY2xvY2sgZGF0YS4gRG9lcyBpdCBjcmVhdGUgYXNzb2NpYXRlZCBrZXJuZWwgdGhyZWFkcyBmb3IgaGFuZGxpbmcgdGltZSB1cGRhdGVzIG9yIHN5bmNocm9uaXphdGlvbj8gRG9lcyBpdCBzZXQgdXAgYW55IGludGVycnVwdCBoYW5kbGVycyB0byBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBvciBkb2VzIGl0IGFkZCB0aGUgY2xvY2sgaW50byBzb21lIGdsb2JhbCBrZXJuZWwgUFRQIGNsb2NrIGxpc3Q/CgpJJiMzOTttIGFsc28gY3VyaW91cyBhYm91dCBlcnJvciBoYW5kbGluZy4gV2hhdCBmYWlsdXJlIG1vZGVzIGFyZSBhbnRpY2lwYXRlZCBoZXJlPyBEb2VzIHRoZSBmdW5jdGlvbiBjaGVjayBmb3IgY29uZmxpY3RpbmcgY2xvY2sgc291cmNlcz8gV2hhdCBoYXBwZW5zIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLCBvciBpZiB0aGUgZHJpdmVyIGNhbiYjMzk7dCBpbml0aWFsaXplIHRoZSBjbG9jayYjMzk7cyBoYXJkd2FyZT8gQXJlIHRoZXJlIHJldHVybiBjb2RlcyBhbmQgaG93IGFyZSB0aGV5IHVzZWQgYnkgdGhlIGNhbGxpbmcgY29kZT8gSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYXMgd2VsbCBhcyB0aGUgcmVnaXN0cmF0aW9uIGNvZGUgaXRzZWxmLgoKRmluYWxseSwgd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBjb250ZXh0PyBUaGlzIHJlZ2lzdHJhdGlvbiBoYXMgdG8gcGx1ZyBpbnRvIHNvbWV0aGluZyBiaWdnZXIuIElzIGl0IHVzZWQgdG8gYnVpbGQgYSBnbG9iYWwgUFRQIGNsb2NrIHRyZWUgZm9yIHRoZSBzeXN0ZW0/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2VzIGZvciBwcmVjaXNlIHRpbWluZz8gV2hhdCBoYXBwZW5zIGluIHRlcm1zIG9mIGRldmljZSBkaXNjb3Zlcnkgd2hlbiBhIGRldmljZSByZWdpc3RlcnMgb3IgaXMgcmVtb3ZlZD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9wdHBfY2xvY2suYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzI4Olx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcbiAzMjk6XHRcdFx0XHRcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxuIDMzMDpcdHtcbiAzMzE6XHRcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cDtcbiAzMzI6XHRcdHN0cnVjdCB0aW1lc3RhbXBfZXZlbnRfcXVldWUgKnF1ZXVlID0gTlVMTDtcbiAzMzM6XHRcdGludCBlcnIsIGluZGV4LCBtYWpvciA9IE1BSk9SKHB0cF9kZXZ0KTtcbiAzMzQ6XHRcdGNoYXIgZGVidWdmc25hbWVbMTZdO1xuIDMzNTpcdFx0c2l6ZV90IHNpemU7XG4gMzM2Olx0XG4gMzM3Olx0XHRpZiAoV0FSTl9PTl9PTkNFKGluZm8tXHUwMDNlbl9hbGFybSBcdTAwM2UgUFRQX01BWF9BTEFSTVMgfHxcbiAzMzg6XHRcdFx0XHQgKCFpbmZvLVx1MDAzZWdldHRpbWV4NjQgXHUwMDI2XHUwMDI2ICFpbmZvLVx1MDAzZWdldHRpbWU2NCkgfHxcbiAzMzk6XHRcdFx0XHQgIWluZm8tXHUwMDNlc2V0dGltZTY0KSlcbiAzNDA6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gMzQxOlx0XG4gMzQyOlx0XHQvKiBJbml0aWFsaXplIGEgY2xvY2sgc3RydWN0dXJlLiAqL1xuIDM0MzpcdFx0cHRwID0ga3phbGxvY19vYmooc3RydWN0IHB0cF9jbG9jayk7XG4gMzQ0Olx0XHRpZiAoIXB0cCkge1xuIDM0NTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDM0NjpcdFx0XHRnb3RvIG5vX21lbW9yeTtcbiAzNDc6XHRcdH1cbiAzNDg6XHRcbiAzNDk6XHRcdGVyciA9IHhhX2FsbG9jKFx1MDAyNnB0cF9jbG9ja3NfbWFwLCBcdTAwMjZpbmRleCwgcHRwLCB4YV9saW1pdF8zMWIsXG4gMzUwOlx0XHRcdCAgICAgICBHRlBfS0VSTkVMKTtcbiAzNTE6XHRcdGlmIChlcnIpXG4gMzUyOlx0XHRcdGdvdG8gbm9fc2xvdDtcbiAzNTM6XHRcbiAzNTQ6XHRcdHB0cC1cdTAwM2VjbG9jay5vcHMgPSBwdHBfY2xvY2tfb3BzO1xuIDM1NTpcdFx0cHRwLVx1MDAzZWluZm8gPSBpbmZvO1xuIDM1NjpcdFx0cHRwLVx1MDAzZWRldmlkID0gTUtERVYobWFqb3IsIGluZGV4KTtcbiAzNTc6XHRcdHB0cC1cdTAwM2VpbmRleCA9IGluZGV4O1xuIDM1ODpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cHRwLVx1MDAzZXRzZXZxcyk7XG4gMzU5Olx0XHRxdWV1ZSA9IGt6YWxsb2Nfb2JqKCpxdWV1ZSk7XG4gMzYwOlx0XHRpZiAoIXF1ZXVlKSB7XG4gMzYxOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMzYyOlx0XHRcdGdvdG8gbm9fbWVtb3J5X3F1ZXVlO1xuIDM2MzpcdFx0fVxuIDM2NDpcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZxdWV1ZS1cdTAwM2VxbGlzdCwgXHUwMDI2cHRwLVx1MDAzZXRzZXZxcyk7XG4gMzY1Olx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZwdHAtXHUwMDNldHNldnFzX2xvY2spO1xuIDM2NjpcdFx0cXVldWUtXHUwMDNlbWFzayA9IGJpdG1hcF9hbGxvYyhQVFBfTUFYX0NIQU5ORUxTLCBHRlBfS0VSTkVMKTtcbiAzNjc6XHRcdGlmICghcXVldWUtXHUwMDNlbWFzaykge1xuIDM2ODpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDM2OTpcdFx0XHRnb3RvIG5vX21lbW9yeV9iaXRtYXA7XG4gMzcwOlx0XHR9XG4gMzcxOlx0XHRiaXRtYXBfc2V0KHF1ZXVlLVx1MDAzZW1hc2ssIDAsIFBUUF9NQVhfQ0hBTk5FTFMpO1xuIDM3MjpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cXVldWUtXHUwMDNlbG9jayk7XG4gMzczOlx0XHRtdXRleF9pbml0KFx1MDAyNnB0cC1cdTAwM2VwaW5jZmdfbXV4KTtcbiAzNzQ6XHRcdG11dGV4X2luaXQoXHUwMDI2cHRwLVx1MDAzZW5fdmNsb2Nrc19tdXgpO1xuIDM3NTpcdFx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZwdHAtXHUwMDNldHNldl93cSk7XG4gMzc2Olx0XG4gMzc3Olx0XHRpZiAocHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3ljbGVzNjQgfHwgcHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3ljbGVzeDY0KSB7XG4gMzc4Olx0XHRcdHB0cC1cdTAwM2VoYXNfY3ljbGVzID0gdHJ1ZTtcbiAzNzk6XHRcdFx0aWYgKCFwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXRjeWNsZXM2NCBcdTAwMjZcdTAwMjYgcHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3ljbGVzeDY0KVxuIDM4MDpcdFx0XHRcdHB0cC1cdTAwM2VpbmZvLVx1MDAzZWdldGN5Y2xlczY0ID0gcHRwX2dldGN5Y2xlczY0O1xuIDM4MTpcdFx0fSBlbHNlIHtcbiAzODI6XHRcdFx0LyogRnJlZSBydW5uaW5nIGN5Y2xlIGNvdW50ZXIgbm90IHN1cHBvcnRlZCwgdXNlIHRpbWUuICovXG4gMzgzOlx0XHRcdHB0cC1cdTAwM2VpbmZvLVx1MDAzZWdldGN5Y2xlczY0ID0gcHRwX2dldGN5Y2xlczY0O1xuIDM4NDpcdFxuIDM4NTpcdFx0XHRpZiAocHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0dGltZXg2NClcbiAzODY6XHRcdFx0XHRwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXRjeWNsZXN4NjQgPSBwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXR0aW1leDY0O1xuIDM4NzpcdFxuIDM4ODpcdFx0XHRpZiAocHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3Jvc3N0c3RhbXApXG4gMzg5Olx0XHRcdFx0cHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3Jvc3NjeWNsZXMgPSBwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXRjcm9zc3RzdGFtcDtcbiAzOTA6XHRcdH1cbiAzOTE6XHRcbiAzOTI6XHRcdGlmICghcHRwLVx1MDAzZWluZm8tXHUwMDNlZW5hYmxlKVxuIDM5MzpcdFx0XHRwdHAtXHUwMDNlaW5mby1cdTAwM2VlbmFibGUgPSBwdHBfZW5hYmxlO1xuIDM5NDpcdFxuIDM5NTpcdFx0aWYgKHB0cC1cdTAwM2VpbmZvLVx1MDAzZWRvX2F1eF93b3JrKSB7XG4gMzk2Olx0XHRcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXHUwMDI2cHRwLVx1MDAzZWF1eF93b3JrLCBwdHBfYXV4X2t3b3JrZXIpO1xuIDM5NzpcdFx0XHRwdHAtXHUwMDNla3dvcmtlciA9IGt0aHJlYWRfcnVuX3dvcmtlcigwLCBcJiMzNDtwdHAlZFwmIzM0OywgcHRwLVx1MDAzZWluZGV4KTtcbiAzOTg6XHRcdFx0aWYgKElTX0VSUihwdHAtXHUwMDNla3dvcmtlcikpIHtcbiAzOTk6XHRcdFx0XHRlcnIgPSBQVFJfRVJSKHB0cC1cdTAwM2Vrd29ya2VyKTtcbiA0MDA6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBwdHAgYXV4X3dvcmtlciAlZFxcblwmIzM0OywgZXJyKTtcbiA0MDE6XHRcdFx0XHRnb3RvIGt3b3JrZXJfZXJyO1xuIDQwMjpcdFx0XHR9XG4gNDAzOlx0XHR9XG4gNDA0Olx0XG4gNDA1Olx0XHQvKiBQVFAgdmlydHVhbCBjbG9jayBpcyBiZWluZyByZWdpc3RlcmVkIHVuZGVyIHBoeXNpY2FsIGNsb2NrICovXG4gNDA2Olx0XHRpZiAocGFyZW50IFx1MDAyNlx1MDAyNiBwYXJlbnQtXHUwMDNlY2xhc3MgXHUwMDI2XHUwMDI2IHBhcmVudC1cdTAwM2VjbGFzcy1cdTAwM2VuYW1lIFx1MDAyNlx1MDAyNlxuIDQwNzpcdFx0ICAgIHN0cmNtcChwYXJlbnQtXHUwMDNlY2xhc3MtXHUwMDNlbmFtZSwgXCYjMzQ7cHRwXCYjMzQ7KSA9PSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQwNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgUFRQIENsb2NrIFJlZ2lzdGVyIFNlcXVlbmNlKioKCkFscmlnaHQsIHNvIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB0aGlzIGludmVzdGlnYXRpb24gaXMgdG8gZGl2ZSBpbnRvIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cywgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHRvdWNoZWQsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGFydGljdWxhciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgY2xvY2sgbWFuYWdlbWVudCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMsIHBvdGVudGlhbCBpbnRlcnJ1cHRzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBsaWtlbHkgc29tZSBzb3J0IG9mIGluaXRpYWxpemF0aW9uIG9mIGNsb2NrLXJlbGF0ZWQgZGF0YS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggYW55IGV4aXN0aW5nIFBUUCBjb25maWd1cmF0aW9uIG9yIGlmIHRoaXMgaXMgdGhlICYjMzQ7Z3JvdW5kIHplcm8mIzM0OyBvZiBhIG5ldyBjbG9jayBpbnN0YW5jZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIGFjdHVhbGx5IHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwODpcdFx0XHRwdHAtXHUwMDNlaXNfdmlydHVhbF9jbG9jayA9IHRydWU7XG4gNDA5Olx0XG4gNDEwOlx0XHRpZiAoIXB0cC1cdTAwM2Vpc192aXJ0dWFsX2Nsb2NrKSB7XG4gNDExOlx0XHRcdHB0cC1cdTAwM2VtYXhfdmNsb2NrcyA9IFBUUF9ERUZBVUxUX01BWF9WQ0xPQ0tTO1xuIDQxMjpcdFxuIDQxMzpcdFx0XHRzaXplID0gc2l6ZW9mKGludCkgKiBwdHAtXHUwMDNlbWF4X3ZjbG9ja3M7XG4gNDE0Olx0XHRcdHB0cC1cdTAwM2V2Y2xvY2tfaW5kZXggPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xuIDQxNTpcdFx0XHRpZiAoIXB0cC1cdTAwM2V2Y2xvY2tfaW5kZXgpIHtcbiA0MTY6XHRcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDQxNzpcdFx0XHRcdGdvdG8gbm9fbWVtX2Zvcl92Y2xvY2tzO1xuIDQxODpcdFx0XHR9XG4gNDE5Olx0XHR9XG4gNDIwOlx0XG4gNDIxOlx0XHRlcnIgPSBwdHBfcG9wdWxhdGVfcGluX2dyb3VwcyhwdHApO1xuIDQyMjpcdFx0aWYgKGVycilcbiA0MjM6XHRcdFx0Z290byBub19waW5fZ3JvdXBzO1xuIDQyNDpcdFxuIDQyNTpcdFx0LyogUmVnaXN0ZXIgYSBuZXcgUFBTIHNvdXJjZS4gKi9cbiA0MjY6XHRcdGlmIChpbmZvLVx1MDAzZXBwcykge1xuIDQyNzpcdFx0XHRzdHJ1Y3QgcHBzX3NvdXJjZV9pbmZvIHBwcztcbiA0Mjg6XHRcdFx0bWVtc2V0KFx1MDAyNnBwcywgMCwgc2l6ZW9mKHBwcykpO1xuIDQyOTpcdFx0XHRzbnByaW50ZihwcHMubmFtZSwgUFBTX01BWF9OQU1FX0xFTiwgXCYjMzQ7cHRwJWRcJiMzNDssIGluZGV4KTtcbiA0MzA6XHRcdFx0cHBzLm1vZGUgPSBQVFBfUFBTX01PREU7XG4gNDMxOlx0XHRcdHBwcy5vd25lciA9IGluZm8tXHUwMDNlb3duZXI7XG4gNDMyOlx0XHRcdHB0cC1cdTAwM2VwcHNfc291cmNlID0gcHBzX3JlZ2lzdGVyX3NvdXJjZShcdTAwMjZwcHMsIFBUUF9QUFNfREVGQVVMVFMpO1xuIDQzMzpcdFx0XHRpZiAoSVNfRVJSKHB0cC1cdTAwM2VwcHNfc291cmNlKSkge1xuIDQzNDpcdFx0XHRcdGVyciA9IFBUUl9FUlIocHRwLVx1MDAzZXBwc19zb3VyY2UpO1xuIDQzNTpcdFx0XHRcdHByX2VycihcJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgcHBzIHNvdXJjZVxcblwmIzM0Oyk7XG4gNDM2Olx0XHRcdFx0Z290byBub19wcHM7XG4gNDM3Olx0XHRcdH1cbiA0Mzg6XHRcdFx0cHRwLVx1MDAzZXBwc19zb3VyY2UtXHUwMDNlbG9va3VwX2Nvb2tpZSA9IHB0cDtcbiA0Mzk6XHRcdH1cbiA0NDA6XHRcbiA0NDE6XHRcdC8qIEluaXRpYWxpemUgYSBuZXcgZGV2aWNlIG9mIG91ciBjbGFzcyBpbiBvdXIgY2xvY2sgc3RydWN0dXJlLiAqL1xuIDQ0MjpcdFx0ZGV2aWNlX2luaXRpYWxpemUoXHUwMDI2cHRwLVx1MDAzZWRldik7XG4gNDQzOlx0XHRwdHAtXHUwMDNlZGV2LmRldnQgPSBwdHAtXHUwMDNlZGV2aWQ7XG4gNDQ0Olx0XHRwdHAtXHUwMDNlZGV2LmNsYXNzID0gXHUwMDI2cHRwX2NsYXNzO1xuIDQ0NTpcdFx0cHRwLVx1MDAzZWRldi5wYXJlbnQgPSBwYXJlbnQ7XG4gNDQ2Olx0XHRwdHAtXHUwMDNlZGV2Lmdyb3VwcyA9IHB0cC1cdTAwM2VwaW5fYXR0cl9ncm91cHM7XG4gNDQ3Olx0XHRwdHAtXHUwMDNlZGV2LnJlbGVhc2UgPSBwdHBfY2xvY2tfcmVsZWFzZTtcbiA0NDg6XHRcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZwdHAtXHUwMDNlZGV2LCBwdHApO1xuIDQ0OTpcdFx0ZGV2X3NldF9uYW1lKFx1MDAyNnB0cC1cdTAwM2VkZXYsIFwmIzM0O3B0cCVkXCYjMzQ7LCBwdHAtXHUwMDNlaW5kZXgpO1xuIDQ1MDpcdFxuIDQ1MTpcdFx0LyogQ3JlYXRlIGEgcG9zaXggY2xvY2sgYW5kIGxpbmsgaXQgdG8gdGhlIGRldmljZS4gKi9cbiA0NTI6XHRcdGVyciA9IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNnB0cC1cdTAwM2VjbG9jaywgXHUwMDI2cHRwLVx1MDAzZWRldik7XG4gNDUzOlx0XHRpZiAoZXJyKSB7XG4gNDU0Olx0XHRcdGlmIChwdHAtXHUwMDNlcHBzX3NvdXJjZSlcbiA0NTU6XHRcdFx0XHRwcHNfdW5yZWdpc3Rlcl9zb3VyY2UocHRwLVx1MDAzZXBwc19zb3VyY2UpO1xuIDQ1NjpcdFxuIDQ1NzpcdFx0XHRpZiAocHRwLVx1MDAzZWt3b3JrZXIpXG4gNDU4Olx0XHRcdFx0a3RocmVhZF9kZXN0cm95X3dvcmtlcihwdHAtXHUwMDNla3dvcmtlcik7XG4gNDU5Olx0XG4gNDYwOlx0XHRcdHB1dF9kZXZpY2UoXHUwMDI2cHRwLVx1MDAzZWRldik7XG4gNDYxOlx0XG4gNDYyOlx0XHRcdHByX2VycihcJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHBvc2l4IGNsb2NrXFxuXCYjMzQ7KTtcbiA0NjM6XHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiA0NjQ6XHRcdH1cbiA0NjU6XHRcbiA0NjY6XHRcdC8qIERlYnVnZnMgaW5pdGlhbGl6YXRpb24gKi9cbiA0Njc6XHRcdHNucHJpbnRmKGRlYnVnZnNuYW1lLCBzaXplb2YoZGVidWdmc25hbWUpLCBcJiMzNDtwdHAlZFwmIzM0OywgcHRwLVx1MDAzZWluZGV4KTtcbiA0Njg6XHRcdHB0cC1cdTAwM2VkZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGVidWdmc25hbWUsIE5VTEwpO1xuIDQ2OTpcdFx0aWYgKGluZm8tXHUwMDNlbl9wZXJfbHAgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGluZm8tXHUwMDNlcGVyb3V0X2xvb3BiYWNrKSB7XG4gNDcwOlx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7bl9wZXJvdXRfbG9vcGJhY2tcJiMzNDssIDA0MDAsIHB0cC1cdTAwM2VkZWJ1Z2ZzX3Jvb3QsXG4gNDcxOlx0XHRcdFx0XHQgICAgcHRwLCBcdTAwMjZwdHBfbl9wZXJvdXRfbG9vcGJhY2tfZm9wcyk7XG4gNDcyOlx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cGVyb3V0X2xvb3BiYWNrXCYjMzQ7LCAwMjAwLCBwdHAtXHUwMDNlZGVidWdmc19yb290LFxuIDQ3MzpcdFx0XHRcdFx0ICAgIHB0cCwgXHUwMDI2cHRwX3Blcm91dF9sb29wYmFja19vcHMpO1xuIDQ3NDpcdFx0fVxuIDQ3NTpcdFxuIDQ3NjpcdFx0cmV0dXJuIHB0cDtcbiA0Nzc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4MzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBpZ2IgUFRQIENsb2NrIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBMaW5lIDQ1MiBpcyB3aGVyZSBgcG9zaXhfY2xvY2tfcmVnaXN0ZXJgIGlzIGNhbGxlZC4gSW5zaWRlIHRoYXQsIGBjZGV2X2RldmljZV9hZGRgIGdldHMgY2FsbGVkLCBtYWtpbmcgdGhlIGNoYXJhY3RlciBkZXZpY2UgYC9kZXYvcHRwMGAgYWNjZXNzaWJsZSB0byB1c2Vyc3BhY2UuIFRoaXMgbWVhbnMgdXNlcnNwYWNlIGNhbiBub3cgY2FsbCBQVFAtcmVsYXRlZCBzeXNjYWxscyBhbmQgaW9jdGxzLiBBbmQgKnRob3NlKiBjYWxscyBhcmUgcm91dGVkIHRvIGZ1bmN0aW9ucyBsaWtlIGBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2YCBldGMuIHdoaWNoIGFjY2VzcyBgYWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AuCgpIZXJlJiMzOTtzIHRoZSBraWNrZXI6ICBiZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGBzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spYCBjYWxsIHdhc24mIzM5O3QgKmJlZm9yZSogdGhlIHJlZ2lzdHJhdGlvbiBpbiBjZXJ0YWluIGVycm9yIHBhdGhzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGxvY2sgY291bGQgYmUgdW5pbml0aWFsaXplZCB3aGVuIHRoZSBgaWdiX3B0cF8qYCBmdW5jdGlvbnMgd2VyZSBiZWluZyBjYWxsZWQhICBUaGlzIGNvdWxkIGxlYWQgdG8gbG9ja2RlcCBzcGxhdHMgb3IgYmFkIGxvY2sgc3RhdGVzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyB3b3J0aCBmdXp6aW5nLCBhY2NvcmRpbmcgdG8gb3VyIHJ1bGVzPyBMZXQmIzM5O3MgY2hlY2sgdGhlbS4gV2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyAmIzM0O3JlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyYjMzQ7LgoKT2theSwgc28gaXMgYGlnYmAgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gWWVzLCBgaWdiYCBpcyBpbmNsdWRlZCBpbiBRRU1VIHNpbmNlIFFFTVUgOC4wLiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gVGhhdCBtYWtlcyBpdCBtb3JlIGxpa2VseS4KCkJ1dCB3YWl0LCB0aGVyZSYjMzk7cyB0aGF0IHJ1bGUgYWJvdXQgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzLiAgVGhlIGV4YW1wbGUgKnNwZWNpZmljYWxseSogbWVudGlvbnMgYGlnYl9yZW1vdmVgLiBCdXQsIGBpZ2JfcmVtb3ZlYCBpcyBhIHRlYXJkb3duIGZ1bmN0aW9uLCB3aGlsZSB0aGUgZHJpdmVyIGlzIHN0YW5kYXJkLiBBbmQsIHRoZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBoZXJlIGlzIGBpZ2JfcHRwX2luaXRgLiBTbywgd2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IGEgdGVhcmRvd24gY2FsbGJhY2suIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0ICppbml0aWFsaXphdGlvbiogZHVyaW5nIGRldmljZSBzZXR1cC4KCk5leHQ6IElzIHRoaXMgbG9jayBiZWluZyBpbml0aWFsaXplZCB1c2VkIGF0IHJ1bnRpbWU/IElzIGBzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spYCBpbml0aWFsaXppbmcgdGhlIGxvY2sgdXNlZCBkdXJpbmcgcnVudGltZSBieSBQVFAgc3lzY2FsbHMgLyBvcGVyYXRpb25zPyBZZXMsIGRlZmluaXRlbHkuIEFsbCBvZiB0aGUga2V5IGBpZ2JfcHRwXypgIGZ1bmN0aW9ucyB1c2UgaXQgZm9yIHN5bmNocm9uaXphdGlvbjogYGlnYl9wdHBfYWRqZmluZV8qYCwgYGlnYl9wdHBfYWRqdGltZV8qYCwgYGlnYl9wdHBfZ2V0dGltZXhfKmAsIGBpZ2JfcHRwX3NldHRpbWVfKmAsIGBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXypgLCBgaWdiX3B0cF9yeF9oYW5nYCwgYGlnYl9wdHBfdHhfaGFuZ2AsIGBpZ2JfcHRwX3R4X2h3dHN0YW1wYCwgYGlnYl9wdHBfcnhfcGt0c3RhbXBgLCBgaWdiX3B0cF9yeF9yZ3RzdGFtcGAsIGBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZWAuCgpHaXZlbiB0aGF0IGBpZ2JgIGlzIGVtdWxhdGVkLCB0aGlzIG1vZGlmaWVzIGNyaXRpY2FsIGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGUgYnVnIGNvdWxkIGxlYWQgdG8gYSBoYXJkLXRvLWRlYnVnIHN0YXRlLCB0aGlzIHNlZW1zIGxpa2UgaXQgKmlzKiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0bXJlZ19sb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9NTQ0PXN0cnVjdCBpZ2JfYWRhcHRlciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTYzNC1cdHVuc2lnbmVkIGludCBwdHBfZmxhZ3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6NjM1Olx0c3BpbmxvY2tfdCB0bXJlZ19sb2NrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTYzNi1cdHN0cnVjdCBjeWNsZWNvdW50ZXIgY2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9Njk0Mj1zdGF0aWMgdm9pZCBpZ2JfcGVyb3V0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHRzaW50cl90dClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy02OTUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6Njk1MjpcdHNwaW5fbG9jayhcdTAwMjZhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNjk1My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NzAxNzpcdHNwaW5fdW5sb2NrKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDE4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz03MDIwPXN0YXRpYyB2b2lkIGlnYl9leHR0cyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB0c2ludHJfdHQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzAzOC1cdFx0bnMgJiM0Mzs9ICgodTY0KShyZDMyKGF1eHN0bXBoKSBcdTAwMjYgMHhGRikpIFx1MDAzY1x1MDAzYyAzMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjcwMzk6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzA0MC1cdFx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZhZGFwdGVyLVx1MDAzZXRjLCBucyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo3MDQxOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzA0Mi1cdFx0dHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTEzMz1zdGF0aWMgdm9pZCBpZ2JfcHRwX3dyaXRlX2kyMTAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUzLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1NDogKiBUaGUgJiMzOTt0bXJlZ19sb2NrJiMzOTsgc3BpbmxvY2sgaXMgdXNlZCB0byBwcm90ZWN0IHRoZSBjb25zaXN0ZW5jeSBvZiB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTU1LSAqIHN5c3RlbSB0aW1lIHZhbHVlLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHJlYWRpbmcgdGhlIDY0IGJpdCB0aW1lXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xNjI9c3RhdGljIHZvaWQgaWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTc1LVx0Y2FzZSBlMTAwMF9pMzUwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNzY6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNzctXHRcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2YWRhcHRlci1cdTAwM2V0Yywgc3lzdGltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTc4Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0yMjg9c3RhdGljIGludCBpZ2JfcHRwX2FkanRpbWVfODI1NzYoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjM0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjM1LVx0dGltZWNvdW50ZXJfYWRqdGltZShcdTAwMjZpZ2ItXHUwMDNldGMsIGRlbHRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjM2Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0yNDE9c3RhdGljIGludCBpZ2JfcHRwX2FkanRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNDg6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI1NDpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MjU5PXN0YXRpYyBpbnQgaWdiX3B0cF9nZXR0aW1leF84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjcwOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNzk6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI4MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTI4Nj1zdGF0aWMgaW50IGlnYl9wdHBfZ2V0dGltZXhfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI5NzpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI5OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzA3Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zMTQ9c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4X2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjMyMzpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMyNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzMxOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zMzY9c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfODI1NzYoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjM0NjpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzUwOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zNTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zNTU9c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzYyOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozNjY6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTQ4OT1zdGF0aWMgaW50IGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01MjMtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTI0Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01MjUtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUzNi1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTM3Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUzOC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01NjgtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTY5Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01NzAtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYyOS1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjMwOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYzMS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz02NDA9c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NzItXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjczOlx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NzQtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTY4NS1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Njg2Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTY4Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03MzMtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzM0Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03MzUtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc1OS1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzYwOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc2MS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjMtXHRjYXNlIFBUUF9DTEtfUkVRX1BQUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzY0Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjUtXHRcdHRzaW0gPSByZDMyKEUxMDAwX1RTSU0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzcxLVx0XHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3NzI6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzczLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTEzMDU9dm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM4MTpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzODItXHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MTQ2OT12b2lkIGlnYl9wdHBfcmVzZXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ3NzpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUxMS1vdXQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1MTI6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNTEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkxNQoJCQkJCQkJb3V0cHV0OiAxOTYKCQkJCQkJCXRob3VnaHRzOiA3MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEludGVsIElHQiBEcml2ZXIgUFRQIEluaXRpYWxpemF0aW9uIEJ1ZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGV4YW1pbmUgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUga2V5IHRvIFBUUCBpbml0aWFsaXphdGlvbiBpbiB0aGUgSUdCIGRyaXZlci4gSSBjYW4gc2VlIHRoYXQgaXQgY2FsbHMgYHB0cF9jbG9ja19yZWdpc3RlcmAgd2l0aCB0aGUgYWRhcHRlciYjMzk7cyBQVFAgY2FwYWJpbGl0aWVzIGFuZCB0aGUgUENJIGRldmljZSYjMzk7cyBkZXZpY2Ugc3RydWN0dXJlLCBhbmQgdGhlbiBjYWxscyBgaWdiX3B0cF9yZXNldGAuIENydWNpYWxseSwgYGlnYl9wdHBfcmVzZXRgIHN1YnNlcXVlbnRseSBhY3F1aXJlcyB0aGUgYHRtcmVnX2xvY2tgIHNwaW5sb2NrIHVzaW5nIGBzcGluX2xvY2tfaXJxc2F2ZWAuIEkga25vdyB0aGF0IGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGNyZWF0ZXMgdGhlIGAvZGV2L3B0cFhgIGRldmljZSBub2RlLCBtYWtpbmcgaXQgYXZhaWxhYmxlIHRvIHVzZXJzcGFjZSwgd2hpY2ggaW4gdHVybiBjYWxscyBmdW5jdGlvbnMgbGlrZSBgaWdiX3B0cF9hZGp0aW1lXypgIGFuZCBgaWdiX3B0cF9nZXR0aW1leF8qYC4gVGhlc2UgdXNlci1zcGFjZSBjYWxscyBhbHNvIGFjcXVpcmUgdGhlIGB0bXJlZ19sb2NrYC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHJlbGV2YW50IHN5bWJvbHMuIGBpZ2JfcHRwX2luaXRgIGlzIGEgbm9uLXN0YXRpYyBzeW1ib2wsIG1lYW5pbmcgaXQmIzM5O3MgZXhwb3J0ZWQgd2l0aGluIHRoZSBkcml2ZXIuIGBpZ2JfcHJvYmVgIGlzIHN0YXRpYywgd2hpY2ggaXMgZXhwZWN0ZWQuIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHJlc2lkZXMgaW4gYGRyaXZlcnMvcHRwL3B0cF9jbG9jay5jYCBhbmQgaXMgYW4gZXhwb3J0ZWQgc3ltYm9sLiBJIGFsc28gc2VlIG90aGVyIHJlbGV2YW50IG5vbi1zdGF0aWMgSUdCIFBUUCBmdW5jdGlvbnMsIGxpa2UgYGlnYl9wdHBfcmVzZXRgLCBgaWdiX3B0cF9od3RzdGFtcF9zZXRgLCBhbmQgYGlnYl9wdHBfaHd0c3RhbXBfZ2V0YC4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBDT05GSUdfSUdCYCwgYENPTkZJR19QVFBfMTU4OF9DTE9DS2AsIGFuZCBgQ09ORklHX1BDSWAuIExvb2tpbmcgYXQgdGhlIGBLY29uZmlnYCBmaWxlcywgSSBjYW4gc2VlIHRoYXQgYENPTkZJR19JR0JgIGRlcGVuZHMgb24gYFBDSWAgYW5kIGVpdGhlciBgUFRQXzE1ODhfQ0xPQ0tgIG9yIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgZm9yIFBUUCBzdXBwb3J0LiBJdCBhbHNvIHNlbGVjdHMgYEkyQ2AgYW5kIGBJMkNfQUxHT0JJVGAuIE1vcmVvdmVyLCBgSUdCYCBpcyBuZXN0ZWQgd2l0aGluIHRoZSBgTkVUREVWSUNFU2AsIGBFVEhFUk5FVGAsIGFuZCBgTkVUX1ZFTkRPUl9JTlRFTGAgbWVudSBoaWVyYXJjaGllcy4KCkkmIzM5O3ZlIHZlcmlmaWVkIG15IHVuZGVyc3RhbmRpbmcuIFRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZTogYElHQmAsIGBQQ0lgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gVGhlIGltcG9ydGFudCBzeW1ib2xzIGZvciBmdXp6aW5nIGFyZTogYGlnYl9wdHBfaW5pdGAsIGBwdHBfY2xvY2tfcmVnaXN0ZXJgLCBgaWdiX3B0cF9yZXNldGAsIGFuZCBgaWdiX3B0cF9od3RzdGFtcF9zZXRgLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIsIEkgY2FuIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgYHNwaW5fbG9ja19pbml0YCBjYWxsIGZvciBgYWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AgaGFwcGVuZWQgKmFmdGVyKiB0aGUgYHB0cF9jbG9ja19yZWdpc3RlcmAgY2FsbC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGV4cG9zZXMgdGhlIFBUUCBoYXJkd2FyZSBjbG9jayB0byB1c2Vyc3BhY2UsIGFuZCB0aGF0IHVzZXJzcGFjZSBjb2RlIGNvdWxkIGhhdmUgYXR0ZW1wdGVkIHRvIHVzZSB0aGUgdW5pbml0aWFsaXplZCBsb2NrLiBTaW5jZSB0aGUgSUdCIGRyaXZlciBpcyBlbXVsYXRlZCBpbiBRRU1VIHdpdGggdGhlIEludGVsIDgyNTc2IEdiRSBhbmQgY2FuIGJlIGZ1enplZCB0aHJvdWdoIFBUUCBjbG9jayBhbmQgbmV0d29yayB0aW1lc3RhbXBpbmcgaW50ZXJmYWNlcywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGFsbCBJIG5lZWRlZC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdiX3B0cF9pbml0JiMzNDssCiAgICAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX3Jlc2V0JiMzNDssCiAgICAmIzM0O2lnYl9wdHBfaHd0c3RhbXBfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGJ1ZyBpbiB0aGUgSW50ZWwgaWdiIGRyaXZlciBieSBpbml0aWFsaXppbmcgdGhlIGFkYXB0ZXImIzM5O3MgdG1yZWdfbG9jayBzcGlubG9jayBiZWZvcmUgY2FsbGluZyBwdHBfY2xvY2tfcmVnaXN0ZXIoKS4gUHJpb3IgdG8gdGhpcyBmaXgsIHJlZ2lzdGVyaW5nIHRoZSBQVFAgY2xvY2sgZXhwb3NlZCBjYWxsYmFja3MgdG8gdXNlcnNwYWNlL3N1YnN5c3RlbXMgYW5kIGlnYl9wdHBfcmVzZXQoKSB0aGF0IGFjcXVpcmUgdG1yZWdfbG9jayBiZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLiBpZ2IgaXMgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIGFuZCBQVFAgY2xvY2sgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZXhlcmNpc2VkIHZpYSBQT1NJWCBjbG9jayBhbmQgUFRQIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUdCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnYl9wdHBfaW5pdCYjMzQ7LAogICAgJiMzNDtwdHBfY2xvY2tfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7aWdiX3B0cF9yZXNldCYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX2h3dHN0YW1wX3NldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBidWcgaW4gdGhlIEludGVsIGlnYiBkcml2ZXIgYnkgaW5pdGlhbGl6aW5nIHRoZSBhZGFwdGVyJiMzOTtzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYGFkYXB0ZXItXHUwMDNldG1yZWdfbG9ja2Agc3BpbmxvY2sgYmVmb3JlIGBwdHBfY2xvY2tfcmVnaXN0ZXIoKWAgdG8gZW5zdXJlIHRoZSBsb2NrIGlzIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgUFRQIGNsb2NrIGRldmljZSBpcyByZWdpc3RlcmVkIGFuZCBpdHMgY2FsbGJhY2tzIGNhbiBiZSBpbnZva2VkLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBpbml0aWFsaXphdGlvbiBvcmRlciBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBhbHRlciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGJ1ZmZlciBoYW5kbGluZywgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UuIEFueSBsb2NraW5nIG9yIHVuaW5pdGlhbGl6ZWQgbG9jayBpc3N1ZXMgYXJlIGNhdWdodCBieSBzdGFuZGFyZCBkZWJ1ZyBmYWNpbGl0aWVzIChMT0NLREVQLCBDT05GSUdfREVCVUdfU1BJTkxPQ0spIGVuYWJsZWQgaW4gc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI3ZDEzZWNiODIwNDE4NTBjNWRhOWI1NzY2ZThmYmFkNmZmZjJkNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAzMCAxNjoyNzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jCmluZGV4IDYzOGQ4MjQyYjY2YmIuLjJhNGVhMzI3YWMzNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYwpAQCAtMTM3OCw2ICYjNDM7MTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJcmV0dXJuOwogCX0KIAomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spOwogCWFkYXB0ZXItJmd0O3B0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2FkYXB0ZXItJmd0O3B0cF9jYXBzLAogCQkJCQkJJmFtcDthZGFwdGVyLSZndDtwZGV2LSZndDtkZXYpOwogCWlmIChJU19FUlIoYWRhcHRlci0mZ3Q7cHRwX2Nsb2NrKSkgewpAQCAtMTM4OCw3ICYjNDM7MTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJCSBhZGFwdGVyLSZndDtuZXRkZXYtJmd0O25hbWUpOwogCQlhZGFwdGVyLSZndDtwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEOwogCi0JCXNwaW5fbG9ja19pbml0KCZhbXA7YWRhcHRlci0mZ3Q7dG1yZWdfbG9jayk7CiAJCUlOSVRfV09SSygmYW1wO2FkYXB0ZXItJmd0O3B0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspOwogCiAJCWlmIChhZGFwdGVyLSZndDtwdHBfZmxhZ3MgJmFtcDsgSUdCX1BUUF9PVkVSRkxPV19DSEVDSykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY2AsIHNwZWNpZmljYWxseSB0aGUgYGlnYl9wdHBfaW5pdGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gY2hhbmdlIGlzIG1vdmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGBhZGFwdGVyLSZndDt0bXJlZ19sb2NrYCBzcGlubG9jay4gQ3VycmVudGx5LCBgc3Bpbl9sb2NrX2luaXQoJmFtcDthZGFwdGVyLSZndDt0bXJlZ19sb2NrKTtgIGlzIHBsYWNlZCAqYmVmb3JlKiB0aGUgYHB0cF9jbG9ja19yZWdpc3RlciguLi4pYCBjYWxsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaHkgdGhlIHJlb3JkZXJpbmc/JiMzNDsgV2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1vdmU/IEFyZSB0aGVyZSBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgdGhpcyBpcyB0cnlpbmcgdG8gYWRkcmVzcz8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gb3BlcmF0aW9ucyBhbmQgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgYW55IHBvdGVudGlhbCBjb25jdXJyZW50IGFjY2VzcyB0byBgYWRhcHRlcmAmIzM5O3MgbWVtYmVycyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGUgYHRtcmVnX2xvY2tgIGlzIHVzZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgUFRQIGNsb2NrIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBkaWdnaW5nIGludG8gYGlnYl9wdHBfaW5pdGAgaXRzZWxmIHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBzZWUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBhbmQgaG93IHRoZSBgdG1yZWdfbG9ja2AgaXMgdXNlZCBmcm9tIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB3aGF0IHNvcnQgb2YgZWZmZWN0cyB0aGlzIGhhcyB0byB0aGUgaW50ZWdyaXR5IG9mIHRoZSBjb2RlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gaW4gZHJpdmVycywgYnV0IGFueSBjaGFuZ2UgdG8gbG9ja2luZyBzdHJhdGVnaWVzIGRlc2VydmVzIGNhcmVmdWwgc2NydXRpbnkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM2MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm1heF9hZGogPSA2MjQ5OTk5OTtcbjEzNjE6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX2V4dF90cyA9IElHQl9OX0VYVFRTO1xuMTM2MjpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm5fcGVyX291dCA9IElHQl9OX1BFUk9VVDtcbjEzNjM6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX3BpbnMgPSBJR0JfTl9TRFA7XG4xMzY0Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc3VwcG9ydGVkX2V4dHRzX2ZsYWdzID0gUFRQX1JJU0lOR19FREdFIHxcbjEzNjU6XHRcdFx0XHRcdFx0XHRcdCAgUFRQX0ZBTExJTkdfRURHRSB8XG4xMzY2Olx0XHRcdFx0XHRcdFx0XHQgIFBUUF9TVFJJQ1RfRkxBR1M7XG4xMzY3Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMucHBzID0gMTtcbjEzNjg6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cdTAwM2VzZHBfY29uZmlnO1xuMTM2OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XG4xMzcwOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xuMTM3MTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4X2kyMTA7XG4xMzcyOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XG4xMzczOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xuMTM3NDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbjEzNzU6XHRcdFx0YnJlYWs7XG4xMzc2Olx0XHRkZWZhdWx0OlxuMTM3NzpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4xMzc4Olx0XHRcdHJldHVybjtcbjEzNzk6XHRcdH1cbjEzODA6XHRcbjEzODE6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4xMzgyOlx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuMTM4MzpcdFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuMTM4NDpcdFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbjEzODU6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuMTM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O3B0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuMTM4NzpcdFx0fSBlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykge1xuMTM4ODpcdFx0XHRkZXZfaW5mbyhcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDthZGRlZCBQSEMgb24gJXNcXG5cJiMzNDssXG4xMzg5Olx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuMTM5MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XG4xMzkxOlx0XG4xMzkyOlx0XHRcdElOSVRfV09SSyhcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xuMTM5MzpcdFxuMTM5NDpcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXG4xMzk1Olx0XHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcbjEzOTY6XHRcdFx0XHRcdFx0ICBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKTtcbjEzOTc6XHRcbjEzOTg6XHRcdFx0YWRhcHRlci1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9IEhXVFNUQU1QX0ZJTFRFUl9OT05FO1xuMTM5OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXRzdGFtcF9jb25maWcudHhfdHlwZSA9IEhXVFNUQU1QX1RYX09GRjtcbjE0MDA6XHRcbjE0MDE6XHRcdFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcbjE0MDI6XHRcdH1cbjE0MDM6XHR9XG4xNDA0Olx0XG4xNDA1Olx0LyoqXG4xNDA2Olx0ICogaWdiX3B0cF9zZHBfaW5pdCAtIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggaW5pdHMgdGhlIFNEUCBjb25maWcgc3RydWN0c1xuMTQwNzpcdCAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cbjE0MDg6XHQgKiovXG4xNDA5Olx0dm9pZCBpZ2JfcHRwX3NkcF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczMgoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiA0NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9jayBJbml0aWFsaXphdGlvbiBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UsIHNwZWNpZmljYWxseSB0aGUgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24gYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJuYWwgbG9ja2luZyBtZWNoYW5pc20sIGBhZGFwdGVyLSZndDt0bXJlZ19sb2NrYC4gSSBzZWUgdGhhdCB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gd2FzIHByZXZpb3VzbHkgZmxhd2VkOiB0aGUgc3BpbmxvY2sgd2FzbiYjMzk7dCBpbml0aWFsaXplZCAqYmVmb3JlKiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCB3YXMgY2FsbGVkLiBUaGlzIGNyZWF0ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIENhbGxiYWNrcyBsaWtlIGBpZ2JfcHRwX2FkamZpbmVfODI1ODBgIG9yIGBpZ2JfcHRwX2dldHRpbWV4X2kyMTBgIGNvdWxkIGJlIGludm9rZWQgZHVyaW5nIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgYW5kIGlmIHRoZXkgYWNjZXNzZWQgdGhlIHVuaW5pdGlhbGl6ZWQgbG9jaywgd2UmIzM5O2QgaGF2ZSBhIGNsYXNzaWMgJiMzNDt1c2UtYmVmb3JlLWluaXQmIzM0OyBidWcsIGxlYWRpbmcgdG8gbG9ja2RlcCBzcGxhdHMgb3IgbW9yZSBzdWJ0bGUgY29uY3VycmVuY3kgaXNzdWVzLiBBIHByZXR0eSBjb21tb24gc2NlbmFyaW8sIHJlYWxseS4KClNvLCB0aGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogbW92ZSBgc3Bpbl9sb2NrX2luaXRgIGVhcmxpZXIuIFNpbXBsZSwgYnV0IGNyaXRpY2FsLiBOb3csIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgY2hlY2sgZm9yIGFueSBzaWRlIGVmZmVjdHMgdGhpcyBjaGFuZ2UgbWlnaHQgaW50cm9kdWNlLiBMZXQmIzM5O3Mgc2VlLi4uCgpGaXJzdCwgZG9lcyB0aGlzIHBhdGNoIGluIGFueSB3YXkgdG91Y2ggb3IgbW9kaWZ5IGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBnZXQgZXhwb3NlZCB0byB1c2VyIHNwYWNlPyBObywgbm90IHRoYXQgSSBjYW4gdGVsbC4KClNlY29uZCwgZG9lcyB0aGUgY2hhbmdlIGludHJvZHVjZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgbWlnaHQgZGVwZW5kIG9uIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/IE5vLCBJIGRvbiYjMzk7dCBzZWUgYW55dGhpbmcgbGlrZSB0aGF0LgoKVGhpcmQsIGFyZSBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgYWxsb2NhdGVkIHdoZXJlIHdlIG1pZ2h0IGluYWR2ZXJ0ZW50bHkgcmVhZCB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8sIHRoZSBzcGlubG9jayBpdHNlbGYgaXMgaW5pdGlhbGl6ZWQuCgpGb3VydGgsIGFyZSB3ZSBtb2RpZnlpbmcgYW55IGJvdW5kcyBjaGVja3Mgb3IgcmVsYXRlZCBsb2dpYyB0aGF0IGNvdWxkIGxlYWQgdG8gYWNjZXNzaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBOby4gRXZlcnl0aGluZyBzZWVtcyBzYWZlLgoKRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhpcyByZWFsbHkgc2hvdWxkbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcyBmcm9tIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBlcnNwZWN0aXZlLiBJIGRvbiYjMzk7dCBzZWUgYW55IGV4cG9zZWQgdW5pbml0aWFsaXplZCBkYXRhIHJlYWRzIHRvIHVzZXIgc3BhY2UuIEl0IGp1c3QgZml4ZXMgdGhlIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcuIFRoZSBsb2NraW5nIGJ1Z3MgYXJlIGNhdWdodCBieSBMT0NLREVQIGFuZCBzcGlubG9jayBkZWJ1Z2dpbmcg4oCTIHN0YW5kYXJkIGRlYnVnIGtlcm5lbHMgd2l0aCBDT05GSUdfREVCVUdfU1BJTkxPQ0sgYW5kIENPTkZJR19QUk9WRV9MT0NLSU5HIGVuYWJsZWQuCgpDb25zaWRlcmluZyBhbGwgb2YgdGhpcywgdGhlcmUmIzM5O3Mgbm8ganVzdGlmaWNhdGlvbiBmb3Igc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gYHRydWVgLiBLTVNBTiYjMzk7cyBwdXJwb3NlIGlzIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSAqcmVhZHMqLCB3aGljaCB3ZSBkb24mIzM5O3QgaGF2ZSBoZXJlLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBkZXRlY3QgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlcnNwYWNlLCBub25lIG9mIHdoaWNoIGFwcGx5IGhlcmUuIEtNU0FOJiMzOTtzIG5vdCB0aGUgcmlnaHQgdG9vbCBmb3IgZml4aW5nIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVncyDigJMgdGhlc2UgYXJlIGZvdW5kIHdpdGggbG9ja2RlcCBhbmQgc3BpbmxvY2sgZGVidWdnaW5nLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGFzc2Vzc21lbnQuIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6MDEuNTI4MjkzNTU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyODYyMzAxNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklHQlwiLFxuICAgIFwiUENJXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlnYl9wdHBfaW5pdFwiLFxuICAgIFwicHRwX2Nsb2NrX3JlZ2lzdGVyXCIsXG4gICAgXCJpZ2JfcHRwX3Jlc2V0XCIsXG4gICAgXCJpZ2JfcHRwX2h3dHN0YW1wX3NldFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBidWcgaW4gdGhlIEludGVsIGlnYiBkcml2ZXIgYnkgaW5pdGlhbGl6aW5nIHRoZSBhZGFwdGVyJ3MgdG1yZWdfbG9jayBzcGlubG9jayBiZWZvcmUgY2FsbGluZyBwdHBfY2xvY2tfcmVnaXN0ZXIoKS4gUHJpb3IgdG8gdGhpcyBmaXgsIHJlZ2lzdGVyaW5nIHRoZSBQVFAgY2xvY2sgZXhwb3NlZCBjYWxsYmFja3MgdG8gdXNlcnNwYWNlL3N1YnN5c3RlbXMgYW5kIGlnYl9wdHBfcmVzZXQoKSB0aGF0IGFjcXVpcmUgdG1yZWdfbG9jayBiZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLiBpZ2IgaXMgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIGFuZCBQVFAgY2xvY2sgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZXhlcmNpc2VkIHZpYSBQT1NJWCBjbG9jayBhbmQgUFRQIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6MDEuNTI4MzAwMjI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTU0ODc4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyN2QxM2VjYjgyMDQxODUwYzVkYTliNTc2NmU4ZmJhZDZmZmYyZDQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDMwIDE2OjI3OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXFxuaW5kZXggNjM4ZDgyNDJiNjZiYi4uMmE0ZWEzMjdhYzM1ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xcbkBAIC0xMzc4LDYgKzEzNzgsNyBAQCB2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2spO1xcbiBcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2KTtcXG4gXFx0aWYgKElTX0VSUihhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2spKSB7XFxuQEAgLTEzODgsNyArMTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XFxuIFxcbi1cXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWRhcHRlci1cXHUwMDNldG1yZWdfbG9jayk7XFxuIFxcdFxcdElOSVRfV09SSyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcHRwX3R4X3dvcmssIGlnYl9wdHBfdHhfd29yayk7XFxuIFxcbiBcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcHRwX2ZsYWdzIFxcdTAwMjYgSUdCX1BUUF9PVkVSRkxPV19DSEVDSylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6MDEuOTQ0NTg5MDk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2NjAxMzU1ODU0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUdCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdiX3B0cF9pbml0XCIsXG4gICAgXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgICBcImlnYl9wdHBfcmVzZXRcIixcbiAgICBcImlnYl9wdHBfaHd0c3RhbXBfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVnIGluIHRoZSBJbnRlbCBpZ2IgZHJpdmVyIGJ5IGluaXRpYWxpemluZyB0aGUgYWRhcHRlcidzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3ZDEzZWNiODIwNDE4NTBjNWRhOWI1NzY2ZThmYmFkNmZmZjJkNDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNjoyNzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXG5pbmRleCA2MzhkODI0MmI2NmJiLi4yYTRlYTMyN2FjMzVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xuQEAgLTEzNzgsNiArMTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKTtcbiBcdGFkYXB0ZXItXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcHRwX2NhcHMsXG4gXHRcdFx0XHRcdFx0XHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4gXHRpZiAoSVNfRVJSKGFkYXB0ZXItXHUwMDNlcHRwX2Nsb2NrKSkge1xuQEAgLTEzODgsNyArMTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHQgYWRhcHRlci1cdTAwM2VuZXRkZXYtXHUwMDNlbmFtZSk7XG4gXHRcdGFkYXB0ZXItXHUwMDNlcHRwX2ZsYWdzIHw9IElHQl9QVFBfRU5BQkxFRDtcbiBcbi1cdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKTtcbiBcdFx0SU5JVF9XT1JLKFx1MDAyNmFkYXB0ZXItXHUwMDNlcHRwX3R4X3dvcmssIGlnYl9wdHBfdHhfd29yayk7XG4gXG4gXHRcdGlmIChhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyBcdTAwMjYgSUdCX1BUUF9PVkVSRkxPV19DSEVDSylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI3OjAxLjk0NDU5MDk1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3MDY1NDQ1NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSUdCIFBUUCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggYW5kIHdoYXQgaXQncyB0cnlpbmcgdG8gYWNoaWV2ZS4gVGhlIGRpZmYgcG9pbnRzIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jYCwgd2hpY2ggaXMgdGhlIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyJ3MgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgY29tcG9uZW50LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGFkZGluZyBhIGBzcGluX2xvY2tfaW5pdGAgY2FsbCBmb3IgYGFkYXB0ZXItXHUwMDNldG1yZWdfbG9ja2AuIFByZXR0eSBzdHJhaWdodGZvcndhcmQsIGxvb2tzIGxpa2UgYSBzeW5jaHJvbml6YXRpb24gZml4IHJlbGF0ZWQgdG8gdGhlIFBUUCBjbG9jayBpbml0aWFsaXphdGlvbi5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBmdXp6aW5nIGlzOiBpcyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGUgaW4gYSBmdXp6aW5nIGNvbnRleHQ/IFRoaXMgZHJpdmVyLCBgaWdiYCwgaGFzIHRvIGJlIGVtdWxhdGVkIGluIHRoZSBlbnZpcm9ubWVudC4gSSByZW1lbWJlciBzZWVpbmcgYGlnYmAgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGRldmljZXMgaW4gUUVNVSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIFFFTVUgZG9jdW1lbnRhdGlvbiBvciByZWxldmFudCBndWlkZWxpbmVzIHRvIGNvbmZpcm0uIFRoZSBydWxlIGlzLCBjb2RlIHBhdGhzIG5vdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFyZW4ndCB3b3J0aCBmdXp6aW5nLlxuXG5JIHJlY2FsbCBRRU1VIGFkZGVkIGBpZ2JgIHN1cHBvcnQgaW4gdmVyc2lvbiA4LjAsIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZSBlbXVsYXRlZC4gQnV0IHRoZSBrZXkgcXVlc3Rpb24gaXMsICpob3cqIGlzIGBpZ2JfcHRwX2luaXRgIGNhbGxlZD8gSXMgaXQgb25seSBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZSBvcGVyYXRpb24/IElmIGl0J3Mgb25seSBjYWxsZWQgd2hlbiBhIGRldmljZSBpcyBmaXJzdCBpbml0aWFsaXplZCwgdGhlbiBpdCBpcyBub3QgaWRlYWwgZm9yIGZ1enppbmcuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgaWdiX3B0cF9pbml0YCB0byBjb25maXJtIHRoYXQgaXQncyBjYWxsZWQgYXQgb3RoZXIgdGltZXMgdG8gbWFrZSBpdCB3b3J0aCBmdXp6aW5nLiBJJ2xsIHJlYWNoIGZvciBteSB0b29scyB0byB0cmFjayBkb3duIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6NDkuMDEwMDM5OTE1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDA4Mjg1ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWdiX3B0cF9pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3Njg6dm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzY5LXZvaWQgaWdiX3B0cF9zdG9wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMjA0PXN0YXRpYyBpbnQgaWdiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cXHQvKiBkbyBodyB0c3RhbXAgaW5pdCBhZnRlciByZXNldHRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozNTg2OlxcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjk4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6NTAuNjUwODc0NzczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDAzMDEzNzkzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIENvZGUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBpZ2JfcHRwLmNgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMzc4LiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgaGVhcnQgb2Ygc29tZSBjcml0aWNhbCBQVFAgZnVuY3Rpb25hbGl0eSByZXNpZGVzIGluIHRoZSBJR0IgZHJpdmVyLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aW1lc3RhbXBpbmcsIHBlcmhhcHMgaGFuZGxpbmcgb2YgaGFyZHdhcmUgdGltZXN0YW1wcywgb3IgbWF5YmUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFBUUCBjbG9jayBpdHNlbGYuIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGFueXRoaW5nIHRoYXQgY291bGQgaW1wYWN0IHRoZSBhY2N1cmFjeSBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGRyaXZlci4gSSdtIGhvcGluZyB0byBpZGVudGlmeSBhbnkgc3VidGxlIGVkZ2UgY2FzZXMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE4LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjg6MzAuOTUyMjU2ODI2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM2MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5tYXhfYWRqID0gNjI0OTk5OTk7XFxuMTM2MTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5uX2V4dF90cyA9IElHQl9OX0VYVFRTO1xcbjEzNjI6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMubl9wZXJfb3V0ID0gSUdCX05fUEVST1VUO1xcbjEzNjM6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMubl9waW5zID0gSUdCX05fU0RQO1xcbjEzNjQ6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc3VwcG9ydGVkX2V4dHRzX2ZsYWdzID0gUFRQX1JJU0lOR19FREdFIHxcXG4xMzY1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgUFRQX0ZBTExJTkdfRURHRSB8XFxuMTM2NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFBUUF9TVFJJQ1RfRkxBR1M7XFxuMTM2NzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5wcHMgPSAxO1xcbjEzNjg6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMucGluX2NvbmZpZyA9IGFkYXB0ZXItXFx1MDAzZXNkcF9jb25maWc7XFxuMTM2OTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGpmaW5lID0gaWdiX3B0cF9hZGpmaW5lXzgyNTgwO1xcbjEzNzA6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xcbjEzNzE6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZ2V0dGltZXg2NCA9IGlnYl9wdHBfZ2V0dGltZXhfaTIxMDtcXG4xMzcyOlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLnNldHRpbWU2NCA9IGlnYl9wdHBfc2V0dGltZV9pMjEwO1xcbjEzNzM6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xcbjEzNzQ6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMudmVyaWZ5ID0gaWdiX3B0cF92ZXJpZnlfcGluO1xcbjEzNzU6XFx0XFx0XFx0YnJlYWs7XFxuMTM3NjpcXHRcXHRkZWZhdWx0OlxcbjEzNzc6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcXG4xMzc4OlxcdFxcdFxcdHJldHVybjtcXG4xMzc5OlxcdFxcdH1cXG4xMzgwOlxcdFxcbjEzODE6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2spO1xcbjEzODI6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfY2FwcyxcXG4xMzgzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbjEzODQ6XFx0XFx0aWYgKElTX0VSUihhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2spKSB7XFxuMTM4NTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xcbjEzODY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwicHRwX2Nsb2NrX3JlZ2lzdGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuMTM4NzpcXHRcXHR9IGVsc2UgaWYgKGFkYXB0ZXItXFx1MDAzZXB0cF9jbG9jaykge1xcbjEzODg6XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcImFkZGVkIFBIQyBvbiAlc1xcXFxuXFxcIixcXG4xMzg5OlxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2VuZXRkZXYtXFx1MDAzZW5hbWUpO1xcbjEzOTA6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2ZsYWdzIHw9IElHQl9QVFBfRU5BQkxFRDtcXG4xMzkxOlxcdFxcbjEzOTI6XFx0XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcXG4xMzkzOlxcdFxcbjEzOTQ6XFx0XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXB0cF9mbGFncyBcXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXFxuMTM5NTpcXHRcXHRcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcHRwX292ZXJmbG93X3dvcmssXFxuMTM5NjpcXHRcXHRcXHRcXHRcXHRcXHQgIGlnYl9wdHBfb3ZlcmZsb3dfY2hlY2spO1xcbjEzOTc6XFx0XFxuMTM5ODpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9IEhXVFNUQU1QX0ZJTFRFUl9OT05FO1xcbjEzOTk6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNldHN0YW1wX2NvbmZpZy50eF90eXBlID0gSFdUU1RBTVBfVFhfT0ZGO1xcbjE0MDA6XFx0XFxuMTQwMTpcXHRcXHRcXHRpZ2JfcHRwX3Jlc2V0KGFkYXB0ZXIpO1xcbjE0MDI6XFx0XFx0fVxcbjE0MDM6XFx0fVxcbjE0MDQ6XFx0XFxuMTQwNTpcXHQvKipcXG4xNDA2OlxcdCAqIGlnYl9wdHBfc2RwX2luaXQgLSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGluaXRzIHRoZSBTRFAgY29uZmlnIHN0cnVjdHNcXG4xNDA3OlxcdCAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cXG4xNDA4OlxcdCAqKi9cXG4xNDA5OlxcdHZvaWQgaWdiX3B0cF9zZHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI4OjMwLjk1MjM3NzE5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5MjExMzIwNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSUdCIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiB0aGUgYGlnYmAgZHJpdmVyIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZSBgc3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKWAgd2FzIGJlaW5nIGluaXRpYWxpemVkICphZnRlciogYHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLCBcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2KWAuIFRoaXMgbWVhbnMgdGhhdCBpZiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBvciBhbnkgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhlIFBUUCBjbG9jayBtZXRob2RzIChsaWtlIGBhZGp0aW1lYCwgYGdldHRpbWV4YCkgd2VyZSB0byB0b3VjaCBgdG1yZWdfbG9ja2AgYmVmb3JlIGl0J3MgaW5pdGlhbGl6ZWQsIHdlIGhhdmUgYSBwcm9ibGVtLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLCBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIEl0J3MgY3J1Y2lhbCBmb3IgdGhlIGZ1enppbmcgYW5hbHlzaXMhIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBldmVuIHJlbGV2YW50IHRvIGZ1enppbmcuIFRoZSBndWlkZWxpbmVzIHN0YXRlIG5vdCB0byBjb25zaWRlciBwYXRjaGVzIGFmZmVjdGluZyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYGlnYmAgaXMgYSBwaHlzaWNhbCBOSUMgZHJpdmVyLiAgSXMgaXQgZW11bGF0ZWQgaW4gUUVNVT8gQ2FuIGl0IGJlIHRlc3RlZCB3aXRoIHN0YW5kYXJkIHN5emthbGxlcj8gIEkga25vdyB0aGF0IFFFTVUgaGFzIGAtZGV2aWNlIGlnYmAgaW4gdmVyc2lvbiA4LjAsIGJ1dCBJIGRvbid0IGtub3cgdGhlIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cC4gVHlwaWNhbGx5LCBzeXprYWxsZXIgZm9jdXNlcyBvbiB2aXJ0dWFsaXplZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgdmlydGlvLW5ldGAgb3IgdGhlIGBkdW1teSBuZXRgIGRldmljZSwgYW5kIGFsc28gc3VwcG9ydHMgYHR1bmAuIEdDRSB1c2VzIGB2aXJ0aW9fbmV0YCBvciBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBCYXNlZCBvbiB0aGF0LCBJIGh5cG90aGVzaXplIHN5emthbGxlciBwcm9iYWJseSBkb2Vzbid0IHRlc3QgUENJIGRyaXZlcnMgdW5sZXNzIHRoZXkgYXJlIHZpcnR1YWxpemVkIChsaWtlIGB2aXJ0aW9gKSBvciBVU0IgZ2FkZ2V0cy5cblxuT2theSwgbGV0J3MgZm9jdXMgb24gdGhlIHdvcmRpbmcgb2YgdGhlIHByb21wdCwgc3BlY2lmaWNhbGx5OiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4uLkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLiAgVGhhdCBwaHJhc2UgaXMgdGhlIGtleS4gSXMgYGlnYmAgYSBcInZlbmRvci1zcGVjaWZpYyBQQ0llXCIgZHJpdmVyIHRoYXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZT9cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGUgcHJvYmUgYmVoYXZpb3IuIGBpZ2JfcHRwX2luaXRgIHNlZW1zIHRvIGJlIGNhbGxlZCBPTkxZIGZyb20gYGlnYl9wcm9iZWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBpZ2JfcHRwX2luaXRgIGNhbiBiZSBjYWxsZWQgYXQgcnVudGltZSB0aHJvdWdoIGEgc3lzY2FsbCwgb3Igbm90LiBJZiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXZlciBjYWxsZWQgZHVyaW5nIGRldmljZSBwcm9iZSwgdGhlbiBJJ20gbGVhbmluZyB0b3dhcmRzICpub3QqIGZ1enppbmcgaXQsIGJlY2F1c2Ugc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzIG5vdCBwcm9iZSBvciB0cmlnZ2VyIHBoeXNpY2FsIGRldmljZXMgdW5sZXNzIHRoZXkgYXJlIHNwZWNpZmljYWxseSBzZXR1cCB2aWEgc3lzZnMgb3IgUUVNVSBhbmQgUENJIGhvdHBsdWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBgaWdiX3B0cF9pbml0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE2NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoyOTo1MC4xNjM3MDExNjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MTcwNDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYl9wdHBfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3Njg6dm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzY5LXZvaWQgaWdiX3B0cF9zdG9wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMjA0PXN0YXRpYyBpbnQgaWdiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cXHQvKiBkbyBodyB0c3RhbXAgaW5pdCBhZnRlciByZXNldHRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozNTg2OlxcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjk4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjk6NTAuNDk5ODgwNTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIyMDQ5NzA2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBhYm91dCBgaWdiX3B0cF9pbml0YC4gSSBiZWxpZXZlIGl0J3Mgb25seSBjYWxsZWQgd2l0aGluIGBpZ2JfcHJvYmVgLCBidXQgSSdkIGJldHRlciBiZSBjZXJ0YWluLiBTbywgSSdsbCBxdWlja2x5IGNoZWNrIHRoYXQgZnVuY3Rpb24ncyBjYWxsIGdyYXBoIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uXG5cbk5vdywgYSByZWxhdGVkIHF1ZXN0aW9uIG9jY3VycyB0byBtZTogQXJlIGBpZ2JfcHRwX3Jlc2V0YCBhbmQgYGlnYl9wdHBfc3RvcGAgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGNvZGU/IEkgc2hvdWxkIGludmVzdGlnYXRlIHdoZXJlIHRob3NlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCB0b28sIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIFBUUCBpbml0aWFsaXphdGlvbiBhbmQgc2h1dGRvd24gcHJvY2Vzcy4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlc2UgYXJlIHV0aWxpemVkIGluIHRoZSBvdmVyYWxsIGxpZmVjeWNsZS4gVGltZSB0byBleGFtaW5lIHRoZSBjYWxsIHNpdGVzIG9mIGBpZ2JfcHRwX3N0b3BgIGFuZCBgaWdiX3B0cF9yZXNldGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMDozMi43MDQ4NTUwMzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzI3Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYl9wdHBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTc2Nz12b2lkIGlnYl9zZXRfZndfdmVyc2lvbihzdHJ1Y3QgaWdiX2FkYXB0ZXIgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3Njk6dm9pZCBpZ2JfcHRwX3N0b3Aoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6NzcwOnZvaWQgaWdiX3B0cF9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzE6dm9pZCBpZ2JfcHRwX3N1c3BlbmQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6NzcyOnZvaWQgaWdiX3B0cF9yeF9oYW5nKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3Mzp2b2lkIGlnYl9wdHBfdHhfaGFuZyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzQ6dm9pZCBpZ2JfcHRwX3J4X3JndHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6Nzc1OmludCBpZ2JfcHRwX3J4X3BrdHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCB2b2lkICp2YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzc2LVxcdFxcdFxcdGt0aW1lX3QgKnRpbWVzdGFtcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3NzppbnQgaWdiX3B0cF9od3RzdGFtcF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzc4LVxcdFxcdFxcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6Nzc5OmludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC03ODAtXFx0XFx0XFx0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMjg5PXZvaWQgaWdiX3Jlc2V0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTI0NjItXFx0aWYgKGFkYXB0ZXItXFx1MDAzZXB0cF9mbGFncyBcXHUwMDI2IElHQl9QVFBfRU5BQkxFRClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyNDYzOlxcdFxcdGlnYl9wdHBfcmVzZXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjQ2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMwMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZ2JfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTMwNjItXFx0Lm5kb194c2tfd2FrZXVwICAgICAgICAgPSBpZ2JfeHNrX3dha2V1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozMDYzOlxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozMDY0OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zMDY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMjA0PXN0YXRpYyBpbnQgaWdiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cXHQvKiBkbyBodyB0c3RhbXAgaW5pdCBhZnRlciByZXNldHRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozNTg2OlxcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9Mzg3MT1zdGF0aWMgdm9pZCBpZ2JfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzg4MS1cXHRpZ2JfcmVtb3ZlX2kyYyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozODgyOlxcdGlnYl9wdHBfc3RvcChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zODgzLVxcdC8qIFRoZSB3YXRjaGRvZyB0aW1lciBtYXkgYmUgcmVzY2hlZHVsZWQsIHNvIGV4cGxpY2l0bHlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTU1NjI9c3RhdGljIHZvaWQgaWdiX3dhdGNoZG9nX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNTc4Mi1cXHRpZ2Jfc3Bvb2ZfY2hlY2soYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NTc4MzpcXHRpZ2JfcHRwX3J4X2hhbmcoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NTc4NDpcXHRpZ2JfcHRwX3R4X2hhbmcoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNTc4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTg5MDk9dm9pZCBpZ2JfcHJvY2Vzc19za2JfZmllbGRzKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTg5MjAtXFx0ICAgICFpZ2JfdGVzdF9zdGF0ZXJyKHJ4X2Rlc2MsIEUxMDAwX1JYREFEVl9TVEFUX1RTSVApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjg5MjE6XFx0XFx0aWdiX3B0cF9yeF9yZ3RzdGFtcChyeF9yaW5nLVxcdTAwM2VxX3ZlY3Rvciwgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04OTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9OTAyNT1zdGF0aWMgaW50IGlnYl9jbGVhbl9yeF9pcnEoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIGNvbnN0IGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy05MDc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjkwNzY6XFx0XFx0XFx0dHNfaGRyX2xlbiA9IGlnYl9wdHBfcnhfcGt0c3RhbXAocnhfcmluZy1cXHUwMDNlcV92ZWN0b3IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtOTA3Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcGt0YnVmLCBcXHUwMDI2dGltZXN0YW1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTk0OTQ9c3RhdGljIGludCBfX2lnYl9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCAqZW5hYmxlX3dha2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy05NTA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjk1MTA6XFx0aWdiX3B0cF9zdXNwZW5kKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTk1MTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzI6c3RhdGljIHZvaWQgaWdiX3B0cF90eF9od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzM6c3RhdGljIHZvaWQgaWdiX3B0cF9zZHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NS0vKiBTWVNUSU0gcmVhZCBhY2Nlc3MgZm9yIHRoZSA4MjU3NiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzY6c3RhdGljIHU2NCBpZ2JfcHRwX3JlYWRfODI1NzYoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkyLS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgdGhlIDgyNTgwICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5MzpzdGF0aWMgdTY0IGlnYl9wdHBfcmVhZF84MjU4MChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTE0LS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgSTIxMC9JMjExICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMTU6c3RhdGljIHZvaWQgaWdiX3B0cF9yZWFkX2kyMTAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTE2LVxcdFxcdFxcdCAgICAgIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMzOnN0YXRpYyB2b2lkIGlnYl9wdHBfd3JpdGVfaTIxMChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzQtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ2OiAqIGlnYl9wdHBfc3lzdGltX3RvX2h3dHN0YW1wIC0gY29udmVydCBzeXN0ZW0gdGltZSB2YWx1ZSB0byBodyB0aW1lc3RhbXBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0Ny0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTYxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE2MjpzdGF0aWMgdm9pZCBpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNjMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqaHd0c3RhbXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xOTMtLyogUFRQIGNsb2NrIG9wZXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE5NDpzdGF0aWMgaW50IGlnYl9wdHBfYWRqZmluZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjA4OnN0YXRpYyBpbnQgaWdiX3B0cF9hZGpmaW5lXzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyMjg6c3RhdGljIGludCBpZ2JfcHRwX2FkanRpbWVfODI1NzYoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI0MTpzdGF0aWMgaW50IGlnYl9wdHBfYWRqdGltZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNTA6XFx0aWdiX3B0cF9yZWFkX2kyMTAoaWdiLCBcXHUwMDI2bm93KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI1MS1cXHRub3cgPSB0aW1lc3BlYzY0X2FkZChub3csIHRoZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjUyOlxcdGlnYl9wdHBfd3JpdGVfaTIxMChpZ2IsIChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqKVxcdTAwMjZub3cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNTk6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjYwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHRpbWVzcGVjNjQgKnRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyODY6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IHRpbWVzcGVjNjQgKnRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozMTQ6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4X2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMTUtXFx0XFx0XFx0XFx0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzM2OnN0YXRpYyBpbnQgaWdiX3B0cF9zZXR0aW1lXzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzM3LVxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjM1NTpzdGF0aWMgaW50IGlnYl9wdHBfc2V0dGltZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzU2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzY0OlxcdGlnYl9wdHBfd3JpdGVfaTIxMChpZ2IsIHRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9NDIzPXN0YXRpYyB2b2lkIGlnYl9waW5fcGVyb3V0KHN0cnVjdCBpZ2JfYWRhcHRlciAqaWdiLCBpbnQgY2hhbiwgaW50IHBpbiwgaW50IGZyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjQ4OTpzdGF0aWMgaW50IGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy00OTAtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHB0cF9jbG9ja19yZXF1ZXN0ICpycSwgaW50IG9uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo2NDA6c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NDEtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Nzc5OnN0YXRpYyBpbnQgaWdiX3B0cF9mZWF0dXJlX2VuYWJsZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc4MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Nzg1OnN0YXRpYyBpbnQgaWdiX3B0cF92ZXJpZnlfcGluKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCB1bnNpZ25lZCBpbnQgcGluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzg2LVxcdFxcdFxcdCAgICAgIGVudW0gcHRwX3Bpbl9mdW5jdGlvbiBmdW5jLCB1bnNpZ25lZCBpbnQgY2hhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzk5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODAwOiAqIGlnYl9wdHBfdHhfd29ya1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODAxLSAqIEB3b3JrOiBwb2ludGVyIHRvIHdvcmsgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwNS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4MDY6c3RhdGljIHZvaWQgaWdiX3B0cF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzMS1cXHRpZiAodHN5bmN0eGN0bCBcXHUwMDI2IEUxMDAwX1RTWU5DVFhDVExfVkFMSUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4MzI6XFx0XFx0aWdiX3B0cF90eF9od3RzdGFtcChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzMy1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjgzODpzdGF0aWMgdm9pZCBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg1My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjg1NDogKiBpZ2JfcHRwX3J4X2hhbmcgLSBkZXRlY3QgZXJyb3IgY2FzZSB3aGVuIFJ4IHRpbWVzdGFtcCByZWdpc3RlcnMgbGF0Y2hlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODU1LSAqIEBhZGFwdGVyOiBwcml2YXRlIG5ldHdvcmsgYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODYxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjg2Mjp2b2lkIGlnYl9wdHBfcnhfaGFuZyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04OTQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4OTU6ICogaWdiX3B0cF90eF9oYW5nIC0gZGV0ZWN0IGVycm9yIGNhc2Ugd2hlcmUgVHggdGltZXN0YW1wIG5ldmVyIGZpbmlzaGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04OTYtICogQGFkYXB0ZXI6IHByaXZhdGUgbmV0d29yayBhZGFwdGVyIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODk3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODk4OnZvaWQgaWdiX3B0cF90eF9oYW5nKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkyOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjkyOTogKiBpZ2JfcHRwX3R4X2h3dHN0YW1wIC0gdXRpbGl0eSBmdW5jdGlvbiB3aGljaCBjaGVja3MgZm9yIFRYIHRpbWUgc3RhbXBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkzMC0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkzNS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5MzY6c3RhdGljIHZvaWQgaWdiX3B0cF90eF9od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05NDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5NDc6XFx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgXFx1MDAyNnNoaHd0c3RhbXBzLCByZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQ4LVxcdC8qIGFkanVzdCB0aW1lc3RhbXAgZm9yIHRoZSBUWCBsYXRlbmN5IGJhc2VkIG9uIGxpbmsgc3BlZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTc5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTgwOiAqIGlnYl9wdHBfcnhfcGt0c3RhbXAgLSByZXRyaWV2ZSBSeCBwZXIgcGFja2V0IHRpbWVzdGFtcFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTgxLSAqIEBxX3ZlY3RvcjogUG9pbnRlciB0byBpbnRlcnJ1cHQgc3BlY2lmaWMgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTk5MC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5OTE6aW50IGlnYl9wdHBfcnhfcGt0c3RhbXAoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIHZvaWQgKnZhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTkyLVxcdFxcdFxcdGt0aW1lX3QgKnRpbWVzdGFtcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTAxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwMTI6XFx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgXFx1MDAyNnRzLCBsZTY0X3RvX2NwdShyZWd2YWxbMV0pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMzQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDM1OiAqIGlnYl9wdHBfcnhfcmd0c3RhbXAgLSByZXRyaWV2ZSBSeCB0aW1lc3RhbXAgc3RvcmVkIGluIHJlZ2lzdGVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDM2LSAqIEBxX3ZlY3RvcjogUG9pbnRlciB0byBpbnRlcnJ1cHQgc3BlY2lmaWMgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwNDEtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTA0Mjp2b2lkIGlnYl9wdHBfcnhfcmd0c3RhbXAoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwNjg6XFx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgc2tiX2h3dHN0YW1wcyhza2IpLCByZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA5My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwOTQ6ICogaWdiX3B0cF9od3RzdGFtcF9nZXQgLSBnZXQgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBjb25maWdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwOTUtICogQG5ldGRldjogbmV0ZGV2IHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTAxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjExMDI6aW50IGlnYl9wdHBfaHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTAzLVxcdFxcdFxcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTExMzogKiBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZSAtIHNldHVwIGhhcmR3YXJlIGZvciB0aW1lc3RhbXBpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExMTQtICogQGFkYXB0ZXI6IG5ldHdvcmtpbmcgZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTI4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTEyOTpzdGF0aWMgaW50IGlnYl9wdHBfc2V0X3RpbWVzdGFtcF9tb2RlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExMzAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI3NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyNzY6ICogaWdiX3B0cF9od3RzdGFtcF9zZXQgLSBzZXQgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBjb25maWdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyNzctICogQG5ldGRldjogbmV0ZGV2IHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjgwLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyODE6aW50IGlnYl9wdHBfaHd0c3RhbXBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjgyLVxcdFxcdFxcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI4ODpcXHRlcnIgPSBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZShhZGFwdGVyLCBjb25maWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI4OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjk4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMxNi1cXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5wcHMgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxNzpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGpmaW5lID0gaWdiX3B0cF9hZGpmaW5lXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxODpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGp0aW1lID0gaWdiX3B0cF9hZGp0aW1lXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxOTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5nZXR0aW1leDY0ID0gaWdiX3B0cF9nZXR0aW1leF84MjU3NjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMjA6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5lbmFibGUgPSBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMyMy1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5tYXNrID0gQ1lDTEVDT1VOVEVSX01BU0soNjQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzMwLVxcdGNhc2UgZTEwMDBfaTM1MDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMzE6XFx0XFx0aWdiX3B0cF9zZHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMzItXFx0XFx0c25wcmludGYoYWRhcHRlci1cXHUwMDNlcHRwX2NhcHMubmFtZSwgMTYsIFxcXCIlcG1cXFwiLCBuZXRkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM0Mi1cXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cXHUwMDNlc2RwX2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDM6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuYWRqZmluZSA9IGlnYl9wdHBfYWRqZmluZV84MjU4MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDQ6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV84MjU3NjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDU6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZ2V0dGltZXg2NCA9IGlnYl9wdHBfZ2V0dGltZXhfODI1ODA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLnNldHRpbWU2NCA9IGlnYl9wdHBfc2V0dGltZV84MjU3NjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDc6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV84MjU4MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDg6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMudmVyaWZ5ID0gaWdiX3B0cF92ZXJpZnlfcGluO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0OTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTgwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1MC1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5tYXNrID0gQ1lDTEVDT1VOVEVSX01BU0soSUdCX05CSVRTXzgyNTgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1Ni1cXHRjYXNlIGUxMDAwX2kyMTE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzU3OlxcdFxcdGlnYl9wdHBfc2RwX2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzU4LVxcdFxcdHNucHJpbnRmKGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLm5hbWUsIDE2LCBcXFwiJXBtXFxcIiwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzNjgtXFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMucGluX2NvbmZpZyA9IGFkYXB0ZXItXFx1MDAzZXNkcF9jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzY5OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzcwOlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmFkanRpbWUgPSBpZ2JfcHRwX2FkanRpbWVfaTIxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzE6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZ2V0dGltZXg2NCA9IGlnYl9wdHBfZ2V0dGltZXhfaTIxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzI6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzczOlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmVuYWJsZSA9IGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfaTIxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzQ6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMudmVyaWZ5ID0gaWdiX3B0cF92ZXJpZnlfcGluO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM3NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzOTI6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzOTUtXFx0XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9vdmVyZmxvd193b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM5NjpcXHRcXHRcXHRcXHRcXHQgIGlnYl9wdHBfb3ZlcmZsb3dfY2hlY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0MDE6XFx0XFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDA1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQwNjogKiBpZ2JfcHRwX3NkcF9pbml0IC0gdXRpbGl0eSBmdW5jdGlvbiB3aGljaCBpbml0cyB0aGUgU0RQIGNvbmZpZyBzdHJ1Y3RzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDA3LSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQwOTp2b2lkIGlnYl9wdHBfc2RwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDIzOiAqIGlnYl9wdHBfc3VzcGVuZCAtIERpc2FibGUgUFRQIHdvcmsgaXRlbXMgYW5kIHByZXBhcmUgZm9yIHN1c3BlbmRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjQtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDI5OnZvaWQgaWdiX3B0cF9zdXNwZW5kKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDQ1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ0NjogKiBpZ2JfcHRwX3N0b3AgLSBEaXNhYmxlIFBUUCBkZXZpY2UgYW5kIHN0b3AgdGhlIG92ZXJmbG93IGNoZWNrLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ0Ny0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NTAtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ1MTp2b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NTM6XFx0aWdiX3B0cF9zdXNwZW5kKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ2My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NjQ6ICogaWdiX3B0cF9yZXNldCAtIFJlLWVuYWJsZSB0aGUgYWRhcHRlciBmb3IgUFRQIGZvbGxvd2luZyBhIHJlc2V0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ2NS0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NjgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ2OTp2b2lkIGlnYl9wdHBfcmVzZXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NzQtXFx0LyogcmVzZXQgdGhlIHRzdGFtcF9jb25maWcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NzU6XFx0aWdiX3B0cF9zZXRfdGltZXN0YW1wX21vZGUoYWRhcHRlciwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRzdGFtcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUwNS1cXHRcXHRrdGltZV9nZXRfcmVhbF90czY0KFxcdTAwMjZ0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNTA2OlxcdFxcdGlnYl9wdHBfd3JpdGVfaTIxMChhZGFwdGVyLCBcXHUwMDI2dHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUwNy1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0zNDE9aW50IGlnYl9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjM4MzpcXHRcXHRcXHR0c19oZHJfbGVuID0gaWdiX3B0cF9yeF9wa3RzdGFtcChyeF9yaW5nLVxcdTAwM2VxX3ZlY3RvcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM4NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgeGRwLVxcdTAwM2VkYXRhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMDozMi43NTI1ODY4MTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzEwMTYxNjEyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBLY29uZmlnIGZvciBJR0IqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY29uZmlndXJlIHNvbWV0aGluZywgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgSW50ZWwgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIuIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUgZm9yIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbiBvciBkcml2ZXItcmVsYXRlZCB3b3JrLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBJR0IgZHJpdmVyJ3MgYXZhaWxhYmlsaXR5LCBjaGVjayBpZiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZXhwb3NlZC4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZCBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBpdHMgaW5jbHVzaW9uIG9yIGJlaGF2aW9yLiBUaGlzIGFsc28gbWVhbnMgdW5kZXJzdGFuZGluZyBob3cgdGhlIElHQiBtb2R1bGUgaW50ZXJhY3RzIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG5ldHdvcmsgc3ViLXN5c3RlbXMgb3IgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gaGVyZSwgSSBjYW4gYXNjZXJ0YWluIHdoYXQgb3B0aW9ucyBJIG5lZWQgdG8gc2V0LCBhbmQgaG93IHRvIHZlcmlmeSB0aGVpciBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMTo0My43Njg3NTA3MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjU4OTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUdCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTgxPWNvbmZpZyBFMTAwMEVfSFdUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjkwOmNvbmZpZyBJR0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTkxLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSA4MjU3NS84MjU3NiBQQ0ktRXhwcmVzcyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEwOTpjb25maWcgSUdCX0hXTU9OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMTAtXFx0Ym9vbCBcXFwiSW50ZWwoUikgUENJLUV4cHJlc3MgR2lnYWJpdCBhZGFwdGVycyBIV01PTiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxMjA6Y29uZmlnIElHQl9EQ0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyMS1cXHRib29sIFxcXCJEaXJlY3QgQ2FjaGUgQWNjZXNzIChEQ0EpIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEyOTpjb25maWcgSUdCVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEzMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgODI1NzYgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMTo0NC4xODUzNDcxMzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQxMDY3NjMyOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBFbGlnaWJpbGl0eSBvZiB0aGUgaWdiIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25zdWx0IHRoZSBydWxlczogdGhlIGZ1enppbmcgZXhjbHVzaW9uIGNyaXRlcmlhLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgSSBoYXZlIHRvIGJlIHByZWNpc2UuIFRoZSBtYWluIGlzc3VlIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpZ2JgIGRyaXZlciwgd2FycmFudHMgZnV6emluZyBlZmZvcnRzLiBUaGUgZXhjbHVzaW9uIGNyaXRlcmlhIGFyZSBteSBndWlkZS5cblxuTm93LCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgYSBzaW1wbGUgZG9jdW1lbnRhdGlvbiBjaGFuZ2UsIG9yIGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2U/IE5vLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGJ1ZyBmaXguIEJ1dCBsZXQncyB2ZXJpZnkgaWYgdGhlIGBpZ2JgIGRyaXZlciBjb2RlIGlzIGV2ZW4gcmVhY2hhYmxlIGluIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUga2V5IHF1ZXN0aW9uOiBDYW4gSSBydW4gdGhpcyBpbiBRRU1VP1xuXG5XYWl0IGEgbWludXRlLCBRRU1VICpkb2VzKiBzdXBwb3J0IGBpZ2JgIG5vdy4gSXQgd2FzIGFkZGVkIGluIHZlcnNpb24gOC4wLCBhY2NvcmRpbmcgdG8gbXkga25vd2xlZGdlLiAoVGhhdCdzIGBody9uZXQvaWdiLmNgLCByaWdodD8gSW50ZWwgODI1NzYpLiBTbywgdGhhdCdzIG5vdCBhIGRlYWwtYnJlYWtlci4gSXMgYGlnYmAgaW4gdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IE5vLCBpdCdzIGFuIEludGVsIE5JQyBkcml2ZXIsIGFuZCBub3QgYSBQQ0llIHN3aXRjaCBvciBTbWFydE5JQy5cblxuVGhlIHBhdGNoIGl0c2VsZiBmb2N1c2VzIG9uIGBpZ2JfcHRwLmNgLiBJcyBgaWdiX3B0cF9pbml0YCByZWFjaGVkIG9ubHkgZHVyaW5nIHByb2JlLCBvciBpcyB0aGlzIHBhdGNoIGZpeGluZyBvdGhlciBpc3N1ZXM/IExldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGNvZGUgaW4gdGhhdCBmaWxlLlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGNvZGUuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIG1vdmVzIGEgc3BpbmxvY2sgaW5pdGlhbGl6YXRpb24gYmVmb3JlIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludDogYHB0cF9jbG9ja19yZWdpc3RlcmAgY3JlYXRlcyB0aGUgYC9kZXYvcHRwWGAgZGV2aWNlLCByaWdodD8gVGhpcyBleHBvc2VzIHRoZSBkcml2ZXIncyBQVFAgZnVuY3Rpb25hbGl0eSB0byB1c2Vyc3BhY2UgdmlhIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgL2Rldi9wdHBYYCBkZXZpY2UsIGBjbG9ja19nZXR0aW1lKENMT0NLX0dFVFRJTUUsIC4uLilgIG9yIHB0cCBpb2N0bHMgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMuIFRob3NlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIG5vdyByYWNlLWZyZWUgd2l0aCB0aGlzIHBhdGNoLCBjYWxsIGBhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjRgIGFuZCBzaW1pbGFyIG9uZXMuIFRoZSBmaXggcHJldmVudHMgYSByYWNlIGNvbmRpdGlvbiBvbiBgXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYC5cblxuQ3J1Y2lhbGx5LCBjYW4gdGhpcyBiZSBmdXp6ZWQ/IExldCdzIHRoaW5rLiBTeXprYWxsZXIgYW5kIG90aGVyIGZ1enppbmcgdG9vbHMgKmNhbiogaW50ZXJhY3Qgd2l0aCBQVFAgY2xvY2tzLiBTeXprYWxsZXIgc3VwcG9ydHMgYHN5el9wdHAuLi5gIHN5c2NhbGxzIG9yIHRoZSBzdGFuZGFyZCBgY2xvY2tfYWRqdGltZWAsIGBjbG9ja19nZXR0aW1lYCwgYW5kIFBUUCBpb2N0bHMgb24gYC9kZXYvcHRwMGAgZGV2aWNlcywgcmlnaHQ/IEFuZCBJICprbm93KiBRRU1VIHN1cHBvcnRzIHRoZSBgLWRldmljZSBpZ2JgIG9wdGlvbi4gU28sIHRoZSBoYXJkd2FyZSAqaXMqIHRoZXJlLCBhbmQgdGhlIGludGVyZmFjZSAqaXMqIGF2YWlsYWJsZS4gSXQgbG9va3MgbGlrZSB0aGUgUFRQIGNsb2NrIGRyaXZlciB3aWxsIGJlIHRlc3RlZC5cblxuVGhpcyBpcyBjcml0aWNhbC4gQ2FuIHRoZSBpZ2IgZGV2aWNlIGJlIHByZXNlbnQgaW4gUUVNVT8gWWVzLCB2aWEgYC1kZXZpY2UgaWdiYC4gQXJlIFBUUCBjbG9jayBpb2N0bHMgLyBzeXNjYWxscyB0ZXN0ZWQgb24gYC9kZXYvcHRwKmAgb3IgaWdiIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50PyBZZXMsIHN5emthbGxlciBkb2VzIGV4YWN0bHkgdGhhdC4gVGhlIHByb2JlIGlzIGF0IGJvb3QsIHN1cmUsIGJ1dCB0aGUgZXhwb3NlZCBgL2Rldi9wdHBYYCBpbnRlcmZhY2UgKmlzKiBhdmFpbGFibGUuXG5cblRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiB0aGF0IGNvdWxkIGxlYWQgdG8gY3Jhc2hlcyBvciBsb2NrZGVwIHdhcm5pbmdzLiBJdCdzIHJlbGF0ZWQgdG8gYSBQVFAgY2xvY2suIEl0IGxvb2tzIGxpa2UgdGhlIGZ1enplcnMgKmNhbiogZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguIFNvLCB0aGlzICppcyogYSBmdXp6aW5nLWVsaWdpYmxlIHBhdGNoLCBzaW5jZSBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBUaGUgZml4IGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjMyOjQ4LjI5MjExMjQ2NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4NTpcXHRcXHRoZWxwXFxuICA4NjpcXHRcXHQgU2F5IFkgdG8gZW5hYmxlIGhhcmR3YXJlIHN1cHBvcnRlZCBjcm9zcy10aW1lc3RhbXBpbmcgb24gUENIXFxuICA4NzpcXHRcXHQgZGV2aWNlcy4gVGhlIGNyb3NzLXRpbWVzdGFtcCBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgUFRQIGNsb2NrXFxuICA4ODpcXHRcXHQgZHJpdmVyIHByZWNpc2UgY3Jvc3MtdGltZXN0YW1wIGlvY3RsIChQVFBfU1lTX09GRlNFVF9QUkVDSVNFKS5cXG4gIDg5OlxcdFxcbiAgOTA6XFx0Y29uZmlnIElHQlxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIDgyNTc1LzgyNTc2IFBDSS1FeHByZXNzIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDkyOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA5MzpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA5NDpcXHRcXHRzZWxlY3QgSTJDXFxuICA5NTpcXHRcXHRzZWxlY3QgSTJDX0FMR09CSVRcXG4gIDk2OlxcdFxcdGhlbHBcXG4gIDk3OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSW50ZWwoUikgODI1NzUvODI1NzYgZ2lnYWJpdCBldGhlcm5ldCBmYW1pbHkgb2ZcXG4gIDk4OlxcdFxcdCAgYWRhcHRlcnMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaWRlbnRpZnkgeW91ciBhZGFwdGVyLCBnb1xcbiAgOTk6XFx0XFx0ICB0byB0aGUgQWRhcHRlciBcXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxcbiAxMDA6XFx0XFxuIDEwMTpcXHRcXHQgIFxcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cXHUwMDNlXFxuIDEwMjpcXHRcXG4gMTAzOlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuIDEwNDpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9pZ2IucnN0XFx1MDAzZS5cXG4gMTA1OlxcdFxcbiAxMDY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuIDEwNzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGlnYi5cXG4gMTA4OlxcdFxcbiAxMDk6XFx0Y29uZmlnIElHQl9IV01PTlxcbiAxMTA6XFx0XFx0Ym9vbCBcXFwiSW50ZWwoUikgUENJLUV4cHJlc3MgR2lnYWJpdCBhZGFwdGVycyBIV01PTiBzdXBwb3J0XFxcIlxcbiAxMTE6XFx0XFx0ZGVmYXVsdCB5XFxuIDExMjpcXHRcXHRkZXBlbmRzIG9uIElHQiBcXHUwMDI2XFx1MDAyNiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKElHQj15IFxcdTAwMjZcXHUwMDI2IEhXTU9OPW0pXFxuIDExMzpcXHRcXHRoZWxwXFxuIDExNDpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGVybWFsIHNlbnNvciBkYXRhIG9uIEludGVsIGRldmljZXMuXFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdCAgU29tZSBvZiBvdXIgZGV2aWNlcyBjb250YWluIHRoZXJtYWwgc2Vuc29ycywgYm90aCBleHRlcm5hbCBhbmQgaW50ZXJuYWwuXFxuIDExNzpcXHRcXHQgIFRoaXMgZGF0YSBpcyBhdmFpbGFibGUgdmlhIHRoZSBod21vbiBzeXNmcyBpbnRlcmZhY2UgYW5kIGV4cG9zZXNcXG4gMTE4OlxcdFxcdCAgdGhlIG9uYm9hcmQgc2Vuc29ycy5cXG4gMTE5OlxcdFxcbiAxMjA6XFx0Y29uZmlnIElHQl9EQ0FcXG4gMTIxOlxcdFxcdGJvb2wgXFxcIkRpcmVjdCBDYWNoZSBBY2Nlc3MgKERDQSkgU3VwcG9ydFxcXCJcXG4gMTIyOlxcdFxcdGRlZmF1bHQgeVxcbiAxMjM6XFx0XFx0ZGVwZW5kcyBvbiBJR0IgXFx1MDAyNlxcdTAwMjYgRENBIFxcdTAwMjZcXHUwMDI2ICEoSUdCPXkgXFx1MDAyNlxcdTAwMjYgRENBPW0pXFxuIDEyNDpcXHRcXHRoZWxwXFxuIDEyNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERpcmVjdCBDYWNoZSBBY2Nlc3MgKERDQSkgaW4gdGhlXFxuIDEyNjpcXHRcXHQgIGRyaXZlci4gIERDQSBpcyBhIG1ldGhvZCBmb3Igd2FybWluZyB0aGUgQ1BVIGNhY2hlIGJlZm9yZSBkYXRhXFxuIDEyNzpcXHRcXHQgIGlzIHVzZWQsIHdpdGggdGhlIGludGVudCBvZiBsZXNzZW5pbmcgdGhlIGltcGFjdCBvZiBjYWNoZSBtaXNzZXMuXFxuIDEyODpcXHRcXG4gMTI5OlxcdGNvbmZpZyBJR0JWRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMjo0OC4yOTIyMjQyMTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTAyOTQ1NDE5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgSUdCIERyaXZlciBCdWlsZCBQcm9jZXNzKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIEludGVsIElHQiBkcml2ZXIgaXMgYWN0dWFsbHkgZ2V0dGluZyBjb21waWxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB0ZXJtcyBvZiBidWlsZCBpbnN0cnVjdGlvbnMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIG5hdmlnYXRlIHRvIHRoZSBgaWdiL01ha2VmaWxlYCB0byBzZWUgaG93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGhhbmRsZXMgdGhlIGBpZ2JfcHRwLmNgIHNvdXJjZSBmaWxlLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmxhZ3Mgb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBmb3IgUFRQIHN1cHBvcnQuIFVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRlcyBgaWdiX3B0cC5jYCBpcyBjcnVjaWFsIGJlZm9yZSBJIGRpdmUgaW50byBhbnkgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyNTcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjMzOjM4LjU4Njc2ODczOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjIENvcHlyaWdodChjKSAxOTk5IC0gMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi5cXG4gICAzOlxcdCNcXG4gICA0OlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBJbnRlbChSKSA4MjU3NSBQQ0ktRXhwcmVzcyBldGhlcm5ldCBkcml2ZXJcXG4gICA1OlxcdCNcXG4gICA2OlxcdFxcbiAgIDc6XFx0b2JqLSQoQ09ORklHX0lHQikgKz0gaWdiLm9cXG4gICA4OlxcdFxcbiAgIDk6XFx0aWdiLXkgOj0gaWdiX21haW4ubyBpZ2JfZXRodG9vbC5vIGUxMDAwXzgyNTc1Lm8gXFxcXFxcbiAgMTA6XFx0XFx0IGUxMDAwX21hYy5vIGUxMDAwX252bS5vIGUxMDAwX3BoeS5vIGUxMDAwX21ieC5vIFxcXFxcXG4gIDExOlxcdFxcdCBlMTAwMF9pMjEwLm8gaWdiX3B0cC5vIGlnYl9od21vbi5vIGlnYl94c2sub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMzozOC41ODY4MjcwMTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc5MzIzOTYyMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgSWdiIERyaXZlciBmb3IgUFRQIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBsZXQncyBnZXQgcmlnaHQgdG8gaXQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgSWdiIGRyaXZlcidzIHN1cHBvcnQgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfUFRQXzE1ODhfQ0xPQ0tgLiBUaGUgbW9zdCBkaXJlY3Qgcm91dGUsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgZXhwbGljaXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY2AuIE15IGV4cGVjdGF0aW9uIGlzIHRvIGZpbmQgYSBidW5jaCBvZiBgI2lmZGVmYCBkaXJlY3RpdmVzIG9yIHNpbWlsYXIgcHJlcHJvY2Vzc29yIGNoZWNrcyB0aGF0IHdpbGwgcmV2ZWFsIHdoZXRoZXIgdGhlIFBUUCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgSWdiIGRyaXZlciBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIHRoYXQgcGFydGljdWxhciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gb3IgYSByZWxhdGVkIG9uZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM0OjA2LjUxOTIyNjIxM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NjY4MjEwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM0OjA2LjkxNjkwNzU0NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjM4MjY2NzkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgaW4gS2NvbmZpZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgUFRQIGNsb2NrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhZ2Fpbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgIHdpdGhpbiB0aGUgS2NvbmZpZyBzeXN0ZW0uIEkga25vdyB0aGlzIHBhcnRpY3VsYXIgdmFyaWFibGUgaXMga2V5IHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIG9wdGlvbmFsIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGNsb2NrcywgYnV0IHRoZSBwcmVjaXNlIGRldGFpbHMgZWx1ZGUgbWUgYXQgdGhpcyB0aW1lLiBJIG5lZWQgYSBjb25jcmV0ZSBkYXRhIHBvaW50LiBBcmUgd2UgbWFraW5nIHRoaXMgYSBtYW5kYXRvcnkgZmVhdHVyZSwgb3IgYWxsb3dpbmcgdGhlIGVuZC11c2VyIHRvIGRldGVybWluZSBpdHMgaW5jbHVzaW9uLCBiYXNlZCBvbiBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kIHVzZSBjYXNlIHJlcXVpcmVtZW50cz8gSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiBlaXRoZXIgY2hvaWNlLCBib3RoIGluIHRlcm1zIG9mIGNvZGUgc2l6ZSwgZHJpdmVyIHNlbGVjdGlvbiwgYW5kIG9mIGNvdXJzZSwgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIHBlcmZvcm1hbmNlLiBUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgYW5kIGRldGVybWluZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gbWFrZSBhIGRlY2lzaW9uIGFib3V0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDQ1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MzQ6MTkuMjk5NTc3Mzk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ0MzU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkyLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6OTM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTIzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzU6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTUxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTUzLVxcdHRyaXN0YXRlIFxcXCJJRFQgODJQMzN4eHggUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjUtXFx0dHJpc3RhdGUgXFxcIklEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3Njpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVxcdHRyaXN0YXRlIFxcXCJSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTg3LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODktXFx0dHJpc3RhdGUgXFxcIk1vY2stdXAgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTk6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMjAwLVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXFx0dHJpc3RhdGUgXFxcIk9wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MzQ6MTkuMzQ2MDI0ODNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzk1ODMxNzE2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIHRoZSBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBQVFAgc3R1ZmYuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhhdCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgIG9wdGlvbi4gUmlnaHQsIGl0J3MgcHJvYmFibHkgZGVmaW5lZCBpbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBnbyBwb2tlIGFyb3VuZCBpbiB0aGVyZSBhbmQgc2VlIGhvdyBpdCdzIGhhbmRsZWQuIE1heWJlIEkgbmVlZCB0byBjaGVjayBkZXBlbmRlbmNpZXMgb3Igc2VlIHdoZXJlIGl0J3MgcmVmZXJlbmNlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBzaXR1YXRpb24uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucy4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzMTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNTozOC45MjkxOTkzMTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyNTpcXHRcXHQgIGFsc28gZW5hYmxlIGF0IGxlYXN0IG9uZSBjbG9jayBkcml2ZXIgYXMgd2VsbC5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAyODpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cC5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAzMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5IGlmIFBUUF8xNTg4X0NMT0NLPW5cXG4gIDMzOlxcdFxcdGRlZmF1bHQgUFRQXzE1ODhfQ0xPQ0tcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgRHJpdmVycyB0aGF0IGNhbiBvcHRpb25hbGx5IHVzZSB0aGUgUFRQXzE1ODhfQ0xPQ0sgZnJhbWV3b3JrXFxuICAzNjpcXHRcXHQgIHNob3VsZCBkZXBlbmQgb24gdGhpcyBzeW1ib2wgdG8gcHJldmVudCB0aGVtIGZyb20gYmVpbmcgYnVpbHRcXG4gIDM3OlxcdFxcdCAgaW50byB2bWxpbnV4IHdoaWxlIHRoZSBQVFAgc3VwcG9ydCBpdHNlbGYgaXMgaW4gYSBsb2FkYWJsZVxcbiAgMzg6XFx0XFx0ICBtb2R1bGUuXFxuICAzOTpcXHRcXHQgIElmIFBUUCBzdXBwb3J0IGlzIGRpc2FibGVkLCB0aGlzIGRlcGVuZGVuY3kgd2lsbCBzdGlsbCBiZVxcbiAgNDA6XFx0XFx0ICBtZXQsIGFuZCBkcml2ZXJzIHJlZmVyIHRvIGR1bW15IGhlbHBlcnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcXG4gIDQzOlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXFxcIlxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNTozOC45MjkyNjYzNDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTExODQ0NDA2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQVFAgQ2xvY2sgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBwbGF5IGFyb3VuZCB3aXRoIHRoaXMgUFRQXzE1ODhfQ0xPQ0sgc2V0dGluZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGhhcHBlbnMgd2hlbiBJIGRpc2FibGUgaXQuIFJpZ2h0LCBzbyBpZiBQVFBfMTU4OF9DTE9DSyBpcyBzZXQgdG8gJ24nIOKAkyBtZWFuaW5nIGRpc2FibGVkIOKAkyB0aGVuIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbiBzaG91bGQganVzdCBiZSBhIHN0dWIsIGFzIHRoZSBkb2N1bWVudGF0aW9uIHNheXMuIFRoYXQgaW1wbGllcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24sIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gVGltZSB0byBkaWcgaW50byBgaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmhgIGFuZCBjb25maXJtIHRoYXQgdGhlIHJlZ2lzdGVyIGZ1bmN0aW9uIGlzLCBhcyBleHBlY3RlZCwgYSBzdHViLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBudWxsLWltcGxlbWVudGF0aW9uIHNvIEkga25vdyBwcmVjaXNlbHkgd2hhdCBJJ20gbG9zaW5nIGJ5IGRpc2FibGluZyB0aGUgUFRQIGNsb2NrLiBMZXQncyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODQxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNjozMC4xMTM3MTA1MzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDQwNjgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9MzIxPXN0YXRpYyBpbmxpbmUgdTY0IGFkanVzdF9ieV9zY2FsZWRfcHBtKHU2NCBiYXNlLCBsb25nIHNjYWxlZF9wcG0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zMzMtLyoqXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzM0OiAqIHB0cF9jbG9ja19yZWdpc3RlcigpIC0gcmVnaXN0ZXIgYSBQVFAgaGFyZHdhcmUgY2xvY2sgZHJpdmVyXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzM1LSAqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zNDQtXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzQ1OmV4dGVybiBzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTM0Ni1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmljZSAqcGFyZW50KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTM1ND1leHRlcm4gaW50IHB0cF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zNTgtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDozNTk6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzYwLSAqIEBldmVudDogIE1lc3NhZ2Ugc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGV2ZW50Llxcbi0tXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9MzYzPWV4dGVybiB2b2lkIHB0cF9jbG9ja19ldmVudChzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zNjgtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDozNjk6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzcwLSAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9MzkwPWludCBwdHBfY2xvY2tfaW5kZXhfYnlfZGV2KHN0cnVjdCBkZXZpY2UgKnBhcmVudCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00MDAtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0MDE6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDAyLSAqIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQwOD1pbnQgcHRwX2ZpbmRfcGluKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQxOC0gKlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjQxOToqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQyMC0qIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQyNj1pbnQgcHRwX2ZpbmRfcGluX3VubG9ja2VkKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQzMS0gKlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjQzMjogKiBAcHRwOiAgICBUaGUgY2xvY2sgb2J0YWluZWQgZnJvbSBwdHBfY2xvY2tfcmVnaXN0ZXIoKS5cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00MzMtICogQGRlbGF5OiAgbnVtYmVyIG9mIGppZmZpZXMgdG8gd2FpdCBiZWZvcmUgcXVldWluZ1xcbi0tXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9NDM3PWludCBwdHBfc2NoZWR1bGVfd29ya2VyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCwgdW5zaWduZWQgbG9uZyBkZWxheSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDEtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0NDI6ICogQHB0cDogICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0My0gKi9cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD00NDQ9dm9pZCBwdHBfY2FuY2VsX3dvcmtlcl9zeW5jKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDYtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0NDc6c3RhdGljIGlubGluZSBzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0OC1cXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM2OjMwLjY2NDEyMjYzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MDIxNjMyNjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gUFRQIENsb2NrIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQVFAgY2xvY2tzIGFyZSBiZWluZyByZWdpc3RlcmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlIGNvZGUuIExldCdzIHNlZS4uLiBJJ2xsIGp1bXAgcmlnaHQgaW50byBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgLiBUaGF0IGZpbGUgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgd2FudCB0byByZWFkIGFyb3VuZCB0aGF0IGZ1bmN0aW9uLCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LCBzZWUgd2hhdCBpdCB0YWtlcyBhcyBpbnB1dCwgYW5kIGdldCBhIGZlZWwgZm9yIGhvdyB0aGUgY2xvY2sgcmVnaXN0cmF0aW9uIHByb2Nlc3MgaXMgYXJjaGl0ZWN0ZWQgd2l0aGluIHRoZSBkcml2ZXIuIEnigJltIGhvcGluZyB0byBnbGVhbiB0aGUgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCwgdG9vLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTkyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6MDYuNjg1NzU4NTI3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI2MDg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgcHRwX2Nsb2NrIFxcXFwqcHRwX2Nsb2NrX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcHRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0zMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHRwX3Blcm91dF9sb29wYmFja19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0zMjctXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MzI4OnN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMzI5LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNzowNi43MzIwMjgyMjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njc1NzgwMTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgaGVyZS5cblxuKipEZWNvbnN0cnVjdGluZyBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCoqXG5cbkFscmlnaHQsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgaW1hZ2luZSBpdCdzIHRoZSBwb2ludCB3aGVyZSBhIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGNsb2NrLCBwcmVzdW1hYmx5IGEgaGFyZHdhcmUgb3Igc29mdHdhcmUgUFRQIGNsb2NrLCBpcyBmb3JtYWxseSBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbS4gSXQncyB0aGUgbW9tZW50IHRoZSBrZXJuZWwgcmVjb2duaXplcyBhbmQgYmVnaW5zIG1hbmFnaW5nIHRoaXMgY2xvY2sgYXMgYSBzb3VyY2Ugb2YgcHJlY2lzZSB0aW1lLiBJdCdzIHNpbWlsYXIgdG8gb3RoZXIgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgSSBleHBlY3QuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQuIFdoYXQgaXMgYmVpbmcgcGFzc2VkIGludG8gdGhpcyByZWdpc3RyYXRpb24gZnVuY3Rpb24/IElzIGl0IGEgcG9pbnRlciB0byBhIHN0cnVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgY2xvY2sncyBjYXBhYmlsaXRpZXMsIGl0cyBoYXJkd2FyZSBhZGRyZXNzLCBhbnkgYXNzb2NpYXRlZCBkcml2ZXJzIG9yIGludGVycnVwdCBoYW5kbGVycz8gUGVyaGFwcyBpdCdzIHNpbWlsYXIgdG8gdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIG5ldHdvcmsgY2FyZC5cblxuTmV4dCwgSSBuZWVkIHRvIGtub3cgd2hhdCBoYXBwZW5zIGR1cmluZyByZWdpc3RyYXRpb24uIERvZXMgaXQgYWxsb2NhdGUgc29tZSBrZXJuZWwgcmVzb3VyY2VzPyBQb3NzaWJseSBtZW1vcnkgdG8gaG9sZCBjbG9jayBkYXRhLiBEb2VzIGl0IGNyZWF0ZSBhc3NvY2lhdGVkIGtlcm5lbCB0aHJlYWRzIGZvciBoYW5kbGluZyB0aW1lIHVwZGF0ZXMgb3Igc3luY2hyb25pemF0aW9uPyBEb2VzIGl0IHNldCB1cCBhbnkgaW50ZXJydXB0IGhhbmRsZXJzIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIG9yIGRvZXMgaXQgYWRkIHRoZSBjbG9jayBpbnRvIHNvbWUgZ2xvYmFsIGtlcm5lbCBQVFAgY2xvY2sgbGlzdD9cblxuSSdtIGFsc28gY3VyaW91cyBhYm91dCBlcnJvciBoYW5kbGluZy4gV2hhdCBmYWlsdXJlIG1vZGVzIGFyZSBhbnRpY2lwYXRlZCBoZXJlPyBEb2VzIHRoZSBmdW5jdGlvbiBjaGVjayBmb3IgY29uZmxpY3RpbmcgY2xvY2sgc291cmNlcz8gV2hhdCBoYXBwZW5zIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLCBvciBpZiB0aGUgZHJpdmVyIGNhbid0IGluaXRpYWxpemUgdGhlIGNsb2NrJ3MgaGFyZHdhcmU/IEFyZSB0aGVyZSByZXR1cm4gY29kZXMgYW5kIGhvdyBhcmUgdGhleSB1c2VkIGJ5IHRoZSBjYWxsaW5nIGNvZGU/IEkgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGFzIHdlbGwgYXMgdGhlIHJlZ2lzdHJhdGlvbiBjb2RlIGl0c2VsZi5cblxuRmluYWxseSwgd2hhdCdzIHRoZSBicm9hZGVyIGNvbnRleHQ/IFRoaXMgcmVnaXN0cmF0aW9uIGhhcyB0byBwbHVnIGludG8gc29tZXRoaW5nIGJpZ2dlci4gSXMgaXQgdXNlZCB0byBidWlsZCBhIGdsb2JhbCBQVFAgY2xvY2sgdHJlZSBmb3IgdGhlIHN5c3RlbT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIHNwZWNpZmljIGhhcmR3YXJlIGludGVyZmFjZXMgZm9yIHByZWNpc2UgdGltaW5nPyBXaGF0IGhhcHBlbnMgaW4gdGVybXMgb2YgZGV2aWNlIGRpc2NvdmVyeSB3aGVuIGEgZGV2aWNlIHJlZ2lzdGVycyBvciBpcyByZW1vdmVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU3NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM3OjEzLjQ4OTgzMTkwOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjgsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMjg6XFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcXG4gMzI5OlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxcbiAzMzA6XFx0e1xcbiAzMzE6XFx0XFx0c3RydWN0IHB0cF9jbG9jayAqcHRwO1xcbiAzMzI6XFx0XFx0c3RydWN0IHRpbWVzdGFtcF9ldmVudF9xdWV1ZSAqcXVldWUgPSBOVUxMO1xcbiAzMzM6XFx0XFx0aW50IGVyciwgaW5kZXgsIG1ham9yID0gTUFKT1IocHRwX2RldnQpO1xcbiAzMzQ6XFx0XFx0Y2hhciBkZWJ1Z2ZzbmFtZVsxNl07XFxuIDMzNTpcXHRcXHRzaXplX3Qgc2l6ZTtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0aWYgKFdBUk5fT05fT05DRShpbmZvLVxcdTAwM2VuX2FsYXJtIFxcdTAwM2UgUFRQX01BWF9BTEFSTVMgfHxcXG4gMzM4OlxcdFxcdFxcdFxcdCAoIWluZm8tXFx1MDAzZWdldHRpbWV4NjQgXFx1MDAyNlxcdTAwMjYgIWluZm8tXFx1MDAzZWdldHRpbWU2NCkgfHxcXG4gMzM5OlxcdFxcdFxcdFxcdCAhaW5mby1cXHUwMDNlc2V0dGltZTY0KSlcXG4gMzQwOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiAzNDE6XFx0XFxuIDM0MjpcXHRcXHQvKiBJbml0aWFsaXplIGEgY2xvY2sgc3RydWN0dXJlLiAqL1xcbiAzNDM6XFx0XFx0cHRwID0ga3phbGxvY19vYmooc3RydWN0IHB0cF9jbG9jayk7XFxuIDM0NDpcXHRcXHRpZiAoIXB0cCkge1xcbiAzNDU6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzQ2OlxcdFxcdFxcdGdvdG8gbm9fbWVtb3J5O1xcbiAzNDc6XFx0XFx0fVxcbiAzNDg6XFx0XFxuIDM0OTpcXHRcXHRlcnIgPSB4YV9hbGxvYyhcXHUwMDI2cHRwX2Nsb2Nrc19tYXAsIFxcdTAwMjZpbmRleCwgcHRwLCB4YV9saW1pdF8zMWIsXFxuIDM1MDpcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuIDM1MTpcXHRcXHRpZiAoZXJyKVxcbiAzNTI6XFx0XFx0XFx0Z290byBub19zbG90O1xcbiAzNTM6XFx0XFxuIDM1NDpcXHRcXHRwdHAtXFx1MDAzZWNsb2NrLm9wcyA9IHB0cF9jbG9ja19vcHM7XFxuIDM1NTpcXHRcXHRwdHAtXFx1MDAzZWluZm8gPSBpbmZvO1xcbiAzNTY6XFx0XFx0cHRwLVxcdTAwM2VkZXZpZCA9IE1LREVWKG1ham9yLCBpbmRleCk7XFxuIDM1NzpcXHRcXHRwdHAtXFx1MDAzZWluZGV4ID0gaW5kZXg7XFxuIDM1ODpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHRwLVxcdTAwM2V0c2V2cXMpO1xcbiAzNTk6XFx0XFx0cXVldWUgPSBremFsbG9jX29iaigqcXVldWUpO1xcbiAzNjA6XFx0XFx0aWYgKCFxdWV1ZSkge1xcbiAzNjE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzYyOlxcdFxcdFxcdGdvdG8gbm9fbWVtb3J5X3F1ZXVlO1xcbiAzNjM6XFx0XFx0fVxcbiAzNjQ6XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2cXVldWUtXFx1MDAzZXFsaXN0LCBcXHUwMDI2cHRwLVxcdTAwM2V0c2V2cXMpO1xcbiAzNjU6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnB0cC1cXHUwMDNldHNldnFzX2xvY2spO1xcbiAzNjY6XFx0XFx0cXVldWUtXFx1MDAzZW1hc2sgPSBiaXRtYXBfYWxsb2MoUFRQX01BWF9DSEFOTkVMUywgR0ZQX0tFUk5FTCk7XFxuIDM2NzpcXHRcXHRpZiAoIXF1ZXVlLVxcdTAwM2VtYXNrKSB7XFxuIDM2ODpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAzNjk6XFx0XFx0XFx0Z290byBub19tZW1vcnlfYml0bWFwO1xcbiAzNzA6XFx0XFx0fVxcbiAzNzE6XFx0XFx0Yml0bWFwX3NldChxdWV1ZS1cXHUwMDNlbWFzaywgMCwgUFRQX01BWF9DSEFOTkVMUyk7XFxuIDM3MjpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cXVldWUtXFx1MDAzZWxvY2spO1xcbiAzNzM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2cHRwLVxcdTAwM2VwaW5jZmdfbXV4KTtcXG4gMzc0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnB0cC1cXHUwMDNlbl92Y2xvY2tzX211eCk7XFxuIDM3NTpcXHRcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZwdHAtXFx1MDAzZXRzZXZfd3EpO1xcbiAzNzY6XFx0XFxuIDM3NzpcXHRcXHRpZiAocHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjeWNsZXM2NCB8fCBwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGN5Y2xlc3g2NCkge1xcbiAzNzg6XFx0XFx0XFx0cHRwLVxcdTAwM2VoYXNfY3ljbGVzID0gdHJ1ZTtcXG4gMzc5OlxcdFxcdFxcdGlmICghcHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjeWNsZXM2NCBcXHUwMDI2XFx1MDAyNiBwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGN5Y2xlc3g2NClcXG4gMzgwOlxcdFxcdFxcdFxcdHB0cC1cXHUwMDNlaW5mby1cXHUwMDNlZ2V0Y3ljbGVzNjQgPSBwdHBfZ2V0Y3ljbGVzNjQ7XFxuIDM4MTpcXHRcXHR9IGVsc2Uge1xcbiAzODI6XFx0XFx0XFx0LyogRnJlZSBydW5uaW5nIGN5Y2xlIGNvdW50ZXIgbm90IHN1cHBvcnRlZCwgdXNlIHRpbWUuICovXFxuIDM4MzpcXHRcXHRcXHRwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGN5Y2xlczY0ID0gcHRwX2dldGN5Y2xlczY0O1xcbiAzODQ6XFx0XFxuIDM4NTpcXHRcXHRcXHRpZiAocHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXR0aW1leDY0KVxcbiAzODY6XFx0XFx0XFx0XFx0cHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjeWNsZXN4NjQgPSBwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldHRpbWV4NjQ7XFxuIDM4NzpcXHRcXG4gMzg4OlxcdFxcdFxcdGlmIChwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGNyb3NzdHN0YW1wKVxcbiAzODk6XFx0XFx0XFx0XFx0cHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjcm9zc2N5Y2xlcyA9IHB0cC1cXHUwMDNlaW5mby1cXHUwMDNlZ2V0Y3Jvc3N0c3RhbXA7XFxuIDM5MDpcXHRcXHR9XFxuIDM5MTpcXHRcXG4gMzkyOlxcdFxcdGlmICghcHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VlbmFibGUpXFxuIDM5MzpcXHRcXHRcXHRwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWVuYWJsZSA9IHB0cF9lbmFibGU7XFxuIDM5NDpcXHRcXG4gMzk1OlxcdFxcdGlmIChwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWRvX2F1eF93b3JrKSB7XFxuIDM5NjpcXHRcXHRcXHRrdGhyZWFkX2luaXRfZGVsYXllZF93b3JrKFxcdTAwMjZwdHAtXFx1MDAzZWF1eF93b3JrLCBwdHBfYXV4X2t3b3JrZXIpO1xcbiAzOTc6XFx0XFx0XFx0cHRwLVxcdTAwM2Vrd29ya2VyID0ga3RocmVhZF9ydW5fd29ya2VyKDAsIFxcXCJwdHAlZFxcXCIsIHB0cC1cXHUwMDNlaW5kZXgpO1xcbiAzOTg6XFx0XFx0XFx0aWYgKElTX0VSUihwdHAtXFx1MDAzZWt3b3JrZXIpKSB7XFxuIDM5OTpcXHRcXHRcXHRcXHRlcnIgPSBQVFJfRVJSKHB0cC1cXHUwMDNla3dvcmtlcik7XFxuIDQwMDpcXHRcXHRcXHRcXHRwcl9lcnIoXFxcImZhaWxlZCB0byBjcmVhdGUgcHRwIGF1eF93b3JrZXIgJWRcXFxcblxcXCIsIGVycik7XFxuIDQwMTpcXHRcXHRcXHRcXHRnb3RvIGt3b3JrZXJfZXJyO1xcbiA0MDI6XFx0XFx0XFx0fVxcbiA0MDM6XFx0XFx0fVxcbiA0MDQ6XFx0XFxuIDQwNTpcXHRcXHQvKiBQVFAgdmlydHVhbCBjbG9jayBpcyBiZWluZyByZWdpc3RlcmVkIHVuZGVyIHBoeXNpY2FsIGNsb2NrICovXFxuIDQwNjpcXHRcXHRpZiAocGFyZW50IFxcdTAwMjZcXHUwMDI2IHBhcmVudC1cXHUwMDNlY2xhc3MgXFx1MDAyNlxcdTAwMjYgcGFyZW50LVxcdTAwM2VjbGFzcy1cXHUwMDNlbmFtZSBcXHUwMDI2XFx1MDAyNlxcbiA0MDc6XFx0XFx0ICAgIHN0cmNtcChwYXJlbnQtXFx1MDAzZWNsYXNzLVxcdTAwM2VuYW1lLCBcXFwicHRwXFxcIikgPT0gMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6MTMuNDg5OTI1OTI4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMjI5MDMyOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqTmF2aWdhdGluZyB0aGUgUFRQIENsb2NrIFJlZ2lzdGVyIFNlcXVlbmNlKipcblxuQWxyaWdodCwgc28gdGhlIG5leHQgbG9naWNhbCBzdGVwIGluIHRoaXMgaW52ZXN0aWdhdGlvbiBpcyB0byBkaXZlIGludG8gd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYHB0cF9jbG9ja19yZWdpc3RlcmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBldmVudHMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyB0b3VjaGVkLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEdpdmVuIHRoZSBjb250ZXh0IG9mIGNsb2NrIG1hbmFnZW1lbnQsIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMsIHBvdGVudGlhbCBpbnRlcnJ1cHRzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBsaWtlbHkgc29tZSBzb3J0IG9mIGluaXRpYWxpemF0aW9uIG9mIGNsb2NrLXJlbGF0ZWQgZGF0YS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBhbnkgZXhpc3RpbmcgUFRQIGNvbmZpZ3VyYXRpb24gb3IgaWYgdGhpcyBpcyB0aGUgXCJncm91bmQgemVyb1wiIG9mIGEgbmV3IGNsb2NrIGluc3RhbmNlLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSBhY3R1YWxseSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQwNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6MjMuNzE4OTYxMzYyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDgsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDg6XFx0XFx0XFx0cHRwLVxcdTAwM2Vpc192aXJ0dWFsX2Nsb2NrID0gdHJ1ZTtcXG4gNDA5OlxcdFxcbiA0MTA6XFx0XFx0aWYgKCFwdHAtXFx1MDAzZWlzX3ZpcnR1YWxfY2xvY2spIHtcXG4gNDExOlxcdFxcdFxcdHB0cC1cXHUwMDNlbWF4X3ZjbG9ja3MgPSBQVFBfREVGQVVMVF9NQVhfVkNMT0NLUztcXG4gNDEyOlxcdFxcbiA0MTM6XFx0XFx0XFx0c2l6ZSA9IHNpemVvZihpbnQpICogcHRwLVxcdTAwM2VtYXhfdmNsb2NrcztcXG4gNDE0OlxcdFxcdFxcdHB0cC1cXHUwMDNldmNsb2NrX2luZGV4ID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcXG4gNDE1OlxcdFxcdFxcdGlmICghcHRwLVxcdTAwM2V2Y2xvY2tfaW5kZXgpIHtcXG4gNDE2OlxcdFxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDQxNzpcXHRcXHRcXHRcXHRnb3RvIG5vX21lbV9mb3JfdmNsb2NrcztcXG4gNDE4OlxcdFxcdFxcdH1cXG4gNDE5OlxcdFxcdH1cXG4gNDIwOlxcdFxcbiA0MjE6XFx0XFx0ZXJyID0gcHRwX3BvcHVsYXRlX3Bpbl9ncm91cHMocHRwKTtcXG4gNDIyOlxcdFxcdGlmIChlcnIpXFxuIDQyMzpcXHRcXHRcXHRnb3RvIG5vX3Bpbl9ncm91cHM7XFxuIDQyNDpcXHRcXG4gNDI1OlxcdFxcdC8qIFJlZ2lzdGVyIGEgbmV3IFBQUyBzb3VyY2UuICovXFxuIDQyNjpcXHRcXHRpZiAoaW5mby1cXHUwMDNlcHBzKSB7XFxuIDQyNzpcXHRcXHRcXHRzdHJ1Y3QgcHBzX3NvdXJjZV9pbmZvIHBwcztcXG4gNDI4OlxcdFxcdFxcdG1lbXNldChcXHUwMDI2cHBzLCAwLCBzaXplb2YocHBzKSk7XFxuIDQyOTpcXHRcXHRcXHRzbnByaW50ZihwcHMubmFtZSwgUFBTX01BWF9OQU1FX0xFTiwgXFxcInB0cCVkXFxcIiwgaW5kZXgpO1xcbiA0MzA6XFx0XFx0XFx0cHBzLm1vZGUgPSBQVFBfUFBTX01PREU7XFxuIDQzMTpcXHRcXHRcXHRwcHMub3duZXIgPSBpbmZvLVxcdTAwM2Vvd25lcjtcXG4gNDMyOlxcdFxcdFxcdHB0cC1cXHUwMDNlcHBzX3NvdXJjZSA9IHBwc19yZWdpc3Rlcl9zb3VyY2UoXFx1MDAyNnBwcywgUFRQX1BQU19ERUZBVUxUUyk7XFxuIDQzMzpcXHRcXHRcXHRpZiAoSVNfRVJSKHB0cC1cXHUwMDNlcHBzX3NvdXJjZSkpIHtcXG4gNDM0OlxcdFxcdFxcdFxcdGVyciA9IFBUUl9FUlIocHRwLVxcdTAwM2VwcHNfc291cmNlKTtcXG4gNDM1OlxcdFxcdFxcdFxcdHByX2VycihcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIHBwcyBzb3VyY2VcXFxcblxcXCIpO1xcbiA0MzY6XFx0XFx0XFx0XFx0Z290byBub19wcHM7XFxuIDQzNzpcXHRcXHRcXHR9XFxuIDQzODpcXHRcXHRcXHRwdHAtXFx1MDAzZXBwc19zb3VyY2UtXFx1MDAzZWxvb2t1cF9jb29raWUgPSBwdHA7XFxuIDQzOTpcXHRcXHR9XFxuIDQ0MDpcXHRcXG4gNDQxOlxcdFxcdC8qIEluaXRpYWxpemUgYSBuZXcgZGV2aWNlIG9mIG91ciBjbGFzcyBpbiBvdXIgY2xvY2sgc3RydWN0dXJlLiAqL1xcbiA0NDI6XFx0XFx0ZGV2aWNlX2luaXRpYWxpemUoXFx1MDAyNnB0cC1cXHUwMDNlZGV2KTtcXG4gNDQzOlxcdFxcdHB0cC1cXHUwMDNlZGV2LmRldnQgPSBwdHAtXFx1MDAzZWRldmlkO1xcbiA0NDQ6XFx0XFx0cHRwLVxcdTAwM2VkZXYuY2xhc3MgPSBcXHUwMDI2cHRwX2NsYXNzO1xcbiA0NDU6XFx0XFx0cHRwLVxcdTAwM2VkZXYucGFyZW50ID0gcGFyZW50O1xcbiA0NDY6XFx0XFx0cHRwLVxcdTAwM2VkZXYuZ3JvdXBzID0gcHRwLVxcdTAwM2VwaW5fYXR0cl9ncm91cHM7XFxuIDQ0NzpcXHRcXHRwdHAtXFx1MDAzZWRldi5yZWxlYXNlID0gcHRwX2Nsb2NrX3JlbGVhc2U7XFxuIDQ0ODpcXHRcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNnB0cC1cXHUwMDNlZGV2LCBwdHApO1xcbiA0NDk6XFx0XFx0ZGV2X3NldF9uYW1lKFxcdTAwMjZwdHAtXFx1MDAzZWRldiwgXFxcInB0cCVkXFxcIiwgcHRwLVxcdTAwM2VpbmRleCk7XFxuIDQ1MDpcXHRcXG4gNDUxOlxcdFxcdC8qIENyZWF0ZSBhIHBvc2l4IGNsb2NrIGFuZCBsaW5rIGl0IHRvIHRoZSBkZXZpY2UuICovXFxuIDQ1MjpcXHRcXHRlcnIgPSBwb3NpeF9jbG9ja19yZWdpc3RlcihcXHUwMDI2cHRwLVxcdTAwM2VjbG9jaywgXFx1MDAyNnB0cC1cXHUwMDNlZGV2KTtcXG4gNDUzOlxcdFxcdGlmIChlcnIpIHtcXG4gNDU0OlxcdFxcdFxcdGlmIChwdHAtXFx1MDAzZXBwc19zb3VyY2UpXFxuIDQ1NTpcXHRcXHRcXHRcXHRwcHNfdW5yZWdpc3Rlcl9zb3VyY2UocHRwLVxcdTAwM2VwcHNfc291cmNlKTtcXG4gNDU2OlxcdFxcbiA0NTc6XFx0XFx0XFx0aWYgKHB0cC1cXHUwMDNla3dvcmtlcilcXG4gNDU4OlxcdFxcdFxcdFxcdGt0aHJlYWRfZGVzdHJveV93b3JrZXIocHRwLVxcdTAwM2Vrd29ya2VyKTtcXG4gNDU5OlxcdFxcbiA0NjA6XFx0XFx0XFx0cHV0X2RldmljZShcXHUwMDI2cHRwLVxcdTAwM2VkZXYpO1xcbiA0NjE6XFx0XFxuIDQ2MjpcXHRcXHRcXHRwcl9lcnIoXFxcImZhaWxlZCB0byBjcmVhdGUgcG9zaXggY2xvY2tcXFxcblxcXCIpO1xcbiA0NjM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gNDY0OlxcdFxcdH1cXG4gNDY1OlxcdFxcbiA0NjY6XFx0XFx0LyogRGVidWdmcyBpbml0aWFsaXphdGlvbiAqL1xcbiA0Njc6XFx0XFx0c25wcmludGYoZGVidWdmc25hbWUsIHNpemVvZihkZWJ1Z2ZzbmFtZSksIFxcXCJwdHAlZFxcXCIsIHB0cC1cXHUwMDNlaW5kZXgpO1xcbiA0Njg6XFx0XFx0cHRwLVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGVidWdmc25hbWUsIE5VTEwpO1xcbiA0Njk6XFx0XFx0aWYgKGluZm8tXFx1MDAzZW5fcGVyX2xwIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBpbmZvLVxcdTAwM2VwZXJvdXRfbG9vcGJhY2spIHtcXG4gNDcwOlxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcIm5fcGVyb3V0X2xvb3BiYWNrXFxcIiwgMDQwMCwgcHRwLVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QsXFxuIDQ3MTpcXHRcXHRcXHRcXHRcXHQgICAgcHRwLCBcXHUwMDI2cHRwX25fcGVyb3V0X2xvb3BiYWNrX2ZvcHMpO1xcbiA0NzI6XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicGVyb3V0X2xvb3BiYWNrXFxcIiwgMDIwMCwgcHRwLVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QsXFxuIDQ3MzpcXHRcXHRcXHRcXHRcXHQgICAgcHRwLCBcXHUwMDI2cHRwX3Blcm91dF9sb29wYmFja19vcHMpO1xcbiA0NzQ6XFx0XFx0fVxcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRyZXR1cm4gcHRwO1xcbiA0Nzc6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM3OjIzLjcxOTA2NTMzMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDg4NDk1MDU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IGlnYiBQVFAgQ2xvY2sgUmVnaXN0cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBMaW5lIDQ1MiBpcyB3aGVyZSBgcG9zaXhfY2xvY2tfcmVnaXN0ZXJgIGlzIGNhbGxlZC4gSW5zaWRlIHRoYXQsIGBjZGV2X2RldmljZV9hZGRgIGdldHMgY2FsbGVkLCBtYWtpbmcgdGhlIGNoYXJhY3RlciBkZXZpY2UgYC9kZXYvcHRwMGAgYWNjZXNzaWJsZSB0byB1c2Vyc3BhY2UuIFRoaXMgbWVhbnMgdXNlcnNwYWNlIGNhbiBub3cgY2FsbCBQVFAtcmVsYXRlZCBzeXNjYWxscyBhbmQgaW9jdGxzLiBBbmQgKnRob3NlKiBjYWxscyBhcmUgcm91dGVkIHRvIGZ1bmN0aW9ucyBsaWtlIGBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2YCBldGMuIHdoaWNoIGFjY2VzcyBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYC5cblxuSGVyZSdzIHRoZSBraWNrZXI6ICBiZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGBzcGluX2xvY2tfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2spYCBjYWxsIHdhc24ndCAqYmVmb3JlKiB0aGUgcmVnaXN0cmF0aW9uIGluIGNlcnRhaW4gZXJyb3IgcGF0aHMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgbG9jayBjb3VsZCBiZSB1bmluaXRpYWxpemVkIHdoZW4gdGhlIGBpZ2JfcHRwXypgIGZ1bmN0aW9ucyB3ZXJlIGJlaW5nIGNhbGxlZCEgIFRoaXMgY291bGQgbGVhZCB0byBsb2NrZGVwIHNwbGF0cyBvciBiYWQgbG9jayBzdGF0ZXMuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IElzIHRoaXMgd29ydGggZnV6emluZywgYWNjb3JkaW5nIHRvIG91ciBydWxlcz8gTGV0J3MgY2hlY2sgdGhlbS4gV2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyBcInJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlc1wiLlxuXG5Pa2F5LCBzbyBpcyBgaWdiYCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBZZXMsIGBpZ2JgIGlzIGluY2x1ZGVkIGluIFFFTVUgc2luY2UgUUVNVSA4LjAuIFRoYXQncyBnb29kIG5ld3MuIFRoYXQgbWFrZXMgaXQgbW9yZSBsaWtlbHkuXG5cbkJ1dCB3YWl0LCB0aGVyZSdzIHRoYXQgcnVsZSBhYm91dCBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0ZWFyZG93biBjYWxsYmFja3MuICBUaGUgZXhhbXBsZSAqc3BlY2lmaWNhbGx5KiBtZW50aW9ucyBgaWdiX3JlbW92ZWAuIEJ1dCwgYGlnYl9yZW1vdmVgIGlzIGEgdGVhcmRvd24gZnVuY3Rpb24sIHdoaWxlIHRoZSBkcml2ZXIgaXMgc3RhbmRhcmQuIEFuZCwgdGhlIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUgaXMgYGlnYl9wdHBfaW5pdGAuIFNvLCB3ZSdyZSBub3QgdGFsa2luZyBhYm91dCBhIHRlYXJkb3duIGNhbGxiYWNrLiBXZSdyZSB0YWxraW5nIGFib3V0ICppbml0aWFsaXphdGlvbiogZHVyaW5nIGRldmljZSBzZXR1cC5cblxuTmV4dDogSXMgdGhpcyBsb2NrIGJlaW5nIGluaXRpYWxpemVkIHVzZWQgYXQgcnVudGltZT8gSXMgYHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaylgIGluaXRpYWxpemluZyB0aGUgbG9jayB1c2VkIGR1cmluZyBydW50aW1lIGJ5IFBUUCBzeXNjYWxscyAvIG9wZXJhdGlvbnM/IFllcywgZGVmaW5pdGVseS4gQWxsIG9mIHRoZSBrZXkgYGlnYl9wdHBfKmAgZnVuY3Rpb25zIHVzZSBpdCBmb3Igc3luY2hyb25pemF0aW9uOiBgaWdiX3B0cF9hZGpmaW5lXypgLCBgaWdiX3B0cF9hZGp0aW1lXypgLCBgaWdiX3B0cF9nZXR0aW1leF8qYCwgYGlnYl9wdHBfc2V0dGltZV8qYCwgYGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfKmAsIGBpZ2JfcHRwX3J4X2hhbmdgLCBgaWdiX3B0cF90eF9oYW5nYCwgYGlnYl9wdHBfdHhfaHd0c3RhbXBgLCBgaWdiX3B0cF9yeF9wa3RzdGFtcGAsIGBpZ2JfcHRwX3J4X3JndHN0YW1wYCwgYGlnYl9wdHBfc2V0X3RpbWVzdGFtcF9tb2RlYC5cblxuR2l2ZW4gdGhhdCBgaWdiYCBpcyBlbXVsYXRlZCwgdGhpcyBtb2RpZmllcyBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBjb2RlLCBhbmQgdGhlIGJ1ZyBjb3VsZCBsZWFkIHRvIGEgaGFyZC10by1kZWJ1ZyBzdGF0ZSwgdGhpcyBzZWVtcyBsaWtlIGl0ICppcyogd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4MzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNzo0NC42MDQwMTc4NDhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTI2MzU1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0bXJlZ19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTU0ND1zdHJ1Y3QgaWdiX2FkYXB0ZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTYzNC1cXHR1bnNpZ25lZCBpbnQgcHRwX2ZsYWdzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo2MzU6XFx0c3BpbmxvY2tfdCB0bXJlZ19sb2NrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC02MzYtXFx0c3RydWN0IGN5Y2xlY291bnRlciBjYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTY5NDI9c3RhdGljIHZvaWQgaWdiX3Blcm91dChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB0c2ludHJfdHQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy02OTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjY5NTI6XFx0c3Bpbl9sb2NrKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy02OTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzAxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo3MDE3OlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTcwMjA9c3RhdGljIHZvaWQgaWdiX2V4dHRzKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHRzaW50cl90dClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTcwMzgtXFx0XFx0bnMgKz0gKCh1NjQpKHJkMzIoYXV4c3RtcGgpIFxcdTAwMjYgMHhGRikpIFxcdTAwM2NcXHUwMDNjIDMyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjcwMzk6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDQwLVxcdFxcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRjLCBucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NzA0MTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzA0Mi1cXHRcXHR0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMzM9c3RhdGljIHZvaWQgaWdiX3B0cF93cml0ZV9pMjEwKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUzLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNTQ6ICogVGhlICd0bXJlZ19sb2NrJyBzcGlubG9jayBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTU1LSAqIHN5c3RlbSB0aW1lIHZhbHVlLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHJlYWRpbmcgdGhlIDY0IGJpdCB0aW1lXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTE2Mj1zdGF0aWMgdm9pZCBpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE3NS1cXHRjYXNlIGUxMDAwX2kzNTA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNzY6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE3Ny1cXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0Yywgc3lzdGltKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE3ODpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTIyOD1zdGF0aWMgaW50IGlnYl9wdHBfYWRqdGltZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyMzQ6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjM1LVxcdHRpbWVjb3VudGVyX2FkanRpbWUoXFx1MDAyNmlnYi1cXHUwMDNldGMsIGRlbHRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjIzNjpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MjQxPXN0YXRpYyBpbnQgaWdiX3B0cF9hZGp0aW1lX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjQ4OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjU0OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0yNTk9c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNzA6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNzk6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yODAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTI4Nj1zdGF0aWMgaW50IGlnYl9wdHBfZ2V0dGltZXhfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI5NzpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yOTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjMwNzpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MzE0PXN0YXRpYyBpbnQgaWdiX3B0cF9nZXR0aW1leF9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozMjM6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozMzE6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTMzNj1zdGF0aWMgaW50IGlnYl9wdHBfc2V0dGltZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzQ2OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzUwOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zNTU9c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzYyOlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzY2OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz00ODk9c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01MjMtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTI0OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUyNS1cXHRcXHR0c2F1eGMgPSByZDMyKEUxMDAwX1RTQVVYQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUzNi1cXHRcXHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTM3OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNTM4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01NjgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTY5OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTU3MC1cXHRcXHR0c2F1eGMgPSByZDMyKEUxMDAwX1RTQVVYQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYyOS1cXHRcXHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjMwOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNjMxLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz02NDA9c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTY3Mi1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo2NzM6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNjc0LVxcdFxcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNjg1LVxcdFxcdHdyMzIoRTEwMDBfVFNJTSwgdHNpbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo2ODY6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02ODctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTczMy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3MzQ6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzM1LVxcdFxcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzU5LVxcdFxcdHdyMzIoRTEwMDBfVFNJTSwgdHNpbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3NjA6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjEtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc2My1cXHRjYXNlIFBUUF9DTEtfUkVRX1BQUzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjc2NDpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjUtXFx0XFx0dHNpbSA9IHJkMzIoRTEwMDBfVFNJTSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc3MS1cXHRcXHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzcyOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzczLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMzA1PXZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzODE6XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM4Mi1cXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xNDY5PXZvaWQgaWdiX3B0cF9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDc3OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNTExLW91dDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1MTI6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2YWRhcHRlci1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6NDQuOTg1Mjg3MjNaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcwMjM0NzUyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEludGVsIElHQiBEcml2ZXIgUFRQIEluaXRpYWxpemF0aW9uIEJ1ZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIHRoZSBgaWdiX3B0cF9pbml0YCBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIGtleSB0byBQVFAgaW5pdGlhbGl6YXRpb24gaW4gdGhlIElHQiBkcml2ZXIuIEkgY2FuIHNlZSB0aGF0IGl0IGNhbGxzIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHdpdGggdGhlIGFkYXB0ZXIncyBQVFAgY2FwYWJpbGl0aWVzIGFuZCB0aGUgUENJIGRldmljZSdzIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCB0aGVuIGNhbGxzIGBpZ2JfcHRwX3Jlc2V0YC4gQ3J1Y2lhbGx5LCBgaWdiX3B0cF9yZXNldGAgc3Vic2VxdWVudGx5IGFjcXVpcmVzIHRoZSBgdG1yZWdfbG9ja2Agc3BpbmxvY2sgdXNpbmcgYHNwaW5fbG9ja19pcnFzYXZlYC4gSSBrbm93IHRoYXQgYHB0cF9jbG9ja19yZWdpc3RlcmAgY3JlYXRlcyB0aGUgYC9kZXYvcHRwWGAgZGV2aWNlIG5vZGUsIG1ha2luZyBpdCBhdmFpbGFibGUgdG8gdXNlcnNwYWNlLCB3aGljaCBpbiB0dXJuIGNhbGxzIGZ1bmN0aW9ucyBsaWtlIGBpZ2JfcHRwX2FkanRpbWVfKmAgYW5kIGBpZ2JfcHRwX2dldHRpbWV4XypgLiBUaGVzZSB1c2VyLXNwYWNlIGNhbGxzIGFsc28gYWNxdWlyZSB0aGUgYHRtcmVnX2xvY2tgLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIHJlbGV2YW50IHN5bWJvbHMuIGBpZ2JfcHRwX2luaXRgIGlzIGEgbm9uLXN0YXRpYyBzeW1ib2wsIG1lYW5pbmcgaXQncyBleHBvcnRlZCB3aXRoaW4gdGhlIGRyaXZlci4gYGlnYl9wcm9iZWAgaXMgc3RhdGljLCB3aGljaCBpcyBleHBlY3RlZC4gYHB0cF9jbG9ja19yZWdpc3RlcmAgcmVzaWRlcyBpbiBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgIGFuZCBpcyBhbiBleHBvcnRlZCBzeW1ib2wuIEkgYWxzbyBzZWUgb3RoZXIgcmVsZXZhbnQgbm9uLXN0YXRpYyBJR0IgUFRQIGZ1bmN0aW9ucywgbGlrZSBgaWdiX3B0cF9yZXNldGAsIGBpZ2JfcHRwX2h3dHN0YW1wX3NldGAsIGFuZCBgaWdiX3B0cF9od3RzdGFtcF9nZXRgLlxuXG5OZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSdtIGZvY3VzaW5nIG9uIGBDT05GSUdfSUdCYCwgYENPTkZJR19QVFBfMTU4OF9DTE9DS2AsIGFuZCBgQ09ORklHX1BDSWAuIExvb2tpbmcgYXQgdGhlIGBLY29uZmlnYCBmaWxlcywgSSBjYW4gc2VlIHRoYXQgYENPTkZJR19JR0JgIGRlcGVuZHMgb24gYFBDSWAgYW5kIGVpdGhlciBgUFRQXzE1ODhfQ0xPQ0tgIG9yIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgZm9yIFBUUCBzdXBwb3J0LiBJdCBhbHNvIHNlbGVjdHMgYEkyQ2AgYW5kIGBJMkNfQUxHT0JJVGAuIE1vcmVvdmVyLCBgSUdCYCBpcyBuZXN0ZWQgd2l0aGluIHRoZSBgTkVUREVWSUNFU2AsIGBFVEhFUk5FVGAsIGFuZCBgTkVUX1ZFTkRPUl9JTlRFTGAgbWVudSBoaWVyYXJjaGllcy5cblxuSSd2ZSB2ZXJpZmllZCBteSB1bmRlcnN0YW5kaW5nLiBUaGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmU6IGBJR0JgLCBgUENJYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIFRoZSBpbXBvcnRhbnQgc3ltYm9scyBmb3IgZnV6emluZyBhcmU6IGBpZ2JfcHRwX2luaXRgLCBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCwgYGlnYl9wdHBfcmVzZXRgLCBhbmQgYGlnYl9wdHBfaHd0c3RhbXBfc2V0YC5cblxuQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIsIEkgY2FuIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgYHNwaW5fbG9ja19pbml0YCBjYWxsIGZvciBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBoYXBwZW5lZCAqYWZ0ZXIqIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBjYWxsLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYHB0cF9jbG9ja19yZWdpc3RlcmAgZXhwb3NlcyB0aGUgUFRQIGhhcmR3YXJlIGNsb2NrIHRvIHVzZXJzcGFjZSwgYW5kIHRoYXQgdXNlcnNwYWNlIGNvZGUgY291bGQgaGF2ZSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSB1bmluaXRpYWxpemVkIGxvY2suIFNpbmNlIHRoZSBJR0IgZHJpdmVyIGlzIGVtdWxhdGVkIGluIFFFTVUgd2l0aCB0aGUgSW50ZWwgODI1NzYgR2JFIGFuZCBjYW4gYmUgZnV6emVkIHRocm91Z2ggUFRQIGNsb2NrIGFuZCBuZXR3b3JrIHRpbWVzdGFtcGluZyBpbnRlcmZhY2VzLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuQWxyaWdodCwgdGhhdCdzIGFsbCBJIG5lZWRlZC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTE1LCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozODowMi4wMDg3NjU0MzNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTQwNjAxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUdCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdiX3B0cF9pbml0XCIsXG4gICAgXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgICBcImlnYl9wdHBfcmVzZXRcIixcbiAgICBcImlnYl9wdHBfaHd0c3RhbXBfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVnIGluIHRoZSBJbnRlbCBpZ2IgZHJpdmVyIGJ5IGluaXRpYWxpemluZyB0aGUgYWRhcHRlcidzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUdCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdiX3B0cF9pbml0XCIsXG4gICAgXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgICBcImlnYl9wdHBfcmVzZXRcIixcbiAgICBcImlnYl9wdHBfaHd0c3RhbXBfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVnIGluIHRoZSBJbnRlbCBpZ2IgZHJpdmVyIGJ5IGluaXRpYWxpemluZyB0aGUgYWRhcHRlcidzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM4OjAyLjA4MDE5MzQ5OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzMTAzOTE5ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozODowMi4wODA2MTQxMDhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4MjMwOTk2NTkwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyN2QxM2VjYjgyMDQxODUwYzVkYTliNTc2NmU4ZmJhZDZmZmYyZDQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTY6Mjc6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xuaW5kZXggNjM4ZDgyNDJiNjZiYi4uMmE0ZWEzMjdhYzM1ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcbkBAIC0xMzc4LDYgKzEzNzgsNyBAQCB2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4gXHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuIFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbkBAIC0xMzg4LDcgKzEzODksNiBAQCB2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdFx0IGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuIFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XG4gXG4tXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4gXHRcdElOSVRfV09SSyhcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xuIFxuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozODowMi4wODA2MTQ4OThaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcyMDIyMTcwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jay4gQ3VycmVudGx5LCBgc3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKTtgIGlzIHBsYWNlZCAqYmVmb3JlKiB0aGUgYHB0cF9jbG9ja19yZWdpc3RlciguLi4pYCBjYWxsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaHkgdGhlIHJlb3JkZXJpbmc/XCIgV2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbW92ZT8gQXJlIHRoZXJlIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB0aGlzIGlzIHRyeWluZyB0byBhZGRyZXNzP1xuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIG9wZXJhdGlvbnMgYW5kIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIGFueSBwb3RlbnRpYWwgY29uY3VycmVudCBhY2Nlc3MgdG8gYGFkYXB0ZXJgJ3MgbWVtYmVycyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgaG93IHRoZSBgdG1yZWdfbG9ja2AgaXMgdXNlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEknbGwgcHJvYmFibHkgc3RhcnQgZGlnZ2luZyBpbnRvIGBpZ2JfcHRwX2luaXRgIGl0c2VsZiB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gc2VlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIEZyb20gdGhlcmUsIEknbGwgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBhbmQgaG93IHRoZSBgdG1yZWdfbG9ja2AgaXMgdXNlZCBmcm9tIHRoZXJlLiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHdoYXQgc29ydCBvZiBlZmZlY3RzIHRoaXMgaGFzIHRvIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNvZGUuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBpbiBkcml2ZXJzLCBidXQgYW55IGNoYW5nZSB0byBsb2NraW5nIHN0cmF0ZWdpZXMgZGVzZXJ2ZXMgY2FyZWZ1bCBzY3J1dGlueS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM4OjI5LjI4MjgzNDA1NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzYwOlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLm1heF9hZGogPSA2MjQ5OTk5OTtcXG4xMzYxOlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLm5fZXh0X3RzID0gSUdCX05fRVhUVFM7XFxuMTM2MjpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5uX3Blcl9vdXQgPSBJR0JfTl9QRVJPVVQ7XFxuMTM2MzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5uX3BpbnMgPSBJR0JfTl9TRFA7XFxuMTM2NDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5zdXBwb3J0ZWRfZXh0dHNfZmxhZ3MgPSBQVFBfUklTSU5HX0VER0UgfFxcbjEzNjU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBQVFBfRkFMTElOR19FREdFIHxcXG4xMzY2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgUFRQX1NUUklDVF9GTEFHUztcXG4xMzY3OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLnBwcyA9IDE7XFxuMTM2ODpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cXHUwMDNlc2RwX2NvbmZpZztcXG4xMzY5OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XFxuMTM3MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGp0aW1lID0gaWdiX3B0cF9hZGp0aW1lX2kyMTA7XFxuMTM3MTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5nZXR0aW1leDY0ID0gaWdiX3B0cF9nZXR0aW1leF9pMjEwO1xcbjEzNzI6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XFxuMTM3MzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5lbmFibGUgPSBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTA7XFxuMTM3NDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy52ZXJpZnkgPSBpZ2JfcHRwX3ZlcmlmeV9waW47XFxuMTM3NTpcXHRcXHRcXHRicmVhaztcXG4xMzc2OlxcdFxcdGRlZmF1bHQ6XFxuMTM3NzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xcbjEzNzg6XFx0XFx0XFx0cmV0dXJuO1xcbjEzNzk6XFx0XFx0fVxcbjEzODA6XFx0XFxuMTM4MTpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWRhcHRlci1cXHUwMDNldG1yZWdfbG9jayk7XFxuMTM4MjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLFxcbjEzODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuMTM4NDpcXHRcXHRpZiAoSVNfRVJSKGFkYXB0ZXItXFx1MDAzZXB0cF9jbG9jaykpIHtcXG4xMzg1OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuMTM4NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJwdHBfY2xvY2tfcmVnaXN0ZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG4xMzg3OlxcdFxcdH0gZWxzZSBpZiAoYWRhcHRlci1cXHUwMDNlcHRwX2Nsb2NrKSB7XFxuMTM4ODpcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiYWRkZWQgUEhDIG9uICVzXFxcXG5cXFwiLFxcbjEzODk6XFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuMTM5MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEO1xcbjEzOTE6XFx0XFxuMTM5MjpcXHRcXHRcXHRJTklUX1dPUksoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xcbjEzOTM6XFx0XFxuMTM5NDpcXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcHRwX2ZsYWdzIFxcdTAwMjYgSUdCX1BUUF9PVkVSRkxPV19DSEVDSylcXG4xMzk1OlxcdFxcdFxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcXG4xMzk2OlxcdFxcdFxcdFxcdFxcdFxcdCAgaWdiX3B0cF9vdmVyZmxvd19jaGVjayk7XFxuMTM5NzpcXHRcXG4xMzk4OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXRzdGFtcF9jb25maWcucnhfZmlsdGVyID0gSFdUU1RBTVBfRklMVEVSX05PTkU7XFxuMTM5OTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2V0c3RhbXBfY29uZmlnLnR4X3R5cGUgPSBIV1RTVEFNUF9UWF9PRkY7XFxuMTQwMDpcXHRcXG4xNDAxOlxcdFxcdFxcdGlnYl9wdHBfcmVzZXQoYWRhcHRlcik7XFxuMTQwMjpcXHRcXHR9XFxuMTQwMzpcXHR9XFxuMTQwNDpcXHRcXG4xNDA1OlxcdC8qKlxcbjE0MDY6XFx0ICogaWdiX3B0cF9zZHBfaW5pdCAtIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggaW5pdHMgdGhlIFNEUCBjb25maWcgc3RydWN0c1xcbjE0MDc6XFx0ICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlLlxcbjE0MDg6XFx0ICoqL1xcbjE0MDk6XFx0dm9pZCBpZ2JfcHRwX3NkcF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzg6MjkuMjgyOTUzOTc0WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MTA3NjA1Nzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvY2sgSW5pdGlhbGl6YXRpb24gRml4KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbiBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlcidzIGludGVybmFsIGxvY2tpbmcgbWVjaGFuaXNtLCBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYC4gSSBzZWUgdGhhdCB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gd2FzIHByZXZpb3VzbHkgZmxhd2VkOiB0aGUgc3BpbmxvY2sgd2Fzbid0IGluaXRpYWxpemVkICpiZWZvcmUqIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHdhcyBjYWxsZWQuIFRoaXMgY3JlYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gQ2FsbGJhY2tzIGxpa2UgYGlnYl9wdHBfYWRqZmluZV84MjU4MGAgb3IgYGlnYl9wdHBfZ2V0dGltZXhfaTIxMGAgY291bGQgYmUgaW52b2tlZCBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBhbmQgaWYgdGhleSBhY2Nlc3NlZCB0aGUgdW5pbml0aWFsaXplZCBsb2NrLCB3ZSdkIGhhdmUgYSBjbGFzc2ljIFwidXNlLWJlZm9yZS1pbml0XCIgYnVnLCBsZWFkaW5nIHRvIGxvY2tkZXAgc3BsYXRzIG9yIG1vcmUgc3VidGxlIGNvbmN1cnJlbmN5IGlzc3Vlcy4gQSBwcmV0dHkgY29tbW9uIHNjZW5hcmlvLCByZWFsbHkuXG5cblNvLCB0aGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogbW92ZSBgc3Bpbl9sb2NrX2luaXRgIGVhcmxpZXIuIFNpbXBsZSwgYnV0IGNyaXRpY2FsLiBOb3csIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgY2hlY2sgZm9yIGFueSBzaWRlIGVmZmVjdHMgdGhpcyBjaGFuZ2UgbWlnaHQgaW50cm9kdWNlLiBMZXQncyBzZWUuLi5cblxuRmlyc3QsIGRvZXMgdGhpcyBwYXRjaCBpbiBhbnkgd2F5IHRvdWNoIG9yIG1vZGlmeSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgZ2V0IGV4cG9zZWQgdG8gdXNlciBzcGFjZT8gTm8sIG5vdCB0aGF0IEkgY2FuIHRlbGwuXG5cblNlY29uZCwgZG9lcyB0aGUgY2hhbmdlIGludHJvZHVjZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgbWlnaHQgZGVwZW5kIG9uIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/IE5vLCBJIGRvbid0IHNlZSBhbnl0aGluZyBsaWtlIHRoYXQuXG5cblRoaXJkLCBhcmUgYW55IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGFsbG9jYXRlZCB3aGVyZSB3ZSBtaWdodCBpbmFkdmVydGVudGx5IHJlYWQgdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vLCB0aGUgc3BpbmxvY2sgaXRzZWxmIGlzIGluaXRpYWxpemVkLlxuXG5Gb3VydGgsIGFyZSB3ZSBtb2RpZnlpbmcgYW55IGJvdW5kcyBjaGVja3Mgb3IgcmVsYXRlZCBsb2dpYyB0aGF0IGNvdWxkIGxlYWQgdG8gYWNjZXNzaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBOby4gRXZlcnl0aGluZyBzZWVtcyBzYWZlLlxuXG5Gcm9tIG15IHBlcnNwZWN0aXZlLCB0aGlzIHJlYWxseSBzaG91bGRuJ3QgaW50cm9kdWNlIGFueSBuZXcgcmlza3MgZnJvbSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBwZXJzcGVjdGl2ZS4gSSBkb24ndCBzZWUgYW55IGV4cG9zZWQgdW5pbml0aWFsaXplZCBkYXRhIHJlYWRzIHRvIHVzZXIgc3BhY2UuIEl0IGp1c3QgZml4ZXMgdGhlIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcuIFRoZSBsb2NraW5nIGJ1Z3MgYXJlIGNhdWdodCBieSBMT0NLREVQIGFuZCBzcGlubG9jayBkZWJ1Z2dpbmcg4oCTIHN0YW5kYXJkIGRlYnVnIGtlcm5lbHMgd2l0aCBDT05GSUdfREVCVUdfU1BJTkxPQ0sgYW5kIENPTkZJR19QUk9WRV9MT0NLSU5HIGVuYWJsZWQuXG5cbkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCB0aGVyZSdzIG5vIGp1c3RpZmljYXRpb24gZm9yIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGB0cnVlYC4gS01TQU4ncyBwdXJwb3NlIGlzIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSAqcmVhZHMqLCB3aGljaCB3ZSBkb24ndCBoYXZlIGhlcmUuIEl0J3MgZGVzaWduZWQgdG8gZGV0ZWN0IHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSwgbm9uZSBvZiB3aGljaCBhcHBseSBoZXJlLiBLTVNBTidzIG5vdCB0aGUgcmlnaHQgdG9vbCBmb3IgZml4aW5nIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVncyDigJMgdGhlc2UgYXJlIGZvdW5kIHdpdGggbG9ja2RlcCBhbmQgc3BpbmxvY2sgZGVidWdnaW5nLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhc3Nlc3NtZW50LiBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MzIsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzk6MjQuMzkwNTYyMzhaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgYWRhcHRlci1cXHUwMDNldG1yZWdfbG9ja2Agc3BpbmxvY2sgYmVmb3JlIGBwdHBfY2xvY2tfcmVnaXN0ZXIoKWAgdG8gZW5zdXJlIHRoZSBsb2NrIGlzIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgUFRQIGNsb2NrIGRldmljZSBpcyByZWdpc3RlcmVkIGFuZCBpdHMgY2FsbGJhY2tzIGNhbiBiZSBpbnZva2VkLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBpbml0aWFsaXphdGlvbiBvcmRlciBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBhbHRlciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGJ1ZmZlciBoYW5kbGluZywgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UuIEFueSBsb2NraW5nIG9yIHVuaW5pdGlhbGl6ZWQgbG9jayBpc3N1ZXMgYXJlIGNhdWdodCBieSBzdGFuZGFyZCBkZWJ1ZyBmYWNpbGl0aWVzIChMT0NLREVQLCBDT05GSUdfREVCVUdfU1BJTkxPQ0spIGVuYWJsZWQgaW4gc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 16:02:50 +0000 UTC FinishedAt: 2026-08-30 16:39:26 +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": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGB", "PCI", "PTP_1588_CLOCK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2188569e7e1b0bc3f3b557dc97ab7a02befc11c8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IGB", "PCI", "PTP_1588_CLOCK" ], "series_id": "fa1d6ac2-fefc-4e8b-b726-35f20de56c64" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "igb_ptp_init", "ptp_clock_register", "igb_ptp_reset", "igb_ptp_hwtstamp_set" ], "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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdiX3B0cF9pbml0JiMzNDssCiAgICAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX3Jlc2V0JiMzNDssCiAgICAmIzM0O2lnYl9wdHBfaHd0c3RhbXBfc2V0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2tgIHNwaW5sb2NrIGJlZm9yZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyKClgIHRvIGVuc3VyZSB0aGUgbG9jayBpcyBpbml0aWFsaXplZCBiZWZvcmUgdGhlIFBUUCBjbG9jayBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBhbmQgaXRzIGNhbGxiYWNrcyBjYW4gYmUgaW52b2tlZC4gVGhpcyBpcyBhIGxvY2tpbmcvY29uY3VycmVuY3kgaW5pdGlhbGl6YXRpb24gb3JkZXIgZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBidWZmZXIgaGFuZGxpbmcsIG9yIGRhdGEgY29weWluZyB0byB1c2VyIHNwYWNlLiBBbnkgbG9ja2luZyBvciB1bmluaXRpYWxpemVkIGxvY2sgaXNzdWVzIGFyZSBjYXVnaHQgYnkgc3RhbmRhcmQgZGVidWcgZmFjaWxpdGllcyAoTE9DS0RFUCwgQ09ORklHX0RFQlVHX1NQSU5MT0NLKSBlbmFibGVkIGluIHN0YW5kYXJkIEtBU0FOIGJ1aWxkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBidWcgaW4gdGhlIEludGVsIGlnYiBkcml2ZXIgYnkgaW5pdGlhbGl6aW5nIHRoZSBhZGFwdGVyJiMzOTtzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyN2QxM2VjYjgyMDQxODUwYzVkYTliNTc2NmU4ZmJhZDZmZmYyZDQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTY6Mjc6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcbmluZGV4IDYzOGQ4MjQyYjY2YmIuLjJhNGVhMzI3YWMzNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXG5AQCAtMTM3OCw2ICYjNDM7MTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuJiM0MztcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4gXHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuIFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbkBAIC0xMzg4LDcgJiM0MzsxMzg5LDYgQEAgdm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuIFx0XHRcdCBhZGFwdGVyLVx1MDAzZW5ldGRldi1cdTAwM2VuYW1lKTtcbiBcdFx0YWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEO1xuIFxuLVx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2spO1xuIFx0XHRJTklUX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcbiBcbiBcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcHRwX2ZsYWdzIFx1MDAyNiBJR0JfUFRQX09WRVJGTE9XX0NIRUNLKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjExbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdiX3B0cF9pbml0JiMzNDssCiAgICAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX3Jlc2V0JiMzNDssCiAgICAmIzM0O2lnYl9wdHBfaHd0c3RhbXBfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGJ1ZyBpbiB0aGUgSW50ZWwgaWdiIGRyaXZlciBieSBpbml0aWFsaXppbmcgdGhlIGFkYXB0ZXImIzM5O3MgdG1yZWdfbG9jayBzcGlubG9jayBiZWZvcmUgY2FsbGluZyBwdHBfY2xvY2tfcmVnaXN0ZXIoKS4gUHJpb3IgdG8gdGhpcyBmaXgsIHJlZ2lzdGVyaW5nIHRoZSBQVFAgY2xvY2sgZXhwb3NlZCBjYWxsYmFja3MgdG8gdXNlcnNwYWNlL3N1YnN5c3RlbXMgYW5kIGlnYl9wdHBfcmVzZXQoKSB0aGF0IGFjcXVpcmUgdG1yZWdfbG9jayBiZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLiBpZ2IgaXMgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIGFuZCBQVFAgY2xvY2sgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZXhlcmNpc2VkIHZpYSBQT1NJWCBjbG9jayBhbmQgUFRQIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI3ZDEzZWNiODIwNDE4NTBjNWRhOWI1NzY2ZThmYmFkNmZmZjJkNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAzMCAxNjoyNzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jCmluZGV4IDYzOGQ4MjQyYjY2YmIuLjJhNGVhMzI3YWMzNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYwpAQCAtMTM3OCw2ICYjNDM7MTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJcmV0dXJuOwogCX0KIAomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spOwogCWFkYXB0ZXItJmd0O3B0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2FkYXB0ZXItJmd0O3B0cF9jYXBzLAogCQkJCQkJJmFtcDthZGFwdGVyLSZndDtwZGV2LSZndDtkZXYpOwogCWlmIChJU19FUlIoYWRhcHRlci0mZ3Q7cHRwX2Nsb2NrKSkgewpAQCAtMTM4OCw3ICYjNDM7MTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJCSBhZGFwdGVyLSZndDtuZXRkZXYtJmd0O25hbWUpOwogCQlhZGFwdGVyLSZndDtwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEOwogCi0JCXNwaW5fbG9ja19pbml0KCZhbXA7YWRhcHRlci0mZ3Q7dG1yZWdfbG9jayk7CiAJCUlOSVRfV09SSygmYW1wO2FkYXB0ZXItJmd0O3B0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspOwogCiAJCWlmIChhZGFwdGVyLSZndDtwdHBfZmxhZ3MgJmFtcDsgSUdCX1BUUF9PVkVSRkxPV19DSEVDSykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzOAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDc4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElHQiBQVFAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggYW5kIHdoYXQgaXQmIzM5O3MgdHJ5aW5nIHRvIGFjaGlldmUuIFRoZSBkaWZmIHBvaW50cyB0byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY2AsIHdoaWNoIGlzIHRoZSBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGRyaXZlciYjMzk7cyBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjb21wb25lbnQuIFRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGEgYHNwaW5fbG9ja19pbml0YCBjYWxsIGZvciBgYWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AuIFByZXR0eSBzdHJhaWdodGZvcndhcmQsIGxvb2tzIGxpa2UgYSBzeW5jaHJvbml6YXRpb24gZml4IHJlbGF0ZWQgdG8gdGhlIFBUUCBjbG9jayBpbml0aWFsaXphdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBmb3IgZnV6emluZyBpczogaXMgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlIGluIGEgZnV6emluZyBjb250ZXh0PyBUaGlzIGRyaXZlciwgYGlnYmAsIGhhcyB0byBiZSBlbXVsYXRlZCBpbiB0aGUgZW52aXJvbm1lbnQuIEkgcmVtZW1iZXIgc2VlaW5nIGBpZ2JgIGluIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzIGluIFFFTVUsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9yIHJlbGV2YW50IGd1aWRlbGluZXMgdG8gY29uZmlybS4gVGhlIHJ1bGUgaXMsIGNvZGUgcGF0aHMgbm90IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYXJlbiYjMzk7dCB3b3J0aCBmdXp6aW5nLgoKSSByZWNhbGwgUUVNVSBhZGRlZCBgaWdiYCBzdXBwb3J0IGluIHZlcnNpb24gOC4wLCB3aGljaCBtZWFucyBpdCBzaG91bGQgYmUgZW11bGF0ZWQuIEJ1dCB0aGUga2V5IHF1ZXN0aW9uIGlzLCAqaG93KiBpcyBgaWdiX3B0cF9pbml0YCBjYWxsZWQ/IElzIGl0IG9ubHkgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgb3BlcmF0aW9uPyBJZiBpdCYjMzk7cyBvbmx5IGNhbGxlZCB3aGVuIGEgZGV2aWNlIGlzIGZpcnN0IGluaXRpYWxpemVkLCB0aGVuIGl0IGlzIG5vdCBpZGVhbCBmb3IgZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgaWdiX3B0cF9pbml0YCB0byBjb25maXJtIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGF0IG90aGVyIHRpbWVzIHRvIG1ha2UgaXQgd29ydGggZnV6emluZy4gSSYjMzk7bGwgcmVhY2ggZm9yIG15IHRvb2xzIHRvIHRyYWNrIGRvd24gdGhlIGNhbGwgc2l0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdiX3B0cF9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTc2OS12b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMyMDQ9c3RhdGljIGludCBpZ2JfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cdC8qIGRvIGh3IHRzdGFtcCBpbml0IGFmdGVyIHJlc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzU4NjpcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM1ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI5OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMDAtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzA1OnZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMwNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxOAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIENvZGUqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGlnYl9wdHAuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzNzguIFRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgaGVhcnQgb2Ygc29tZSBjcml0aWNhbCBQVFAgZnVuY3Rpb25hbGl0eSByZXNpZGVzIGluIHRoZSBJR0IgZHJpdmVyLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGltZXN0YW1waW5nLCBwZXJoYXBzIGhhbmRsaW5nIG9mIGhhcmR3YXJlIHRpbWVzdGFtcHMsIG9yIG1heWJlIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBQVFAgY2xvY2sgaXRzZWxmLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3MsIHJhY2UgY29uZGl0aW9ucywgb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBpbXBhY3QgdGhlIGFjY3VyYWN5IGFuZCBlZmZpY2llbmN5IG9mIHRoZSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTttIGhvcGluZyB0byBpZGVudGlmeSBhbnkgc3VidGxlIGVkZ2UgY2FzZXMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM2MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm1heF9hZGogPSA2MjQ5OTk5OTtcbjEzNjE6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX2V4dF90cyA9IElHQl9OX0VYVFRTO1xuMTM2MjpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm5fcGVyX291dCA9IElHQl9OX1BFUk9VVDtcbjEzNjM6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX3BpbnMgPSBJR0JfTl9TRFA7XG4xMzY0Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc3VwcG9ydGVkX2V4dHRzX2ZsYWdzID0gUFRQX1JJU0lOR19FREdFIHxcbjEzNjU6XHRcdFx0XHRcdFx0XHRcdCAgUFRQX0ZBTExJTkdfRURHRSB8XG4xMzY2Olx0XHRcdFx0XHRcdFx0XHQgIFBUUF9TVFJJQ1RfRkxBR1M7XG4xMzY3Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMucHBzID0gMTtcbjEzNjg6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cdTAwM2VzZHBfY29uZmlnO1xuMTM2OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XG4xMzcwOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xuMTM3MTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4X2kyMTA7XG4xMzcyOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XG4xMzczOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xuMTM3NDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbjEzNzU6XHRcdFx0YnJlYWs7XG4xMzc2Olx0XHRkZWZhdWx0OlxuMTM3NzpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4xMzc4Olx0XHRcdHJldHVybjtcbjEzNzk6XHRcdH1cbjEzODA6XHRcbjEzODE6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4xMzgyOlx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuMTM4MzpcdFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuMTM4NDpcdFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbjEzODU6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuMTM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O3B0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuMTM4NzpcdFx0fSBlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykge1xuMTM4ODpcdFx0XHRkZXZfaW5mbyhcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDthZGRlZCBQSEMgb24gJXNcXG5cJiMzNDssXG4xMzg5Olx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuMTM5MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XG4xMzkxOlx0XG4xMzkyOlx0XHRcdElOSVRfV09SSyhcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xuMTM5MzpcdFxuMTM5NDpcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXG4xMzk1Olx0XHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcbjEzOTY6XHRcdFx0XHRcdFx0ICBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKTtcbjEzOTc6XHRcbjEzOTg6XHRcdFx0YWRhcHRlci1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9IEhXVFNUQU1QX0ZJTFRFUl9OT05FO1xuMTM5OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXRzdGFtcF9jb25maWcudHhfdHlwZSA9IEhXVFNUQU1QX1RYX09GRjtcbjE0MDA6XHRcbjE0MDE6XHRcdFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcbjE0MDI6XHRcdH1cbjE0MDM6XHR9XG4xNDA0Olx0XG4xNDA1Olx0LyoqXG4xNDA2Olx0ICogaWdiX3B0cF9zZHBfaW5pdCAtIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggaW5pdHMgdGhlIFNEUCBjb25maWcgc3RydWN0c1xuMTQwNzpcdCAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cbjE0MDg6XHQgKiovXG4xNDA5Olx0dm9pZCBpZ2JfcHRwX3NkcF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTY1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElHQiBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiB0aGUgYGlnYmAgZHJpdmVyIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZSBgc3Bpbl9sb2NrX2luaXQoJmFtcDthZGFwdGVyLSZndDt0bXJlZ19sb2NrKWAgd2FzIGJlaW5nIGluaXRpYWxpemVkICphZnRlciogYHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2FkYXB0ZXItJmd0O3B0cF9jYXBzLCAmYW1wO2FkYXB0ZXItJmd0O3BkZXYtJmd0O2RldilgLiBUaGlzIG1lYW5zIHRoYXQgaWYgYHB0cF9jbG9ja19yZWdpc3RlcmAgb3IgYW55IGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBQVFAgY2xvY2sgbWV0aG9kcyAobGlrZSBgYWRqdGltZWAsIGBnZXR0aW1leGApIHdlcmUgdG8gdG91Y2ggYHRtcmVnX2xvY2tgIGJlZm9yZSBpdCYjMzk7cyBpbml0aWFsaXplZCwgd2UgaGF2ZSBhIHByb2JsZW0uCgpUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLCBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgZXZlbiByZWxldmFudCB0byBmdXp6aW5nLiBUaGUgZ3VpZGVsaW5lcyBzdGF0ZSBub3QgdG8gY29uc2lkZXIgcGF0Y2hlcyBhZmZlY3RpbmcgdW5yZWFjaGFibGUgY29kZSBwYXRocy4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgaWdiYCBpcyBhIHBoeXNpY2FsIE5JQyBkcml2ZXIuICBJcyBpdCBlbXVsYXRlZCBpbiBRRU1VPyBDYW4gaXQgYmUgdGVzdGVkIHdpdGggc3RhbmRhcmQgc3l6a2FsbGVyPyAgSSBrbm93IHRoYXQgUUVNVSBoYXMgYC1kZXZpY2UgaWdiYCBpbiB2ZXJzaW9uIDguMCwgYnV0IEkgZG9uJiMzOTt0IGtub3cgdGhlIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cC4gVHlwaWNhbGx5LCBzeXprYWxsZXIgZm9jdXNlcyBvbiB2aXJ0dWFsaXplZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgdmlydGlvLW5ldGAgb3IgdGhlIGBkdW1teSBuZXRgIGRldmljZSwgYW5kIGFsc28gc3VwcG9ydHMgYHR1bmAuIEdDRSB1c2VzIGB2aXJ0aW9fbmV0YCBvciBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBCYXNlZCBvbiB0aGF0LCBJIGh5cG90aGVzaXplIHN5emthbGxlciBwcm9iYWJseSBkb2VzbiYjMzk7dCB0ZXN0IFBDSSBkcml2ZXJzIHVubGVzcyB0aGV5IGFyZSB2aXJ0dWFsaXplZCAobGlrZSBgdmlydGlvYCkgb3IgVVNCIGdhZGdldHMuCgpPa2F5LCBsZXQmIzM5O3MgZm9jdXMgb24gdGhlIHdvcmRpbmcgb2YgdGhlIHByb21wdCwgc3BlY2lmaWNhbGx5OiAmIzM0O0NvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4uLkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiAgVGhhdCBwaHJhc2UgaXMgdGhlIGtleS4gSXMgYGlnYmAgYSAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llJiMzNDsgZHJpdmVyIHRoYXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZT8KCkFscmlnaHQsIGxldCYjMzk7cyBjb25maXJtIHRoZSBwcm9iZSBiZWhhdmlvci4gYGlnYl9wdHBfaW5pdGAgc2VlbXMgdG8gYmUgY2FsbGVkIE9OTFkgZnJvbSBgaWdiX3Byb2JlYC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGlnYl9wdHBfaW5pdGAgY2FuIGJlIGNhbGxlZCBhdCBydW50aW1lIHRocm91Z2ggYSBzeXNjYWxsLCBvciBub3QuIElmIHRoaXMgZnVuY3Rpb24gaXMgb25seSBldmVyIGNhbGxlZCBkdXJpbmcgZGV2aWNlIHByb2JlLCB0aGVuIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzICpub3QqIGZ1enppbmcgaXQsIGJlY2F1c2Ugc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzIG5vdCBwcm9iZSBvciB0cmlnZ2VyIHBoeXNpY2FsIGRldmljZXMgdW5sZXNzIHRoZXkgYXJlIHNwZWNpZmljYWxseSBzZXR1cCB2aWEgc3lzZnMgb3IgUUVNVSBhbmQgUENJIGhvdHBsdWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBgaWdiX3B0cF9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZ2JfcHRwX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTc2OS12b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMyMDQ9c3RhdGljIGludCBpZ2JfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cdC8qIGRvIGh3IHRzdGFtcCBpbml0IGFmdGVyIHJlc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzU4NjpcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM1ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI5OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMDAtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzA1OnZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMwNi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBhYm91dCBgaWdiX3B0cF9pbml0YC4gSSBiZWxpZXZlIGl0JiMzOTtzIG9ubHkgY2FsbGVkIHdpdGhpbiBgaWdiX3Byb2JlYCwgYnV0IEkmIzM5O2QgYmV0dGVyIGJlIGNlcnRhaW4uIFNvLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoYXQgZnVuY3Rpb24mIzM5O3MgY2FsbCBncmFwaCB0byB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLgoKTm93LCBhIHJlbGF0ZWQgcXVlc3Rpb24gb2NjdXJzIHRvIG1lOiBBcmUgYGlnYl9wdHBfcmVzZXRgIGFuZCBgaWdiX3B0cF9zdG9wYCB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgY29kZT8gSSBzaG91bGQgaW52ZXN0aWdhdGUgd2hlcmUgdGhvc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBjYWxsZWQsIHRvbywgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgUFRQIGluaXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biBwcm9jZXNzLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGVzZSBhcmUgdXRpbGl6ZWQgaW4gdGhlIG92ZXJhbGwgbGlmZWN5Y2xlLiBUaW1lIHRvIGV4YW1pbmUgdGhlIGNhbGwgc2l0ZXMgb2YgYGlnYl9wdHBfc3RvcGAgYW5kIGBpZ2JfcHRwX3Jlc2V0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdiX3B0cF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2OTp2b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3MDp2b2lkIGlnYl9wdHBfcmVzZXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzE6dm9pZCBpZ2JfcHRwX3N1c3BlbmQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzI6dm9pZCBpZ2JfcHRwX3J4X2hhbmcoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzM6dm9pZCBpZ2JfcHRwX3R4X2hhbmcoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzQ6dm9pZCBpZ2JfcHRwX3J4X3JndHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzU6aW50IGlnYl9wdHBfcnhfcGt0c3RhbXAoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIHZvaWQgKnZhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTc3Ni1cdFx0XHRrdGltZV90ICp0aW1lc3RhbXApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3NzppbnQgaWdiX3B0cF9od3RzdGFtcF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC03NzgtXHRcdFx0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjb25maWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3OTppbnQgaWdiX3B0cF9od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC03ODAtXHRcdFx0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjb25maWcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MjI4OT12b2lkIGlnYl9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjQ2Mi1cdGlmIChhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyBcdTAwMjYgSUdCX1BUUF9FTkFCTEVEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjQ2MzpcdFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTI0NjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MzAzNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlnYl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTMwNjItXHQubmRvX3hza193YWtldXAgICAgICAgICA9IGlnYl94c2tfd2FrZXVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzA2MzpcdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfZ2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzA2NDpcdC5uZG9faHd0c3RhbXBfc2V0XHQ9IGlnYl9wdHBfaHd0c3RhbXBfc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzA2NS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMyMDQ9c3RhdGljIGludCBpZ2JfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cdC8qIGRvIGh3IHRzdGFtcCBpbml0IGFmdGVyIHJlc2V0dGluZyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MzU4NjpcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM1ODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9Mzg3MT1zdGF0aWMgdm9pZCBpZ2JfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTM4ODEtXHRpZ2JfcmVtb3ZlX2kyYyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjM4ODI6XHRpZ2JfcHRwX3N0b3AoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zODgzLVx0LyogVGhlIHdhdGNoZG9nIHRpbWVyIG1heSBiZSByZXNjaGVkdWxlZCwgc28gZXhwbGljaXRseVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTU1NjI9c3RhdGljIHZvaWQgaWdiX3dhdGNoZG9nX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTU3ODItXHRpZ2Jfc3Bvb2ZfY2hlY2soYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo1NzgzOlx0aWdiX3B0cF9yeF9oYW5nKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NTc4NDpcdGlnYl9wdHBfdHhfaGFuZyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTU3ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9ODkwOT12b2lkIGlnYl9wcm9jZXNzX3NrYl9maWVsZHMoc3RydWN0IGlnYl9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTg5MjAtXHQgICAgIWlnYl90ZXN0X3N0YXRlcnIocnhfZGVzYywgRTEwMDBfUlhEQURWX1NUQVRfVFNJUCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo4OTIxOlx0XHRpZ2JfcHRwX3J4X3JndHN0YW1wKHJ4X3JpbmctXHUwMDNlcV92ZWN0b3IsIHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04OTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTkwMjU9c3RhdGljIGludCBpZ2JfY2xlYW5fcnhfaXJxKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBjb25zdCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTkwNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo5MDc2Olx0XHRcdHRzX2hkcl9sZW4gPSBpZ2JfcHRwX3J4X3BrdHN0YW1wKHJ4X3JpbmctXHUwMDNlcV92ZWN0b3IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy05MDc3LVx0XHRcdFx0XHRcdFx0IHBrdGJ1ZiwgXHUwMDI2dGltZXN0YW1wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz05NDk0PXN0YXRpYyBpbnQgX19pZ2Jfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGJvb2wgKmVuYWJsZV93YWtlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTk1MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo5NTEwOlx0aWdiX3B0cF9zdXNwZW5kKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtOTUxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3MjpzdGF0aWMgdm9pZCBpZ2JfcHRwX3R4X2h3dHN0YW1wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjczOnN0YXRpYyB2b2lkIGlnYl9wdHBfc2RwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc1LS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgdGhlIDgyNTc2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjc2OnN0YXRpYyB1NjQgaWdiX3B0cF9yZWFkXzgyNTc2KHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05Mi0vKiBTWVNUSU0gcmVhZCBhY2Nlc3MgZm9yIHRoZSA4MjU4MCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5MzpzdGF0aWMgdTY0IGlnYl9wdHBfcmVhZF84MjU4MChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTE0LS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgSTIxMC9JMjExICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjExNTpzdGF0aWMgdm9pZCBpZ2JfcHRwX3JlYWRfaTIxMChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExNi1cdFx0XHQgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMzpzdGF0aWMgdm9pZCBpZ2JfcHRwX3dyaXRlX2kyMTAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzQtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ2OiAqIGlnYl9wdHBfc3lzdGltX3RvX2h3dHN0YW1wIC0gY29udmVydCBzeXN0ZW0gdGltZSB2YWx1ZSB0byBodyB0aW1lc3RhbXBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3LSAqIEBhZGFwdGVyOiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTYxLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTYyOnN0YXRpYyB2b2lkIGlnYl9wdHBfc3lzdGltX3RvX2h3dHN0YW1wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTYzLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqaHd0c3RhbXBzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTkzLS8qIFBUUCBjbG9jayBvcGVyYXRpb25zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE5NDpzdGF0aWMgaW50IGlnYl9wdHBfYWRqZmluZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xOTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyMDg6c3RhdGljIGludCBpZ2JfcHRwX2FkamZpbmVfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIGxvbmcgc2NhbGVkX3BwbSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjA5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjI4OnN0YXRpYyBpbnQgaWdiX3B0cF9hZGp0aW1lXzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIyOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI0MTpzdGF0aWMgaW50IGlnYl9wdHBfYWRqdGltZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI1MDpcdGlnYl9wdHBfcmVhZF9pMjEwKGlnYiwgXHUwMDI2bm93KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUxLVx0bm93ID0gdGltZXNwZWM2NF9hZGQobm93LCB0aGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjUyOlx0aWdiX3B0cF93cml0ZV9pMjEwKGlnYiwgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICopXHUwMDI2bm93KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNTk6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNjAtXHRcdFx0XHQgIHN0cnVjdCB0aW1lc3BlYzY0ICp0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Mjg2OnN0YXRpYyBpbnQgaWdiX3B0cF9nZXR0aW1leF84MjU4MChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjg3LVx0XHRcdFx0ICBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjMxNDpzdGF0aWMgaW50IGlnYl9wdHBfZ2V0dGltZXhfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzE1LVx0XHRcdFx0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzM2OnN0YXRpYyBpbnQgaWdiX3B0cF9zZXR0aW1lXzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzctXHRcdFx0XHQgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozNTU6c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzU2LVx0XHRcdFx0Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozNjQ6XHRpZ2JfcHRwX3dyaXRlX2kyMTAoaWdiLCB0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTQyMz1zdGF0aWMgdm9pZCBpZ2JfcGluX3Blcm91dChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmlnYiwgaW50IGNoYW4sIGludCBwaW4sIGludCBmcmVxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNDg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo0ODk6c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy00OTAtXHRcdFx0XHRcdHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjQwOnN0YXRpYyBpbnQgaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NDEtXHRcdFx0XHQgICAgICAgc3RydWN0IHB0cF9jbG9ja19yZXF1ZXN0ICpycSwgaW50IG9uKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3Nzk6c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03ODAtXHRcdFx0XHQgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Nzg1OnN0YXRpYyBpbnQgaWdiX3B0cF92ZXJpZnlfcGluKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCB1bnNpZ25lZCBpbnQgcGluLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03ODYtXHRcdFx0ICAgICAgZW51bSBwdHBfcGluX2Z1bmN0aW9uIGZ1bmMsIHVuc2lnbmVkIGludCBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzk5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4MDA6ICogaWdiX3B0cF90eF93b3JrXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwMS0gKiBAd29yazogcG9pbnRlciB0byB3b3JrIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODA1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODA2OnN0YXRpYyB2b2lkIGlnYl9wdHBfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04MzEtXHRpZiAodHN5bmN0eGN0bCBcdTAwMjYgRTEwMDBfVFNZTkNUWENUTF9WQUxJRClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODMyOlx0XHRpZ2JfcHRwX3R4X2h3dHN0YW1wKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04MzMtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjgzODpzdGF0aWMgdm9pZCBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg1My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODU0OiAqIGlnYl9wdHBfcnhfaGFuZyAtIGRldGVjdCBlcnJvciBjYXNlIHdoZW4gUnggdGltZXN0YW1wIHJlZ2lzdGVycyBsYXRjaGVkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg1NS0gKiBAYWRhcHRlcjogcHJpdmF0ZSBuZXR3b3JrIGFkYXB0ZXIgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04NjEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4NjI6dm9pZCBpZ2JfcHRwX3J4X2hhbmcoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04NjMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODk0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4OTU6ICogaWdiX3B0cF90eF9oYW5nIC0gZGV0ZWN0IGVycm9yIGNhc2Ugd2hlcmUgVHggdGltZXN0YW1wIG5ldmVyIGZpbmlzaGVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg5Ni0gKiBAYWRhcHRlcjogcHJpdmF0ZSBuZXR3b3JrIGFkYXB0ZXIgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg5Ny0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODk4OnZvaWQgaWdiX3B0cF90eF9oYW5nKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkyOC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTI5OiAqIGlnYl9wdHBfdHhfaHd0c3RhbXAgLSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBmb3IgVFggdGltZSBzdGFtcFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05MzAtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTM1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTM2OnN0YXRpYyB2b2lkIGlnYl9wdHBfdHhfaHd0c3RhbXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05Mzcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5NDc6XHRpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChhZGFwdGVyLCBcdTAwMjZzaGh3dHN0YW1wcywgcmVndmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQ4LVx0LyogYWRqdXN0IHRpbWVzdGFtcCBmb3IgdGhlIFRYIGxhdGVuY3kgYmFzZWQgb24gbGluayBzcGVlZCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTc5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5ODA6ICogaWdiX3B0cF9yeF9wa3RzdGFtcCAtIHJldHJpZXZlIFJ4IHBlciBwYWNrZXQgdGltZXN0YW1wXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTk4MS0gKiBAcV92ZWN0b3I6IFBvaW50ZXIgdG8gaW50ZXJydXB0IHNwZWNpZmljIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTkwLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTkxOmludCBpZ2JfcHRwX3J4X3BrdHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCB2b2lkICp2YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTkyLVx0XHRcdGt0aW1lX3QgKnRpbWVzdGFtcClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwMTI6XHRpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChhZGFwdGVyLCBcdTAwMjZ0cywgbGU2NF90b19jcHUocmVndmFsWzFdKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDM0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDM1OiAqIGlnYl9wdHBfcnhfcmd0c3RhbXAgLSByZXRyaWV2ZSBSeCB0aW1lc3RhbXAgc3RvcmVkIGluIHJlZ2lzdGVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMzYtICogQHFfdmVjdG9yOiBQb2ludGVyIHRvIGludGVycnVwdCBzcGVjaWZpYyBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwNDEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDQyOnZvaWQgaWdiX3B0cF9yeF9yZ3RzdGFtcChzdHJ1Y3QgaWdiX3FfdmVjdG9yICpxX3ZlY3Rvciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA0My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDY4Olx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgc2tiX2h3dHN0YW1wcyhza2IpLCByZWd2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDY5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA5My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTA5NDogKiBpZ2JfcHRwX2h3dHN0YW1wX2dldCAtIGdldCBoYXJkd2FyZSB0aW1lIHN0YW1waW5nIGNvbmZpZ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDk1LSAqIEBuZXRkZXY6IG5ldGRldiBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExMDEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMTAyOmludCBpZ2JfcHRwX2h3dHN0YW1wX2dldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTAzLVx0XHRcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTExMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTExMzogKiBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZSAtIHNldHVwIGhhcmR3YXJlIGZvciB0aW1lc3RhbXBpbmdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTExNC0gKiBAYWRhcHRlcjogbmV0d29ya2luZyBkZXZpY2Ugc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTI4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMTI5OnN0YXRpYyBpbnQgaWdiX3B0cF9zZXRfdGltZXN0YW1wX21vZGUoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTMwLVx0XHRcdFx0ICAgICAgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyNzUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyNzY6ICogaWdiX3B0cF9od3RzdGFtcF9zZXQgLSBzZXQgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBjb25maWdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI3Ny0gKiBAbmV0ZGV2OiBuZXRkZXYgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjgwLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI4MTppbnQgaWdiX3B0cF9od3RzdGFtcF9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI4Mi1cdFx0XHQgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyODg6XHRlcnIgPSBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZShhZGFwdGVyLCBjb25maWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjg5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyOTgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyOTk6ICogaWdiX3B0cF9pbml0IC0gSW5pdGlhbGl6ZSBQVFAgZnVuY3Rpb25hbGl0eVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMwNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMxNi1cdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5wcHMgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzE3Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1NzY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMTg6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV84MjU3NjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxOTpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5nZXR0aW1leDY0ID0gaWdiX3B0cF9nZXR0aW1leF84MjU3NjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMDpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5zZXR0aW1lNjQgPSBpZ2JfcHRwX3NldHRpbWVfODI1NzY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMjE6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMjpcdFx0YWRhcHRlci1cdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTc2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzIzLVx0XHRhZGFwdGVyLVx1MDAzZWNjLm1hc2sgPSBDWUNMRUNPVU5URVJfTUFTSyg2NCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzMwLVx0Y2FzZSBlMTAwMF9pMzUwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzMxOlx0XHRpZ2JfcHRwX3NkcF9pbml0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzMyLVx0XHRzbnByaW50ZihhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm5hbWUsIDE2LCBcJiMzNDslcG1cJiMzNDssIG5ldGRldi1cdTAwM2VkZXZfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzQyLVx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnBpbl9jb25maWcgPSBhZGFwdGVyLVx1MDAzZXNkcF9jb25maWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDM6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqZmluZSA9IGlnYl9wdHBfYWRqZmluZV84MjU4MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0NDpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5hZGp0aW1lID0gaWdiX3B0cF9hZGp0aW1lXzgyNTc2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ1Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4XzgyNTgwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ2Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnNldHRpbWU2NCA9IGlnYl9wdHBfc2V0dGltZV84MjU3NjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0NzpcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5lbmFibGUgPSBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXzgyNTgwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ4Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0OTpcdFx0YWRhcHRlci1cdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTgwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzUwLVx0XHRhZGFwdGVyLVx1MDAzZWNjLm1hc2sgPSBDWUNMRUNPVU5URVJfTUFTSyhJR0JfTkJJVFNfODI1ODApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1Ni1cdGNhc2UgZTEwMDBfaTIxMTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM1NzpcdFx0aWdiX3B0cF9zZHBfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1OC1cdFx0c25wcmludGYoYWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uYW1lLCAxNiwgXCYjMzQ7JXBtXCYjMzQ7LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM2OC1cdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cdTAwM2VzZHBfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzY5Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzA6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzcxOlx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4X2kyMTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzI6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzM6XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzc0Olx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM3NS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzkyOlx0XHRJTklUX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzOTUtXHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM5NjpcdFx0XHRcdFx0ICBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0MDE6XHRcdGlnYl9wdHBfcmVzZXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDA1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDA2OiAqIGlnYl9wdHBfc2RwX2luaXQgLSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGluaXRzIHRoZSBTRFAgY29uZmlnIHN0cnVjdHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQwNy0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDA5OnZvaWQgaWdiX3B0cF9zZHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQyMi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQyMzogKiBpZ2JfcHRwX3N1c3BlbmQgLSBEaXNhYmxlIFBUUCB3b3JrIGl0ZW1zIGFuZCBwcmVwYXJlIGZvciBzdXNwZW5kXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjQtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDI4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDI5OnZvaWQgaWdiX3B0cF9zdXNwZW5kKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQzMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDQ1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDQ2OiAqIGlnYl9wdHBfc3RvcCAtIERpc2FibGUgUFRQIGRldmljZSBhbmQgc3RvcCB0aGUgb3ZlcmZsb3cgY2hlY2suXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NDctICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1MC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NTE6dm9pZCBpZ2JfcHRwX3N0b3Aoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ1MzpcdGlnYl9wdHBfc3VzcGVuZChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NjQ6ICogaWdiX3B0cF9yZXNldCAtIFJlLWVuYWJsZSB0aGUgYWRhcHRlciBmb3IgUFRQIGZvbGxvd2luZyBhIHJlc2V0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDY1LSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NjgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDY5OnZvaWQgaWdiX3B0cF9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NzAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3NC1cdC8qIHJlc2V0IHRoZSB0c3RhbXBfY29uZmlnICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NzU6XHRpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZShhZGFwdGVyLCBcdTAwMjZhZGFwdGVyLVx1MDAzZXRzdGFtcF9jb25maWcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDc2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUwNS1cdFx0a3RpbWVfZ2V0X3JlYWxfdHM2NChcdTAwMjZ0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1MDY6XHRcdGlnYl9wdHBfd3JpdGVfaTIxMChhZGFwdGVyLCBcdTAwMjZ0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE1MDctXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmM9MzQxPWludCBpZ2JfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYzozODM6XHRcdFx0dHNfaGRyX2xlbiA9IGlnYl9wdHBfcnhfcGt0c3RhbXAocnhfcmluZy1cdTAwM2VxX3ZlY3RvcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfeHNrLmMtMzg0LVx0XHRcdFx0XHRcdFx0IHhkcC1cdTAwM2VkYXRhLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODA4MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBLY29uZmlnIGZvciBJR0IqKgoKT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSBzb21ldGhpbmcsIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSBmb3IgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uIG9yIGRyaXZlci1yZWxhdGVkIHdvcmsuIEkmIzM5O2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBJR0IgZHJpdmVyJiMzOTtzIGF2YWlsYWJpbGl0eSwgY2hlY2sgaWYgaXQmIzM5O3MgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgc2VlIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBleHBvc2VkLiBJJiMzOTtsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZCBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBpdHMgaW5jbHVzaW9uIG9yIGJlaGF2aW9yLiBUaGlzIGFsc28gbWVhbnMgdW5kZXJzdGFuZGluZyBob3cgdGhlIElHQiBtb2R1bGUgaW50ZXJhY3RzIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG5ldHdvcmsgc3ViLXN5c3RlbXMgb3IgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gaGVyZSwgSSBjYW4gYXNjZXJ0YWluIHdoYXQgb3B0aW9ucyBJIG5lZWQgdG8gc2V0LCBhbmQgaG93IHRvIHZlcmlmeSB0aGVpciBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElHQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTgxPWNvbmZpZyBFMTAwMEVfSFdUU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjkwOmNvbmZpZyBJR0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctOTEtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSA4MjU3NS84MjU3NiBQQ0ktRXhwcmVzcyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTA5OmNvbmZpZyBJR0JfSFdNT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTEwLVx0Ym9vbCBcJiMzNDtJbnRlbChSKSBQQ0ktRXhwcmVzcyBHaWdhYml0IGFkYXB0ZXJzIEhXTU9OIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTExOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTIwOmNvbmZpZyBJR0JfRENBXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyMS1cdGJvb2wgXCYjMzQ7RGlyZWN0IENhY2hlIEFjY2VzcyAoRENBKSBTdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEyOTpjb25maWcgSUdCVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTMwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgODI1NzYgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjUxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEVsaWdpYmlsaXR5IG9mIHRoZSBpZ2IgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgcnVsZXM6IHRoZSBmdXp6aW5nIGV4Y2x1c2lvbiBjcml0ZXJpYS4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkgaGF2ZSB0byBiZSBwcmVjaXNlLiBUaGUgbWFpbiBpc3N1ZSBoZXJlIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaWdiYCBkcml2ZXIsIHdhcnJhbnRzIGZ1enppbmcgZWZmb3J0cy4gVGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcmUgbXkgZ3VpZGUuCgpOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBhIHNpbXBsZSBkb2N1bWVudGF0aW9uIGNoYW5nZSwgb3IgZGVjb3JhdGl2ZSBsb2dnaW5nIGNoYW5nZT8gTm8sIHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgYnVnIGZpeC4gQnV0IGxldCYjMzk7cyB2ZXJpZnkgaWYgdGhlIGBpZ2JgIGRyaXZlciBjb2RlIGlzIGV2ZW4gcmVhY2hhYmxlIGluIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUga2V5IHF1ZXN0aW9uOiBDYW4gSSBydW4gdGhpcyBpbiBRRU1VPwoKV2FpdCBhIG1pbnV0ZSwgUUVNVSAqZG9lcyogc3VwcG9ydCBgaWdiYCBub3cuIEl0IHdhcyBhZGRlZCBpbiB2ZXJzaW9uIDguMCwgYWNjb3JkaW5nIHRvIG15IGtub3dsZWRnZS4gKFRoYXQmIzM5O3MgYGh3L25ldC9pZ2IuY2AsIHJpZ2h0PyBJbnRlbCA4MjU3NikuIFNvLCB0aGF0JiMzOTtzIG5vdCBhIGRlYWwtYnJlYWtlci4gSXMgYGlnYmAgaW4gdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IE5vLCBpdCYjMzk7cyBhbiBJbnRlbCBOSUMgZHJpdmVyLCBhbmQgbm90IGEgUENJZSBzd2l0Y2ggb3IgU21hcnROSUMuCgpUaGUgcGF0Y2ggaXRzZWxmIGZvY3VzZXMgb24gYGlnYl9wdHAuY2AuIElzIGBpZ2JfcHRwX2luaXRgIHJlYWNoZWQgb25seSBkdXJpbmcgcHJvYmUsIG9yIGlzIHRoaXMgcGF0Y2ggZml4aW5nIG90aGVyIGlzc3Vlcz8gTGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGNvZGUgaW4gdGhhdCBmaWxlLgoKT2theSwgaGVyZSYjMzk7cyB0aGUgY29kZS4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggbW92ZXMgYSBzcGlubG9jayBpbml0aWFsaXphdGlvbiBiZWZvcmUgdGhlIFBUUCBjbG9jayByZWdpc3RyYXRpb24uIFRoZSBjcnVjaWFsIHBvaW50OiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBjcmVhdGVzIHRoZSBgL2Rldi9wdHBYYCBkZXZpY2UsIHJpZ2h0PyBUaGlzIGV4cG9zZXMgdGhlIGRyaXZlciYjMzk7cyBQVFAgZnVuY3Rpb25hbGl0eSB0byB1c2Vyc3BhY2UgdmlhIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgL2Rldi9wdHBYYCBkZXZpY2UsIGBjbG9ja19nZXR0aW1lKENMT0NLX0dFVFRJTUUsIC4uLilgIG9yIHB0cCBpb2N0bHMgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMuIFRob3NlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIG5vdyByYWNlLWZyZWUgd2l0aCB0aGlzIHBhdGNoLCBjYWxsIGBhZGFwdGVyLSZndDtwdHBfY2Fwcy5nZXR0aW1leDY0YCBhbmQgc2ltaWxhciBvbmVzLiBUaGUgZml4IHByZXZlbnRzIGEgcmFjZSBjb25kaXRpb24gb24gYCZhbXA7YWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AuCgpDcnVjaWFsbHksIGNhbiB0aGlzIGJlIGZ1enplZD8gTGV0JiMzOTtzIHRoaW5rLiBTeXprYWxsZXIgYW5kIG90aGVyIGZ1enppbmcgdG9vbHMgKmNhbiogaW50ZXJhY3Qgd2l0aCBQVFAgY2xvY2tzLiBTeXprYWxsZXIgc3VwcG9ydHMgYHN5el9wdHAuLi5gIHN5c2NhbGxzIG9yIHRoZSBzdGFuZGFyZCBgY2xvY2tfYWRqdGltZWAsIGBjbG9ja19nZXR0aW1lYCwgYW5kIFBUUCBpb2N0bHMgb24gYC9kZXYvcHRwMGAgZGV2aWNlcywgcmlnaHQ/IEFuZCBJICprbm93KiBRRU1VIHN1cHBvcnRzIHRoZSBgLWRldmljZSBpZ2JgIG9wdGlvbi4gU28sIHRoZSBoYXJkd2FyZSAqaXMqIHRoZXJlLCBhbmQgdGhlIGludGVyZmFjZSAqaXMqIGF2YWlsYWJsZS4gSXQgbG9va3MgbGlrZSB0aGUgUFRQIGNsb2NrIGRyaXZlciB3aWxsIGJlIHRlc3RlZC4KClRoaXMgaXMgY3JpdGljYWwuIENhbiB0aGUgaWdiIGRldmljZSBiZSBwcmVzZW50IGluIFFFTVU/IFllcywgdmlhIGAtZGV2aWNlIGlnYmAuIEFyZSBQVFAgY2xvY2sgaW9jdGxzIC8gc3lzY2FsbHMgdGVzdGVkIG9uIGAvZGV2L3B0cCpgIG9yIGlnYiBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudD8gWWVzLCBzeXprYWxsZXIgZG9lcyBleGFjdGx5IHRoYXQuIFRoZSBwcm9iZSBpcyBhdCBib290LCBzdXJlLCBidXQgdGhlIGV4cG9zZWQgYC9kZXYvcHRwWGAgaW50ZXJmYWNlICppcyogYXZhaWxhYmxlLgoKVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIHRoYXQgY291bGQgbGVhZCB0byBjcmFzaGVzIG9yIGxvY2tkZXAgd2FybmluZ3MuIEl0JiMzOTtzIHJlbGF0ZWQgdG8gYSBQVFAgY2xvY2suIEl0IGxvb2tzIGxpa2UgdGhlIGZ1enplcnMgKmNhbiogZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguIFNvLCB0aGlzICppcyogYSBmdXp6aW5nLWVsaWdpYmxlIHBhdGNoLCBzaW5jZSBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBUaGUgZml4IGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4NTpcdFx0aGVscFxuICA4NjpcdFx0IFNheSBZIHRvIGVuYWJsZSBoYXJkd2FyZSBzdXBwb3J0ZWQgY3Jvc3MtdGltZXN0YW1waW5nIG9uIFBDSFxuICA4NzpcdFx0IGRldmljZXMuIFRoZSBjcm9zcy10aW1lc3RhbXAgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIFBUUCBjbG9ja1xuICA4ODpcdFx0IGRyaXZlciBwcmVjaXNlIGNyb3NzLXRpbWVzdGFtcCBpb2N0bCAoUFRQX1NZU19PRkZTRVRfUFJFQ0lTRSkuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIElHQlxuICA5MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgODI1NzUvODI1NzYgUENJLUV4cHJlc3MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gIDkyOlx0XHRkZXBlbmRzIG9uIFBDSVxuICA5MzpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICA5NDpcdFx0c2VsZWN0IEkyQ1xuICA5NTpcdFx0c2VsZWN0IEkyQ19BTEdPQklUXG4gIDk2Olx0XHRoZWxwXG4gIDk3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIDgyNTc1LzgyNTc2IGdpZ2FiaXQgZXRoZXJuZXQgZmFtaWx5IG9mXG4gIDk4Olx0XHQgIGFkYXB0ZXJzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ29cbiAgOTk6XHRcdCAgdG8gdGhlIEFkYXB0ZXIgXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxuIDEwMDpcdFxuIDEwMTpcdFx0ICBcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cdTAwM2VcbiAxMDI6XHRcbiAxMDM6XHRcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXG4gMTA0Olx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ludGVsL2lnYi5yc3RcdTAwM2UuXG4gMTA1Olx0XG4gMTA2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAxMDc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaWdiLlxuIDEwODpcdFxuIDEwOTpcdGNvbmZpZyBJR0JfSFdNT05cbiAxMTA6XHRcdGJvb2wgXCYjMzQ7SW50ZWwoUikgUENJLUV4cHJlc3MgR2lnYWJpdCBhZGFwdGVycyBIV01PTiBzdXBwb3J0XCYjMzQ7XG4gMTExOlx0XHRkZWZhdWx0IHlcbiAxMTI6XHRcdGRlcGVuZHMgb24gSUdCIFx1MDAyNlx1MDAyNiBIV01PTiBcdTAwMjZcdTAwMjYgIShJR0I9eSBcdTAwMjZcdTAwMjYgSFdNT049bSlcbiAxMTM6XHRcdGhlbHBcbiAxMTQ6XHRcdCAgU2F5IFkgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZXJtYWwgc2Vuc29yIGRhdGEgb24gSW50ZWwgZGV2aWNlcy5cbiAxMTU6XHRcbiAxMTY6XHRcdCAgU29tZSBvZiBvdXIgZGV2aWNlcyBjb250YWluIHRoZXJtYWwgc2Vuc29ycywgYm90aCBleHRlcm5hbCBhbmQgaW50ZXJuYWwuXG4gMTE3Olx0XHQgIFRoaXMgZGF0YSBpcyBhdmFpbGFibGUgdmlhIHRoZSBod21vbiBzeXNmcyBpbnRlcmZhY2UgYW5kIGV4cG9zZXNcbiAxMTg6XHRcdCAgdGhlIG9uYm9hcmQgc2Vuc29ycy5cbiAxMTk6XHRcbiAxMjA6XHRjb25maWcgSUdCX0RDQVxuIDEyMTpcdFx0Ym9vbCBcJiMzNDtEaXJlY3QgQ2FjaGUgQWNjZXNzIChEQ0EpIFN1cHBvcnRcJiMzNDtcbiAxMjI6XHRcdGRlZmF1bHQgeVxuIDEyMzpcdFx0ZGVwZW5kcyBvbiBJR0IgXHUwMDI2XHUwMDI2IERDQSBcdTAwMjZcdTAwMjYgIShJR0I9eSBcdTAwMjZcdTAwMjYgRENBPW0pXG4gMTI0Olx0XHRoZWxwXG4gMTI1Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERpcmVjdCBDYWNoZSBBY2Nlc3MgKERDQSkgaW4gdGhlXG4gMTI2Olx0XHQgIGRyaXZlci4gIERDQSBpcyBhIG1ldGhvZCBmb3Igd2FybWluZyB0aGUgQ1BVIGNhY2hlIGJlZm9yZSBkYXRhXG4gMTI3Olx0XHQgIGlzIHVzZWQsIHdpdGggdGhlIGludGVudCBvZiBsZXNzZW5pbmcgdGhlIGltcGFjdCBvZiBjYWNoZSBtaXNzZXMuXG4gMTI4Olx0XG4gMTI5Olx0Y29uZmlnIElHQlZGXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjU3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgSUdCIERyaXZlciBCdWlsZCBQcm9jZXNzKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBJbnRlbCBJR0IgZHJpdmVyIGlzIGFjdHVhbGx5IGdldHRpbmcgY29tcGlsZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHRlcm1zIG9mIGJ1aWxkIGluc3RydWN0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIG5hdmlnYXRlIHRvIHRoZSBgaWdiL01ha2VmaWxlYCB0byBzZWUgaG93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGhhbmRsZXMgdGhlIGBpZ2JfcHRwLmNgIHNvdXJjZSBmaWxlLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmxhZ3Mgb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBmb3IgUFRQIHN1cHBvcnQuIFVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRlcyBgaWdiX3B0cC5jYCBpcyBjcnVjaWFsIGJlZm9yZSBJIGRpdmUgaW50byBhbnkgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDI1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0IyBDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTggSW50ZWwgQ29ycG9yYXRpb24uXG4gICAzOlx0I1xuICAgNDpcdCMgTWFrZWZpbGUgZm9yIHRoZSBJbnRlbChSKSA4MjU3NSBQQ0ktRXhwcmVzcyBldGhlcm5ldCBkcml2ZXJcbiAgIDU6XHQjXG4gICA2Olx0XG4gICA3Olx0b2JqLSQoQ09ORklHX0lHQikgJiM0Mzs9IGlnYi5vXG4gICA4Olx0XG4gICA5Olx0aWdiLXkgOj0gaWdiX21haW4ubyBpZ2JfZXRodG9vbC5vIGUxMDAwXzgyNTc1Lm8gXFxcbiAgMTA6XHRcdCBlMTAwMF9tYWMubyBlMTAwMF9udm0ubyBlMTAwMF9waHkubyBlMTAwMF9tYngubyBcXFxuICAxMTpcdFx0IGUxMDAwX2kyMTAubyBpZ2JfcHRwLm8gaWdiX2h3bW9uLm8gaWdiX3hzay5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzY3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ2hlY2tpbmcgSWdiIERyaXZlciBmb3IgUFRQIERlcGVuZGVuY3kqKgoKT2theSwgbGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBJZ2IgZHJpdmVyJiMzOTtzIHN1cHBvcnQgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfUFRQXzE1ODhfQ0xPQ0tgLiBUaGUgbW9zdCBkaXJlY3Qgcm91dGUsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgZXhwbGljaXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNgLiBNeSBleHBlY3RhdGlvbiBpcyB0byBmaW5kIGEgYnVuY2ggb2YgYCNpZmRlZmAgZGlyZWN0aXZlcyBvciBzaW1pbGFyIHByZXByb2Nlc3NvciBjaGVja3MgdGhhdCB3aWxsIHJldmVhbCB3aGV0aGVyIHRoZSBQVFAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIElnYiBkcml2ZXIgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBiYXNlZCBvbiB0aGF0IHBhcnRpY3VsYXIga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIGEgcmVsYXRlZCBvbmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfUFRQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDQ1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgaW4gS2NvbmZpZyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBQVFAgY2xvY2sgY29uZmlndXJhdGlvbiBvcHRpb25zIGFnYWluLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgd2l0aGluIHRoZSBLY29uZmlnIHN5c3RlbS4gSSBrbm93IHRoaXMgcGFydGljdWxhciB2YXJpYWJsZSBpcyBrZXkgd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3Igb3B0aW9uYWwgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgY2xvY2tzLCBidXQgdGhlIHByZWNpc2UgZGV0YWlscyBlbHVkZSBtZSBhdCB0aGlzIHRpbWUuIEkgbmVlZCBhIGNvbmNyZXRlIGRhdGEgcG9pbnQuIEFyZSB3ZSBtYWtpbmcgdGhpcyBhIG1hbmRhdG9yeSBmZWF0dXJlLCBvciBhbGxvd2luZyB0aGUgZW5kLXVzZXIgdG8gZGV0ZXJtaW5lIGl0cyBpbmNsdXNpb24sIGJhc2VkIG9uIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBhbmQgdXNlIGNhc2UgcmVxdWlyZW1lbnRzPyBJIG5lZWQgdG8ga25vdyB0aGUgaW1wbGljYXRpb25zIG9mIGVpdGhlciBjaG9pY2UsIGJvdGggaW4gdGVybXMgb2YgY29kZSBzaXplLCBkcml2ZXIgc2VsZWN0aW9uLCBhbmQgb2YgY291cnNlLCB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBzeXN0ZW0gcGVyZm9ybWFuY2UuIFRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCBhbmQgZGV0ZXJtaW5lIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uIEkgaGF2ZSB0byBtYWtlIGEgZGVjaXNpb24gYWJvdXQgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBUUF8xNTg4X0NMT0NLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFwmIzM0O1BUUCBjbG9jayBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXG5kcml2ZXJzL3B0cC9LY29uZmlnOjg6Y29uZmlnIFBUUF8xNTg4X0NMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtQVFAgY2xvY2sgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjktXG5kcml2ZXJzL3B0cC9LY29uZmlnOjMwOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6NDI6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0RURVxuZHJpdmVycy9wdHAvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTU3LVxuZHJpdmVycy9wdHAvS2NvbmZpZzo1ODpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfUU9SSVFcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUW9ySVEgMTU4OCB0aW1lciBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnPTc1PWNvbmZpZyBEUDgzNjQwX1BIWVxuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctOTItXG5kcml2ZXJzL3B0cC9LY29uZmlnOjkzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JTkVTXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVx0dHJpc3RhdGUgXCYjMzQ7WkhBVyBJbkVTIFBUUCB0aW1lIHN0YW1waW5nIElQIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwMy1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcbmRyaXZlcnMvcHRwL0tjb25maWctMTA1LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMjM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0tWTVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gdmlydHVhbCBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNC1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTM1OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19WTUNMT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgbWFjaGluZSBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE1MS1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xuZHJpdmVycy9wdHAvS2NvbmZpZy0xNTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgODJQMzN4eHggUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE2NDpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfSURUQ01cbmRyaXZlcnMvcHRwL0tjb25maWctMTY1LVx0dHJpc3RhdGUgXCYjMzQ7SURUIENMT0NLTUFUUklYIGFzIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMTc1LVxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNzY6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0ZDM1dcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVx0dHJpc3RhdGUgXCYjMzQ7UkVORVNBUyBGZW10b0Nsb2NrMyBXaXJlbGVzcyBhcyBQVFAgY2xvY2tcJiMzNDtcbi0tXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4Ny1cbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE4OS1cdHRyaXN0YXRlIFwmIzM0O01vY2stdXAgUFRQIGNsb2NrXCYjMzQ7XG4tLVxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE5OTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfVk1XXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O1ZNd2FyZSB2aXJ0dWFsIFBUUCBjbG9ja1wmIzM0O1xuLS1cbmRyaXZlcnMvcHRwL0tjb25maWctMjEwLVxuZHJpdmVycy9wdHAvS2NvbmZpZzoyMTE6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09DUFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXHR0cmlzdGF0ZSBcJiMzNDtPcGVuQ29tcHV0ZSBUaW1lQ2FyZCBhcyBQVFAgY2xvY2tcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzMTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgdGhlIFBUUCBDbG9jayBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBQVFAgc3R1ZmYuIExldCYjMzk7cyBzZWUuLi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoYXQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCBvcHRpb24uIFJpZ2h0LCBpdCYjMzk7cyBwcm9iYWJseSBkZWZpbmVkIGluIHRoZSBgZHJpdmVycy9wdHAvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgbmVlZCB0byBnbyBwb2tlIGFyb3VuZCBpbiB0aGVyZSBhbmQgc2VlIGhvdyBpdCYjMzk7cyBoYW5kbGVkLiBNYXliZSBJIG5lZWQgdG8gY2hlY2sgZGVwZW5kZW5jaWVzIG9yIHNlZSB3aGVyZSBpdCYjMzk7cyByZWZlcmVuY2VkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucy4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyNTpcdFx0ICBhbHNvIGVuYWJsZSBhdCBsZWFzdCBvbmUgY2xvY2sgZHJpdmVyIGFzIHdlbGwuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMjg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgcHRwLlxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAzMTpcdFx0dHJpc3RhdGVcbiAgMzI6XHRcdGRlZmF1bHQgeSBpZiBQVFBfMTU4OF9DTE9DSz1uXG4gIDMzOlx0XHRkZWZhdWx0IFBUUF8xNTg4X0NMT0NLXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIERyaXZlcnMgdGhhdCBjYW4gb3B0aW9uYWxseSB1c2UgdGhlIFBUUF8xNTg4X0NMT0NLIGZyYW1ld29ya1xuICAzNjpcdFx0ICBzaG91bGQgZGVwZW5kIG9uIHRoaXMgc3ltYm9sIHRvIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGJ1aWx0XG4gIDM3Olx0XHQgIGludG8gdm1saW51eCB3aGlsZSB0aGUgUFRQIHN1cHBvcnQgaXRzZWxmIGlzIGluIGEgbG9hZGFibGVcbiAgMzg6XHRcdCAgbW9kdWxlLlxuICAzOTpcdFx0ICBJZiBQVFAgc3VwcG9ydCBpcyBkaXNhYmxlZCwgdGhpcyBkZXBlbmRlbmN5IHdpbGwgc3RpbGwgYmVcbiAgNDA6XHRcdCAgbWV0LCBhbmQgZHJpdmVycyByZWZlciB0byBkdW1teSBoZWxwZXJzLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcbiAgNDM6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIERURSBhcyBQVFAgY2xvY2tcJiMzNDtcbiAgNDQ6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFBUUCBDbG9jayBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgcGxheSBhcm91bmQgd2l0aCB0aGlzIFBUUF8xNTg4X0NMT0NLIHNldHRpbmcuIEkgd2FudCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCBoYXBwZW5zIHdoZW4gSSBkaXNhYmxlIGl0LiBSaWdodCwgc28gaWYgUFRQXzE1ODhfQ0xPQ0sgaXMgc2V0IHRvICYjMzk7biYjMzk7IOKAkyBtZWFuaW5nIGRpc2FibGVkIOKAkyB0aGVuIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbiBzaG91bGQganVzdCBiZSBhIHN0dWIsIGFzIHRoZSBkb2N1bWVudGF0aW9uIHNheXMuIFRoYXQgaW1wbGllcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24sIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gVGltZSB0byBkaWcgaW50byBgaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmhgIGFuZCBjb25maXJtIHRoYXQgdGhlIHJlZ2lzdGVyIGZ1bmN0aW9uIGlzLCBhcyBleHBlY3RlZCwgYSBzdHViLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbnVsbC1pbXBsZW1lbnRhdGlvbiBzbyBJIGtub3cgcHJlY2lzZWx5IHdoYXQgSSYjMzk7bSBsb3NpbmcgYnkgZGlzYWJsaW5nIHRoZSBQVFAgY2xvY2suIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTMyMT1zdGF0aWMgaW5saW5lIHU2NCBhZGp1c3RfYnlfc2NhbGVkX3BwbSh1NjQgYmFzZSwgbG9uZyBzY2FsZWRfcHBtKVxuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTMzMy0vKipcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjMzNDogKiBwdHBfY2xvY2tfcmVnaXN0ZXIoKSAtIHJlZ2lzdGVyIGEgUFRQIGhhcmR3YXJlIGNsb2NrIGRyaXZlclxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzM1LSAqXG4tLVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzQ0LVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzQ1OmV4dGVybiBzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzQ2LVx0XHRcdFx0XHQgICAgc3RydWN0IGRldmljZSAqcGFyZW50KTtcbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD0zNTQ9ZXh0ZXJuIGludCBwdHBfY2xvY2tfdW5yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrICpwdHApO1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTM1OC0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzU5OiAqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzYwLSAqIEBldmVudDogIE1lc3NhZ2Ugc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGV2ZW50LlxuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTM2Mz1leHRlcm4gdm9pZCBwdHBfY2xvY2tfZXZlbnQoc3RydWN0IHB0cF9jbG9jayAqcHRwLFxuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTM2OC0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzY5OiAqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzcwLSAqL1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTM5MD1pbnQgcHRwX2Nsb2NrX2luZGV4X2J5X2RldihzdHJ1Y3QgZGV2aWNlICpwYXJlbnQpO1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQwMC0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6NDAxOiAqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDAyLSAqIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD00MDg9aW50IHB0cF9maW5kX3BpbihzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsXG4tLVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDE4LSAqXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0MTk6KiBAcHRwOiAgICBUaGUgY2xvY2sgb2J0YWluZWQgZnJvbSBwdHBfY2xvY2tfcmVnaXN0ZXIoKS5cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQyMC0qIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD00MjY9aW50IHB0cF9maW5kX3Bpbl91bmxvY2tlZChzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsXG4tLVxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDMxLSAqXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0MzI6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00MzMtICogQGRlbGF5OiAgbnVtYmVyIG9mIGppZmZpZXMgdG8gd2FpdCBiZWZvcmUgcXVldWluZ1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQzNz1pbnQgcHRwX3NjaGVkdWxlX3dvcmtlcihzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsIHVuc2lnbmVkIGxvbmcgZGVsYXkpO1xuLS1cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0MS0gKlxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6NDQyOiAqIEBwdHA6ICAgICBUaGUgY2xvY2sgb2J0YWluZWQgZnJvbSBwdHBfY2xvY2tfcmVnaXN0ZXIoKS5cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0My0gKi9cbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQ0ND12b2lkIHB0cF9jYW5jZWxfd29ya2VyX3N5bmMoc3RydWN0IHB0cF9jbG9jayAqcHRwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDYtI2Vsc2VcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjQ0NzpzdGF0aWMgaW5saW5lIHN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDgtXHRcdFx0XHRcdFx0ICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE5MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBQVFAgQ2xvY2sgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQVFAgY2xvY2tzIGFyZSBiZWluZyByZWdpc3RlcmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwganVtcCByaWdodCBpbnRvIGBkcml2ZXJzL3B0cC9wdHBfY2xvY2suY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbi4gSSB3YW50IHRvIHJlYWQgYXJvdW5kIHRoYXQgZnVuY3Rpb24sIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQsIHNlZSB3aGF0IGl0IHRha2VzIGFzIGlucHV0LCBhbmQgZ2V0IGEgZmVlbCBmb3IgaG93IHRoZSBjbG9jayByZWdpc3RyYXRpb24gcHJvY2VzcyBpcyBhcmNoaXRlY3RlZCB3aXRoaW4gdGhlIGRyaXZlci4gSeKAmW0gaG9waW5nIHRvIGdsZWFuIHRoZSByZWxldmFudCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkLCB0b28uIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBwdHBfY2xvY2sgXFwqcHRwX2Nsb2NrX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcHRwL3B0cF9jbG9jay5jPTMyMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwdHBfcGVyb3V0X2xvb3BiYWNrX29wcyA9IHtcbi0tXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0zMjctXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYzozMjg6c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcbmRyaXZlcnMvcHRwL3B0cF9jbG9jay5jLTMyOS1cdFx0XHRcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU3NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIGhlcmUuCgoqKkRlY29uc3RydWN0aW5nIGBwdHBfY2xvY2tfcmVnaXN0ZXJgKioKCkFscmlnaHQsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgaW1hZ2luZSBpdCYjMzk7cyB0aGUgcG9pbnQgd2hlcmUgYSBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSBjbG9jaywgcHJlc3VtYWJseSBhIGhhcmR3YXJlIG9yIHNvZnR3YXJlIFBUUCBjbG9jaywgaXMgZm9ybWFsbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0uIEl0JiMzOTtzIHRoZSBtb21lbnQgdGhlIGtlcm5lbCByZWNvZ25pemVzIGFuZCBiZWdpbnMgbWFuYWdpbmcgdGhpcyBjbG9jayBhcyBhIHNvdXJjZSBvZiBwcmVjaXNlIHRpbWUuIEl0JiMzOTtzIHNpbWlsYXIgdG8gb3RoZXIgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgSSBleHBlY3QuCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3Mgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLiBXaGF0IGlzIGJlaW5nIHBhc3NlZCBpbnRvIHRoaXMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uPyBJcyBpdCBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgdGhhdCBkZXNjcmliZXMgdGhlIGNsb2NrJiMzOTtzIGNhcGFiaWxpdGllcywgaXRzIGhhcmR3YXJlIGFkZHJlc3MsIGFueSBhc3NvY2lhdGVkIGRyaXZlcnMgb3IgaW50ZXJydXB0IGhhbmRsZXJzPyBQZXJoYXBzIGl0JiMzOTtzIHNpbWlsYXIgdG8gdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIG5ldHdvcmsgY2FyZC4KCk5leHQsIEkgbmVlZCB0byBrbm93IHdoYXQgaGFwcGVucyBkdXJpbmcgcmVnaXN0cmF0aW9uLiBEb2VzIGl0IGFsbG9jYXRlIHNvbWUga2VybmVsIHJlc291cmNlcz8gUG9zc2libHkgbWVtb3J5IHRvIGhvbGQgY2xvY2sgZGF0YS4gRG9lcyBpdCBjcmVhdGUgYXNzb2NpYXRlZCBrZXJuZWwgdGhyZWFkcyBmb3IgaGFuZGxpbmcgdGltZSB1cGRhdGVzIG9yIHN5bmNocm9uaXphdGlvbj8gRG9lcyBpdCBzZXQgdXAgYW55IGludGVycnVwdCBoYW5kbGVycyB0byBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBvciBkb2VzIGl0IGFkZCB0aGUgY2xvY2sgaW50byBzb21lIGdsb2JhbCBrZXJuZWwgUFRQIGNsb2NrIGxpc3Q/CgpJJiMzOTttIGFsc28gY3VyaW91cyBhYm91dCBlcnJvciBoYW5kbGluZy4gV2hhdCBmYWlsdXJlIG1vZGVzIGFyZSBhbnRpY2lwYXRlZCBoZXJlPyBEb2VzIHRoZSBmdW5jdGlvbiBjaGVjayBmb3IgY29uZmxpY3RpbmcgY2xvY2sgc291cmNlcz8gV2hhdCBoYXBwZW5zIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLCBvciBpZiB0aGUgZHJpdmVyIGNhbiYjMzk7dCBpbml0aWFsaXplIHRoZSBjbG9jayYjMzk7cyBoYXJkd2FyZT8gQXJlIHRoZXJlIHJldHVybiBjb2RlcyBhbmQgaG93IGFyZSB0aGV5IHVzZWQgYnkgdGhlIGNhbGxpbmcgY29kZT8gSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYXMgd2VsbCBhcyB0aGUgcmVnaXN0cmF0aW9uIGNvZGUgaXRzZWxmLgoKRmluYWxseSwgd2hhdCYjMzk7cyB0aGUgYnJvYWRlciBjb250ZXh0PyBUaGlzIHJlZ2lzdHJhdGlvbiBoYXMgdG8gcGx1ZyBpbnRvIHNvbWV0aGluZyBiaWdnZXIuIElzIGl0IHVzZWQgdG8gYnVpbGQgYSBnbG9iYWwgUFRQIGNsb2NrIHRyZWUgZm9yIHRoZSBzeXN0ZW0/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBpbnRlcmZhY2VzIGZvciBwcmVjaXNlIHRpbWluZz8gV2hhdCBoYXBwZW5zIGluIHRlcm1zIG9mIGRldmljZSBkaXNjb3Zlcnkgd2hlbiBhIGRldmljZSByZWdpc3RlcnMgb3IgaXMgcmVtb3ZlZD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3B0cC9wdHBfY2xvY2suYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzI4Olx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcbiAzMjk6XHRcdFx0XHRcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxuIDMzMDpcdHtcbiAzMzE6XHRcdHN0cnVjdCBwdHBfY2xvY2sgKnB0cDtcbiAzMzI6XHRcdHN0cnVjdCB0aW1lc3RhbXBfZXZlbnRfcXVldWUgKnF1ZXVlID0gTlVMTDtcbiAzMzM6XHRcdGludCBlcnIsIGluZGV4LCBtYWpvciA9IE1BSk9SKHB0cF9kZXZ0KTtcbiAzMzQ6XHRcdGNoYXIgZGVidWdmc25hbWVbMTZdO1xuIDMzNTpcdFx0c2l6ZV90IHNpemU7XG4gMzM2Olx0XG4gMzM3Olx0XHRpZiAoV0FSTl9PTl9PTkNFKGluZm8tXHUwMDNlbl9hbGFybSBcdTAwM2UgUFRQX01BWF9BTEFSTVMgfHxcbiAzMzg6XHRcdFx0XHQgKCFpbmZvLVx1MDAzZWdldHRpbWV4NjQgXHUwMDI2XHUwMDI2ICFpbmZvLVx1MDAzZWdldHRpbWU2NCkgfHxcbiAzMzk6XHRcdFx0XHQgIWluZm8tXHUwMDNlc2V0dGltZTY0KSlcbiAzNDA6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4gMzQxOlx0XG4gMzQyOlx0XHQvKiBJbml0aWFsaXplIGEgY2xvY2sgc3RydWN0dXJlLiAqL1xuIDM0MzpcdFx0cHRwID0ga3phbGxvY19vYmooc3RydWN0IHB0cF9jbG9jayk7XG4gMzQ0Olx0XHRpZiAoIXB0cCkge1xuIDM0NTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDM0NjpcdFx0XHRnb3RvIG5vX21lbW9yeTtcbiAzNDc6XHRcdH1cbiAzNDg6XHRcbiAzNDk6XHRcdGVyciA9IHhhX2FsbG9jKFx1MDAyNnB0cF9jbG9ja3NfbWFwLCBcdTAwMjZpbmRleCwgcHRwLCB4YV9saW1pdF8zMWIsXG4gMzUwOlx0XHRcdCAgICAgICBHRlBfS0VSTkVMKTtcbiAzNTE6XHRcdGlmIChlcnIpXG4gMzUyOlx0XHRcdGdvdG8gbm9fc2xvdDtcbiAzNTM6XHRcbiAzNTQ6XHRcdHB0cC1cdTAwM2VjbG9jay5vcHMgPSBwdHBfY2xvY2tfb3BzO1xuIDM1NTpcdFx0cHRwLVx1MDAzZWluZm8gPSBpbmZvO1xuIDM1NjpcdFx0cHRwLVx1MDAzZWRldmlkID0gTUtERVYobWFqb3IsIGluZGV4KTtcbiAzNTc6XHRcdHB0cC1cdTAwM2VpbmRleCA9IGluZGV4O1xuIDM1ODpcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cHRwLVx1MDAzZXRzZXZxcyk7XG4gMzU5Olx0XHRxdWV1ZSA9IGt6YWxsb2Nfb2JqKCpxdWV1ZSk7XG4gMzYwOlx0XHRpZiAoIXF1ZXVlKSB7XG4gMzYxOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMzYyOlx0XHRcdGdvdG8gbm9fbWVtb3J5X3F1ZXVlO1xuIDM2MzpcdFx0fVxuIDM2NDpcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZxdWV1ZS1cdTAwM2VxbGlzdCwgXHUwMDI2cHRwLVx1MDAzZXRzZXZxcyk7XG4gMzY1Olx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZwdHAtXHUwMDNldHNldnFzX2xvY2spO1xuIDM2NjpcdFx0cXVldWUtXHUwMDNlbWFzayA9IGJpdG1hcF9hbGxvYyhQVFBfTUFYX0NIQU5ORUxTLCBHRlBfS0VSTkVMKTtcbiAzNjc6XHRcdGlmICghcXVldWUtXHUwMDNlbWFzaykge1xuIDM2ODpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDM2OTpcdFx0XHRnb3RvIG5vX21lbW9yeV9iaXRtYXA7XG4gMzcwOlx0XHR9XG4gMzcxOlx0XHRiaXRtYXBfc2V0KHF1ZXVlLVx1MDAzZW1hc2ssIDAsIFBUUF9NQVhfQ0hBTk5FTFMpO1xuIDM3MjpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cXVldWUtXHUwMDNlbG9jayk7XG4gMzczOlx0XHRtdXRleF9pbml0KFx1MDAyNnB0cC1cdTAwM2VwaW5jZmdfbXV4KTtcbiAzNzQ6XHRcdG11dGV4X2luaXQoXHUwMDI2cHRwLVx1MDAzZW5fdmNsb2Nrc19tdXgpO1xuIDM3NTpcdFx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZwdHAtXHUwMDNldHNldl93cSk7XG4gMzc2Olx0XG4gMzc3Olx0XHRpZiAocHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3ljbGVzNjQgfHwgcHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3ljbGVzeDY0KSB7XG4gMzc4Olx0XHRcdHB0cC1cdTAwM2VoYXNfY3ljbGVzID0gdHJ1ZTtcbiAzNzk6XHRcdFx0aWYgKCFwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXRjeWNsZXM2NCBcdTAwMjZcdTAwMjYgcHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3ljbGVzeDY0KVxuIDM4MDpcdFx0XHRcdHB0cC1cdTAwM2VpbmZvLVx1MDAzZWdldGN5Y2xlczY0ID0gcHRwX2dldGN5Y2xlczY0O1xuIDM4MTpcdFx0fSBlbHNlIHtcbiAzODI6XHRcdFx0LyogRnJlZSBydW5uaW5nIGN5Y2xlIGNvdW50ZXIgbm90IHN1cHBvcnRlZCwgdXNlIHRpbWUuICovXG4gMzgzOlx0XHRcdHB0cC1cdTAwM2VpbmZvLVx1MDAzZWdldGN5Y2xlczY0ID0gcHRwX2dldGN5Y2xlczY0O1xuIDM4NDpcdFxuIDM4NTpcdFx0XHRpZiAocHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0dGltZXg2NClcbiAzODY6XHRcdFx0XHRwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXRjeWNsZXN4NjQgPSBwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXR0aW1leDY0O1xuIDM4NzpcdFxuIDM4ODpcdFx0XHRpZiAocHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3Jvc3N0c3RhbXApXG4gMzg5Olx0XHRcdFx0cHRwLVx1MDAzZWluZm8tXHUwMDNlZ2V0Y3Jvc3NjeWNsZXMgPSBwdHAtXHUwMDNlaW5mby1cdTAwM2VnZXRjcm9zc3RzdGFtcDtcbiAzOTA6XHRcdH1cbiAzOTE6XHRcbiAzOTI6XHRcdGlmICghcHRwLVx1MDAzZWluZm8tXHUwMDNlZW5hYmxlKVxuIDM5MzpcdFx0XHRwdHAtXHUwMDNlaW5mby1cdTAwM2VlbmFibGUgPSBwdHBfZW5hYmxlO1xuIDM5NDpcdFxuIDM5NTpcdFx0aWYgKHB0cC1cdTAwM2VpbmZvLVx1MDAzZWRvX2F1eF93b3JrKSB7XG4gMzk2Olx0XHRcdGt0aHJlYWRfaW5pdF9kZWxheWVkX3dvcmsoXHUwMDI2cHRwLVx1MDAzZWF1eF93b3JrLCBwdHBfYXV4X2t3b3JrZXIpO1xuIDM5NzpcdFx0XHRwdHAtXHUwMDNla3dvcmtlciA9IGt0aHJlYWRfcnVuX3dvcmtlcigwLCBcJiMzNDtwdHAlZFwmIzM0OywgcHRwLVx1MDAzZWluZGV4KTtcbiAzOTg6XHRcdFx0aWYgKElTX0VSUihwdHAtXHUwMDNla3dvcmtlcikpIHtcbiAzOTk6XHRcdFx0XHRlcnIgPSBQVFJfRVJSKHB0cC1cdTAwM2Vrd29ya2VyKTtcbiA0MDA6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBwdHAgYXV4X3dvcmtlciAlZFxcblwmIzM0OywgZXJyKTtcbiA0MDE6XHRcdFx0XHRnb3RvIGt3b3JrZXJfZXJyO1xuIDQwMjpcdFx0XHR9XG4gNDAzOlx0XHR9XG4gNDA0Olx0XG4gNDA1Olx0XHQvKiBQVFAgdmlydHVhbCBjbG9jayBpcyBiZWluZyByZWdpc3RlcmVkIHVuZGVyIHBoeXNpY2FsIGNsb2NrICovXG4gNDA2Olx0XHRpZiAocGFyZW50IFx1MDAyNlx1MDAyNiBwYXJlbnQtXHUwMDNlY2xhc3MgXHUwMDI2XHUwMDI2IHBhcmVudC1cdTAwM2VjbGFzcy1cdTAwM2VuYW1lIFx1MDAyNlx1MDAyNlxuIDQwNzpcdFx0ICAgIHN0cmNtcChwYXJlbnQtXHUwMDNlY2xhc3MtXHUwMDNlbmFtZSwgXCYjMzQ7cHRwXCYjMzQ7KSA9PSAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzQwNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgUFRQIENsb2NrIFJlZ2lzdGVyIFNlcXVlbmNlKioKCkFscmlnaHQsIHNvIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiB0aGlzIGludmVzdGlnYXRpb24gaXMgdG8gZGl2ZSBpbnRvIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IHNlcXVlbmNlIG9mIGV2ZW50cywgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHRvdWNoZWQsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcGFydGljdWxhciByZWdpc3RyYXRpb24gcHJvY2Vzcy4gR2l2ZW4gdGhlIGNvbnRleHQgb2YgY2xvY2sgbWFuYWdlbWVudCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMsIHBvdGVudGlhbCBpbnRlcnJ1cHRzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBsaWtlbHkgc29tZSBzb3J0IG9mIGluaXRpYWxpemF0aW9uIG9mIGNsb2NrLXJlbGF0ZWQgZGF0YS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggYW55IGV4aXN0aW5nIFBUUCBjb25maWd1cmF0aW9uIG9yIGlmIHRoaXMgaXMgdGhlICYjMzQ7Z3JvdW5kIHplcm8mIzM0OyBvZiBhIG5ldyBjbG9jayBpbnN0YW5jZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIGFjdHVhbGx5IHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwODpcdFx0XHRwdHAtXHUwMDNlaXNfdmlydHVhbF9jbG9jayA9IHRydWU7XG4gNDA5Olx0XG4gNDEwOlx0XHRpZiAoIXB0cC1cdTAwM2Vpc192aXJ0dWFsX2Nsb2NrKSB7XG4gNDExOlx0XHRcdHB0cC1cdTAwM2VtYXhfdmNsb2NrcyA9IFBUUF9ERUZBVUxUX01BWF9WQ0xPQ0tTO1xuIDQxMjpcdFxuIDQxMzpcdFx0XHRzaXplID0gc2l6ZW9mKGludCkgKiBwdHAtXHUwMDNlbWF4X3ZjbG9ja3M7XG4gNDE0Olx0XHRcdHB0cC1cdTAwM2V2Y2xvY2tfaW5kZXggPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xuIDQxNTpcdFx0XHRpZiAoIXB0cC1cdTAwM2V2Y2xvY2tfaW5kZXgpIHtcbiA0MTY6XHRcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDQxNzpcdFx0XHRcdGdvdG8gbm9fbWVtX2Zvcl92Y2xvY2tzO1xuIDQxODpcdFx0XHR9XG4gNDE5Olx0XHR9XG4gNDIwOlx0XG4gNDIxOlx0XHRlcnIgPSBwdHBfcG9wdWxhdGVfcGluX2dyb3VwcyhwdHApO1xuIDQyMjpcdFx0aWYgKGVycilcbiA0MjM6XHRcdFx0Z290byBub19waW5fZ3JvdXBzO1xuIDQyNDpcdFxuIDQyNTpcdFx0LyogUmVnaXN0ZXIgYSBuZXcgUFBTIHNvdXJjZS4gKi9cbiA0MjY6XHRcdGlmIChpbmZvLVx1MDAzZXBwcykge1xuIDQyNzpcdFx0XHRzdHJ1Y3QgcHBzX3NvdXJjZV9pbmZvIHBwcztcbiA0Mjg6XHRcdFx0bWVtc2V0KFx1MDAyNnBwcywgMCwgc2l6ZW9mKHBwcykpO1xuIDQyOTpcdFx0XHRzbnByaW50ZihwcHMubmFtZSwgUFBTX01BWF9OQU1FX0xFTiwgXCYjMzQ7cHRwJWRcJiMzNDssIGluZGV4KTtcbiA0MzA6XHRcdFx0cHBzLm1vZGUgPSBQVFBfUFBTX01PREU7XG4gNDMxOlx0XHRcdHBwcy5vd25lciA9IGluZm8tXHUwMDNlb3duZXI7XG4gNDMyOlx0XHRcdHB0cC1cdTAwM2VwcHNfc291cmNlID0gcHBzX3JlZ2lzdGVyX3NvdXJjZShcdTAwMjZwcHMsIFBUUF9QUFNfREVGQVVMVFMpO1xuIDQzMzpcdFx0XHRpZiAoSVNfRVJSKHB0cC1cdTAwM2VwcHNfc291cmNlKSkge1xuIDQzNDpcdFx0XHRcdGVyciA9IFBUUl9FUlIocHRwLVx1MDAzZXBwc19zb3VyY2UpO1xuIDQzNTpcdFx0XHRcdHByX2VycihcJiMzNDtmYWlsZWQgdG8gcmVnaXN0ZXIgcHBzIHNvdXJjZVxcblwmIzM0Oyk7XG4gNDM2Olx0XHRcdFx0Z290byBub19wcHM7XG4gNDM3Olx0XHRcdH1cbiA0Mzg6XHRcdFx0cHRwLVx1MDAzZXBwc19zb3VyY2UtXHUwMDNlbG9va3VwX2Nvb2tpZSA9IHB0cDtcbiA0Mzk6XHRcdH1cbiA0NDA6XHRcbiA0NDE6XHRcdC8qIEluaXRpYWxpemUgYSBuZXcgZGV2aWNlIG9mIG91ciBjbGFzcyBpbiBvdXIgY2xvY2sgc3RydWN0dXJlLiAqL1xuIDQ0MjpcdFx0ZGV2aWNlX2luaXRpYWxpemUoXHUwMDI2cHRwLVx1MDAzZWRldik7XG4gNDQzOlx0XHRwdHAtXHUwMDNlZGV2LmRldnQgPSBwdHAtXHUwMDNlZGV2aWQ7XG4gNDQ0Olx0XHRwdHAtXHUwMDNlZGV2LmNsYXNzID0gXHUwMDI2cHRwX2NsYXNzO1xuIDQ0NTpcdFx0cHRwLVx1MDAzZWRldi5wYXJlbnQgPSBwYXJlbnQ7XG4gNDQ2Olx0XHRwdHAtXHUwMDNlZGV2Lmdyb3VwcyA9IHB0cC1cdTAwM2VwaW5fYXR0cl9ncm91cHM7XG4gNDQ3Olx0XHRwdHAtXHUwMDNlZGV2LnJlbGVhc2UgPSBwdHBfY2xvY2tfcmVsZWFzZTtcbiA0NDg6XHRcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZwdHAtXHUwMDNlZGV2LCBwdHApO1xuIDQ0OTpcdFx0ZGV2X3NldF9uYW1lKFx1MDAyNnB0cC1cdTAwM2VkZXYsIFwmIzM0O3B0cCVkXCYjMzQ7LCBwdHAtXHUwMDNlaW5kZXgpO1xuIDQ1MDpcdFxuIDQ1MTpcdFx0LyogQ3JlYXRlIGEgcG9zaXggY2xvY2sgYW5kIGxpbmsgaXQgdG8gdGhlIGRldmljZS4gKi9cbiA0NTI6XHRcdGVyciA9IHBvc2l4X2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNnB0cC1cdTAwM2VjbG9jaywgXHUwMDI2cHRwLVx1MDAzZWRldik7XG4gNDUzOlx0XHRpZiAoZXJyKSB7XG4gNDU0Olx0XHRcdGlmIChwdHAtXHUwMDNlcHBzX3NvdXJjZSlcbiA0NTU6XHRcdFx0XHRwcHNfdW5yZWdpc3Rlcl9zb3VyY2UocHRwLVx1MDAzZXBwc19zb3VyY2UpO1xuIDQ1NjpcdFxuIDQ1NzpcdFx0XHRpZiAocHRwLVx1MDAzZWt3b3JrZXIpXG4gNDU4Olx0XHRcdFx0a3RocmVhZF9kZXN0cm95X3dvcmtlcihwdHAtXHUwMDNla3dvcmtlcik7XG4gNDU5Olx0XG4gNDYwOlx0XHRcdHB1dF9kZXZpY2UoXHUwMDI2cHRwLVx1MDAzZWRldik7XG4gNDYxOlx0XG4gNDYyOlx0XHRcdHByX2VycihcJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHBvc2l4IGNsb2NrXFxuXCYjMzQ7KTtcbiA0NjM6XHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiA0NjQ6XHRcdH1cbiA0NjU6XHRcbiA0NjY6XHRcdC8qIERlYnVnZnMgaW5pdGlhbGl6YXRpb24gKi9cbiA0Njc6XHRcdHNucHJpbnRmKGRlYnVnZnNuYW1lLCBzaXplb2YoZGVidWdmc25hbWUpLCBcJiMzNDtwdHAlZFwmIzM0OywgcHRwLVx1MDAzZWluZGV4KTtcbiA0Njg6XHRcdHB0cC1cdTAwM2VkZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGVidWdmc25hbWUsIE5VTEwpO1xuIDQ2OTpcdFx0aWYgKGluZm8tXHUwMDNlbl9wZXJfbHAgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGluZm8tXHUwMDNlcGVyb3V0X2xvb3BiYWNrKSB7XG4gNDcwOlx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7bl9wZXJvdXRfbG9vcGJhY2tcJiMzNDssIDA0MDAsIHB0cC1cdTAwM2VkZWJ1Z2ZzX3Jvb3QsXG4gNDcxOlx0XHRcdFx0XHQgICAgcHRwLCBcdTAwMjZwdHBfbl9wZXJvdXRfbG9vcGJhY2tfZm9wcyk7XG4gNDcyOlx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cGVyb3V0X2xvb3BiYWNrXCYjMzQ7LCAwMjAwLCBwdHAtXHUwMDNlZGVidWdmc19yb290LFxuIDQ3MzpcdFx0XHRcdFx0ICAgIHB0cCwgXHUwMDI2cHRwX3Blcm91dF9sb29wYmFja19vcHMpO1xuIDQ3NDpcdFx0fVxuIDQ3NTpcdFxuIDQ3NjpcdFx0cmV0dXJuIHB0cDtcbiA0Nzc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg4MzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFuYWx5c2lzOiBpZ2IgUFRQIENsb2NrIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBMaW5lIDQ1MiBpcyB3aGVyZSBgcG9zaXhfY2xvY2tfcmVnaXN0ZXJgIGlzIGNhbGxlZC4gSW5zaWRlIHRoYXQsIGBjZGV2X2RldmljZV9hZGRgIGdldHMgY2FsbGVkLCBtYWtpbmcgdGhlIGNoYXJhY3RlciBkZXZpY2UgYC9kZXYvcHRwMGAgYWNjZXNzaWJsZSB0byB1c2Vyc3BhY2UuIFRoaXMgbWVhbnMgdXNlcnNwYWNlIGNhbiBub3cgY2FsbCBQVFAtcmVsYXRlZCBzeXNjYWxscyBhbmQgaW9jdGxzLiBBbmQgKnRob3NlKiBjYWxscyBhcmUgcm91dGVkIHRvIGZ1bmN0aW9ucyBsaWtlIGBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2YCBldGMuIHdoaWNoIGFjY2VzcyBgYWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AuCgpIZXJlJiMzOTtzIHRoZSBraWNrZXI6ICBiZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGBzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spYCBjYWxsIHdhc24mIzM5O3QgKmJlZm9yZSogdGhlIHJlZ2lzdHJhdGlvbiBpbiBjZXJ0YWluIGVycm9yIHBhdGhzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGxvY2sgY291bGQgYmUgdW5pbml0aWFsaXplZCB3aGVuIHRoZSBgaWdiX3B0cF8qYCBmdW5jdGlvbnMgd2VyZSBiZWluZyBjYWxsZWQhICBUaGlzIGNvdWxkIGxlYWQgdG8gbG9ja2RlcCBzcGxhdHMgb3IgYmFkIGxvY2sgc3RhdGVzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyB3b3J0aCBmdXp6aW5nLCBhY2NvcmRpbmcgdG8gb3VyIHJ1bGVzPyBMZXQmIzM5O3MgY2hlY2sgdGhlbS4gV2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyAmIzM0O3JlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyYjMzQ7LgoKT2theSwgc28gaXMgYGlnYmAgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVT8gWWVzLCBgaWdiYCBpcyBpbmNsdWRlZCBpbiBRRU1VIHNpbmNlIFFFTVUgOC4wLiBUaGF0JiMzOTtzIGdvb2QgbmV3cy4gVGhhdCBtYWtlcyBpdCBtb3JlIGxpa2VseS4KCkJ1dCB3YWl0LCB0aGVyZSYjMzk7cyB0aGF0IHJ1bGUgYWJvdXQgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzLiAgVGhlIGV4YW1wbGUgKnNwZWNpZmljYWxseSogbWVudGlvbnMgYGlnYl9yZW1vdmVgLiBCdXQsIGBpZ2JfcmVtb3ZlYCBpcyBhIHRlYXJkb3duIGZ1bmN0aW9uLCB3aGlsZSB0aGUgZHJpdmVyIGlzIHN0YW5kYXJkLiBBbmQsIHRoZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBoZXJlIGlzIGBpZ2JfcHRwX2luaXRgLiBTbywgd2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IGEgdGVhcmRvd24gY2FsbGJhY2suIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0ICppbml0aWFsaXphdGlvbiogZHVyaW5nIGRldmljZSBzZXR1cC4KCk5leHQ6IElzIHRoaXMgbG9jayBiZWluZyBpbml0aWFsaXplZCB1c2VkIGF0IHJ1bnRpbWU/IElzIGBzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spYCBpbml0aWFsaXppbmcgdGhlIGxvY2sgdXNlZCBkdXJpbmcgcnVudGltZSBieSBQVFAgc3lzY2FsbHMgLyBvcGVyYXRpb25zPyBZZXMsIGRlZmluaXRlbHkuIEFsbCBvZiB0aGUga2V5IGBpZ2JfcHRwXypgIGZ1bmN0aW9ucyB1c2UgaXQgZm9yIHN5bmNocm9uaXphdGlvbjogYGlnYl9wdHBfYWRqZmluZV8qYCwgYGlnYl9wdHBfYWRqdGltZV8qYCwgYGlnYl9wdHBfZ2V0dGltZXhfKmAsIGBpZ2JfcHRwX3NldHRpbWVfKmAsIGBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXypgLCBgaWdiX3B0cF9yeF9oYW5nYCwgYGlnYl9wdHBfdHhfaGFuZ2AsIGBpZ2JfcHRwX3R4X2h3dHN0YW1wYCwgYGlnYl9wdHBfcnhfcGt0c3RhbXBgLCBgaWdiX3B0cF9yeF9yZ3RzdGFtcGAsIGBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZWAuCgpHaXZlbiB0aGF0IGBpZ2JgIGlzIGVtdWxhdGVkLCB0aGlzIG1vZGlmaWVzIGNyaXRpY2FsIGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGUgYnVnIGNvdWxkIGxlYWQgdG8gYSBoYXJkLXRvLWRlYnVnIHN0YXRlLCB0aGlzIHNlZW1zIGxpa2UgaXQgKmlzKiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0bXJlZ19sb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg9NTQ0PXN0cnVjdCBpZ2JfYWRhcHRlciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTYzNC1cdHVuc2lnbmVkIGludCBwdHBfZmxhZ3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6NjM1Olx0c3BpbmxvY2tfdCB0bXJlZ19sb2NrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTYzNi1cdHN0cnVjdCBjeWNsZWNvdW50ZXIgY2M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9Njk0Mj1zdGF0aWMgdm9pZCBpZ2JfcGVyb3V0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHRzaW50cl90dClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy02OTUxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6Njk1MjpcdHNwaW5fbG9jayhcdTAwMjZhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNjk1My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NzAxNzpcdHNwaW5fdW5sb2NrKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDE4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz03MDIwPXN0YXRpYyB2b2lkIGlnYl9leHR0cyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB0c2ludHJfdHQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzAzOC1cdFx0bnMgJiM0Mzs9ICgodTY0KShyZDMyKGF1eHN0bXBoKSBcdTAwMjYgMHhGRikpIFx1MDAzY1x1MDAzYyAzMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjcwMzk6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzA0MC1cdFx0bnMgPSB0aW1lY291bnRlcl9jeWMydGltZShcdTAwMjZhZGFwdGVyLVx1MDAzZXRjLCBucyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo3MDQxOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzA0Mi1cdFx0dHMgPSBuc190b190aW1lc3BlYzY0KG5zKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTEzMz1zdGF0aWMgdm9pZCBpZ2JfcHRwX3dyaXRlX2kyMTAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUzLSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1NDogKiBUaGUgJiMzOTt0bXJlZ19sb2NrJiMzOTsgc3BpbmxvY2sgaXMgdXNlZCB0byBwcm90ZWN0IHRoZSBjb25zaXN0ZW5jeSBvZiB0aGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTU1LSAqIHN5c3RlbSB0aW1lIHZhbHVlLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHJlYWRpbmcgdGhlIDY0IGJpdCB0aW1lXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xNjI9c3RhdGljIHZvaWQgaWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTc1LVx0Y2FzZSBlMTAwMF9pMzUwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNzY6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNzctXHRcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXHUwMDI2YWRhcHRlci1cdTAwM2V0Yywgc3lzdGltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTc4Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0yMjg9c3RhdGljIGludCBpZ2JfcHRwX2FkanRpbWVfODI1NzYoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjM0Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjM1LVx0dGltZWNvdW50ZXJfYWRqdGltZShcdTAwMjZpZ2ItXHUwMDNldGMsIGRlbHRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjM2Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0yNDE9c3RhdGljIGludCBpZ2JfcHRwX2FkanRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNDg6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI1NDpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MjU5PXN0YXRpYyBpbnQgaWdiX3B0cF9nZXR0aW1leF84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjcwOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNzk6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI4MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTI4Nj1zdGF0aWMgaW50IGlnYl9wdHBfZ2V0dGltZXhfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI5NzpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI5OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzA3Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMDgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zMTQ9c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4X2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjMyMzpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMyNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzMxOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zMzY9c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfODI1NzYoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjM0NjpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzUwOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zNTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zNTU9c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzYyOlx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozNjY6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTQ4OT1zdGF0aWMgaW50IGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01MjMtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTI0Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01MjUtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUzNi1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTM3Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUzOC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01NjgtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTY5Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01NzAtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYyOS1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjMwOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYzMS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz02NDA9c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NzItXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjczOlx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NzQtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTY4NS1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Njg2Olx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTY4Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03MzMtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzM0Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03MzUtXHRcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc1OS1cdFx0d3IzMihFMTAwMF9UU0lNLCB0c2ltKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzYwOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmlnYi1cdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc2MS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjMtXHRjYXNlIFBUUF9DTEtfUkVRX1BQUzpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzY0Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZpZ2ItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjUtXHRcdHRzaW0gPSByZDMyKEUxMDAwX1RTSU0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzcxLVx0XHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3NzI6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2aWdiLVx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzczLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTEzMDU9dm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM4MTpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzODItXHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MTQ2OT12b2lkIGlnYl9wdHBfcmVzZXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ3NzpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDc4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUxMS1vdXQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1MTI6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNTEzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkxNQoJCQkJCQkJb3V0cHV0OiAxOTYKCQkJCQkJCXRob3VnaHRzOiA3MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEludGVsIElHQiBEcml2ZXIgUFRQIEluaXRpYWxpemF0aW9uIEJ1ZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGV4YW1pbmUgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUga2V5IHRvIFBUUCBpbml0aWFsaXphdGlvbiBpbiB0aGUgSUdCIGRyaXZlci4gSSBjYW4gc2VlIHRoYXQgaXQgY2FsbHMgYHB0cF9jbG9ja19yZWdpc3RlcmAgd2l0aCB0aGUgYWRhcHRlciYjMzk7cyBQVFAgY2FwYWJpbGl0aWVzIGFuZCB0aGUgUENJIGRldmljZSYjMzk7cyBkZXZpY2Ugc3RydWN0dXJlLCBhbmQgdGhlbiBjYWxscyBgaWdiX3B0cF9yZXNldGAuIENydWNpYWxseSwgYGlnYl9wdHBfcmVzZXRgIHN1YnNlcXVlbnRseSBhY3F1aXJlcyB0aGUgYHRtcmVnX2xvY2tgIHNwaW5sb2NrIHVzaW5nIGBzcGluX2xvY2tfaXJxc2F2ZWAuIEkga25vdyB0aGF0IGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGNyZWF0ZXMgdGhlIGAvZGV2L3B0cFhgIGRldmljZSBub2RlLCBtYWtpbmcgaXQgYXZhaWxhYmxlIHRvIHVzZXJzcGFjZSwgd2hpY2ggaW4gdHVybiBjYWxscyBmdW5jdGlvbnMgbGlrZSBgaWdiX3B0cF9hZGp0aW1lXypgIGFuZCBgaWdiX3B0cF9nZXR0aW1leF8qYC4gVGhlc2UgdXNlci1zcGFjZSBjYWxscyBhbHNvIGFjcXVpcmUgdGhlIGB0bXJlZ19sb2NrYC4KCk5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHJlbGV2YW50IHN5bWJvbHMuIGBpZ2JfcHRwX2luaXRgIGlzIGEgbm9uLXN0YXRpYyBzeW1ib2wsIG1lYW5pbmcgaXQmIzM5O3MgZXhwb3J0ZWQgd2l0aGluIHRoZSBkcml2ZXIuIGBpZ2JfcHJvYmVgIGlzIHN0YXRpYywgd2hpY2ggaXMgZXhwZWN0ZWQuIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHJlc2lkZXMgaW4gYGRyaXZlcnMvcHRwL3B0cF9jbG9jay5jYCBhbmQgaXMgYW4gZXhwb3J0ZWQgc3ltYm9sLiBJIGFsc28gc2VlIG90aGVyIHJlbGV2YW50IG5vbi1zdGF0aWMgSUdCIFBUUCBmdW5jdGlvbnMsIGxpa2UgYGlnYl9wdHBfcmVzZXRgLCBgaWdiX3B0cF9od3RzdGFtcF9zZXRgLCBhbmQgYGlnYl9wdHBfaHd0c3RhbXBfZ2V0YC4KCk5leHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGZvY3VzaW5nIG9uIGBDT05GSUdfSUdCYCwgYENPTkZJR19QVFBfMTU4OF9DTE9DS2AsIGFuZCBgQ09ORklHX1BDSWAuIExvb2tpbmcgYXQgdGhlIGBLY29uZmlnYCBmaWxlcywgSSBjYW4gc2VlIHRoYXQgYENPTkZJR19JR0JgIGRlcGVuZHMgb24gYFBDSWAgYW5kIGVpdGhlciBgUFRQXzE1ODhfQ0xPQ0tgIG9yIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgZm9yIFBUUCBzdXBwb3J0LiBJdCBhbHNvIHNlbGVjdHMgYEkyQ2AgYW5kIGBJMkNfQUxHT0JJVGAuIE1vcmVvdmVyLCBgSUdCYCBpcyBuZXN0ZWQgd2l0aGluIHRoZSBgTkVUREVWSUNFU2AsIGBFVEhFUk5FVGAsIGFuZCBgTkVUX1ZFTkRPUl9JTlRFTGAgbWVudSBoaWVyYXJjaGllcy4KCkkmIzM5O3ZlIHZlcmlmaWVkIG15IHVuZGVyc3RhbmRpbmcuIFRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZTogYElHQmAsIGBQQ0lgLCBhbmQgYFBUUF8xNTg4X0NMT0NLYC4gVGhlIGltcG9ydGFudCBzeW1ib2xzIGZvciBmdXp6aW5nIGFyZTogYGlnYl9wdHBfaW5pdGAsIGBwdHBfY2xvY2tfcmVnaXN0ZXJgLCBgaWdiX3B0cF9yZXNldGAsIGFuZCBgaWdiX3B0cF9od3RzdGFtcF9zZXRgLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIsIEkgY2FuIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgYHNwaW5fbG9ja19pbml0YCBjYWxsIGZvciBgYWRhcHRlci0mZ3Q7dG1yZWdfbG9ja2AgaGFwcGVuZWQgKmFmdGVyKiB0aGUgYHB0cF9jbG9ja19yZWdpc3RlcmAgY2FsbC4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGV4cG9zZXMgdGhlIFBUUCBoYXJkd2FyZSBjbG9jayB0byB1c2Vyc3BhY2UsIGFuZCB0aGF0IHVzZXJzcGFjZSBjb2RlIGNvdWxkIGhhdmUgYXR0ZW1wdGVkIHRvIHVzZSB0aGUgdW5pbml0aWFsaXplZCBsb2NrLiBTaW5jZSB0aGUgSUdCIGRyaXZlciBpcyBlbXVsYXRlZCBpbiBRRU1VIHdpdGggdGhlIEludGVsIDgyNTc2IEdiRSBhbmQgY2FuIGJlIGZ1enplZCB0aHJvdWdoIFBUUCBjbG9jayBhbmQgbmV0d29yayB0aW1lc3RhbXBpbmcgaW50ZXJmYWNlcywgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpBbHJpZ2h0LCB0aGF0JiMzOTtzIGFsbCBJIG5lZWRlZC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJR0ImIzM0OywKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1BUUF8xNTg4X0NMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdiX3B0cF9pbml0JiMzNDssCiAgICAmIzM0O3B0cF9jbG9ja19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX3Jlc2V0JiMzNDssCiAgICAmIzM0O2lnYl9wdHBfaHd0c3RhbXBfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGluaXRpYWxpemF0aW9uIG9yZGVyaW5nIGJ1ZyBpbiB0aGUgSW50ZWwgaWdiIGRyaXZlciBieSBpbml0aWFsaXppbmcgdGhlIGFkYXB0ZXImIzM5O3MgdG1yZWdfbG9jayBzcGlubG9jayBiZWZvcmUgY2FsbGluZyBwdHBfY2xvY2tfcmVnaXN0ZXIoKS4gUHJpb3IgdG8gdGhpcyBmaXgsIHJlZ2lzdGVyaW5nIHRoZSBQVFAgY2xvY2sgZXhwb3NlZCBjYWxsYmFja3MgdG8gdXNlcnNwYWNlL3N1YnN5c3RlbXMgYW5kIGlnYl9wdHBfcmVzZXQoKSB0aGF0IGFjcXVpcmUgdG1yZWdfbG9jayBiZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLiBpZ2IgaXMgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIGFuZCBQVFAgY2xvY2sgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZXhlcmNpc2VkIHZpYSBQT1NJWCBjbG9jayBhbmQgUFRQIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUdCJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtQVFBfMTU4OF9DTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnYl9wdHBfaW5pdCYjMzQ7LAogICAgJiMzNDtwdHBfY2xvY2tfcmVnaXN0ZXImIzM0OywKICAgICYjMzQ7aWdiX3B0cF9yZXNldCYjMzQ7LAogICAgJiMzNDtpZ2JfcHRwX2h3dHN0YW1wX3NldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBidWcgaW4gdGhlIEludGVsIGlnYiBkcml2ZXIgYnkgaW5pdGlhbGl6aW5nIHRoZSBhZGFwdGVyJiMzOTtzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYGFkYXB0ZXItXHUwMDNldG1yZWdfbG9ja2Agc3BpbmxvY2sgYmVmb3JlIGBwdHBfY2xvY2tfcmVnaXN0ZXIoKWAgdG8gZW5zdXJlIHRoZSBsb2NrIGlzIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgUFRQIGNsb2NrIGRldmljZSBpcyByZWdpc3RlcmVkIGFuZCBpdHMgY2FsbGJhY2tzIGNhbiBiZSBpbnZva2VkLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBpbml0aWFsaXphdGlvbiBvcmRlciBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBhbHRlciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGJ1ZmZlciBoYW5kbGluZywgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UuIEFueSBsb2NraW5nIG9yIHVuaW5pdGlhbGl6ZWQgbG9jayBpc3N1ZXMgYXJlIGNhdWdodCBieSBzdGFuZGFyZCBkZWJ1ZyBmYWNpbGl0aWVzIChMT0NLREVQLCBDT05GSUdfREVCVUdfU1BJTkxPQ0spIGVuYWJsZWQgaW4gc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI3ZDEzZWNiODIwNDE4NTBjNWRhOWI1NzY2ZThmYmFkNmZmZjJkNDUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAzMCAxNjoyNzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jCmluZGV4IDYzOGQ4MjQyYjY2YmIuLjJhNGVhMzI3YWMzNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYwpAQCAtMTM3OCw2ICYjNDM7MTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJcmV0dXJuOwogCX0KIAomIzQzOwlzcGluX2xvY2tfaW5pdCgmYW1wO2FkYXB0ZXItJmd0O3RtcmVnX2xvY2spOwogCWFkYXB0ZXItJmd0O3B0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcigmYW1wO2FkYXB0ZXItJmd0O3B0cF9jYXBzLAogCQkJCQkJJmFtcDthZGFwdGVyLSZndDtwZGV2LSZndDtkZXYpOwogCWlmIChJU19FUlIoYWRhcHRlci0mZ3Q7cHRwX2Nsb2NrKSkgewpAQCAtMTM4OCw3ICYjNDM7MTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcikKIAkJCSBhZGFwdGVyLSZndDtuZXRkZXYtJmd0O25hbWUpOwogCQlhZGFwdGVyLSZndDtwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEOwogCi0JCXNwaW5fbG9ja19pbml0KCZhbXA7YWRhcHRlci0mZ3Q7dG1yZWdfbG9jayk7CiAJCUlOSVRfV09SSygmYW1wO2FkYXB0ZXItJmd0O3B0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspOwogCiAJCWlmIChhZGFwdGVyLSZndDtwdHBfZmxhZ3MgJmFtcDsgSUdCX1BUUF9PVkVSRkxPV19DSEVDSykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY2AsIHNwZWNpZmljYWxseSB0aGUgYGlnYl9wdHBfaW5pdGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gY2hhbmdlIGlzIG1vdmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGBhZGFwdGVyLSZndDt0bXJlZ19sb2NrYCBzcGlubG9jay4gQ3VycmVudGx5LCBgc3Bpbl9sb2NrX2luaXQoJmFtcDthZGFwdGVyLSZndDt0bXJlZ19sb2NrKTtgIGlzIHBsYWNlZCAqYmVmb3JlKiB0aGUgYHB0cF9jbG9ja19yZWdpc3RlciguLi4pYCBjYWxsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaHkgdGhlIHJlb3JkZXJpbmc/JiMzNDsgV2hhdCYjMzk7cyB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1vdmU/IEFyZSB0aGVyZSBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgdGhpcyBpcyB0cnlpbmcgdG8gYWRkcmVzcz8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gb3BlcmF0aW9ucyBhbmQgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgYW55IHBvdGVudGlhbCBjb25jdXJyZW50IGFjY2VzcyB0byBgYWRhcHRlcmAmIzM5O3MgbWVtYmVycyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGUgYHRtcmVnX2xvY2tgIGlzIHVzZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgUFRQIGNsb2NrIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBkaWdnaW5nIGludG8gYGlnYl9wdHBfaW5pdGAgaXRzZWxmIHVzaW5nIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBzZWUgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbi4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBhbmQgaG93IHRoZSBgdG1yZWdfbG9ja2AgaXMgdXNlZCBmcm9tIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB3aGF0IHNvcnQgb2YgZWZmZWN0cyB0aGlzIGhhcyB0byB0aGUgaW50ZWdyaXR5IG9mIHRoZSBjb2RlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gaW4gZHJpdmVycywgYnV0IGFueSBjaGFuZ2UgdG8gbG9ja2luZyBzdHJhdGVnaWVzIGRlc2VydmVzIGNhcmVmdWwgc2NydXRpbnkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgaXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM2MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm1heF9hZGogPSA2MjQ5OTk5OTtcbjEzNjE6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX2V4dF90cyA9IElHQl9OX0VYVFRTO1xuMTM2MjpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLm5fcGVyX291dCA9IElHQl9OX1BFUk9VVDtcbjEzNjM6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5uX3BpbnMgPSBJR0JfTl9TRFA7XG4xMzY0Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc3VwcG9ydGVkX2V4dHRzX2ZsYWdzID0gUFRQX1JJU0lOR19FREdFIHxcbjEzNjU6XHRcdFx0XHRcdFx0XHRcdCAgUFRQX0ZBTExJTkdfRURHRSB8XG4xMzY2Olx0XHRcdFx0XHRcdFx0XHQgIFBUUF9TVFJJQ1RfRkxBR1M7XG4xMzY3Olx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMucHBzID0gMTtcbjEzNjg6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cdTAwM2VzZHBfY29uZmlnO1xuMTM2OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XG4xMzcwOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xuMTM3MTpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjQgPSBpZ2JfcHRwX2dldHRpbWV4X2kyMTA7XG4xMzcyOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XG4xMzczOlx0XHRcdGFkYXB0ZXItXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xuMTM3NDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLnZlcmlmeSA9IGlnYl9wdHBfdmVyaWZ5X3BpbjtcbjEzNzU6XHRcdFx0YnJlYWs7XG4xMzc2Olx0XHRkZWZhdWx0OlxuMTM3NzpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XG4xMzc4Olx0XHRcdHJldHVybjtcbjEzNzk6XHRcdH1cbjEzODA6XHRcbjEzODE6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4xMzgyOlx0XHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuMTM4MzpcdFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuMTM4NDpcdFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbjEzODU6XHRcdFx0YWRhcHRlci1cdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xuMTM4NjpcdFx0XHRkZXZfZXJyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYsIFwmIzM0O3B0cF9jbG9ja19yZWdpc3RlciBmYWlsZWRcXG5cJiMzNDspO1xuMTM4NzpcdFx0fSBlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykge1xuMTM4ODpcdFx0XHRkZXZfaW5mbyhcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDthZGRlZCBQSEMgb24gJXNcXG5cJiMzNDssXG4xMzg5Olx0XHRcdFx0IGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuMTM5MDpcdFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XG4xMzkxOlx0XG4xMzkyOlx0XHRcdElOSVRfV09SSyhcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xuMTM5MzpcdFxuMTM5NDpcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXG4xMzk1Olx0XHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2YWRhcHRlci1cdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcbjEzOTY6XHRcdFx0XHRcdFx0ICBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKTtcbjEzOTc6XHRcbjEzOTg6XHRcdFx0YWRhcHRlci1cdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9IEhXVFNUQU1QX0ZJTFRFUl9OT05FO1xuMTM5OTpcdFx0XHRhZGFwdGVyLVx1MDAzZXRzdGFtcF9jb25maWcudHhfdHlwZSA9IEhXVFNUQU1QX1RYX09GRjtcbjE0MDA6XHRcbjE0MDE6XHRcdFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcbjE0MDI6XHRcdH1cbjE0MDM6XHR9XG4xNDA0Olx0XG4xNDA1Olx0LyoqXG4xNDA2Olx0ICogaWdiX3B0cF9zZHBfaW5pdCAtIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggaW5pdHMgdGhlIFNEUCBjb25maWcgc3RydWN0c1xuMTQwNzpcdCAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cbjE0MDg6XHQgKiovXG4xNDA5Olx0dm9pZCBpZ2JfcHRwX3NkcF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzczMgoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiA0NjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTG9jayBJbml0aWFsaXphdGlvbiBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UsIHNwZWNpZmljYWxseSB0aGUgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24gYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBkcml2ZXImIzM5O3MgaW50ZXJuYWwgbG9ja2luZyBtZWNoYW5pc20sIGBhZGFwdGVyLSZndDt0bXJlZ19sb2NrYC4gSSBzZWUgdGhhdCB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gd2FzIHByZXZpb3VzbHkgZmxhd2VkOiB0aGUgc3BpbmxvY2sgd2FzbiYjMzk7dCBpbml0aWFsaXplZCAqYmVmb3JlKiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCB3YXMgY2FsbGVkLiBUaGlzIGNyZWF0ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIENhbGxiYWNrcyBsaWtlIGBpZ2JfcHRwX2FkamZpbmVfODI1ODBgIG9yIGBpZ2JfcHRwX2dldHRpbWV4X2kyMTBgIGNvdWxkIGJlIGludm9rZWQgZHVyaW5nIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcywgYW5kIGlmIHRoZXkgYWNjZXNzZWQgdGhlIHVuaW5pdGlhbGl6ZWQgbG9jaywgd2UmIzM5O2QgaGF2ZSBhIGNsYXNzaWMgJiMzNDt1c2UtYmVmb3JlLWluaXQmIzM0OyBidWcsIGxlYWRpbmcgdG8gbG9ja2RlcCBzcGxhdHMgb3IgbW9yZSBzdWJ0bGUgY29uY3VycmVuY3kgaXNzdWVzLiBBIHByZXR0eSBjb21tb24gc2NlbmFyaW8sIHJlYWxseS4KClNvLCB0aGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogbW92ZSBgc3Bpbl9sb2NrX2luaXRgIGVhcmxpZXIuIFNpbXBsZSwgYnV0IGNyaXRpY2FsLiBOb3csIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgY2hlY2sgZm9yIGFueSBzaWRlIGVmZmVjdHMgdGhpcyBjaGFuZ2UgbWlnaHQgaW50cm9kdWNlLiBMZXQmIzM5O3Mgc2VlLi4uCgpGaXJzdCwgZG9lcyB0aGlzIHBhdGNoIGluIGFueSB3YXkgdG91Y2ggb3IgbW9kaWZ5IGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBnZXQgZXhwb3NlZCB0byB1c2VyIHNwYWNlPyBObywgbm90IHRoYXQgSSBjYW4gdGVsbC4KClNlY29uZCwgZG9lcyB0aGUgY2hhbmdlIGludHJvZHVjZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgbWlnaHQgZGVwZW5kIG9uIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/IE5vLCBJIGRvbiYjMzk7dCBzZWUgYW55dGhpbmcgbGlrZSB0aGF0LgoKVGhpcmQsIGFyZSBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgYWxsb2NhdGVkIHdoZXJlIHdlIG1pZ2h0IGluYWR2ZXJ0ZW50bHkgcmVhZCB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8sIHRoZSBzcGlubG9jayBpdHNlbGYgaXMgaW5pdGlhbGl6ZWQuCgpGb3VydGgsIGFyZSB3ZSBtb2RpZnlpbmcgYW55IGJvdW5kcyBjaGVja3Mgb3IgcmVsYXRlZCBsb2dpYyB0aGF0IGNvdWxkIGxlYWQgdG8gYWNjZXNzaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBOby4gRXZlcnl0aGluZyBzZWVtcyBzYWZlLgoKRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhpcyByZWFsbHkgc2hvdWxkbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcyBmcm9tIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBlcnNwZWN0aXZlLiBJIGRvbiYjMzk7dCBzZWUgYW55IGV4cG9zZWQgdW5pbml0aWFsaXplZCBkYXRhIHJlYWRzIHRvIHVzZXIgc3BhY2UuIEl0IGp1c3QgZml4ZXMgdGhlIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcuIFRoZSBsb2NraW5nIGJ1Z3MgYXJlIGNhdWdodCBieSBMT0NLREVQIGFuZCBzcGlubG9jayBkZWJ1Z2dpbmcg4oCTIHN0YW5kYXJkIGRlYnVnIGtlcm5lbHMgd2l0aCBDT05GSUdfREVCVUdfU1BJTkxPQ0sgYW5kIENPTkZJR19QUk9WRV9MT0NLSU5HIGVuYWJsZWQuCgpDb25zaWRlcmluZyBhbGwgb2YgdGhpcywgdGhlcmUmIzM5O3Mgbm8ganVzdGlmaWNhdGlvbiBmb3Igc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gYHRydWVgLiBLTVNBTiYjMzk7cyBwdXJwb3NlIGlzIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSAqcmVhZHMqLCB3aGljaCB3ZSBkb24mIzM5O3QgaGF2ZSBoZXJlLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBkZXRlY3QgdmFsdWVzIGJlaW5nIHVzZWQgaW4gY29udHJvbCBmbG93LCBvciBsZWFrZWQgdG8gdXNlcnNwYWNlLCBub25lIG9mIHdoaWNoIGFwcGx5IGhlcmUuIEtNU0FOJiMzOTtzIG5vdCB0aGUgcmlnaHQgdG9vbCBmb3IgZml4aW5nIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVncyDigJMgdGhlc2UgYXJlIGZvdW5kIHdpdGggbG9ja2RlcCBhbmQgc3BpbmxvY2sgZGVidWdnaW5nLgoKQWxyaWdodCwgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGFzc2Vzc21lbnQuIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6MDEuNTI4MjkzNTU3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyODYyMzAxNDAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklHQlwiLFxuICAgIFwiUENJXCIsXG4gICAgXCJQVFBfMTU4OF9DTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlnYl9wdHBfaW5pdFwiLFxuICAgIFwicHRwX2Nsb2NrX3JlZ2lzdGVyXCIsXG4gICAgXCJpZ2JfcHRwX3Jlc2V0XCIsXG4gICAgXCJpZ2JfcHRwX2h3dHN0YW1wX3NldFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBidWcgaW4gdGhlIEludGVsIGlnYiBkcml2ZXIgYnkgaW5pdGlhbGl6aW5nIHRoZSBhZGFwdGVyJ3MgdG1yZWdfbG9jayBzcGlubG9jayBiZWZvcmUgY2FsbGluZyBwdHBfY2xvY2tfcmVnaXN0ZXIoKS4gUHJpb3IgdG8gdGhpcyBmaXgsIHJlZ2lzdGVyaW5nIHRoZSBQVFAgY2xvY2sgZXhwb3NlZCBjYWxsYmFja3MgdG8gdXNlcnNwYWNlL3N1YnN5c3RlbXMgYW5kIGlnYl9wdHBfcmVzZXQoKSB0aGF0IGFjcXVpcmUgdG1yZWdfbG9jayBiZWZvcmUgaXQgd2FzIGluaXRpYWxpemVkLiBpZ2IgaXMgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIGFuZCBQVFAgY2xvY2sgZnVuY3Rpb25hbGl0eSBjYW4gYmUgZXhlcmNpc2VkIHZpYSBQT1NJWCBjbG9jayBhbmQgUFRQIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6MDEuNTI4MzAwMjI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTU0ODc4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyN2QxM2VjYjgyMDQxODUwYzVkYTliNTc2NmU4ZmJhZDZmZmYyZDQ1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDMwIDE2OjI3OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXFxuaW5kZXggNjM4ZDgyNDJiNjZiYi4uMmE0ZWEzMjdhYzM1ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xcbkBAIC0xMzc4LDYgKzEzNzgsNyBAQCB2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXG4rXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2spO1xcbiBcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2KTtcXG4gXFx0aWYgKElTX0VSUihhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2spKSB7XFxuQEAgLTEzODgsNyArMTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XFxuIFxcbi1cXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWRhcHRlci1cXHUwMDNldG1yZWdfbG9jayk7XFxuIFxcdFxcdElOSVRfV09SSyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcHRwX3R4X3dvcmssIGlnYl9wdHBfdHhfd29yayk7XFxuIFxcbiBcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcHRwX2ZsYWdzIFxcdTAwMjYgSUdCX1BUUF9PVkVSRkxPV19DSEVDSylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6MDEuOTQ0NTg5MDk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2NjAxMzU1ODU0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUdCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdiX3B0cF9pbml0XCIsXG4gICAgXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgICBcImlnYl9wdHBfcmVzZXRcIixcbiAgICBcImlnYl9wdHBfaHd0c3RhbXBfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVnIGluIHRoZSBJbnRlbCBpZ2IgZHJpdmVyIGJ5IGluaXRpYWxpemluZyB0aGUgYWRhcHRlcidzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3ZDEzZWNiODIwNDE4NTBjNWRhOWI1NzY2ZThmYmFkNmZmZjJkNDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAzMCAxNjoyNzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jXG5pbmRleCA2MzhkODI0MmI2NmJiLi4yYTRlYTMyN2FjMzVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xuQEAgLTEzNzgsNiArMTM3OCw3IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0cmV0dXJuO1xuIFx0fVxuIFxuK1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKTtcbiBcdGFkYXB0ZXItXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFx1MDAyNmFkYXB0ZXItXHUwMDNlcHRwX2NhcHMsXG4gXHRcdFx0XHRcdFx0XHUwMDI2YWRhcHRlci1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4gXHRpZiAoSVNfRVJSKGFkYXB0ZXItXHUwMDNlcHRwX2Nsb2NrKSkge1xuQEAgLTEzODgsNyArMTM4OSw2IEBAIHZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcbiBcdFx0XHQgYWRhcHRlci1cdTAwM2VuZXRkZXYtXHUwMDNlbmFtZSk7XG4gXHRcdGFkYXB0ZXItXHUwMDNlcHRwX2ZsYWdzIHw9IElHQl9QVFBfRU5BQkxFRDtcbiBcbi1cdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKTtcbiBcdFx0SU5JVF9XT1JLKFx1MDAyNmFkYXB0ZXItXHUwMDNlcHRwX3R4X3dvcmssIGlnYl9wdHBfdHhfd29yayk7XG4gXG4gXHRcdGlmIChhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyBcdTAwMjYgSUdCX1BUUF9PVkVSRkxPV19DSEVDSylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI3OjAxLjk0NDU5MDk1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3MDY1NDQ1NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSUdCIFBUUCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggYW5kIHdoYXQgaXQncyB0cnlpbmcgdG8gYWNoaWV2ZS4gVGhlIGRpZmYgcG9pbnRzIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jYCwgd2hpY2ggaXMgdGhlIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyJ3MgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgY29tcG9uZW50LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGFkZGluZyBhIGBzcGluX2xvY2tfaW5pdGAgY2FsbCBmb3IgYGFkYXB0ZXItXHUwMDNldG1yZWdfbG9ja2AuIFByZXR0eSBzdHJhaWdodGZvcndhcmQsIGxvb2tzIGxpa2UgYSBzeW5jaHJvbml6YXRpb24gZml4IHJlbGF0ZWQgdG8gdGhlIFBUUCBjbG9jayBpbml0aWFsaXphdGlvbi5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGZvciBmdXp6aW5nIGlzOiBpcyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGUgaW4gYSBmdXp6aW5nIGNvbnRleHQ/IFRoaXMgZHJpdmVyLCBgaWdiYCwgaGFzIHRvIGJlIGVtdWxhdGVkIGluIHRoZSBlbnZpcm9ubWVudC4gSSByZW1lbWJlciBzZWVpbmcgYGlnYmAgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGRldmljZXMgaW4gUUVNVSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIFFFTVUgZG9jdW1lbnRhdGlvbiBvciByZWxldmFudCBndWlkZWxpbmVzIHRvIGNvbmZpcm0uIFRoZSBydWxlIGlzLCBjb2RlIHBhdGhzIG5vdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFyZW4ndCB3b3J0aCBmdXp6aW5nLlxuXG5JIHJlY2FsbCBRRU1VIGFkZGVkIGBpZ2JgIHN1cHBvcnQgaW4gdmVyc2lvbiA4LjAsIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZSBlbXVsYXRlZC4gQnV0IHRoZSBrZXkgcXVlc3Rpb24gaXMsICpob3cqIGlzIGBpZ2JfcHRwX2luaXRgIGNhbGxlZD8gSXMgaXQgb25seSBjYWxsZWQgZHVyaW5nIHRoZSBwcm9iZSBvcGVyYXRpb24/IElmIGl0J3Mgb25seSBjYWxsZWQgd2hlbiBhIGRldmljZSBpcyBmaXJzdCBpbml0aWFsaXplZCwgdGhlbiBpdCBpcyBub3QgaWRlYWwgZm9yIGZ1enppbmcuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBgaWdiX3B0cF9pbml0YCB0byBjb25maXJtIHRoYXQgaXQncyBjYWxsZWQgYXQgb3RoZXIgdGltZXMgdG8gbWFrZSBpdCB3b3J0aCBmdXp6aW5nLiBJJ2xsIHJlYWNoIGZvciBteSB0b29scyB0byB0cmFjayBkb3duIHRoZSBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6NDkuMDEwMDM5OTE1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDA4Mjg1ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWdiX3B0cF9pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3Njg6dm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzY5LXZvaWQgaWdiX3B0cF9zdG9wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMjA0PXN0YXRpYyBpbnQgaWdiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cXHQvKiBkbyBodyB0c3RhbXAgaW5pdCBhZnRlciByZXNldHRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozNTg2OlxcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjk4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjc6NTAuNjUwODc0NzczWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDAzMDEzNzkzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIENvZGUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBpZ2JfcHRwLmNgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMzc4LiBUaGF0J3MgdXN1YWxseSB3aGVyZSB0aGUgaGVhcnQgb2Ygc29tZSBjcml0aWNhbCBQVFAgZnVuY3Rpb25hbGl0eSByZXNpZGVzIGluIHRoZSBJR0IgZHJpdmVyLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aW1lc3RhbXBpbmcsIHBlcmhhcHMgaGFuZGxpbmcgb2YgaGFyZHdhcmUgdGltZXN0YW1wcywgb3IgbWF5YmUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFBUUCBjbG9jayBpdHNlbGYuIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGFueXRoaW5nIHRoYXQgY291bGQgaW1wYWN0IHRoZSBhY2N1cmFjeSBhbmQgZWZmaWNpZW5jeSBvZiB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGRyaXZlci4gSSdtIGhvcGluZyB0byBpZGVudGlmeSBhbnkgc3VidGxlIGVkZ2UgY2FzZXMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE4LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjg6MzAuOTUyMjU2ODI2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM2MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5tYXhfYWRqID0gNjI0OTk5OTk7XFxuMTM2MTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5uX2V4dF90cyA9IElHQl9OX0VYVFRTO1xcbjEzNjI6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMubl9wZXJfb3V0ID0gSUdCX05fUEVST1VUO1xcbjEzNjM6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMubl9waW5zID0gSUdCX05fU0RQO1xcbjEzNjQ6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc3VwcG9ydGVkX2V4dHRzX2ZsYWdzID0gUFRQX1JJU0lOR19FREdFIHxcXG4xMzY1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgUFRQX0ZBTExJTkdfRURHRSB8XFxuMTM2NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFBUUF9TVFJJQ1RfRkxBR1M7XFxuMTM2NzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5wcHMgPSAxO1xcbjEzNjg6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMucGluX2NvbmZpZyA9IGFkYXB0ZXItXFx1MDAzZXNkcF9jb25maWc7XFxuMTM2OTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGpmaW5lID0gaWdiX3B0cF9hZGpmaW5lXzgyNTgwO1xcbjEzNzA6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV9pMjEwO1xcbjEzNzE6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZ2V0dGltZXg2NCA9IGlnYl9wdHBfZ2V0dGltZXhfaTIxMDtcXG4xMzcyOlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLnNldHRpbWU2NCA9IGlnYl9wdHBfc2V0dGltZV9pMjEwO1xcbjEzNzM6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV9pMjEwO1xcbjEzNzQ6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMudmVyaWZ5ID0gaWdiX3B0cF92ZXJpZnlfcGluO1xcbjEzNzU6XFx0XFx0XFx0YnJlYWs7XFxuMTM3NjpcXHRcXHRkZWZhdWx0OlxcbjEzNzc6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2Nsb2NrID0gTlVMTDtcXG4xMzc4OlxcdFxcdFxcdHJldHVybjtcXG4xMzc5OlxcdFxcdH1cXG4xMzgwOlxcdFxcbjEzODE6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2spO1xcbjEzODI6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfY2FwcyxcXG4xMzgzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbjEzODQ6XFx0XFx0aWYgKElTX0VSUihhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2spKSB7XFxuMTM4NTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xcbjEzODY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwicHRwX2Nsb2NrX3JlZ2lzdGVyIGZhaWxlZFxcXFxuXFxcIik7XFxuMTM4NzpcXHRcXHR9IGVsc2UgaWYgKGFkYXB0ZXItXFx1MDAzZXB0cF9jbG9jaykge1xcbjEzODg6XFx0XFx0XFx0ZGV2X2luZm8oXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcImFkZGVkIFBIQyBvbiAlc1xcXFxuXFxcIixcXG4xMzg5OlxcdFxcdFxcdFxcdCBhZGFwdGVyLVxcdTAwM2VuZXRkZXYtXFx1MDAzZW5hbWUpO1xcbjEzOTA6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2ZsYWdzIHw9IElHQl9QVFBfRU5BQkxFRDtcXG4xMzkxOlxcdFxcbjEzOTI6XFx0XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcXG4xMzkzOlxcdFxcbjEzOTQ6XFx0XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZXB0cF9mbGFncyBcXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXFxuMTM5NTpcXHRcXHRcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcHRwX292ZXJmbG93X3dvcmssXFxuMTM5NjpcXHRcXHRcXHRcXHRcXHRcXHQgIGlnYl9wdHBfb3ZlcmZsb3dfY2hlY2spO1xcbjEzOTc6XFx0XFxuMTM5ODpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2V0c3RhbXBfY29uZmlnLnJ4X2ZpbHRlciA9IEhXVFNUQU1QX0ZJTFRFUl9OT05FO1xcbjEzOTk6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNldHN0YW1wX2NvbmZpZy50eF90eXBlID0gSFdUU1RBTVBfVFhfT0ZGO1xcbjE0MDA6XFx0XFxuMTQwMTpcXHRcXHRcXHRpZ2JfcHRwX3Jlc2V0KGFkYXB0ZXIpO1xcbjE0MDI6XFx0XFx0fVxcbjE0MDM6XFx0fVxcbjE0MDQ6XFx0XFxuMTQwNTpcXHQvKipcXG4xNDA2OlxcdCAqIGlnYl9wdHBfc2RwX2luaXQgLSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGluaXRzIHRoZSBTRFAgY29uZmlnIHN0cnVjdHNcXG4xNDA3OlxcdCAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cXG4xNDA4OlxcdCAqKi9cXG4xNDA5OlxcdHZvaWQgaWdiX3B0cF9zZHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI4OjMwLjk1MjM3NzE5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc5MjExMzIwNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSUdCIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiB0aGUgYGlnYmAgZHJpdmVyIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uLiBTcGVjaWZpY2FsbHksIHRoZSBgc3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKWAgd2FzIGJlaW5nIGluaXRpYWxpemVkICphZnRlciogYHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLCBcdTAwMjZhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlZGV2KWAuIFRoaXMgbWVhbnMgdGhhdCBpZiBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBvciBhbnkgY29uY3VycmVudCBhY2Nlc3MgdG8gdGhlIFBUUCBjbG9jayBtZXRob2RzIChsaWtlIGBhZGp0aW1lYCwgYGdldHRpbWV4YCkgd2VyZSB0byB0b3VjaCBgdG1yZWdfbG9ja2AgYmVmb3JlIGl0J3MgaW5pdGlhbGl6ZWQsIHdlIGhhdmUgYSBwcm9ibGVtLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2Ugc3l6a2FsbGVyLCBRRU1VLCBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSkuIEl0J3MgY3J1Y2lhbCBmb3IgdGhlIGZ1enppbmcgYW5hbHlzaXMhIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyBldmVuIHJlbGV2YW50IHRvIGZ1enppbmcuIFRoZSBndWlkZWxpbmVzIHN0YXRlIG5vdCB0byBjb25zaWRlciBwYXRjaGVzIGFmZmVjdGluZyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYGlnYmAgaXMgYSBwaHlzaWNhbCBOSUMgZHJpdmVyLiAgSXMgaXQgZW11bGF0ZWQgaW4gUUVNVT8gQ2FuIGl0IGJlIHRlc3RlZCB3aXRoIHN0YW5kYXJkIHN5emthbGxlcj8gIEkga25vdyB0aGF0IFFFTVUgaGFzIGAtZGV2aWNlIGlnYmAgaW4gdmVyc2lvbiA4LjAsIGJ1dCBJIGRvbid0IGtub3cgdGhlIHN0YW5kYXJkIHN5emthbGxlciBzZXR1cC4gVHlwaWNhbGx5LCBzeXprYWxsZXIgZm9jdXNlcyBvbiB2aXJ0dWFsaXplZCBuZXR3b3JrIGRldmljZXMgbGlrZSBgdmlydGlvLW5ldGAgb3IgdGhlIGBkdW1teSBuZXRgIGRldmljZSwgYW5kIGFsc28gc3VwcG9ydHMgYHR1bmAuIEdDRSB1c2VzIGB2aXJ0aW9fbmV0YCBvciBgZ3ZlYCAoR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQpLiBCYXNlZCBvbiB0aGF0LCBJIGh5cG90aGVzaXplIHN5emthbGxlciBwcm9iYWJseSBkb2Vzbid0IHRlc3QgUENJIGRyaXZlcnMgdW5sZXNzIHRoZXkgYXJlIHZpcnR1YWxpemVkIChsaWtlIGB2aXJ0aW9gKSBvciBVU0IgZ2FkZ2V0cy5cblxuT2theSwgbGV0J3MgZm9jdXMgb24gdGhlIHdvcmRpbmcgb2YgdGhlIHByb21wdCwgc3BlY2lmaWNhbGx5OiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4uLkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVVwiLiAgVGhhdCBwaHJhc2UgaXMgdGhlIGtleS4gSXMgYGlnYmAgYSBcInZlbmRvci1zcGVjaWZpYyBQQ0llXCIgZHJpdmVyIHRoYXQgKnJlcXVpcmVzKiBwaHlzaWNhbCBoYXJkd2FyZT9cblxuQWxyaWdodCwgbGV0J3MgY29uZmlybSB0aGUgcHJvYmUgYmVoYXZpb3IuIGBpZ2JfcHRwX2luaXRgIHNlZW1zIHRvIGJlIGNhbGxlZCBPTkxZIGZyb20gYGlnYl9wcm9iZWAuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBpZ2JfcHRwX2luaXRgIGNhbiBiZSBjYWxsZWQgYXQgcnVudGltZSB0aHJvdWdoIGEgc3lzY2FsbCwgb3Igbm90LiBJZiB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXZlciBjYWxsZWQgZHVyaW5nIGRldmljZSBwcm9iZSwgdGhlbiBJJ20gbGVhbmluZyB0b3dhcmRzICpub3QqIGZ1enppbmcgaXQsIGJlY2F1c2Ugc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzIG5vdCBwcm9iZSBvciB0cmlnZ2VyIHBoeXNpY2FsIGRldmljZXMgdW5sZXNzIHRoZXkgYXJlIHNwZWNpZmljYWxseSBzZXR1cCB2aWEgc3lzZnMgb3IgUUVNVSBhbmQgUENJIGhvdHBsdWcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBgaWdiX3B0cF9pbml0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE2NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoyOTo1MC4xNjM3MDExNjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MTcwNDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYl9wdHBfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaD03Njc9dm9pZCBpZ2Jfc2V0X2Z3X3ZlcnNpb24oc3RydWN0IGlnYl9hZGFwdGVyICopO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3Njg6dm9pZCBpZ2JfcHRwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzY5LXZvaWQgaWdiX3B0cF9zdG9wKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMjA0PXN0YXRpYyBpbnQgaWdiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cXHQvKiBkbyBodyB0c3RhbXAgaW5pdCBhZnRlciByZXNldHRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozNTg2OlxcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMjgxPWludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjk4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mjk6NTAuNDk5ODgwNTc5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDIyMDQ5NzA2ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHNvbWV0aGluZyBhYm91dCBgaWdiX3B0cF9pbml0YC4gSSBiZWxpZXZlIGl0J3Mgb25seSBjYWxsZWQgd2l0aGluIGBpZ2JfcHJvYmVgLCBidXQgSSdkIGJldHRlciBiZSBjZXJ0YWluLiBTbywgSSdsbCBxdWlja2x5IGNoZWNrIHRoYXQgZnVuY3Rpb24ncyBjYWxsIGdyYXBoIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uXG5cbk5vdywgYSByZWxhdGVkIHF1ZXN0aW9uIG9jY3VycyB0byBtZTogQXJlIGBpZ2JfcHRwX3Jlc2V0YCBhbmQgYGlnYl9wdHBfc3RvcGAgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGNvZGU/IEkgc2hvdWxkIGludmVzdGlnYXRlIHdoZXJlIHRob3NlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCB0b28sIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIFBUUCBpbml0aWFsaXphdGlvbiBhbmQgc2h1dGRvd24gcHJvY2Vzcy4gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlc2UgYXJlIHV0aWxpemVkIGluIHRoZSBvdmVyYWxsIGxpZmVjeWNsZS4gVGltZSB0byBleGFtaW5lIHRoZSBjYWxsIHNpdGVzIG9mIGBpZ2JfcHRwX3N0b3BgIGFuZCBgaWdiX3B0cF9yZXNldGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMDozMi43MDQ4NTUwMzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzI3Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnYl9wdHBfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTc2Nz12b2lkIGlnYl9zZXRfZndfdmVyc2lvbihzdHJ1Y3QgaWdiX2FkYXB0ZXIgKik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc2ODp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3Njk6dm9pZCBpZ2JfcHRwX3N0b3Aoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6NzcwOnZvaWQgaWdiX3B0cF9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzE6dm9pZCBpZ2JfcHRwX3N1c3BlbmQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6NzcyOnZvaWQgaWdiX3B0cF9yeF9oYW5nKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3Mzp2b2lkIGlnYl9wdHBfdHhfaGFuZyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo3NzQ6dm9pZCBpZ2JfcHRwX3J4X3JndHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6Nzc1OmludCBpZ2JfcHRwX3J4X3BrdHN0YW1wKHN0cnVjdCBpZ2JfcV92ZWN0b3IgKnFfdmVjdG9yLCB2b2lkICp2YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzc2LVxcdFxcdFxcdGt0aW1lX3QgKnRpbWVzdGFtcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oOjc3NzppbnQgaWdiX3B0cF9od3RzdGFtcF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmgtNzc4LVxcdFxcdFxcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiLmg6Nzc5OmludCBpZ2JfcHRwX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC03ODAtXFx0XFx0XFx0IHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMjg5PXZvaWQgaWdiX3Jlc2V0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTI0NjItXFx0aWYgKGFkYXB0ZXItXFx1MDAzZXB0cF9mbGFncyBcXHUwMDI2IElHQl9QVFBfRU5BQkxFRClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyNDYzOlxcdFxcdGlnYl9wdHBfcmVzZXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjQ2NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTMwMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZ2JfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTMwNjItXFx0Lm5kb194c2tfd2FrZXVwICAgICAgICAgPSBpZ2JfeHNrX3dha2V1cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozMDYzOlxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX2dldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozMDY0OlxcdC5uZG9faHd0c3RhbXBfc2V0XFx0PSBpZ2JfcHRwX2h3dHN0YW1wX3NldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zMDY1LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0zMjA0PXN0YXRpYyBpbnQgaWdiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzU4NS1cXHQvKiBkbyBodyB0c3RhbXAgaW5pdCBhZnRlciByZXNldHRpbmcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozNTg2OlxcdGlnYl9wdHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zNTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9Mzg3MT1zdGF0aWMgdm9pZCBpZ2JfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMzg4MS1cXHRpZ2JfcmVtb3ZlX2kyYyhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzozODgyOlxcdGlnYl9wdHBfc3RvcChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0zODgzLVxcdC8qIFRoZSB3YXRjaGRvZyB0aW1lciBtYXkgYmUgcmVzY2hlZHVsZWQsIHNvIGV4cGxpY2l0bHlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTU1NjI9c3RhdGljIHZvaWQgaWdiX3dhdGNoZG9nX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNTc4Mi1cXHRpZ2Jfc3Bvb2ZfY2hlY2soYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NTc4MzpcXHRpZ2JfcHRwX3J4X2hhbmcoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NTc4NDpcXHRpZ2JfcHRwX3R4X2hhbmcoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNTc4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTg5MDk9dm9pZCBpZ2JfcHJvY2Vzc19za2JfZmllbGRzKHN0cnVjdCBpZ2JfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTg5MjAtXFx0ICAgICFpZ2JfdGVzdF9zdGF0ZXJyKHJ4X2Rlc2MsIEUxMDAwX1JYREFEVl9TVEFUX1RTSVApKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjg5MjE6XFx0XFx0aWdiX3B0cF9yeF9yZ3RzdGFtcChyeF9yaW5nLVxcdTAwM2VxX3ZlY3Rvciwgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy04OTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9OTAyNT1zdGF0aWMgaW50IGlnYl9jbGVhbl9yeF9pcnEoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIGNvbnN0IGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy05MDc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjkwNzY6XFx0XFx0XFx0dHNfaGRyX2xlbiA9IGlnYl9wdHBfcnhfcGt0c3RhbXAocnhfcmluZy1cXHUwMDNlcV92ZWN0b3IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtOTA3Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcGt0YnVmLCBcXHUwMDI2dGltZXN0YW1wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTk0OTQ9c3RhdGljIGludCBfX2lnYl9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgYm9vbCAqZW5hYmxlX3dha2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy05NTA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjk1MTA6XFx0aWdiX3B0cF9zdXNwZW5kKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTk1MTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzI6c3RhdGljIHZvaWQgaWdiX3B0cF90eF9od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzM6c3RhdGljIHZvaWQgaWdiX3B0cF9zZHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NS0vKiBTWVNUSU0gcmVhZCBhY2Nlc3MgZm9yIHRoZSA4MjU3NiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzY6c3RhdGljIHU2NCBpZ2JfcHRwX3JlYWRfODI1NzYoc3RydWN0IGN5Y2xlY291bnRlciAqY2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkyLS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgdGhlIDgyNTgwICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5MzpzdGF0aWMgdTY0IGlnYl9wdHBfcmVhZF84MjU4MChzdHJ1Y3QgY3ljbGVjb3VudGVyICpjYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTE0LS8qIFNZU1RJTSByZWFkIGFjY2VzcyBmb3IgSTIxMC9JMjExICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMTU6c3RhdGljIHZvaWQgaWdiX3B0cF9yZWFkX2kyMTAoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTE2LVxcdFxcdFxcdCAgICAgIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMzOnN0YXRpYyB2b2lkIGlnYl9wdHBfd3JpdGVfaTIxMChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzQtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ2OiAqIGlnYl9wdHBfc3lzdGltX3RvX2h3dHN0YW1wIC0gY29udmVydCBzeXN0ZW0gdGltZSB2YWx1ZSB0byBodyB0aW1lc3RhbXBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0Ny0gKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTYxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE2MjpzdGF0aWMgdm9pZCBpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNjMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqaHd0c3RhbXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xOTMtLyogUFRQIGNsb2NrIG9wZXJhdGlvbnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE5NDpzdGF0aWMgaW50IGlnYl9wdHBfYWRqZmluZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgbG9uZyBzY2FsZWRfcHBtKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTk1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjA4OnN0YXRpYyBpbnQgaWdiX3B0cF9hZGpmaW5lXzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBsb25nIHNjYWxlZF9wcG0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyMjg6c3RhdGljIGludCBpZ2JfcHRwX2FkanRpbWVfODI1NzYoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIyOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI0MTpzdGF0aWMgaW50IGlnYl9wdHBfYWRqdGltZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCBzNjQgZGVsdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNTA6XFx0aWdiX3B0cF9yZWFkX2kyMTAoaWdiLCBcXHUwMDI2bm93KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI1MS1cXHRub3cgPSB0aW1lc3BlYzY0X2FkZChub3csIHRoZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjUyOlxcdGlnYl9wdHBfd3JpdGVfaTIxMChpZ2IsIChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqKVxcdTAwMjZub3cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNTk6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjYwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHRpbWVzcGVjNjQgKnRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyODY6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjg3LVxcdFxcdFxcdFxcdCAgc3RydWN0IHRpbWVzcGVjNjQgKnRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozMTQ6c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4X2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMTUtXFx0XFx0XFx0XFx0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzM2OnN0YXRpYyBpbnQgaWdiX3B0cF9zZXR0aW1lXzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzM3LVxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjM1NTpzdGF0aWMgaW50IGlnYl9wdHBfc2V0dGltZV9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzU2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzY0OlxcdGlnYl9wdHBfd3JpdGVfaTIxMChpZ2IsIHRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9NDIzPXN0YXRpYyB2b2lkIGlnYl9waW5fcGVyb3V0KHN0cnVjdCBpZ2JfYWRhcHRlciAqaWdiLCBpbnQgY2hhbiwgaW50IHBpbiwgaW50IGZyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjQ4OTpzdGF0aWMgaW50IGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy00OTAtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHB0cF9jbG9ja19yZXF1ZXN0ICpycSwgaW50IG9uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo2NDA6c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02NDEtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Nzc5OnN0YXRpYyBpbnQgaWdiX3B0cF9mZWF0dXJlX2VuYWJsZShzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc4MC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBwdHBfY2xvY2tfcmVxdWVzdCAqcnEsIGludCBvbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6Nzg1OnN0YXRpYyBpbnQgaWdiX3B0cF92ZXJpZnlfcGluKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLCB1bnNpZ25lZCBpbnQgcGluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzg2LVxcdFxcdFxcdCAgICAgIGVudW0gcHRwX3Bpbl9mdW5jdGlvbiBmdW5jLCB1bnNpZ25lZCBpbnQgY2hhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzk5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODAwOiAqIGlnYl9wdHBfdHhfd29ya1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODAxLSAqIEB3b3JrOiBwb2ludGVyIHRvIHdvcmsgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwNS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4MDY6c3RhdGljIHZvaWQgaWdiX3B0cF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgwNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzMS1cXHRpZiAodHN5bmN0eGN0bCBcXHUwMDI2IEUxMDAwX1RTWU5DVFhDVExfVkFMSUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4MzI6XFx0XFx0aWdiX3B0cF90eF9od3RzdGFtcChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzMy1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjgzODpzdGF0aWMgdm9pZCBpZ2JfcHRwX292ZXJmbG93X2NoZWNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTgzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg1My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjg1NDogKiBpZ2JfcHRwX3J4X2hhbmcgLSBkZXRlY3QgZXJyb3IgY2FzZSB3aGVuIFJ4IHRpbWVzdGFtcCByZWdpc3RlcnMgbGF0Y2hlZFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODU1LSAqIEBhZGFwdGVyOiBwcml2YXRlIG5ldHdvcmsgYWRhcHRlciBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODYxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjg2Mjp2b2lkIGlnYl9wdHBfcnhfaGFuZyhzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04OTQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo4OTU6ICogaWdiX3B0cF90eF9oYW5nIC0gZGV0ZWN0IGVycm9yIGNhc2Ugd2hlcmUgVHggdGltZXN0YW1wIG5ldmVyIGZpbmlzaGVzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy04OTYtICogQGFkYXB0ZXI6IHByaXZhdGUgbmV0d29yayBhZGFwdGVyIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtODk3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6ODk4OnZvaWQgaWdiX3B0cF90eF9oYW5nKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTg5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkyOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjkyOTogKiBpZ2JfcHRwX3R4X2h3dHN0YW1wIC0gdXRpbGl0eSBmdW5jdGlvbiB3aGljaCBjaGVja3MgZm9yIFRYIHRpbWUgc3RhbXBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkzMC0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTkzNS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5MzY6c3RhdGljIHZvaWQgaWdiX3B0cF90eF9od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy05NDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5NDc6XFx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgXFx1MDAyNnNoaHd0c3RhbXBzLCByZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTQ4LVxcdC8qIGFkanVzdCB0aW1lc3RhbXAgZm9yIHRoZSBUWCBsYXRlbmN5IGJhc2VkIG9uIGxpbmsgc3BlZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTc5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6OTgwOiAqIGlnYl9wdHBfcnhfcGt0c3RhbXAgLSByZXRyaWV2ZSBSeCBwZXIgcGFja2V0IHRpbWVzdGFtcFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTgxLSAqIEBxX3ZlY3RvcjogUG9pbnRlciB0byBpbnRlcnJ1cHQgc3BlY2lmaWMgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTk5MC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo5OTE6aW50IGlnYl9wdHBfcnhfcGt0c3RhbXAoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIHZvaWQgKnZhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtOTkyLVxcdFxcdFxcdGt0aW1lX3QgKnRpbWVzdGFtcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTAxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwMTI6XFx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgXFx1MDAyNnRzLCBsZTY0X3RvX2NwdShyZWd2YWxbMV0pKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwMzQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMDM1OiAqIGlnYl9wdHBfcnhfcmd0c3RhbXAgLSByZXRyaWV2ZSBSeCB0aW1lc3RhbXAgc3RvcmVkIGluIHJlZ2lzdGVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDM2LSAqIEBxX3ZlY3RvcjogUG9pbnRlciB0byBpbnRlcnJ1cHQgc3BlY2lmaWMgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwNDEtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTA0Mjp2b2lkIGlnYl9wdHBfcnhfcmd0c3RhbXAoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMDQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwNjg6XFx0aWdiX3B0cF9zeXN0aW1fdG9faHd0c3RhbXAoYWRhcHRlciwgc2tiX2h3dHN0YW1wcyhza2IpLCByZWd2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTA5My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEwOTQ6ICogaWdiX3B0cF9od3RzdGFtcF9nZXQgLSBnZXQgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBjb25maWdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEwOTUtICogQG5ldGRldjogbmV0ZGV2IHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTAxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjExMDI6aW50IGlnYl9wdHBfaHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTAzLVxcdFxcdFxcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTEyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTExMzogKiBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZSAtIHNldHVwIGhhcmR3YXJlIGZvciB0aW1lc3RhbXBpbmdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExMTQtICogQGFkYXB0ZXI6IG5ldHdvcmtpbmcgZGV2aWNlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMTI4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTEyOTpzdGF0aWMgaW50IGlnYl9wdHBfc2V0X3RpbWVzdGFtcF9tb2RlKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTExMzAtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGtlcm5lbF9od3RzdGFtcF9jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI3NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyNzY6ICogaWdiX3B0cF9od3RzdGFtcF9zZXQgLSBzZXQgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBjb25maWdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEyNzctICogQG5ldGRldjogbmV0ZGV2IHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjgwLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEyODE6aW50IGlnYl9wdHBfaHd0c3RhbXBfc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjgyLVxcdFxcdFxcdCBzdHJ1Y3Qga2VybmVsX2h3dHN0YW1wX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI4ODpcXHRlcnIgPSBpZ2JfcHRwX3NldF90aW1lc3RhbXBfbW9kZShhZGFwdGVyLCBjb25maWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTI4OS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMjk4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTI5OTogKiBpZ2JfcHRwX2luaXQgLSBJbml0aWFsaXplIFBUUCBmdW5jdGlvbmFsaXR5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzAwLSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMwNTp2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMxNi1cXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5wcHMgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxNzpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGpmaW5lID0gaWdiX3B0cF9hZGpmaW5lXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxODpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGp0aW1lID0gaWdiX3B0cF9hZGp0aW1lXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMxOTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5nZXR0aW1leDY0ID0gaWdiX3B0cF9nZXR0aW1leF84MjU3NjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMjA6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5lbmFibGUgPSBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTMyMjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTc2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTMyMy1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5tYXNrID0gQ1lDTEVDT1VOVEVSX01BU0soNjQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzMwLVxcdGNhc2UgZTEwMDBfaTM1MDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzMzE6XFx0XFx0aWdiX3B0cF9zZHBfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzMzItXFx0XFx0c25wcmludGYoYWRhcHRlci1cXHUwMDNlcHRwX2NhcHMubmFtZSwgMTYsIFxcXCIlcG1cXFwiLCBuZXRkZXYtXFx1MDAzZWRldl9hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM0Mi1cXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cXHUwMDNlc2RwX2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDM6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuYWRqZmluZSA9IGlnYl9wdHBfYWRqZmluZV84MjU4MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDQ6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuYWRqdGltZSA9IGlnYl9wdHBfYWRqdGltZV84MjU3NjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDU6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZ2V0dGltZXg2NCA9IGlnYl9wdHBfZ2V0dGltZXhfODI1ODA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzQ2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLnNldHRpbWU2NCA9IGlnYl9wdHBfc2V0dGltZV84MjU3NjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDc6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZW5hYmxlID0gaWdiX3B0cF9mZWF0dXJlX2VuYWJsZV84MjU4MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNDg6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMudmVyaWZ5ID0gaWdiX3B0cF92ZXJpZnlfcGluO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM0OTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5yZWFkID0gaWdiX3B0cF9yZWFkXzgyNTgwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1MC1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjYy5tYXNrID0gQ1lDTEVDT1VOVEVSX01BU0soSUdCX05CSVRTXzgyNTgwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM1Ni1cXHRjYXNlIGUxMDAwX2kyMTE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzU3OlxcdFxcdGlnYl9wdHBfc2RwX2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xMzU4LVxcdFxcdHNucHJpbnRmKGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLm5hbWUsIDE2LCBcXFwiJXBtXFxcIiwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzNjgtXFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMucGluX2NvbmZpZyA9IGFkYXB0ZXItXFx1MDAzZXNkcF9jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzY5OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzcwOlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmFkanRpbWUgPSBpZ2JfcHRwX2FkanRpbWVfaTIxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzE6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuZ2V0dGltZXg2NCA9IGlnYl9wdHBfZ2V0dGltZXhfaTIxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzI6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxMzczOlxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmVuYWJsZSA9IGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfaTIxMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzNzQ6XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMudmVyaWZ5ID0gaWdiX3B0cF92ZXJpZnlfcGluO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM3NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzOTI6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfdHhfd29yaywgaWdiX3B0cF90eF93b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTEzOTUtXFx0XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9vdmVyZmxvd193b3JrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTM5NjpcXHRcXHRcXHRcXHRcXHQgIGlnYl9wdHBfb3ZlcmZsb3dfY2hlY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM5Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0MDE6XFx0XFx0aWdiX3B0cF9yZXNldChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDA1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQwNjogKiBpZ2JfcHRwX3NkcF9pbml0IC0gdXRpbGl0eSBmdW5jdGlvbiB3aGljaCBpbml0cyB0aGUgU0RQIGNvbmZpZyBzdHJ1Y3RzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDA3LSAqIEBhZGFwdGVyOiBCb2FyZCBwcml2YXRlIHN0cnVjdHVyZS5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MDgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQwOTp2b2lkIGlnYl9wdHBfc2RwX2luaXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQxMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjItLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDIzOiAqIGlnYl9wdHBfc3VzcGVuZCAtIERpc2FibGUgUFRQIHdvcmsgaXRlbXMgYW5kIHByZXBhcmUgZm9yIHN1c3BlbmRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjQtICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MjgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDI5OnZvaWQgaWdiX3B0cF9zdXNwZW5kKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0MzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDQ1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ0NjogKiBpZ2JfcHRwX3N0b3AgLSBEaXNhYmxlIFBUUCBkZXZpY2UgYW5kIHN0b3AgdGhlIG92ZXJmbG93IGNoZWNrLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ0Ny0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NTAtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ1MTp2b2lkIGlnYl9wdHBfc3RvcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NTM6XFx0aWdiX3B0cF9zdXNwZW5kKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ2My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NjQ6ICogaWdiX3B0cF9yZXNldCAtIFJlLWVuYWJsZSB0aGUgYWRhcHRlciBmb3IgUFRQIGZvbGxvd2luZyBhIHJlc2V0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ2NS0gKiBAYWRhcHRlcjogQm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NjgtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MTQ2OTp2b2lkIGlnYl9wdHBfcmVzZXQoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NzQtXFx0LyogcmVzZXQgdGhlIHRzdGFtcF9jb25maWcgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE0NzU6XFx0aWdiX3B0cF9zZXRfdGltZXN0YW1wX21vZGUoYWRhcHRlciwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRzdGFtcF9jb25maWcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTQ3Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUwNS1cXHRcXHRrdGltZV9nZXRfcmVhbF90czY0KFxcdTAwMjZ0cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNTA2OlxcdFxcdGlnYl9wdHBfd3JpdGVfaTIxMChhZGFwdGVyLCBcXHUwMDI2dHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUwNy1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl94c2suYz0zNDE9aW50IGlnYl9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGlnYl9xX3ZlY3RvciAqcV92ZWN0b3IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jOjM4MzpcXHRcXHRcXHR0c19oZHJfbGVuID0gaWdiX3B0cF9yeF9wa3RzdGFtcChyeF9yaW5nLVxcdTAwM2VxX3ZlY3RvcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3hzay5jLTM4NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgeGRwLVxcdTAwM2VkYXRhLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMDozMi43NTI1ODY4MTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzEwMTYxNjEyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBLY29uZmlnIGZvciBJR0IqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gY29uZmlndXJlIHNvbWV0aGluZywgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgSW50ZWwgR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIuIFRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUgZm9yIGFueSBrZXJuZWwgY29uZmlndXJhdGlvbiBvciBkcml2ZXItcmVsYXRlZCB3b3JrLiBJJ2xsIG5lZWQgdG8gdmVyaWZ5IHRoZSBJR0IgZHJpdmVyJ3MgYXZhaWxhYmlsaXR5LCBjaGVjayBpZiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIHNlZSB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZXhwb3NlZC4gSSdsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZCBmbGFncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBpdHMgaW5jbHVzaW9uIG9yIGJlaGF2aW9yLiBUaGlzIGFsc28gbWVhbnMgdW5kZXJzdGFuZGluZyBob3cgdGhlIElHQiBtb2R1bGUgaW50ZXJhY3RzIHdpdGhpbiB0aGUgYnJvYWRlciBuZXR3b3JrIHN0YWNrIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG5ldHdvcmsgc3ViLXN5c3RlbXMgb3IgZmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQ/IEZyb20gaGVyZSwgSSBjYW4gYXNjZXJ0YWluIHdoYXQgb3B0aW9ucyBJIG5lZWQgdG8gc2V0LCBhbmQgaG93IHRvIHZlcmlmeSB0aGVpciBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwODAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMTo0My43Njg3NTA3MjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNjU4OTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUdCXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTgxPWNvbmZpZyBFMTAwMEVfSFdUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy04OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjkwOmNvbmZpZyBJR0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTkxLVxcdHRyaXN0YXRlIFxcXCJJbnRlbChSKSA4MjU3NS84MjU3NiBQQ0ktRXhwcmVzcyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEwOTpjb25maWcgSUdCX0hXTU9OXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMTAtXFx0Ym9vbCBcXFwiSW50ZWwoUikgUENJLUV4cHJlc3MgR2lnYWJpdCBhZGFwdGVycyBIV01PTiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0xMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxMjA6Y29uZmlnIElHQl9EQ0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyMS1cXHRib29sIFxcXCJEaXJlY3QgQ2FjaGUgQWNjZXNzIChEQ0EpIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjEyOTpjb25maWcgSUdCVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTEzMC1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgODI1NzYgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMTo0NC4xODUzNDcxMzdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQxMDY3NjMyOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBFbGlnaWJpbGl0eSBvZiB0aGUgaWdiIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBjb25zdWx0IHRoZSBydWxlczogdGhlIGZ1enppbmcgZXhjbHVzaW9uIGNyaXRlcmlhLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgSSBoYXZlIHRvIGJlIHByZWNpc2UuIFRoZSBtYWluIGlzc3VlIGhlcmUgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBpZ2JgIGRyaXZlciwgd2FycmFudHMgZnV6emluZyBlZmZvcnRzLiBUaGUgZXhjbHVzaW9uIGNyaXRlcmlhIGFyZSBteSBndWlkZS5cblxuTm93LCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMgYSBzaW1wbGUgZG9jdW1lbnRhdGlvbiBjaGFuZ2UsIG9yIGRlY29yYXRpdmUgbG9nZ2luZyBjaGFuZ2U/IE5vLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGJ1ZyBmaXguIEJ1dCBsZXQncyB2ZXJpZnkgaWYgdGhlIGBpZ2JgIGRyaXZlciBjb2RlIGlzIGV2ZW4gcmVhY2hhYmxlIGluIHRoZSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50LiBUaGUga2V5IHF1ZXN0aW9uOiBDYW4gSSBydW4gdGhpcyBpbiBRRU1VP1xuXG5XYWl0IGEgbWludXRlLCBRRU1VICpkb2VzKiBzdXBwb3J0IGBpZ2JgIG5vdy4gSXQgd2FzIGFkZGVkIGluIHZlcnNpb24gOC4wLCBhY2NvcmRpbmcgdG8gbXkga25vd2xlZGdlLiAoVGhhdCdzIGBody9uZXQvaWdiLmNgLCByaWdodD8gSW50ZWwgODI1NzYpLiBTbywgdGhhdCdzIG5vdCBhIGRlYWwtYnJlYWtlci4gSXMgYGlnYmAgaW4gdGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IE5vLCBpdCdzIGFuIEludGVsIE5JQyBkcml2ZXIsIGFuZCBub3QgYSBQQ0llIHN3aXRjaCBvciBTbWFydE5JQy5cblxuVGhlIHBhdGNoIGl0c2VsZiBmb2N1c2VzIG9uIGBpZ2JfcHRwLmNgLiBJcyBgaWdiX3B0cF9pbml0YCByZWFjaGVkIG9ubHkgZHVyaW5nIHByb2JlLCBvciBpcyB0aGlzIHBhdGNoIGZpeGluZyBvdGhlciBpc3N1ZXM/IExldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGNvZGUgaW4gdGhhdCBmaWxlLlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGNvZGUuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIG1vdmVzIGEgc3BpbmxvY2sgaW5pdGlhbGl6YXRpb24gYmVmb3JlIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uLiBUaGUgY3J1Y2lhbCBwb2ludDogYHB0cF9jbG9ja19yZWdpc3RlcmAgY3JlYXRlcyB0aGUgYC9kZXYvcHRwWGAgZGV2aWNlLCByaWdodD8gVGhpcyBleHBvc2VzIHRoZSBkcml2ZXIncyBQVFAgZnVuY3Rpb25hbGl0eSB0byB1c2Vyc3BhY2UgdmlhIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgL2Rldi9wdHBYYCBkZXZpY2UsIGBjbG9ja19nZXR0aW1lKENMT0NLX0dFVFRJTUUsIC4uLilgIG9yIHB0cCBpb2N0bHMgYW5kIHN5c2ZzIGF0dHJpYnV0ZXMuIFRob3NlIGZ1bmN0aW9ucywgd2hpY2ggYXJlIG5vdyByYWNlLWZyZWUgd2l0aCB0aGlzIHBhdGNoLCBjYWxsIGBhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLmdldHRpbWV4NjRgIGFuZCBzaW1pbGFyIG9uZXMuIFRoZSBmaXggcHJldmVudHMgYSByYWNlIGNvbmRpdGlvbiBvbiBgXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYC5cblxuQ3J1Y2lhbGx5LCBjYW4gdGhpcyBiZSBmdXp6ZWQ/IExldCdzIHRoaW5rLiBTeXprYWxsZXIgYW5kIG90aGVyIGZ1enppbmcgdG9vbHMgKmNhbiogaW50ZXJhY3Qgd2l0aCBQVFAgY2xvY2tzLiBTeXprYWxsZXIgc3VwcG9ydHMgYHN5el9wdHAuLi5gIHN5c2NhbGxzIG9yIHRoZSBzdGFuZGFyZCBgY2xvY2tfYWRqdGltZWAsIGBjbG9ja19nZXR0aW1lYCwgYW5kIFBUUCBpb2N0bHMgb24gYC9kZXYvcHRwMGAgZGV2aWNlcywgcmlnaHQ/IEFuZCBJICprbm93KiBRRU1VIHN1cHBvcnRzIHRoZSBgLWRldmljZSBpZ2JgIG9wdGlvbi4gU28sIHRoZSBoYXJkd2FyZSAqaXMqIHRoZXJlLCBhbmQgdGhlIGludGVyZmFjZSAqaXMqIGF2YWlsYWJsZS4gSXQgbG9va3MgbGlrZSB0aGUgUFRQIGNsb2NrIGRyaXZlciB3aWxsIGJlIHRlc3RlZC5cblxuVGhpcyBpcyBjcml0aWNhbC4gQ2FuIHRoZSBpZ2IgZGV2aWNlIGJlIHByZXNlbnQgaW4gUUVNVT8gWWVzLCB2aWEgYC1kZXZpY2UgaWdiYC4gQXJlIFBUUCBjbG9jayBpb2N0bHMgLyBzeXNjYWxscyB0ZXN0ZWQgb24gYC9kZXYvcHRwKmAgb3IgaWdiIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50PyBZZXMsIHN5emthbGxlciBkb2VzIGV4YWN0bHkgdGhhdC4gVGhlIHByb2JlIGlzIGF0IGJvb3QsIHN1cmUsIGJ1dCB0aGUgZXhwb3NlZCBgL2Rldi9wdHBYYCBpbnRlcmZhY2UgKmlzKiBhdmFpbGFibGUuXG5cblRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiB0aGF0IGNvdWxkIGxlYWQgdG8gY3Jhc2hlcyBvciBsb2NrZGVwIHdhcm5pbmdzLiBJdCdzIHJlbGF0ZWQgdG8gYSBQVFAgY2xvY2suIEl0IGxvb2tzIGxpa2UgdGhlIGZ1enplcnMgKmNhbiogZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguIFNvLCB0aGlzICppcyogYSBmdXp6aW5nLWVsaWdpYmxlIHBhdGNoLCBzaW5jZSBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBUaGUgZml4IGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjMyOjQ4LjI5MjExMjQ2NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NSxcbiAgXCJMaW5lQ291bnRcIjogNDVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4NTpcXHRcXHRoZWxwXFxuICA4NjpcXHRcXHQgU2F5IFkgdG8gZW5hYmxlIGhhcmR3YXJlIHN1cHBvcnRlZCBjcm9zcy10aW1lc3RhbXBpbmcgb24gUENIXFxuICA4NzpcXHRcXHQgZGV2aWNlcy4gVGhlIGNyb3NzLXRpbWVzdGFtcCBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgUFRQIGNsb2NrXFxuICA4ODpcXHRcXHQgZHJpdmVyIHByZWNpc2UgY3Jvc3MtdGltZXN0YW1wIGlvY3RsIChQVFBfU1lTX09GRlNFVF9QUkVDSVNFKS5cXG4gIDg5OlxcdFxcbiAgOTA6XFx0Y29uZmlnIElHQlxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIDgyNTc1LzgyNTc2IFBDSS1FeHByZXNzIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDkyOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA5MzpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA5NDpcXHRcXHRzZWxlY3QgSTJDXFxuICA5NTpcXHRcXHRzZWxlY3QgSTJDX0FMR09CSVRcXG4gIDk2OlxcdFxcdGhlbHBcXG4gIDk3OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgSW50ZWwoUikgODI1NzUvODI1NzYgZ2lnYWJpdCBldGhlcm5ldCBmYW1pbHkgb2ZcXG4gIDk4OlxcdFxcdCAgYWRhcHRlcnMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaWRlbnRpZnkgeW91ciBhZGFwdGVyLCBnb1xcbiAgOTk6XFx0XFx0ICB0byB0aGUgQWRhcHRlciBcXHUwMDI2IERyaXZlciBJRCBHdWlkZSB0aGF0IGNhbiBiZSBsb2NhdGVkIGF0OlxcbiAxMDA6XFx0XFxuIDEwMTpcXHRcXHQgIFxcdTAwM2NodHRwOi8vc3VwcG9ydC5pbnRlbC5jb21cXHUwMDNlXFxuIDEwMjpcXHRcXG4gMTAzOlxcdFxcdCAgTW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmluZyB0aGUgZHJpdmVyIGlzIGluXFxuIDEwNDpcXHRcXHQgIFxcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC9pZ2IucnN0XFx1MDAzZS5cXG4gMTA1OlxcdFxcbiAxMDY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuIDEwNzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGlnYi5cXG4gMTA4OlxcdFxcbiAxMDk6XFx0Y29uZmlnIElHQl9IV01PTlxcbiAxMTA6XFx0XFx0Ym9vbCBcXFwiSW50ZWwoUikgUENJLUV4cHJlc3MgR2lnYWJpdCBhZGFwdGVycyBIV01PTiBzdXBwb3J0XFxcIlxcbiAxMTE6XFx0XFx0ZGVmYXVsdCB5XFxuIDExMjpcXHRcXHRkZXBlbmRzIG9uIElHQiBcXHUwMDI2XFx1MDAyNiBIV01PTiBcXHUwMDI2XFx1MDAyNiAhKElHQj15IFxcdTAwMjZcXHUwMDI2IEhXTU9OPW0pXFxuIDExMzpcXHRcXHRoZWxwXFxuIDExNDpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGVybWFsIHNlbnNvciBkYXRhIG9uIEludGVsIGRldmljZXMuXFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdCAgU29tZSBvZiBvdXIgZGV2aWNlcyBjb250YWluIHRoZXJtYWwgc2Vuc29ycywgYm90aCBleHRlcm5hbCBhbmQgaW50ZXJuYWwuXFxuIDExNzpcXHRcXHQgIFRoaXMgZGF0YSBpcyBhdmFpbGFibGUgdmlhIHRoZSBod21vbiBzeXNmcyBpbnRlcmZhY2UgYW5kIGV4cG9zZXNcXG4gMTE4OlxcdFxcdCAgdGhlIG9uYm9hcmQgc2Vuc29ycy5cXG4gMTE5OlxcdFxcbiAxMjA6XFx0Y29uZmlnIElHQl9EQ0FcXG4gMTIxOlxcdFxcdGJvb2wgXFxcIkRpcmVjdCBDYWNoZSBBY2Nlc3MgKERDQSkgU3VwcG9ydFxcXCJcXG4gMTIyOlxcdFxcdGRlZmF1bHQgeVxcbiAxMjM6XFx0XFx0ZGVwZW5kcyBvbiBJR0IgXFx1MDAyNlxcdTAwMjYgRENBIFxcdTAwMjZcXHUwMDI2ICEoSUdCPXkgXFx1MDAyNlxcdTAwMjYgRENBPW0pXFxuIDEyNDpcXHRcXHRoZWxwXFxuIDEyNTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIERpcmVjdCBDYWNoZSBBY2Nlc3MgKERDQSkgaW4gdGhlXFxuIDEyNjpcXHRcXHQgIGRyaXZlci4gIERDQSBpcyBhIG1ldGhvZCBmb3Igd2FybWluZyB0aGUgQ1BVIGNhY2hlIGJlZm9yZSBkYXRhXFxuIDEyNzpcXHRcXHQgIGlzIHVzZWQsIHdpdGggdGhlIGludGVudCBvZiBsZXNzZW5pbmcgdGhlIGltcGFjdCBvZiBjYWNoZSBtaXNzZXMuXFxuIDEyODpcXHRcXG4gMTI5OlxcdGNvbmZpZyBJR0JWRlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMjo0OC4yOTIyMjQyMTVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTAyOTQ1NDE5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgSUdCIERyaXZlciBCdWlsZCBQcm9jZXNzKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIEludGVsIElHQiBkcml2ZXIgaXMgYWN0dWFsbHkgZ2V0dGluZyBjb21waWxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIOKAkyB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB0ZXJtcyBvZiBidWlsZCBpbnN0cnVjdGlvbnMuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIG5hdmlnYXRlIHRvIHRoZSBgaWdiL01ha2VmaWxlYCB0byBzZWUgaG93IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGhhbmRsZXMgdGhlIGBpZ2JfcHRwLmNgIHNvdXJjZSBmaWxlLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZmxhZ3Mgb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyBmb3IgUFRQIHN1cHBvcnQuIFVuZGVyc3RhbmRpbmcgaG93IHRoZSBidWlsZCBzeXN0ZW0gaW50ZWdyYXRlcyBgaWdiX3B0cC5jYCBpcyBjcnVjaWFsIGJlZm9yZSBJIGRpdmUgaW50byBhbnkgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEyNTcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjMzOjM4LjU4Njc2ODczOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjIENvcHlyaWdodChjKSAxOTk5IC0gMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi5cXG4gICAzOlxcdCNcXG4gICA0OlxcdCMgTWFrZWZpbGUgZm9yIHRoZSBJbnRlbChSKSA4MjU3NSBQQ0ktRXhwcmVzcyBldGhlcm5ldCBkcml2ZXJcXG4gICA1OlxcdCNcXG4gICA2OlxcdFxcbiAgIDc6XFx0b2JqLSQoQ09ORklHX0lHQikgKz0gaWdiLm9cXG4gICA4OlxcdFxcbiAgIDk6XFx0aWdiLXkgOj0gaWdiX21haW4ubyBpZ2JfZXRodG9vbC5vIGUxMDAwXzgyNTc1Lm8gXFxcXFxcbiAgMTA6XFx0XFx0IGUxMDAwX21hYy5vIGUxMDAwX252bS5vIGUxMDAwX3BoeS5vIGUxMDAwX21ieC5vIFxcXFxcXG4gIDExOlxcdFxcdCBlMTAwMF9pMjEwLm8gaWdiX3B0cC5vIGlnYl9od21vbi5vIGlnYl94c2sub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozMzozOC41ODY4MjcwMTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjc5MzIzOTYyMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgSWdiIERyaXZlciBmb3IgUFRQIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBsZXQncyBnZXQgcmlnaHQgdG8gaXQuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGUgSWdiIGRyaXZlcidzIHN1cHBvcnQgZm9yIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfUFRQXzE1ODhfQ0xPQ0tgLiBUaGUgbW9zdCBkaXJlY3Qgcm91dGUsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgbG9vayBmb3IgZXhwbGljaXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGp1bXAgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY2AuIE15IGV4cGVjdGF0aW9uIGlzIHRvIGZpbmQgYSBidW5jaCBvZiBgI2lmZGVmYCBkaXJlY3RpdmVzIG9yIHNpbWlsYXIgcHJlcHJvY2Vzc29yIGNoZWNrcyB0aGF0IHdpbGwgcmV2ZWFsIHdoZXRoZXIgdGhlIFBUUCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgSWdiIGRyaXZlciBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIHRoYXQgcGFydGljdWxhciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gb3IgYSByZWxhdGVkIG9uZS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3NjcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM0OjA2LjUxOTIyNjIxM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NjY4MjEwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM0OjA2LjkxNjkwNzU0NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjM4MjY2NzkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgaW4gS2NvbmZpZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGUgUFRQIGNsb2NrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhZ2Fpbi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgIHdpdGhpbiB0aGUgS2NvbmZpZyBzeXN0ZW0uIEkga25vdyB0aGlzIHBhcnRpY3VsYXIgdmFyaWFibGUgaXMga2V5IHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIG9wdGlvbmFsIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGNsb2NrcywgYnV0IHRoZSBwcmVjaXNlIGRldGFpbHMgZWx1ZGUgbWUgYXQgdGhpcyB0aW1lLiBJIG5lZWQgYSBjb25jcmV0ZSBkYXRhIHBvaW50LiBBcmUgd2UgbWFraW5nIHRoaXMgYSBtYW5kYXRvcnkgZmVhdHVyZSwgb3IgYWxsb3dpbmcgdGhlIGVuZC11c2VyIHRvIGRldGVybWluZSBpdHMgaW5jbHVzaW9uLCBiYXNlZCBvbiBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kIHVzZSBjYXNlIHJlcXVpcmVtZW50cz8gSSBuZWVkIHRvIGtub3cgdGhlIGltcGxpY2F0aW9ucyBvZiBlaXRoZXIgY2hvaWNlLCBib3RoIGluIHRlcm1zIG9mIGNvZGUgc2l6ZSwgZHJpdmVyIHNlbGVjdGlvbiwgYW5kIG9mIGNvdXJzZSwgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIHBlcmZvcm1hbmNlLiBUaW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgYW5kIGRldGVybWluZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBJIGhhdmUgdG8gbWFrZSBhIGRlY2lzaW9uIGFib3V0IHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDQ1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MzQ6MTkuMjk5NTc3Mzk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ0MzU0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFRQXzE1ODhfQ0xPQ0tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcHRwL0tjb25maWc9Nj1tZW51IFxcXCJQVFAgY2xvY2sgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTctXFxuZHJpdmVycy9wdHAvS2NvbmZpZzo4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS1xcbmRyaXZlcnMvcHRwL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiUFRQIGNsb2NrIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTI5LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MzA6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0zMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy00MS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjQyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTQzLVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy01Ny1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjU4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19RT1JJUVxcbmRyaXZlcnMvcHRwL0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBRb3JJUSAxNTg4IHRpbWVyIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWc9NzU9Y29uZmlnIERQODM2NDBfUEhZXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTkyLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6OTM6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lORVNcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTk0LVxcdHRyaXN0YXRlIFxcXCJaSEFXIEluRVMgUFRQIHRpbWUgc3RhbXBpbmcgSVAgY29yZVxcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTA0OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19QQ0hcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwgUENIIEVHMjBUIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTIyLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTIzOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19LVk1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHZpcnR1YWwgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xMzQtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxMzU6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNQ0xPQ0tcXG5kcml2ZXJzL3B0cC9LY29uZmlnLTEzNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBtYWNoaW5lIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTUxLVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTUyOmNvbmZpZyBQVFBfMTU4OF9DTE9DS19JRFQ4MlAzM1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTUzLVxcdHRyaXN0YXRlIFxcXCJJRFQgODJQMzN4eHggUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjMtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxNjQ6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX0lEVENNXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xNjUtXFx0dHJpc3RhdGUgXFxcIklEVCBDTE9DS01BVFJJWCBhcyBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTE3NS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjE3Njpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfRkMzV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMTc3LVxcdHRyaXN0YXRlIFxcXCJSRU5FU0FTIEZlbXRvQ2xvY2szIFdpcmVsZXNzIGFzIFBUUCBjbG9ja1xcXCJcXG4tLVxcbmRyaXZlcnMvcHRwL0tjb25maWctMTg3LVxcbmRyaXZlcnMvcHRwL0tjb25maWc6MTg4OmNvbmZpZyBQVFBfMTU4OF9DTE9DS19NT0NLXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xODktXFx0dHJpc3RhdGUgXFxcIk1vY2stdXAgUFRQIGNsb2NrXFxcIlxcbi0tXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0xOTgtXFxuZHJpdmVycy9wdHAvS2NvbmZpZzoxOTk6Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1ZNV1xcbmRyaXZlcnMvcHRwL0tjb25maWctMjAwLVxcdHRyaXN0YXRlIFxcXCJWTXdhcmUgdmlydHVhbCBQVFAgY2xvY2tcXFwiXFxuLS1cXG5kcml2ZXJzL3B0cC9LY29uZmlnLTIxMC1cXG5kcml2ZXJzL3B0cC9LY29uZmlnOjIxMTpjb25maWcgUFRQXzE1ODhfQ0xPQ0tfT0NQXFxuZHJpdmVycy9wdHAvS2NvbmZpZy0yMTItXFx0dHJpc3RhdGUgXFxcIk9wZW5Db21wdXRlIFRpbWVDYXJkIGFzIFBUUCBjbG9ja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MzQ6MTkuMzQ2MDI0ODNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Nzk1ODMxNzE2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIHRoZSBQVFAgQ2xvY2sgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcyBQVFAgc3R1ZmYuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhhdCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgIG9wdGlvbi4gUmlnaHQsIGl0J3MgcHJvYmFibHkgZGVmaW5lZCBpbiB0aGUgYGRyaXZlcnMvcHRwL0tjb25maWdgIGZpbGUuIEknbGwgbmVlZCB0byBnbyBwb2tlIGFyb3VuZCBpbiB0aGVyZSBhbmQgc2VlIGhvdyBpdCdzIGhhbmRsZWQuIE1heWJlIEkgbmVlZCB0byBjaGVjayBkZXBlbmRlbmNpZXMgb3Igc2VlIHdoZXJlIGl0J3MgcmVmZXJlbmNlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBzaXR1YXRpb24uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBjb25maWd1cmF0aW9ucy4gVGltZSB0byBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzMTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNTozOC45MjkxOTkzMTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAyNTpcXHRcXHQgIGFsc28gZW5hYmxlIGF0IGxlYXN0IG9uZSBjbG9jayBkcml2ZXIgYXMgd2VsbC5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAyODpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHB0cC5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0Y29uZmlnIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAzMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5IGlmIFBUUF8xNTg4X0NMT0NLPW5cXG4gIDMzOlxcdFxcdGRlZmF1bHQgUFRQXzE1ODhfQ0xPQ0tcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgRHJpdmVycyB0aGF0IGNhbiBvcHRpb25hbGx5IHVzZSB0aGUgUFRQXzE1ODhfQ0xPQ0sgZnJhbWV3b3JrXFxuICAzNjpcXHRcXHQgIHNob3VsZCBkZXBlbmQgb24gdGhpcyBzeW1ib2wgdG8gcHJldmVudCB0aGVtIGZyb20gYmVpbmcgYnVpbHRcXG4gIDM3OlxcdFxcdCAgaW50byB2bWxpbnV4IHdoaWxlIHRoZSBQVFAgc3VwcG9ydCBpdHNlbGYgaXMgaW4gYSBsb2FkYWJsZVxcbiAgMzg6XFx0XFx0ICBtb2R1bGUuXFxuICAzOTpcXHRcXHQgIElmIFBUUCBzdXBwb3J0IGlzIGRpc2FibGVkLCB0aGlzIGRlcGVuZGVuY3kgd2lsbCBzdGlsbCBiZVxcbiAgNDA6XFx0XFx0ICBtZXQsIGFuZCBkcml2ZXJzIHJlZmVyIHRvIGR1bW15IGhlbHBlcnMuXFxuICA0MTpcXHRcXG4gIDQyOlxcdGNvbmZpZyBQVFBfMTU4OF9DTE9DS19EVEVcXG4gIDQzOlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBEVEUgYXMgUFRQIGNsb2NrXFxcIlxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNTozOC45MjkyNjYzNDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTExODQ0NDA2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQVFAgQ2xvY2sgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBwbGF5IGFyb3VuZCB3aXRoIHRoaXMgUFRQXzE1ODhfQ0xPQ0sgc2V0dGluZy4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGhhcHBlbnMgd2hlbiBJIGRpc2FibGUgaXQuIFJpZ2h0LCBzbyBpZiBQVFBfMTU4OF9DTE9DSyBpcyBzZXQgdG8gJ24nIOKAkyBtZWFuaW5nIGRpc2FibGVkIOKAkyB0aGVuIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbiBzaG91bGQganVzdCBiZSBhIHN0dWIsIGFzIHRoZSBkb2N1bWVudGF0aW9uIHNheXMuIFRoYXQgaW1wbGllcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24sIGFuZCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gVGltZSB0byBkaWcgaW50byBgaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmhgIGFuZCBjb25maXJtIHRoYXQgdGhlIHJlZ2lzdGVyIGZ1bmN0aW9uIGlzLCBhcyBleHBlY3RlZCwgYSBzdHViLiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBudWxsLWltcGxlbWVudGF0aW9uIHNvIEkga25vdyBwcmVjaXNlbHkgd2hhdCBJJ20gbG9zaW5nIGJ5IGRpc2FibGluZyB0aGUgUFRQIGNsb2NrLiBMZXQncyBzZWUgd2hhdCB0aGF0IGhlYWRlciBmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODQxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNjozMC4xMTM3MTA1MzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDQwNjgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9MzIxPXN0YXRpYyBpbmxpbmUgdTY0IGFkanVzdF9ieV9zY2FsZWRfcHBtKHU2NCBiYXNlLCBsb25nIHNjYWxlZF9wcG0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zMzMtLyoqXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzM0OiAqIHB0cF9jbG9ja19yZWdpc3RlcigpIC0gcmVnaXN0ZXIgYSBQVFAgaGFyZHdhcmUgY2xvY2sgZHJpdmVyXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzM1LSAqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zNDQtXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg6MzQ1OmV4dGVybiBzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTM0Ni1cXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmljZSAqcGFyZW50KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTM1ND1leHRlcm4gaW50IHB0cF9jbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zNTgtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDozNTk6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzYwLSAqIEBldmVudDogIE1lc3NhZ2Ugc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGV2ZW50Llxcbi0tXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9MzYzPWV4dGVybiB2b2lkIHB0cF9jbG9ja19ldmVudChzdHJ1Y3QgcHRwX2Nsb2NrICpwdHAsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC0zNjgtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDozNjk6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtMzcwLSAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9MzkwPWludCBwdHBfY2xvY2tfaW5kZXhfYnlfZGV2KHN0cnVjdCBkZXZpY2UgKnBhcmVudCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00MDAtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0MDE6ICogQHB0cDogICAgVGhlIGNsb2NrIG9idGFpbmVkIGZyb20gcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmgtNDAyLSAqIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQwOD1pbnQgcHRwX2ZpbmRfcGluKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQxOC0gKlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjQxOToqIEBwdHA6ICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQyMC0qIEBmdW5jOiAgIE9uZSBvZiB0aGUgcHRwX3Bpbl9mdW5jdGlvbiBlbnVtZXJhdGVkIHZhbHVlcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oPTQyNj1pbnQgcHRwX2ZpbmRfcGluX3VubG9ja2VkKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCxcXG4tLVxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQzMS0gKlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oOjQzMjogKiBAcHRwOiAgICBUaGUgY2xvY2sgb2J0YWluZWQgZnJvbSBwdHBfY2xvY2tfcmVnaXN0ZXIoKS5cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00MzMtICogQGRlbGF5OiAgbnVtYmVyIG9mIGppZmZpZXMgdG8gd2FpdCBiZWZvcmUgcXVldWluZ1xcbi0tXFxuaW5jbHVkZS9saW51eC9wdHBfY2xvY2tfa2VybmVsLmg9NDM3PWludCBwdHBfc2NoZWR1bGVfd29ya2VyKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCwgdW5zaWduZWQgbG9uZyBkZWxheSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDEtICpcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0NDI6ICogQHB0cDogICAgIFRoZSBjbG9jayBvYnRhaW5lZCBmcm9tIHB0cF9jbG9ja19yZWdpc3RlcigpLlxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0My0gKi9cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaD00NDQ9dm9pZCBwdHBfY2FuY2VsX3dvcmtlcl9zeW5jKHN0cnVjdCBwdHBfY2xvY2sgKnB0cCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaC00NDYtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L3B0cF9jbG9ja19rZXJuZWwuaDo0NDc6c3RhdGljIGlubGluZSBzdHJ1Y3QgcHRwX2Nsb2NrICpwdHBfY2xvY2tfcmVnaXN0ZXIoc3RydWN0IHB0cF9jbG9ja19pbmZvICppbmZvLFxcbmluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oLTQ0OC1cXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM2OjMwLjY2NDEyMjYzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MDIxNjMyNjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gUFRQIENsb2NrIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQVFAgY2xvY2tzIGFyZSBiZWluZyByZWdpc3RlcmVkLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlIGNvZGUuIExldCdzIHNlZS4uLiBJJ2xsIGp1bXAgcmlnaHQgaW50byBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgLiBUaGF0IGZpbGUgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aGUgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgd2FudCB0byByZWFkIGFyb3VuZCB0aGF0IGZ1bmN0aW9uLCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LCBzZWUgd2hhdCBpdCB0YWtlcyBhcyBpbnB1dCwgYW5kIGdldCBhIGZlZWwgZm9yIGhvdyB0aGUgY2xvY2sgcmVnaXN0cmF0aW9uIHByb2Nlc3MgaXMgYXJjaGl0ZWN0ZWQgd2l0aGluIHRoZSBkcml2ZXIuIEnigJltIGhvcGluZyB0byBnbGVhbiB0aGUgcmVsZXZhbnQgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCwgdG9vLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTkyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6MDYuNjg1NzU4NTI3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI2MDg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgcHRwX2Nsb2NrIFxcXFwqcHRwX2Nsb2NrX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcHRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suYz0zMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHRwX3Blcm91dF9sb29wYmFja19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfY2xvY2suYy0zMjctXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmM6MzI4OnN0cnVjdCBwdHBfY2xvY2sgKnB0cF9jbG9ja19yZWdpc3RlcihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKmluZm8sXFxuZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmMtMzI5LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNzowNi43MzIwMjgyMjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njc1NzgwMTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgaGVyZS5cblxuKipEZWNvbnN0cnVjdGluZyBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCoqXG5cbkFscmlnaHQsIG15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoaXMgYHB0cF9jbG9ja19yZWdpc3RlcmAgZnVuY3Rpb24uIEkgaW1hZ2luZSBpdCdzIHRoZSBwb2ludCB3aGVyZSBhIFByZWNpc2lvbiBUaW1lIFByb3RvY29sIChQVFApIGNsb2NrLCBwcmVzdW1hYmx5IGEgaGFyZHdhcmUgb3Igc29mdHdhcmUgUFRQIGNsb2NrLCBpcyBmb3JtYWxseSBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbS4gSXQncyB0aGUgbW9tZW50IHRoZSBrZXJuZWwgcmVjb2duaXplcyBhbmQgYmVnaW5zIG1hbmFnaW5nIHRoaXMgY2xvY2sgYXMgYSBzb3VyY2Ugb2YgcHJlY2lzZSB0aW1lLiBJdCdzIHNpbWlsYXIgdG8gb3RoZXIgZGV2aWNlIHJlZ2lzdHJhdGlvbiwgSSBleHBlY3QuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQuIFdoYXQgaXMgYmVpbmcgcGFzc2VkIGludG8gdGhpcyByZWdpc3RyYXRpb24gZnVuY3Rpb24/IElzIGl0IGEgcG9pbnRlciB0byBhIHN0cnVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgY2xvY2sncyBjYXBhYmlsaXRpZXMsIGl0cyBoYXJkd2FyZSBhZGRyZXNzLCBhbnkgYXNzb2NpYXRlZCBkcml2ZXJzIG9yIGludGVycnVwdCBoYW5kbGVycz8gUGVyaGFwcyBpdCdzIHNpbWlsYXIgdG8gdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIG5ldHdvcmsgY2FyZC5cblxuTmV4dCwgSSBuZWVkIHRvIGtub3cgd2hhdCBoYXBwZW5zIGR1cmluZyByZWdpc3RyYXRpb24uIERvZXMgaXQgYWxsb2NhdGUgc29tZSBrZXJuZWwgcmVzb3VyY2VzPyBQb3NzaWJseSBtZW1vcnkgdG8gaG9sZCBjbG9jayBkYXRhLiBEb2VzIGl0IGNyZWF0ZSBhc3NvY2lhdGVkIGtlcm5lbCB0aHJlYWRzIGZvciBoYW5kbGluZyB0aW1lIHVwZGF0ZXMgb3Igc3luY2hyb25pemF0aW9uPyBEb2VzIGl0IHNldCB1cCBhbnkgaW50ZXJydXB0IGhhbmRsZXJzIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIG9yIGRvZXMgaXQgYWRkIHRoZSBjbG9jayBpbnRvIHNvbWUgZ2xvYmFsIGtlcm5lbCBQVFAgY2xvY2sgbGlzdD9cblxuSSdtIGFsc28gY3VyaW91cyBhYm91dCBlcnJvciBoYW5kbGluZy4gV2hhdCBmYWlsdXJlIG1vZGVzIGFyZSBhbnRpY2lwYXRlZCBoZXJlPyBEb2VzIHRoZSBmdW5jdGlvbiBjaGVjayBmb3IgY29uZmxpY3RpbmcgY2xvY2sgc291cmNlcz8gV2hhdCBoYXBwZW5zIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLCBvciBpZiB0aGUgZHJpdmVyIGNhbid0IGluaXRpYWxpemUgdGhlIGNsb2NrJ3MgaGFyZHdhcmU/IEFyZSB0aGVyZSByZXR1cm4gY29kZXMgYW5kIGhvdyBhcmUgdGhleSB1c2VkIGJ5IHRoZSBjYWxsaW5nIGNvZGU/IEkgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGFzIHdlbGwgYXMgdGhlIHJlZ2lzdHJhdGlvbiBjb2RlIGl0c2VsZi5cblxuRmluYWxseSwgd2hhdCdzIHRoZSBicm9hZGVyIGNvbnRleHQ/IFRoaXMgcmVnaXN0cmF0aW9uIGhhcyB0byBwbHVnIGludG8gc29tZXRoaW5nIGJpZ2dlci4gSXMgaXQgdXNlZCB0byBidWlsZCBhIGdsb2JhbCBQVFAgY2xvY2sgdHJlZSBmb3IgdGhlIHN5c3RlbT8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIHNwZWNpZmljIGhhcmR3YXJlIGludGVyZmFjZXMgZm9yIHByZWNpc2UgdGltaW5nPyBXaGF0IGhhcHBlbnMgaW4gdGVybXMgb2YgZGV2aWNlIGRpc2NvdmVyeSB3aGVuIGEgZGV2aWNlIHJlZ2lzdGVycyBvciBpcyByZW1vdmVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjoyNTU3NiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM3OjEzLjQ4OTgzMTkwOFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjgsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMjg6XFx0c3RydWN0IHB0cF9jbG9jayAqcHRwX2Nsb2NrX3JlZ2lzdGVyKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqaW5mbyxcXG4gMzI5OlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZSAqcGFyZW50KVxcbiAzMzA6XFx0e1xcbiAzMzE6XFx0XFx0c3RydWN0IHB0cF9jbG9jayAqcHRwO1xcbiAzMzI6XFx0XFx0c3RydWN0IHRpbWVzdGFtcF9ldmVudF9xdWV1ZSAqcXVldWUgPSBOVUxMO1xcbiAzMzM6XFx0XFx0aW50IGVyciwgaW5kZXgsIG1ham9yID0gTUFKT1IocHRwX2RldnQpO1xcbiAzMzQ6XFx0XFx0Y2hhciBkZWJ1Z2ZzbmFtZVsxNl07XFxuIDMzNTpcXHRcXHRzaXplX3Qgc2l6ZTtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0aWYgKFdBUk5fT05fT05DRShpbmZvLVxcdTAwM2VuX2FsYXJtIFxcdTAwM2UgUFRQX01BWF9BTEFSTVMgfHxcXG4gMzM4OlxcdFxcdFxcdFxcdCAoIWluZm8tXFx1MDAzZWdldHRpbWV4NjQgXFx1MDAyNlxcdTAwMjYgIWluZm8tXFx1MDAzZWdldHRpbWU2NCkgfHxcXG4gMzM5OlxcdFxcdFxcdFxcdCAhaW5mby1cXHUwMDNlc2V0dGltZTY0KSlcXG4gMzQwOlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbiAzNDE6XFx0XFxuIDM0MjpcXHRcXHQvKiBJbml0aWFsaXplIGEgY2xvY2sgc3RydWN0dXJlLiAqL1xcbiAzNDM6XFx0XFx0cHRwID0ga3phbGxvY19vYmooc3RydWN0IHB0cF9jbG9jayk7XFxuIDM0NDpcXHRcXHRpZiAoIXB0cCkge1xcbiAzNDU6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzQ2OlxcdFxcdFxcdGdvdG8gbm9fbWVtb3J5O1xcbiAzNDc6XFx0XFx0fVxcbiAzNDg6XFx0XFxuIDM0OTpcXHRcXHRlcnIgPSB4YV9hbGxvYyhcXHUwMDI2cHRwX2Nsb2Nrc19tYXAsIFxcdTAwMjZpbmRleCwgcHRwLCB4YV9saW1pdF8zMWIsXFxuIDM1MDpcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuIDM1MTpcXHRcXHRpZiAoZXJyKVxcbiAzNTI6XFx0XFx0XFx0Z290byBub19zbG90O1xcbiAzNTM6XFx0XFxuIDM1NDpcXHRcXHRwdHAtXFx1MDAzZWNsb2NrLm9wcyA9IHB0cF9jbG9ja19vcHM7XFxuIDM1NTpcXHRcXHRwdHAtXFx1MDAzZWluZm8gPSBpbmZvO1xcbiAzNTY6XFx0XFx0cHRwLVxcdTAwM2VkZXZpZCA9IE1LREVWKG1ham9yLCBpbmRleCk7XFxuIDM1NzpcXHRcXHRwdHAtXFx1MDAzZWluZGV4ID0gaW5kZXg7XFxuIDM1ODpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2cHRwLVxcdTAwM2V0c2V2cXMpO1xcbiAzNTk6XFx0XFx0cXVldWUgPSBremFsbG9jX29iaigqcXVldWUpO1xcbiAzNjA6XFx0XFx0aWYgKCFxdWV1ZSkge1xcbiAzNjE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzYyOlxcdFxcdFxcdGdvdG8gbm9fbWVtb3J5X3F1ZXVlO1xcbiAzNjM6XFx0XFx0fVxcbiAzNjQ6XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2cXVldWUtXFx1MDAzZXFsaXN0LCBcXHUwMDI2cHRwLVxcdTAwM2V0c2V2cXMpO1xcbiAzNjU6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnB0cC1cXHUwMDNldHNldnFzX2xvY2spO1xcbiAzNjY6XFx0XFx0cXVldWUtXFx1MDAzZW1hc2sgPSBiaXRtYXBfYWxsb2MoUFRQX01BWF9DSEFOTkVMUywgR0ZQX0tFUk5FTCk7XFxuIDM2NzpcXHRcXHRpZiAoIXF1ZXVlLVxcdTAwM2VtYXNrKSB7XFxuIDM2ODpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAzNjk6XFx0XFx0XFx0Z290byBub19tZW1vcnlfYml0bWFwO1xcbiAzNzA6XFx0XFx0fVxcbiAzNzE6XFx0XFx0Yml0bWFwX3NldChxdWV1ZS1cXHUwMDNlbWFzaywgMCwgUFRQX01BWF9DSEFOTkVMUyk7XFxuIDM3MjpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cXVldWUtXFx1MDAzZWxvY2spO1xcbiAzNzM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2cHRwLVxcdTAwM2VwaW5jZmdfbXV4KTtcXG4gMzc0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnB0cC1cXHUwMDNlbl92Y2xvY2tzX211eCk7XFxuIDM3NTpcXHRcXHRpbml0X3dhaXRxdWV1ZV9oZWFkKFxcdTAwMjZwdHAtXFx1MDAzZXRzZXZfd3EpO1xcbiAzNzY6XFx0XFxuIDM3NzpcXHRcXHRpZiAocHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjeWNsZXM2NCB8fCBwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGN5Y2xlc3g2NCkge1xcbiAzNzg6XFx0XFx0XFx0cHRwLVxcdTAwM2VoYXNfY3ljbGVzID0gdHJ1ZTtcXG4gMzc5OlxcdFxcdFxcdGlmICghcHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjeWNsZXM2NCBcXHUwMDI2XFx1MDAyNiBwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGN5Y2xlc3g2NClcXG4gMzgwOlxcdFxcdFxcdFxcdHB0cC1cXHUwMDNlaW5mby1cXHUwMDNlZ2V0Y3ljbGVzNjQgPSBwdHBfZ2V0Y3ljbGVzNjQ7XFxuIDM4MTpcXHRcXHR9IGVsc2Uge1xcbiAzODI6XFx0XFx0XFx0LyogRnJlZSBydW5uaW5nIGN5Y2xlIGNvdW50ZXIgbm90IHN1cHBvcnRlZCwgdXNlIHRpbWUuICovXFxuIDM4MzpcXHRcXHRcXHRwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGN5Y2xlczY0ID0gcHRwX2dldGN5Y2xlczY0O1xcbiAzODQ6XFx0XFxuIDM4NTpcXHRcXHRcXHRpZiAocHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXR0aW1leDY0KVxcbiAzODY6XFx0XFx0XFx0XFx0cHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjeWNsZXN4NjQgPSBwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldHRpbWV4NjQ7XFxuIDM4NzpcXHRcXG4gMzg4OlxcdFxcdFxcdGlmIChwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWdldGNyb3NzdHN0YW1wKVxcbiAzODk6XFx0XFx0XFx0XFx0cHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VnZXRjcm9zc2N5Y2xlcyA9IHB0cC1cXHUwMDNlaW5mby1cXHUwMDNlZ2V0Y3Jvc3N0c3RhbXA7XFxuIDM5MDpcXHRcXHR9XFxuIDM5MTpcXHRcXG4gMzkyOlxcdFxcdGlmICghcHRwLVxcdTAwM2VpbmZvLVxcdTAwM2VlbmFibGUpXFxuIDM5MzpcXHRcXHRcXHRwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWVuYWJsZSA9IHB0cF9lbmFibGU7XFxuIDM5NDpcXHRcXG4gMzk1OlxcdFxcdGlmIChwdHAtXFx1MDAzZWluZm8tXFx1MDAzZWRvX2F1eF93b3JrKSB7XFxuIDM5NjpcXHRcXHRcXHRrdGhyZWFkX2luaXRfZGVsYXllZF93b3JrKFxcdTAwMjZwdHAtXFx1MDAzZWF1eF93b3JrLCBwdHBfYXV4X2t3b3JrZXIpO1xcbiAzOTc6XFx0XFx0XFx0cHRwLVxcdTAwM2Vrd29ya2VyID0ga3RocmVhZF9ydW5fd29ya2VyKDAsIFxcXCJwdHAlZFxcXCIsIHB0cC1cXHUwMDNlaW5kZXgpO1xcbiAzOTg6XFx0XFx0XFx0aWYgKElTX0VSUihwdHAtXFx1MDAzZWt3b3JrZXIpKSB7XFxuIDM5OTpcXHRcXHRcXHRcXHRlcnIgPSBQVFJfRVJSKHB0cC1cXHUwMDNla3dvcmtlcik7XFxuIDQwMDpcXHRcXHRcXHRcXHRwcl9lcnIoXFxcImZhaWxlZCB0byBjcmVhdGUgcHRwIGF1eF93b3JrZXIgJWRcXFxcblxcXCIsIGVycik7XFxuIDQwMTpcXHRcXHRcXHRcXHRnb3RvIGt3b3JrZXJfZXJyO1xcbiA0MDI6XFx0XFx0XFx0fVxcbiA0MDM6XFx0XFx0fVxcbiA0MDQ6XFx0XFxuIDQwNTpcXHRcXHQvKiBQVFAgdmlydHVhbCBjbG9jayBpcyBiZWluZyByZWdpc3RlcmVkIHVuZGVyIHBoeXNpY2FsIGNsb2NrICovXFxuIDQwNjpcXHRcXHRpZiAocGFyZW50IFxcdTAwMjZcXHUwMDI2IHBhcmVudC1cXHUwMDNlY2xhc3MgXFx1MDAyNlxcdTAwMjYgcGFyZW50LVxcdTAwM2VjbGFzcy1cXHUwMDNlbmFtZSBcXHUwMDI2XFx1MDAyNlxcbiA0MDc6XFx0XFx0ICAgIHN0cmNtcChwYXJlbnQtXFx1MDAzZWNsYXNzLVxcdTAwM2VuYW1lLCBcXFwicHRwXFxcIikgPT0gMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6MTMuNDg5OTI1OTI4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMjI5MDMyOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqTmF2aWdhdGluZyB0aGUgUFRQIENsb2NrIFJlZ2lzdGVyIFNlcXVlbmNlKipcblxuQWxyaWdodCwgc28gdGhlIG5leHQgbG9naWNhbCBzdGVwIGluIHRoaXMgaW52ZXN0aWdhdGlvbiBpcyB0byBkaXZlIGludG8gd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gYHB0cF9jbG9ja19yZWdpc3RlcmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBzZXF1ZW5jZSBvZiBldmVudHMsIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyB0b3VjaGVkLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEdpdmVuIHRoZSBjb250ZXh0IG9mIGNsb2NrIG1hbmFnZW1lbnQsIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbnRlcmFjdGlvbnMgd2l0aCBoYXJkd2FyZSByZWdpc3RlcnMsIHBvdGVudGlhbCBpbnRlcnJ1cHRzIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCBsaWtlbHkgc29tZSBzb3J0IG9mIGluaXRpYWxpemF0aW9uIG9mIGNsb2NrLXJlbGF0ZWQgZGF0YS4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBhbnkgZXhpc3RpbmcgUFRQIGNvbmZpZ3VyYXRpb24gb3IgaWYgdGhpcyBpcyB0aGUgXCJncm91bmQgemVyb1wiIG9mIGEgbmV3IGNsb2NrIGluc3RhbmNlLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSBhY3R1YWxseSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQwNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6MjMuNzE4OTYxMzYyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3B0cC9wdHBfY2xvY2suY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MDgsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MDg6XFx0XFx0XFx0cHRwLVxcdTAwM2Vpc192aXJ0dWFsX2Nsb2NrID0gdHJ1ZTtcXG4gNDA5OlxcdFxcbiA0MTA6XFx0XFx0aWYgKCFwdHAtXFx1MDAzZWlzX3ZpcnR1YWxfY2xvY2spIHtcXG4gNDExOlxcdFxcdFxcdHB0cC1cXHUwMDNlbWF4X3ZjbG9ja3MgPSBQVFBfREVGQVVMVF9NQVhfVkNMT0NLUztcXG4gNDEyOlxcdFxcbiA0MTM6XFx0XFx0XFx0c2l6ZSA9IHNpemVvZihpbnQpICogcHRwLVxcdTAwM2VtYXhfdmNsb2NrcztcXG4gNDE0OlxcdFxcdFxcdHB0cC1cXHUwMDNldmNsb2NrX2luZGV4ID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcXG4gNDE1OlxcdFxcdFxcdGlmICghcHRwLVxcdTAwM2V2Y2xvY2tfaW5kZXgpIHtcXG4gNDE2OlxcdFxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDQxNzpcXHRcXHRcXHRcXHRnb3RvIG5vX21lbV9mb3JfdmNsb2NrcztcXG4gNDE4OlxcdFxcdFxcdH1cXG4gNDE5OlxcdFxcdH1cXG4gNDIwOlxcdFxcbiA0MjE6XFx0XFx0ZXJyID0gcHRwX3BvcHVsYXRlX3Bpbl9ncm91cHMocHRwKTtcXG4gNDIyOlxcdFxcdGlmIChlcnIpXFxuIDQyMzpcXHRcXHRcXHRnb3RvIG5vX3Bpbl9ncm91cHM7XFxuIDQyNDpcXHRcXG4gNDI1OlxcdFxcdC8qIFJlZ2lzdGVyIGEgbmV3IFBQUyBzb3VyY2UuICovXFxuIDQyNjpcXHRcXHRpZiAoaW5mby1cXHUwMDNlcHBzKSB7XFxuIDQyNzpcXHRcXHRcXHRzdHJ1Y3QgcHBzX3NvdXJjZV9pbmZvIHBwcztcXG4gNDI4OlxcdFxcdFxcdG1lbXNldChcXHUwMDI2cHBzLCAwLCBzaXplb2YocHBzKSk7XFxuIDQyOTpcXHRcXHRcXHRzbnByaW50ZihwcHMubmFtZSwgUFBTX01BWF9OQU1FX0xFTiwgXFxcInB0cCVkXFxcIiwgaW5kZXgpO1xcbiA0MzA6XFx0XFx0XFx0cHBzLm1vZGUgPSBQVFBfUFBTX01PREU7XFxuIDQzMTpcXHRcXHRcXHRwcHMub3duZXIgPSBpbmZvLVxcdTAwM2Vvd25lcjtcXG4gNDMyOlxcdFxcdFxcdHB0cC1cXHUwMDNlcHBzX3NvdXJjZSA9IHBwc19yZWdpc3Rlcl9zb3VyY2UoXFx1MDAyNnBwcywgUFRQX1BQU19ERUZBVUxUUyk7XFxuIDQzMzpcXHRcXHRcXHRpZiAoSVNfRVJSKHB0cC1cXHUwMDNlcHBzX3NvdXJjZSkpIHtcXG4gNDM0OlxcdFxcdFxcdFxcdGVyciA9IFBUUl9FUlIocHRwLVxcdTAwM2VwcHNfc291cmNlKTtcXG4gNDM1OlxcdFxcdFxcdFxcdHByX2VycihcXFwiZmFpbGVkIHRvIHJlZ2lzdGVyIHBwcyBzb3VyY2VcXFxcblxcXCIpO1xcbiA0MzY6XFx0XFx0XFx0XFx0Z290byBub19wcHM7XFxuIDQzNzpcXHRcXHRcXHR9XFxuIDQzODpcXHRcXHRcXHRwdHAtXFx1MDAzZXBwc19zb3VyY2UtXFx1MDAzZWxvb2t1cF9jb29raWUgPSBwdHA7XFxuIDQzOTpcXHRcXHR9XFxuIDQ0MDpcXHRcXG4gNDQxOlxcdFxcdC8qIEluaXRpYWxpemUgYSBuZXcgZGV2aWNlIG9mIG91ciBjbGFzcyBpbiBvdXIgY2xvY2sgc3RydWN0dXJlLiAqL1xcbiA0NDI6XFx0XFx0ZGV2aWNlX2luaXRpYWxpemUoXFx1MDAyNnB0cC1cXHUwMDNlZGV2KTtcXG4gNDQzOlxcdFxcdHB0cC1cXHUwMDNlZGV2LmRldnQgPSBwdHAtXFx1MDAzZWRldmlkO1xcbiA0NDQ6XFx0XFx0cHRwLVxcdTAwM2VkZXYuY2xhc3MgPSBcXHUwMDI2cHRwX2NsYXNzO1xcbiA0NDU6XFx0XFx0cHRwLVxcdTAwM2VkZXYucGFyZW50ID0gcGFyZW50O1xcbiA0NDY6XFx0XFx0cHRwLVxcdTAwM2VkZXYuZ3JvdXBzID0gcHRwLVxcdTAwM2VwaW5fYXR0cl9ncm91cHM7XFxuIDQ0NzpcXHRcXHRwdHAtXFx1MDAzZWRldi5yZWxlYXNlID0gcHRwX2Nsb2NrX3JlbGVhc2U7XFxuIDQ0ODpcXHRcXHRkZXZfc2V0X2RydmRhdGEoXFx1MDAyNnB0cC1cXHUwMDNlZGV2LCBwdHApO1xcbiA0NDk6XFx0XFx0ZGV2X3NldF9uYW1lKFxcdTAwMjZwdHAtXFx1MDAzZWRldiwgXFxcInB0cCVkXFxcIiwgcHRwLVxcdTAwM2VpbmRleCk7XFxuIDQ1MDpcXHRcXG4gNDUxOlxcdFxcdC8qIENyZWF0ZSBhIHBvc2l4IGNsb2NrIGFuZCBsaW5rIGl0IHRvIHRoZSBkZXZpY2UuICovXFxuIDQ1MjpcXHRcXHRlcnIgPSBwb3NpeF9jbG9ja19yZWdpc3RlcihcXHUwMDI2cHRwLVxcdTAwM2VjbG9jaywgXFx1MDAyNnB0cC1cXHUwMDNlZGV2KTtcXG4gNDUzOlxcdFxcdGlmIChlcnIpIHtcXG4gNDU0OlxcdFxcdFxcdGlmIChwdHAtXFx1MDAzZXBwc19zb3VyY2UpXFxuIDQ1NTpcXHRcXHRcXHRcXHRwcHNfdW5yZWdpc3Rlcl9zb3VyY2UocHRwLVxcdTAwM2VwcHNfc291cmNlKTtcXG4gNDU2OlxcdFxcbiA0NTc6XFx0XFx0XFx0aWYgKHB0cC1cXHUwMDNla3dvcmtlcilcXG4gNDU4OlxcdFxcdFxcdFxcdGt0aHJlYWRfZGVzdHJveV93b3JrZXIocHRwLVxcdTAwM2Vrd29ya2VyKTtcXG4gNDU5OlxcdFxcbiA0NjA6XFx0XFx0XFx0cHV0X2RldmljZShcXHUwMDI2cHRwLVxcdTAwM2VkZXYpO1xcbiA0NjE6XFx0XFxuIDQ2MjpcXHRcXHRcXHRwcl9lcnIoXFxcImZhaWxlZCB0byBjcmVhdGUgcG9zaXggY2xvY2tcXFxcblxcXCIpO1xcbiA0NjM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gNDY0OlxcdFxcdH1cXG4gNDY1OlxcdFxcbiA0NjY6XFx0XFx0LyogRGVidWdmcyBpbml0aWFsaXphdGlvbiAqL1xcbiA0Njc6XFx0XFx0c25wcmludGYoZGVidWdmc25hbWUsIHNpemVvZihkZWJ1Z2ZzbmFtZSksIFxcXCJwdHAlZFxcXCIsIHB0cC1cXHUwMDNlaW5kZXgpO1xcbiA0Njg6XFx0XFx0cHRwLVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGVidWdmc25hbWUsIE5VTEwpO1xcbiA0Njk6XFx0XFx0aWYgKGluZm8tXFx1MDAzZW5fcGVyX2xwIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBpbmZvLVxcdTAwM2VwZXJvdXRfbG9vcGJhY2spIHtcXG4gNDcwOlxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcIm5fcGVyb3V0X2xvb3BiYWNrXFxcIiwgMDQwMCwgcHRwLVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QsXFxuIDQ3MTpcXHRcXHRcXHRcXHRcXHQgICAgcHRwLCBcXHUwMDI2cHRwX25fcGVyb3V0X2xvb3BiYWNrX2ZvcHMpO1xcbiA0NzI6XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicGVyb3V0X2xvb3BiYWNrXFxcIiwgMDIwMCwgcHRwLVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QsXFxuIDQ3MzpcXHRcXHRcXHRcXHRcXHQgICAgcHRwLCBcXHUwMDI2cHRwX3Blcm91dF9sb29wYmFja19vcHMpO1xcbiA0NzQ6XFx0XFx0fVxcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRyZXR1cm4gcHRwO1xcbiA0Nzc6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM3OjIzLjcxOTA2NTMzMloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDg4NDk1MDU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQW5hbHlzaXM6IGlnYiBQVFAgQ2xvY2sgUmVnaXN0cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBMaW5lIDQ1MiBpcyB3aGVyZSBgcG9zaXhfY2xvY2tfcmVnaXN0ZXJgIGlzIGNhbGxlZC4gSW5zaWRlIHRoYXQsIGBjZGV2X2RldmljZV9hZGRgIGdldHMgY2FsbGVkLCBtYWtpbmcgdGhlIGNoYXJhY3RlciBkZXZpY2UgYC9kZXYvcHRwMGAgYWNjZXNzaWJsZSB0byB1c2Vyc3BhY2UuIFRoaXMgbWVhbnMgdXNlcnNwYWNlIGNhbiBub3cgY2FsbCBQVFAtcmVsYXRlZCBzeXNjYWxscyBhbmQgaW9jdGxzLiBBbmQgKnRob3NlKiBjYWxscyBhcmUgcm91dGVkIHRvIGZ1bmN0aW9ucyBsaWtlIGBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2YCBldGMuIHdoaWNoIGFjY2VzcyBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYC5cblxuSGVyZSdzIHRoZSBraWNrZXI6ICBiZWZvcmUgdGhpcyBwYXRjaCwgdGhlIGBzcGluX2xvY2tfaW5pdChcdTAwMjZhZGFwdGVyLVx1MDAzZXRtcmVnX2xvY2spYCBjYWxsIHdhc24ndCAqYmVmb3JlKiB0aGUgcmVnaXN0cmF0aW9uIGluIGNlcnRhaW4gZXJyb3IgcGF0aHMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgbG9jayBjb3VsZCBiZSB1bmluaXRpYWxpemVkIHdoZW4gdGhlIGBpZ2JfcHRwXypgIGZ1bmN0aW9ucyB3ZXJlIGJlaW5nIGNhbGxlZCEgIFRoaXMgY291bGQgbGVhZCB0byBsb2NrZGVwIHNwbGF0cyBvciBiYWQgbG9jayBzdGF0ZXMuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IElzIHRoaXMgd29ydGggZnV6emluZywgYWNjb3JkaW5nIHRvIG91ciBydWxlcz8gTGV0J3MgY2hlY2sgdGhlbS4gV2UgaGF2ZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgYWZmZWN0cyBcInJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlc1wiLlxuXG5Pa2F5LCBzbyBpcyBgaWdiYCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBZZXMsIGBpZ2JgIGlzIGluY2x1ZGVkIGluIFFFTVUgc2luY2UgUUVNVSA4LjAuIFRoYXQncyBnb29kIG5ld3MuIFRoYXQgbWFrZXMgaXQgbW9yZSBsaWtlbHkuXG5cbkJ1dCB3YWl0LCB0aGVyZSdzIHRoYXQgcnVsZSBhYm91dCBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0ZWFyZG93biBjYWxsYmFja3MuICBUaGUgZXhhbXBsZSAqc3BlY2lmaWNhbGx5KiBtZW50aW9ucyBgaWdiX3JlbW92ZWAuIEJ1dCwgYGlnYl9yZW1vdmVgIGlzIGEgdGVhcmRvd24gZnVuY3Rpb24sIHdoaWxlIHRoZSBkcml2ZXIgaXMgc3RhbmRhcmQuIEFuZCwgdGhlIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGhlcmUgaXMgYGlnYl9wdHBfaW5pdGAuIFNvLCB3ZSdyZSBub3QgdGFsa2luZyBhYm91dCBhIHRlYXJkb3duIGNhbGxiYWNrLiBXZSdyZSB0YWxraW5nIGFib3V0ICppbml0aWFsaXphdGlvbiogZHVyaW5nIGRldmljZSBzZXR1cC5cblxuTmV4dDogSXMgdGhpcyBsb2NrIGJlaW5nIGluaXRpYWxpemVkIHVzZWQgYXQgcnVudGltZT8gSXMgYHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jaylgIGluaXRpYWxpemluZyB0aGUgbG9jayB1c2VkIGR1cmluZyBydW50aW1lIGJ5IFBUUCBzeXNjYWxscyAvIG9wZXJhdGlvbnM/IFllcywgZGVmaW5pdGVseS4gQWxsIG9mIHRoZSBrZXkgYGlnYl9wdHBfKmAgZnVuY3Rpb25zIHVzZSBpdCBmb3Igc3luY2hyb25pemF0aW9uOiBgaWdiX3B0cF9hZGpmaW5lXypgLCBgaWdiX3B0cF9hZGp0aW1lXypgLCBgaWdiX3B0cF9nZXR0aW1leF8qYCwgYGlnYl9wdHBfc2V0dGltZV8qYCwgYGlnYl9wdHBfZmVhdHVyZV9lbmFibGVfKmAsIGBpZ2JfcHRwX3J4X2hhbmdgLCBgaWdiX3B0cF90eF9oYW5nYCwgYGlnYl9wdHBfdHhfaHd0c3RhbXBgLCBgaWdiX3B0cF9yeF9wa3RzdGFtcGAsIGBpZ2JfcHRwX3J4X3JndHN0YW1wYCwgYGlnYl9wdHBfc2V0X3RpbWVzdGFtcF9tb2RlYC5cblxuR2l2ZW4gdGhhdCBgaWdiYCBpcyBlbXVsYXRlZCwgdGhpcyBtb2RpZmllcyBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBjb2RlLCBhbmQgdGhlIGJ1ZyBjb3VsZCBsZWFkIHRvIGEgaGFyZC10by1kZWJ1ZyBzdGF0ZSwgdGhpcyBzZWVtcyBsaWtlIGl0ICppcyogd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4MzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozNzo0NC42MDQwMTc4NDhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MTI2MzU1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0bXJlZ19sb2NrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oPTU0ND1zdHJ1Y3QgaWdiX2FkYXB0ZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYi5oLTYzNC1cXHR1bnNpZ25lZCBpbnQgcHRwX2ZsYWdzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaDo2MzU6XFx0c3BpbmxvY2tfdCB0bXJlZ19sb2NrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2IuaC02MzYtXFx0c3RydWN0IGN5Y2xlY291bnRlciBjYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTY5NDI9c3RhdGljIHZvaWQgaWdiX3Blcm91dChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB0c2ludHJfdHQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy02OTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjY5NTI6XFx0c3Bpbl9sb2NrKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy02OTUzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzAxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzo3MDE3OlxcdHNwaW5fdW5sb2NrKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTcwMjA9c3RhdGljIHZvaWQgaWdiX2V4dHRzKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHRzaW50cl90dClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTcwMzgtXFx0XFx0bnMgKz0gKCh1NjQpKHJkMzIoYXV4c3RtcGgpIFxcdTAwMjYgMHhGRikpIFxcdTAwM2NcXHUwMDNjIDMyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjcwMzk6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy03MDQwLVxcdFxcdG5zID0gdGltZWNvdW50ZXJfY3ljMnRpbWUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRjLCBucyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6NzA0MTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtNzA0Mi1cXHRcXHR0cyA9IG5zX3RvX3RpbWVzcGVjNjQobnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMzM9c3RhdGljIHZvaWQgaWdiX3B0cF93cml0ZV9pMjEwKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUzLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNTQ6ICogVGhlICd0bXJlZ19sb2NrJyBzcGlubG9jayBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTU1LSAqIHN5c3RlbSB0aW1lIHZhbHVlLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHJlYWRpbmcgdGhlIDY0IGJpdCB0aW1lXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTE2Mj1zdGF0aWMgdm9pZCBpZ2JfcHRwX3N5c3RpbV90b19od3RzdGFtcChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE3NS1cXHRjYXNlIGUxMDAwX2kzNTA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNzY6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE3Ny1cXHRcXHRucyA9IHRpbWVjb3VudGVyX2N5YzJ0aW1lKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0Yywgc3lzdGltKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE3ODpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTIyOD1zdGF0aWMgaW50IGlnYl9wdHBfYWRqdGltZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCwgczY0IGRlbHRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyMzQ6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjM1LVxcdHRpbWVjb3VudGVyX2FkanRpbWUoXFx1MDAyNmlnYi1cXHUwMDNldGMsIGRlbHRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjIzNjpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTIzNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MjQxPXN0YXRpYyBpbnQgaWdiX3B0cF9hZGp0aW1lX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsIHM2NCBkZWx0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjQ4OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MjU0OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0yNTk9c3RhdGljIGludCBpZ2JfcHRwX2dldHRpbWV4XzgyNTc2KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNzA6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMjcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yNzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoyNzk6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yODAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTI4Nj1zdGF0aWMgaW50IGlnYl9wdHBfZ2V0dGltZXhfODI1ODAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjI5NzpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0yOTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjMwNzpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTMwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM9MzE0PXN0YXRpYyBpbnQgaWdiX3B0cF9nZXR0aW1leF9pMjEwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozMjM6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzozMzE6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0zMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jPTMzNj1zdGF0aWMgaW50IGlnYl9wdHBfc2V0dGltZV84MjU3NihzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzQ2OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzUwOlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzUxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0zNTU9c3RhdGljIGludCBpZ2JfcHRwX3NldHRpbWVfaTIxMChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzYyOlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTM2My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6MzY2OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMzY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz00ODk9c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlXzgyNTgwKHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01MjMtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTI0OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUyNS1cXHRcXHR0c2F1eGMgPSByZDMyKEUxMDAwX1RTQVVYQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTUzNi1cXHRcXHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTM3OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNTM4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy01NjgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NTY5OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZpZ2ItXFx1MDAzZXRtcmVnX2xvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTU3MC1cXHRcXHR0c2F1eGMgPSByZDMyKEUxMDAwX1RTQVVYQyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTYyOS1cXHRcXHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NjMwOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNjMxLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz02NDA9c3RhdGljIGludCBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTAoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTY3Mi1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo2NzM6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNjc0LVxcdFxcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNjg1LVxcdFxcdHdyMzIoRTEwMDBfVFNJTSwgdHNpbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo2ODY6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy02ODctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTczMy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3MzQ6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzM1LVxcdFxcdHRzYXV4YyA9IHJkMzIoRTEwMDBfVFNBVVhDKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzU5LVxcdFxcdHdyMzIoRTEwMDBfVFNJTSwgdHNpbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzo3NjA6XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjEtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc2My1cXHRjYXNlIFBUUF9DTEtfUkVRX1BQUzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjc2NDpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2aWdiLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy03NjUtXFx0XFx0dHNpbSA9IHJkMzIoRTEwMDBfVFNJTSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTc3MS1cXHRcXHR3cjMyKEUxMDAwX1RTSU0sIHRzaW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmM6NzcyOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmlnYi1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtNzczLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xMzA1PXZvaWQgaWdiX3B0cF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjEzODE6XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXRtcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTM4Mi1cXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYz0xNDY5PXZvaWQgaWdiX3B0cF9yZXNldChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jLTE0NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYzoxNDc3OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrLCBmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuYy0xNTExLW91dDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jOjE1MTI6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2YWRhcHRlci1cXHUwMDNldG1yZWdfbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmMtMTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzc6NDQuOTg1Mjg3MjNaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcwMjM0NzUyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEludGVsIElHQiBEcml2ZXIgUFRQIEluaXRpYWxpemF0aW9uIEJ1ZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBleGFtaW5lIHRoZSBgaWdiX3B0cF9pbml0YCBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIGtleSB0byBQVFAgaW5pdGlhbGl6YXRpb24gaW4gdGhlIElHQiBkcml2ZXIuIEkgY2FuIHNlZSB0aGF0IGl0IGNhbGxzIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHdpdGggdGhlIGFkYXB0ZXIncyBQVFAgY2FwYWJpbGl0aWVzIGFuZCB0aGUgUENJIGRldmljZSdzIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCB0aGVuIGNhbGxzIGBpZ2JfcHRwX3Jlc2V0YC4gQ3J1Y2lhbGx5LCBgaWdiX3B0cF9yZXNldGAgc3Vic2VxdWVudGx5IGFjcXVpcmVzIHRoZSBgdG1yZWdfbG9ja2Agc3BpbmxvY2sgdXNpbmcgYHNwaW5fbG9ja19pcnFzYXZlYC4gSSBrbm93IHRoYXQgYHB0cF9jbG9ja19yZWdpc3RlcmAgY3JlYXRlcyB0aGUgYC9kZXYvcHRwWGAgZGV2aWNlIG5vZGUsIG1ha2luZyBpdCBhdmFpbGFibGUgdG8gdXNlcnNwYWNlLCB3aGljaCBpbiB0dXJuIGNhbGxzIGZ1bmN0aW9ucyBsaWtlIGBpZ2JfcHRwX2FkanRpbWVfKmAgYW5kIGBpZ2JfcHRwX2dldHRpbWV4XypgLiBUaGVzZSB1c2VyLXNwYWNlIGNhbGxzIGFsc28gYWNxdWlyZSB0aGUgYHRtcmVnX2xvY2tgLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIHJlbGV2YW50IHN5bWJvbHMuIGBpZ2JfcHRwX2luaXRgIGlzIGEgbm9uLXN0YXRpYyBzeW1ib2wsIG1lYW5pbmcgaXQncyBleHBvcnRlZCB3aXRoaW4gdGhlIGRyaXZlci4gYGlnYl9wcm9iZWAgaXMgc3RhdGljLCB3aGljaCBpcyBleHBlY3RlZC4gYHB0cF9jbG9ja19yZWdpc3RlcmAgcmVzaWRlcyBpbiBgZHJpdmVycy9wdHAvcHRwX2Nsb2NrLmNgIGFuZCBpcyBhbiBleHBvcnRlZCBzeW1ib2wuIEkgYWxzbyBzZWUgb3RoZXIgcmVsZXZhbnQgbm9uLXN0YXRpYyBJR0IgUFRQIGZ1bmN0aW9ucywgbGlrZSBgaWdiX3B0cF9yZXNldGAsIGBpZ2JfcHRwX2h3dHN0YW1wX3NldGAsIGFuZCBgaWdiX3B0cF9od3RzdGFtcF9nZXRgLlxuXG5OZXh0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSdtIGZvY3VzaW5nIG9uIGBDT05GSUdfSUdCYCwgYENPTkZJR19QVFBfMTU4OF9DTE9DS2AsIGFuZCBgQ09ORklHX1BDSWAuIExvb2tpbmcgYXQgdGhlIGBLY29uZmlnYCBmaWxlcywgSSBjYW4gc2VlIHRoYXQgYENPTkZJR19JR0JgIGRlcGVuZHMgb24gYFBDSWAgYW5kIGVpdGhlciBgUFRQXzE1ODhfQ0xPQ0tgIG9yIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAgZm9yIFBUUCBzdXBwb3J0LiBJdCBhbHNvIHNlbGVjdHMgYEkyQ2AgYW5kIGBJMkNfQUxHT0JJVGAuIE1vcmVvdmVyLCBgSUdCYCBpcyBuZXN0ZWQgd2l0aGluIHRoZSBgTkVUREVWSUNFU2AsIGBFVEhFUk5FVGAsIGFuZCBgTkVUX1ZFTkRPUl9JTlRFTGAgbWVudSBoaWVyYXJjaGllcy5cblxuSSd2ZSB2ZXJpZmllZCBteSB1bmRlcnN0YW5kaW5nLiBUaGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmU6IGBJR0JgLCBgUENJYCwgYW5kIGBQVFBfMTU4OF9DTE9DS2AuIFRoZSBpbXBvcnRhbnQgc3ltYm9scyBmb3IgZnV6emluZyBhcmU6IGBpZ2JfcHRwX2luaXRgLCBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCwgYGlnYl9wdHBfcmVzZXRgLCBhbmQgYGlnYl9wdHBfaHd0c3RhbXBfc2V0YC5cblxuQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gb3JkZXIsIEkgY2FuIGNvbmZpcm0gdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB0aGUgYHNwaW5fbG9ja19pbml0YCBjYWxsIGZvciBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBoYXBwZW5lZCAqYWZ0ZXIqIHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBjYWxsLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgYHB0cF9jbG9ja19yZWdpc3RlcmAgZXhwb3NlcyB0aGUgUFRQIGhhcmR3YXJlIGNsb2NrIHRvIHVzZXJzcGFjZSwgYW5kIHRoYXQgdXNlcnNwYWNlIGNvZGUgY291bGQgaGF2ZSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSB1bmluaXRpYWxpemVkIGxvY2suIFNpbmNlIHRoZSBJR0IgZHJpdmVyIGlzIGVtdWxhdGVkIGluIFFFTVUgd2l0aCB0aGUgSW50ZWwgODI1NzYgR2JFIGFuZCBjYW4gYmUgZnV6emVkIHRocm91Z2ggUFRQIGNsb2NrIGFuZCBuZXR3b3JrIHRpbWVzdGFtcGluZyBpbnRlcmZhY2VzLCB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuQWxyaWdodCwgdGhhdCdzIGFsbCBJIG5lZWRlZC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTE1LCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozODowMi4wMDg3NjU0MzNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTQwNjAxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUdCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdiX3B0cF9pbml0XCIsXG4gICAgXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgICBcImlnYl9wdHBfcmVzZXRcIixcbiAgICBcImlnYl9wdHBfaHd0c3RhbXBfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVnIGluIHRoZSBJbnRlbCBpZ2IgZHJpdmVyIGJ5IGluaXRpYWxpemluZyB0aGUgYWRhcHRlcidzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUdCXCIsXG4gICAgXCJQQ0lcIixcbiAgICBcIlBUUF8xNTg4X0NMT0NLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdiX3B0cF9pbml0XCIsXG4gICAgXCJwdHBfY2xvY2tfcmVnaXN0ZXJcIixcbiAgICBcImlnYl9wdHBfcmVzZXRcIixcbiAgICBcImlnYl9wdHBfaHd0c3RhbXBfc2V0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVnIGluIHRoZSBJbnRlbCBpZ2IgZHJpdmVyIGJ5IGluaXRpYWxpemluZyB0aGUgYWRhcHRlcidzIHRtcmVnX2xvY2sgc3BpbmxvY2sgYmVmb3JlIGNhbGxpbmcgcHRwX2Nsb2NrX3JlZ2lzdGVyKCkuIFByaW9yIHRvIHRoaXMgZml4LCByZWdpc3RlcmluZyB0aGUgUFRQIGNsb2NrIGV4cG9zZWQgY2FsbGJhY2tzIHRvIHVzZXJzcGFjZS9zdWJzeXN0ZW1zIGFuZCBpZ2JfcHRwX3Jlc2V0KCkgdGhhdCBhY3F1aXJlIHRtcmVnX2xvY2sgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZC4gaWdiIGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBhbmQgUFRQIGNsb2NrIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGV4ZXJjaXNlZCB2aWEgUE9TSVggY2xvY2sgYW5kIFBUUCBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM4OjAyLjA4MDE5MzQ5OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzMTAzOTE5ODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozODowMi4wODA2MTQxMDhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4MjMwOTk2NTkwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyN2QxM2VjYjgyMDQxODUwYzVkYTliNTc2NmU4ZmJhZDZmZmYyZDQ1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTY6Mjc6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1xuaW5kZXggNjM4ZDgyNDJiNjZiYi4uMmE0ZWEzMjdhYzM1ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNcbkBAIC0xMzc4LDYgKzEzNzgsNyBAQCB2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4gXHRhZGFwdGVyLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF9jYXBzLFxuIFx0XHRcdFx0XHRcdFx1MDAyNmFkYXB0ZXItXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuIFx0aWYgKElTX0VSUihhZGFwdGVyLVx1MDAzZXB0cF9jbG9jaykpIHtcbkBAIC0xMzg4LDcgKzEzODksNiBAQCB2b2lkIGlnYl9wdHBfaW5pdChzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdFx0IGFkYXB0ZXItXHUwMDNlbmV0ZGV2LVx1MDAzZW5hbWUpO1xuIFx0XHRhZGFwdGVyLVx1MDAzZXB0cF9mbGFncyB8PSBJR0JfUFRQX0VOQUJMRUQ7XG4gXG4tXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFkYXB0ZXItXHUwMDNldG1yZWdfbG9jayk7XG4gXHRcdElOSVRfV09SSyhcdTAwMjZhZGFwdGVyLVx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xuIFxuIFx0XHRpZiAoYWRhcHRlci1cdTAwM2VwdHBfZmxhZ3MgXHUwMDI2IElHQl9QVFBfT1ZFUkZMT1dfQ0hFQ0spXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjozODowMi4wODA2MTQ4OThaIiwiU2VxIjozNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcyMDIyMTcwMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJR0IgUFRQIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfcHRwLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jay4gQ3VycmVudGx5LCBgc3Bpbl9sb2NrX2luaXQoXHUwMDI2YWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrKTtgIGlzIHBsYWNlZCAqYmVmb3JlKiB0aGUgYHB0cF9jbG9ja19yZWdpc3RlciguLi4pYCBjYWxsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaHkgdGhlIHJlb3JkZXJpbmc/XCIgV2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgbW92ZT8gQXJlIHRoZXJlIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB0aGlzIGlzIHRyeWluZyB0byBhZGRyZXNzP1xuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvIG9wZXJhdGlvbnMgYW5kIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIGFueSBwb3RlbnRpYWwgY29uY3VycmVudCBhY2Nlc3MgdG8gYGFkYXB0ZXJgJ3MgbWVtYmVycyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgaG93IHRoZSBgdG1yZWdfbG9ja2AgaXMgdXNlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBQVFAgY2xvY2sgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEknbGwgcHJvYmFibHkgc3RhcnQgZGlnZ2luZyBpbnRvIGBpZ2JfcHRwX2luaXRgIGl0c2VsZiB1c2luZyBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gc2VlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24uIEZyb20gdGhlcmUsIEknbGwgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2UgdGhlIGBpZ2JfcHRwX2luaXRgIGZ1bmN0aW9uIHRvIHNlZSBpZiBpdCBpcyBjYWxsZWQgYW55d2hlcmUgZWxzZSBhbmQgaG93IHRoZSBgdG1yZWdfbG9ja2AgaXMgdXNlZCBmcm9tIHRoZXJlLiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIHdoYXQgc29ydCBvZiBlZmZlY3RzIHRoaXMgaGFzIHRvIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNvZGUuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBpbiBkcml2ZXJzLCBidXQgYW55IGNoYW5nZSB0byBsb2NraW5nIHN0cmF0ZWdpZXMgZGVzZXJ2ZXMgY2FyZWZ1bCBzY3J1dGlueS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBpcyBzb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjM4OjI5LjI4MjgzNDA1NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9wdHAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzYwOlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLm1heF9hZGogPSA2MjQ5OTk5OTtcXG4xMzYxOlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLm5fZXh0X3RzID0gSUdCX05fRVhUVFM7XFxuMTM2MjpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5uX3Blcl9vdXQgPSBJR0JfTl9QRVJPVVQ7XFxuMTM2MzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5uX3BpbnMgPSBJR0JfTl9TRFA7XFxuMTM2NDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5zdXBwb3J0ZWRfZXh0dHNfZmxhZ3MgPSBQVFBfUklTSU5HX0VER0UgfFxcbjEzNjU6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBQVFBfRkFMTElOR19FREdFIHxcXG4xMzY2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgUFRQX1NUUklDVF9GTEFHUztcXG4xMzY3OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLnBwcyA9IDE7XFxuMTM2ODpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5waW5fY29uZmlnID0gYWRhcHRlci1cXHUwMDNlc2RwX2NvbmZpZztcXG4xMzY5OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLmFkamZpbmUgPSBpZ2JfcHRwX2FkamZpbmVfODI1ODA7XFxuMTM3MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5hZGp0aW1lID0gaWdiX3B0cF9hZGp0aW1lX2kyMTA7XFxuMTM3MTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5nZXR0aW1leDY0ID0gaWdiX3B0cF9nZXR0aW1leF9pMjEwO1xcbjEzNzI6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlcHRwX2NhcHMuc2V0dGltZTY0ID0gaWdiX3B0cF9zZXR0aW1lX2kyMTA7XFxuMTM3MzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy5lbmFibGUgPSBpZ2JfcHRwX2ZlYXR1cmVfZW5hYmxlX2kyMTA7XFxuMTM3NDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2Fwcy52ZXJpZnkgPSBpZ2JfcHRwX3ZlcmlmeV9waW47XFxuMTM3NTpcXHRcXHRcXHRicmVhaztcXG4xMzc2OlxcdFxcdGRlZmF1bHQ6XFxuMTM3NzpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBOVUxMO1xcbjEzNzg6XFx0XFx0XFx0cmV0dXJuO1xcbjEzNzk6XFx0XFx0fVxcbjEzODA6XFx0XFxuMTM4MTpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YWRhcHRlci1cXHUwMDNldG1yZWdfbG9jayk7XFxuMTM4MjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF9jYXBzLFxcbjEzODM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuMTM4NDpcXHRcXHRpZiAoSVNfRVJSKGFkYXB0ZXItXFx1MDAzZXB0cF9jbG9jaykpIHtcXG4xMzg1OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXB0cF9jbG9jayA9IE5VTEw7XFxuMTM4NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJwdHBfY2xvY2tfcmVnaXN0ZXIgZmFpbGVkXFxcXG5cXFwiKTtcXG4xMzg3OlxcdFxcdH0gZWxzZSBpZiAoYWRhcHRlci1cXHUwMDNlcHRwX2Nsb2NrKSB7XFxuMTM4ODpcXHRcXHRcXHRkZXZfaW5mbyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiYWRkZWQgUEhDIG9uICVzXFxcXG5cXFwiLFxcbjEzODk6XFx0XFx0XFx0XFx0IGFkYXB0ZXItXFx1MDAzZW5ldGRldi1cXHUwMDNlbmFtZSk7XFxuMTM5MDpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VwdHBfZmxhZ3MgfD0gSUdCX1BUUF9FTkFCTEVEO1xcbjEzOTE6XFx0XFxuMTM5MjpcXHRcXHRcXHRJTklUX1dPUksoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXB0cF90eF93b3JrLCBpZ2JfcHRwX3R4X3dvcmspO1xcbjEzOTM6XFx0XFxuMTM5NDpcXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcHRwX2ZsYWdzIFxcdTAwMjYgSUdCX1BUUF9PVkVSRkxPV19DSEVDSylcXG4xMzk1OlxcdFxcdFxcdFxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwdHBfb3ZlcmZsb3dfd29yayxcXG4xMzk2OlxcdFxcdFxcdFxcdFxcdFxcdCAgaWdiX3B0cF9vdmVyZmxvd19jaGVjayk7XFxuMTM5NzpcXHRcXG4xMzk4OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZXRzdGFtcF9jb25maWcucnhfZmlsdGVyID0gSFdUU1RBTVBfRklMVEVSX05PTkU7XFxuMTM5OTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2V0c3RhbXBfY29uZmlnLnR4X3R5cGUgPSBIV1RTVEFNUF9UWF9PRkY7XFxuMTQwMDpcXHRcXG4xNDAxOlxcdFxcdFxcdGlnYl9wdHBfcmVzZXQoYWRhcHRlcik7XFxuMTQwMjpcXHRcXHR9XFxuMTQwMzpcXHR9XFxuMTQwNDpcXHRcXG4xNDA1OlxcdC8qKlxcbjE0MDY6XFx0ICogaWdiX3B0cF9zZHBfaW5pdCAtIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggaW5pdHMgdGhlIFNEUCBjb25maWcgc3RydWN0c1xcbjE0MDc6XFx0ICogQGFkYXB0ZXI6IEJvYXJkIHByaXZhdGUgc3RydWN0dXJlLlxcbjE0MDg6XFx0ICoqL1xcbjE0MDk6XFx0dm9pZCBpZ2JfcHRwX3NkcF9pbml0KHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlcilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzg6MjkuMjgyOTUzOTc0WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MTA3NjA1Nzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIExvY2sgSW5pdGlhbGl6YXRpb24gRml4KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRoZSBgcHRwX2Nsb2NrX3JlZ2lzdGVyYCBmdW5jdGlvbiBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGRyaXZlcidzIGludGVybmFsIGxvY2tpbmcgbWVjaGFuaXNtLCBgYWRhcHRlci1cdTAwM2V0bXJlZ19sb2NrYC4gSSBzZWUgdGhhdCB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gd2FzIHByZXZpb3VzbHkgZmxhd2VkOiB0aGUgc3BpbmxvY2sgd2Fzbid0IGluaXRpYWxpemVkICpiZWZvcmUqIGBwdHBfY2xvY2tfcmVnaXN0ZXJgIHdhcyBjYWxsZWQuIFRoaXMgY3JlYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gQ2FsbGJhY2tzIGxpa2UgYGlnYl9wdHBfYWRqZmluZV84MjU4MGAgb3IgYGlnYl9wdHBfZ2V0dGltZXhfaTIxMGAgY291bGQgYmUgaW52b2tlZCBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLCBhbmQgaWYgdGhleSBhY2Nlc3NlZCB0aGUgdW5pbml0aWFsaXplZCBsb2NrLCB3ZSdkIGhhdmUgYSBjbGFzc2ljIFwidXNlLWJlZm9yZS1pbml0XCIgYnVnLCBsZWFkaW5nIHRvIGxvY2tkZXAgc3BsYXRzIG9yIG1vcmUgc3VidGxlIGNvbmN1cnJlbmN5IGlzc3Vlcy4gQSBwcmV0dHkgY29tbW9uIHNjZW5hcmlvLCByZWFsbHkuXG5cblNvLCB0aGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZDogbW92ZSBgc3Bpbl9sb2NrX2luaXRgIGVhcmxpZXIuIFNpbXBsZSwgYnV0IGNyaXRpY2FsLiBOb3csIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgY2hlY2sgZm9yIGFueSBzaWRlIGVmZmVjdHMgdGhpcyBjaGFuZ2UgbWlnaHQgaW50cm9kdWNlLiBMZXQncyBzZWUuLi5cblxuRmlyc3QsIGRvZXMgdGhpcyBwYXRjaCBpbiBhbnkgd2F5IHRvdWNoIG9yIG1vZGlmeSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgZ2V0IGV4cG9zZWQgdG8gdXNlciBzcGFjZT8gTm8sIG5vdCB0aGF0IEkgY2FuIHRlbGwuXG5cblNlY29uZCwgZG9lcyB0aGUgY2hhbmdlIGludHJvZHVjZSBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgbWlnaHQgZGVwZW5kIG9uIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/IE5vLCBJIGRvbid0IHNlZSBhbnl0aGluZyBsaWtlIHRoYXQuXG5cblRoaXJkLCBhcmUgYW55IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIGFsbG9jYXRlZCB3aGVyZSB3ZSBtaWdodCBpbmFkdmVydGVudGx5IHJlYWQgdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vLCB0aGUgc3BpbmxvY2sgaXRzZWxmIGlzIGluaXRpYWxpemVkLlxuXG5Gb3VydGgsIGFyZSB3ZSBtb2RpZnlpbmcgYW55IGJvdW5kcyBjaGVja3Mgb3IgcmVsYXRlZCBsb2dpYyB0aGF0IGNvdWxkIGxlYWQgdG8gYWNjZXNzaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5PyBOby4gRXZlcnl0aGluZyBzZWVtcyBzYWZlLlxuXG5Gcm9tIG15IHBlcnNwZWN0aXZlLCB0aGlzIHJlYWxseSBzaG91bGRuJ3QgaW50cm9kdWNlIGFueSBuZXcgcmlza3MgZnJvbSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBwZXJzcGVjdGl2ZS4gSSBkb24ndCBzZWUgYW55IGV4cG9zZWQgdW5pbml0aWFsaXplZCBkYXRhIHJlYWRzIHRvIHVzZXIgc3BhY2UuIEl0IGp1c3QgZml4ZXMgdGhlIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcuIFRoZSBsb2NraW5nIGJ1Z3MgYXJlIGNhdWdodCBieSBMT0NLREVQIGFuZCBzcGlubG9jayBkZWJ1Z2dpbmcg4oCTIHN0YW5kYXJkIGRlYnVnIGtlcm5lbHMgd2l0aCBDT05GSUdfREVCVUdfU1BJTkxPQ0sgYW5kIENPTkZJR19QUk9WRV9MT0NLSU5HIGVuYWJsZWQuXG5cbkNvbnNpZGVyaW5nIGFsbCBvZiB0aGlzLCB0aGVyZSdzIG5vIGp1c3RpZmljYXRpb24gZm9yIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGB0cnVlYC4gS01TQU4ncyBwdXJwb3NlIGlzIHRvIGRldGVjdCB1bmluaXRpYWxpemVkIG1lbW9yeSAqcmVhZHMqLCB3aGljaCB3ZSBkb24ndCBoYXZlIGhlcmUuIEl0J3MgZGVzaWduZWQgdG8gZGV0ZWN0IHZhbHVlcyBiZWluZyB1c2VkIGluIGNvbnRyb2wgZmxvdywgb3IgbGVha2VkIHRvIHVzZXJzcGFjZSwgbm9uZSBvZiB3aGljaCBhcHBseSBoZXJlLiBLTVNBTidzIG5vdCB0aGUgcmlnaHQgdG9vbCBmb3IgZml4aW5nIGxvY2sgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgYnVncyDigJMgdGhlc2UgYXJlIGZvdW5kIHdpdGggbG9ja2RlcCBhbmQgc3BpbmxvY2sgZGVidWdnaW5nLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhc3Nlc3NtZW50LiBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MzIsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6Mzk6MjQuMzkwNTYyMzhaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgYWRhcHRlci1cXHUwMDNldG1yZWdfbG9ja2Agc3BpbmxvY2sgYmVmb3JlIGBwdHBfY2xvY2tfcmVnaXN0ZXIoKWAgdG8gZW5zdXJlIHRoZSBsb2NrIGlzIGluaXRpYWxpemVkIGJlZm9yZSB0aGUgUFRQIGNsb2NrIGRldmljZSBpcyByZWdpc3RlcmVkIGFuZCBpdHMgY2FsbGJhY2tzIGNhbiBiZSBpbnZva2VkLiBUaGlzIGlzIGEgbG9ja2luZy9jb25jdXJyZW5jeSBpbml0aWFsaXphdGlvbiBvcmRlciBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBvciBhbHRlciBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGJ1ZmZlciBoYW5kbGluZywgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UuIEFueSBsb2NraW5nIG9yIHVuaW5pdGlhbGl6ZWQgbG9jayBpc3N1ZXMgYXJlIGNhdWdodCBieSBzdGFuZGFyZCBkZWJ1ZyBmYWNpbGl0aWVzIChMT0NLREVQLCBDT05GSUdfREVCVUdfU1BJTkxPQ0spIGVuYWJsZWQgaW4gc3RhbmRhcmQgS0FTQU4gYnVpbGRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBhZGFwdGVyLVxcdTAwM2V0bXJlZ19sb2NrYCBzcGlubG9jayBiZWZvcmUgYHB0cF9jbG9ja19yZWdpc3RlcigpYCB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoZSBQVFAgY2xvY2sgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgYW5kIGl0cyBjYWxsYmFja3MgY2FuIGJlIGludm9rZWQuIFRoaXMgaXMgYSBsb2NraW5nL2NvbmN1cnJlbmN5IGluaXRpYWxpemF0aW9uIG9yZGVyIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYnVmZmVyIGhhbmRsaW5nLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZS4gQW55IGxvY2tpbmcgb3IgdW5pbml0aWFsaXplZCBsb2NrIGlzc3VlcyBhcmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGRlYnVnIGZhY2lsaXRpZXMgKExPQ0tERVAsIENPTkZJR19ERUJVR19TUElOTE9DSykgZW5hYmxlZCBpbiBzdGFuZGFyZCBLQVNBTiBidWlsZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[1] Phase: Succeeded StartedAt: 2026-08-30 16:39:36 +0000 UTC FinishedAt: 2026-08-30 16:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-30 16:39:36 +0000 UTC FinishedAt: 2026-08-30 16:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2] Phase: Succeeded StartedAt: 2026-08-30 16:39:36 +0000 UTC FinishedAt: 2026-08-30 18:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:39:36 +0000 UTC FinishedAt: 2026-08-30 18:21:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:39:36 +0000 UTC FinishedAt: 2026-08-30 16:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:39:36 +0000 UTC FinishedAt: 2026-08-30 16:39:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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-workflowk7nrm/series-workflowk7nrm-convert-artifact-4259813554/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:39:46 +0000 UTC FinishedAt: 2026-08-30 16:55:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:39:46 +0000 UTC FinishedAt: 2026-08-30 16:55:59 +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:*66e92b99-59bb-4c76-8853-193783d82ca4,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-workflowk7nrm/series-workflowk7nrm-convert-artifact-4259813554/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": "2ffc07e5-0a3b-4e8f-8102-e8e7e57b7222", "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-workflowk7nrm/series-workflowk7nrm-build-action-2439244336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:39:46 +0000 UTC FinishedAt: 2026-08-30 16:55:49 +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:*66e92b99-59bb-4c76-8853-193783d82ca4,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-workflowk7nrm/series-workflowk7nrm-convert-artifact-4259813554/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": "2ffc07e5-0a3b-4e8f-8102-e8e7e57b7222", "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-workflowk7nrm/series-workflowk7nrm-build-action-2439244336/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:55:59 +0000 UTC FinishedAt: 2026-08-30 16:55:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:55:59 +0000 UTC FinishedAt: 2026-08-30 16:55:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:55:59 +0000 UTC FinishedAt: 2026-08-30 16:56:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:55:59 +0000 UTC FinishedAt: 2026-08-30 16:56:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-workflowk7nrm/series-workflowk7nrm-convert-artifact-1812491213/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:56:09 +0000 UTC FinishedAt: 2026-08-30 16:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:56:09 +0000 UTC FinishedAt: 2026-08-30 16:57:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2ffc07e5-0a3b-4e8f-8102-e8e7e57b7222,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-workflowk7nrm/series-workflowk7nrm-build-action-2439244336/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-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:58:06 +0000 UTC FinishedAt: 2026-08-30 16:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:58:06 +0000 UTC FinishedAt: 2026-08-30 16:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:58:06 +0000 UTC FinishedAt: 2026-08-30 17:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:58:06 +0000 UTC FinishedAt: 2026-08-30 17:14:31 +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:*66e92b99-59bb-4c76-8853-193783d82ca4,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-workflowk7nrm/series-workflowk7nrm-convert-artifact-1812491213/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": "cf9006eb-6595-467e-9873-af9be36bd587", "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-workflowk7nrm/series-workflowk7nrm-build-action-1965005225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 16:58:06 +0000 UTC FinishedAt: 2026-08-30 17:14:21 +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:*66e92b99-59bb-4c76-8853-193783d82ca4,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-workflowk7nrm/series-workflowk7nrm-convert-artifact-1812491213/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": "cf9006eb-6595-467e-9873-af9be36bd587", "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-workflowk7nrm/series-workflowk7nrm-build-action-1965005225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:14:31 +0000 UTC FinishedAt: 2026-08-30 17:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:14:31 +0000 UTC FinishedAt: 2026-08-30 17:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:14:31 +0000 UTC FinishedAt: 2026-08-30 17:16:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:14:31 +0000 UTC FinishedAt: 2026-08-30 17:16:34 +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:*cf9006eb-6595-467e-9873-af9be36bd587,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-workflowk7nrm/series-workflowk7nrm-build-action-1965005225/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-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 18:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 18:21:13 +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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"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:*2ffc07e5-0a3b-4e8f-8102-e8e7e57b7222,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cf9006eb-6595-467e-9873-af9be36bd587,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-workflowk7nrm/series-workflowk7nrm-build-action-2439244336/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-workflowk7nrm/series-workflowk7nrm-build-action-1965005225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 17:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 17:16:48 +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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"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-workflowk7nrm/series-workflowk7nrm-convert-artifact-2957583538/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 17:16:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 17:16:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:44 +0000 UTC FinishedAt: 2026-08-30 17:16:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:54 +0000 UTC FinishedAt: 2026-08-30 18:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk7nrm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"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":["igb_ptp_init","ptp_clock_register","igb_ptp_reset","igb_ptp_hwtstamp_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2188569e7e1b0bc3f3b557dc97ab7a02befc11c8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IGB","PCI","PTP_1588_CLOCK"],"series_id":"fa1d6ac2-fefc-4e8b-b726-35f20de56c64","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-30 17:16:54 +0000 UTC FinishedAt: 2026-08-30 18:21:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2ffc07e5-0a3b-4e8f-8102-e8e7e57b7222,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cf9006eb-6595-467e-9873-af9be36bd587,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-workflowk7nrm/series-workflowk7nrm-build-action-2439244336/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-workflowk7nrm/series-workflowk7nrm-build-action-1965005225/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-workflowk7nrm/series-workflowk7nrm-convert-artifact-2957583538/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,}