Name: series-workflowgqg87 Phase: Running StartedAt: 2026-08-10 06:10:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[0] Phase: Succeeded StartedAt: 2026-08-10 06:10:03 +0000 UTC FinishedAt: 2026-08-10 06:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[0].run-triage Phase: Succeeded StartedAt: 2026-08-10 06:10:03 +0000 UTC FinishedAt: 2026-08-10 06:15:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4df22710a77d2365e56d720bc4106e54c1dfa2ff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MAC80211", "WLAN", "WLAN_VENDOR_MEDIATEK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4df22710a77d2365e56d720bc4106e54c1dfa2ff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MAC80211", "WLAN", "WLAN_VENDOR_MEDIATEK" ], "series_id": "9f4b1f23-bebd-42b7-be0d-58ad19686601" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925e_axidma_cal_cache_init", "mt7925_axidma_alloc", "mt7925_axidma_free", "mt7925_mcu_send_axidma_info", "mt7925_mcu_send_fact_cal_mapping_tbl", "mt7925_mcu_fact_cal_set_bypass" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfYWxsb2MmIzM0OywKICAgICYjMzQ7bXQ3OTI1X2F4aWRtYV9mcmVlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hpbmcgbWVjaGFuaXNtIGZvciB0aGUgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB1c2luZyBBWEkgRE1BLiBBbGwgc3RydWN0dXJlcyBzZW50IHRvIHRoZSBNQ1UgKGUuZy4sIGBtdDc5MjVfYXhpZG1hX2luZm9fcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsYCwgYW5kIHRoZSBieXBhc3MgcmVxdWVzdCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgdXNpbmcgYGt6YWxsb2NgLCBgbWVtc2V0YCwgb3IgQyBzdHJ1Y3QgaW5pdGlhbGl6ZXJzLiBUaGUgRE1BIGJ1ZmZlciBpdHNlbGYgaXMgYWxsb2NhdGVkIHdpdGggYGRtYV9hbGxvY19jb2hlcmVudGAsIHdoaWNoIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBsZWFrZWQgdG8gdGhlIE1DVSBvciB1c2VyIHNwYWNlLCBub3IgaXMgdGhlcmUgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBBWEkgRE1BIGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGUgZmVhdHVyZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIFdpLUZpIGRyaXZlci4gSXQgYWRkcyBETUEgbWVtb3J5IGFsbG9jYXRpb24sIE1DVSBtZXNzYWdpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHRvIGJ5cGFzcyBmdWxsIGNhbGlicmF0aW9uIGJ5IHJldXNpbmcgY2FjaGVkIGRhdGEuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgcGF0aHMsIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbmluZGV4IDBlZGVkYTU2OWU5YTUuLmU0NmNiNGFlMzdhOTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXG5AQCAtMTM1Nyw5ICYjNDM7MTM1NywxMSBAQCBlbnVtIHtcbiBcdE1DVV9VTklfQ01EX0FMTF9TVEFfSU5GTyA9IDB4NmUsXG4gXHRNQ1VfVU5JX0NNRF9BU1NFUlRfRFVNUCA9IDB4NmYsXG4gXHRNQ1VfVU5JX0NNRF9FWFRfRUVQUk9NX0NUUkwgPSAweDc0LFxuJiM0MztcdE1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YyxcbiBcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXG4gXHRNQ1VfVU5JX0NNRF9NTEQgPSAweDgyLFxuIFx0TUNVX1VOSV9DTURfU0RPID0gMHg4OCxcbiYjNDM7XHRNQ1VfVU5JX0NNRF9BWElETUEgPSAweGEyLFxuIH07XG4gXG4gZW51bSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxuaW5kZXggZjlkY2MwYmJhMzkzYy4uMzM1MzkxMjFhMTVjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxuQEAgLTYsNSAmIzQzOzYsNSBAQCBvYmotJChDT05GSUdfTVQ3OTI1VSkgJiM0Mzs9IG10NzkyNXUub1xuIFxuIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiBtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4tbXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbiYjNDM7bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8gY2FjaGVkX2NhbC5vXG4gbXQ3OTI1dS15IDo9IHVzYi5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDNiZDY4MmYxMjI0YlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jXG5AQCAtMCwwICYjNDM7MSwzMDQgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuJiM0MzsvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDsuLi9tdDc5MnguaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtjYWNoZWRfY2FsLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcbiYjNDM7XG4mIzQzO1x0bC1cdTAwM2Vjb21tb25fc3RyaWRlICA9IGhkciAmIzQzOyBNVDc5MjVfRkFDVF9DQUxfTEVOX0NPTTtcbiYjNDM7XHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQO1xuJiM0MztcdGwtXHUwMDNlY2hhbm5lbF9zdHJpZGUgPSBoZHIgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcbiYjNDM7XG4mIzQzO1x0bC1cdTAwM2Vjb21tb25fb2ZmICA9IDA7XG4mIzQzO1x0bC1cdTAwM2Vncm91cF9vZmYgICA9IGwtXHUwMDNlY29tbW9uX29mZiAmIzQzO1xuJiM0MztcdFx0bC1cdTAwM2Vjb21tb25fc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTTtcbiYjNDM7XHRsLVx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cdTAwM2Vncm91cF9vZmYgJiM0MztcbiYjNDM7XHRcdGwtXHUwMDNlZ3JvdXBfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTtcbiYjNDM7XHRsLVx1MDAzZW1hcHBpbmdfb2ZmID0gbC1cdTAwM2VjaGFubmVsX29mZiAmIzQzO1xuJiM0MztcdFx0bC1cdTAwM2VjaGFubmVsX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMO1xuJiM0MztcdGwtXHUwMDNldG90YWwgPSBsLVx1MDAzZW1hcHBpbmdfb2ZmICYjNDM7XG4mIzQzO1x0XHRzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IGw7XG4mIzQzO1xuJiM0MztcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXHUwMDI2bCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBsLnRvdGFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X2F4aWRtYV9hbGxvYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHRvdGFsX3NpemU7XG4mIzQzO1x0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHR2b2lkICp2YTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHRvdGFsX3NpemUgPSBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplKCk7XG4mIzQzO1xuJiM0MztcdHZhID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldi1cdTAwM2VtdDc2LmRldiwgdG90YWxfc2l6ZSwgXHUwMDI2ZG1hX2FkZHIsXG4mIzQzO1x0XHRcdFx0R0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCF2YSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xuJiM0MztcdGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyID0gZG1hX2FkZHI7XG4mIzQzO1x0ZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSA9IHRvdGFsX3NpemU7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuJiM0MztcdFx0XHQgIGRldi1cdTAwM2VjYWNoZWRfY2FsLnZhLCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcik7XG4mIzQzO1xuJiM0MztcdG1lbXNldChcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbCwgMCwgc2l6ZW9mKGRldi1cdTAwM2VjYWNoZWRfY2FsKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxICpyZXE7XG4mIzQzO1x0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXJlcSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRyZW1hcF9iYXNlID0gKHUzMikoZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgXHUwMDNlXHUwMDNlIDE2KTtcbiYjNDM7XHRwYV9vZmZzZXQgPSAodTMyKShkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciBcdTAwMjYgMHhGRkZGKTtcbiYjNDM7XG4mIzQzO1x0cmVxLVx1MDAzZXJlbWFwLnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9BWElETUFfVEFHX1JFTUFQKTtcbiYjNDM7XHRyZXEtXHUwMDNlcmVtYXAubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS1cdTAwM2VyZW1hcCkpO1xuJiM0MztcdHJlcS1cdTAwM2VyZW1hcC5yZW1hcF9hZGRyID0gY3B1X3RvX2xlMzIocmVtYXBfYmFzZSk7XG4mIzQzO1xuJiM0MztcdHJlcS1cdTAwM2VmYWN0X2NhbC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCk7XG4mIzQzO1x0cmVxLVx1MDAzZWZhY3RfY2FsLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlZmFjdF9jYWwpKTtcbiYjNDM7XHRyZXEtXHUwMDNlZmFjdF9jYWwuaG9zdF9hZGRyX29mZnNldCA9IGNwdV90b19sZTMyKHBhX29mZnNldCk7XG4mIzQzO1x0cmVxLVx1MDAzZWZhY3RfY2FsLnNpemUgPSBjcHVfdG9fbGUzMihkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplKTtcbiYjNDM7XHRyZXEtXHUwMDNlZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgJiM0MzsgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSAtIDEpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQVhJRE1BKSxcbiYjNDM7XHRcdFx0XHRyZXEsIHNpemVvZigqcmVxKSwgdHJ1ZSk7XG4mIzQzO1xuJiM0MztcdGtmcmVlKHJlcSk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbiYjNDM7XHRcdFx0XCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQVhJIERNQSBpbmZvOiAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgbXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lvbl9vZmYsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHUzMiAqY2FsX3BhcmFtLCB1MzIgKnRvdGFsX2J1Zl9udW0pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbiYjNDM7XHR1MzIgb2ZmID0gcmVnaW9uX29mZiAmIzQzOyBzdHJpZGUgKiBpZHg7XG4mIzQzO1xuJiM0MztcdGlmICghZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgfHwgb2ZmICYjNDM7IHNpemVvZigqYmkpIFx1MDAzZSBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRiaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopXG4mIzQzO1x0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgJiM0Mzsgb2ZmKTtcbiYjNDM7XHRpZiAoY2FsX3BhcmFtKVxuJiM0MztcdFx0KmNhbF9wYXJhbSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZWNhbF9wYXJhbSk7XG4mIzQzO1x0aWYgKHRvdGFsX2J1Zl9udW0pXG4mIzQzO1x0XHQqdG90YWxfYnVmX251bSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZXRvdGFsX2J1Zl9udW0pO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibClcbiYjNDM7e1xuJiM0MztcdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbiYjNDM7XHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xuJiM0MztcdGRtYV9hZGRyX3QgYmFzZSA9IGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyO1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuJiM0MztcbiYjNDM7XHRtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KFx1MDAyNmwpO1xuJiM0MztcbiYjNDM7XHRjb21tb25fcGEgID0gYmFzZSAmIzQzOyBsLmNvbW1vbl9vZmY7XG4mIzQzO1x0Z3JvdXBfcGEgICA9IGJhc2UgJiM0MzsgbC5ncm91cF9vZmY7XG4mIzQzO1x0Y2hhbm5lbF9wYSA9IGJhc2UgJiM0MzsgbC5jaGFubmVsX29mZjtcbiYjNDM7XHRtYXBwaW5nX3BhID0gYmFzZSAmIzQzOyBsLm1hcHBpbmdfb2ZmO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpO1xuJiM0MztcbiYjNDM7XHR0YmwtXHUwMDNlY29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xuJiM0MztcdHRibC1cdTAwM2Vjb21tb24ucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY29tbW9uX3BhKSk7XG4mIzQzO1x0dGJsLVx1MDAzZWNvbW1vbi5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jb21tb25fc3RyaWRlKTtcbiYjNDM7XG4mIzQzO1x0dGJsLVx1MDAzZWdyb3VwLnBoeV9hZGRyX2ggID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhncm91cF9wYSkpO1xuJiM0MztcdHRibC1cdTAwM2Vncm91cC5waHlfYWRkcl9sICA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZ3JvdXBfcGEpKTtcbiYjNDM7XHR0YmwtXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XG4mIzQzO1xuJiM0MztcdHRibC1cdTAwM2VjaGFubmVsLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNoYW5uZWxfcGEpKTtcbiYjNDM7XHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4mIzQzO1x0dGJsLVx1MDAzZWNoYW5uZWwub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY2hhbm5lbF9zdHJpZGUpO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKSB7XG4mIzQzO1x0XHR1MzIgaSwgY2FsX3BhcmFtLCB0b3RhbF9idWZfbnVtO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBsLmNvbW1vbl9zdHJpZGUsIGksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sIE5VTEwpKVxuJiM0MztcdFx0XHRcdHRibC1cdTAwM2Vjb21tb24uYmFuZFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbiYjNDM7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5ncm91cF9vZmYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBsLmdyb3VwX3N0cmlkZSwgaSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmNhbF9wYXJhbSwgTlVMTCkpXG4mIzQzO1x0XHRcdFx0dGJsLVx1MDAzZWdyb3VwLmdyb3VwW2ldID0gY2FsX3BhcmFtIFx1MDAyNiAweGZmO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGwuY2hhbm5lbF9zdHJpZGUsIGksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0b3RhbF9idWZfbnVtKSkge1xuJiM0MztcdFx0XHRcdHRibC1cdTAwM2VjaGFubmVsLmNhbF9wYXJhbVtpXSA9XG4mIzQzO1x0XHRcdFx0XHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xuJiM0MztcdFx0XHRcdHRibC1cdTAwM2VjaGFubmVsLnRvdGFsX2J1Zl9udW1baV0gPVxuJiM0MztcdFx0XHRcdFx0dG90YWxfYnVmX251bSBcdTAwMjYgMHhmZjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dGJsLVx1MDAzZWJ1Zl9pbmZvX3NpemUgPSBjcHVfdG9fbGUzMihoZHIpO1xuJiM0MztcdHRibC1cdTAwM2VwaHlfYWRkcl9oICAgID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7XG4mIzQzO1x0dGJsLVx1MDAzZXBoeV9hZGRyX2wgICAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSxcbiYjNDM7XHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuJiM0MztcdFx0XHRcdFx0IGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBkYXRhX2xlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKGRhdGFfbGVuIFx1MDAzZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXJlcSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRyZXEtXHUwMDNlc2V0LnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUKTtcbiYjNDM7XHRyZXEtXHUwMDNlc2V0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlc2V0KSk7XG4mIzQzO1x0cmVxLVx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XG4mIzQzO1x0cmVxLVx1MDAzZXNldC5idWZfZGF0YV9sZW4gPSBjcHVfdG9fbGUzMihkYXRhX2xlbik7XG4mIzQzO1x0cmVxLVx1MDAzZXNldC5jYWxfdHlwZSA9IGNhbF90eXBlO1xuJiM0MztcdHJlcS1cdTAwM2VzZXQuZG9uZSA9IGRvbmU7XG4mIzQzO1x0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFfbGVuKVxuJiM0MztcdFx0bWVtY3B5KHJlcS1cdTAwM2VzZXQuYnVmX2RhdGEsIGRhdGEsIGRhdGFfbGVuKTtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgdGhlIEFDSyBvbiB0aGUgZmluYWwgY2h1bmsgb25seTogdGhlIEZXIGFwcGxpZXMgdGhlIHdob2xlXG4mIzQzO1x0ICogdGFibGUgdGhlcmUgKERNQXMgdGhlIGNhY2hlZCBjb21tb24gLyBwb3dlci1vbiBncm91cCBjYWwgZGF0YSBpbiBhbmRcbiYjNDM7XHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXG4mIzQzO1x0ICogZHJhaW5zIHRoZSBBQ0tzIHRoZSBlYXJsaWVyIGNodW5rcyBsZWZ0IGluIHRoZSBNQ1UgcmVzcG9uc2UgcXVldWUsXG4mIzQzO1x0ICogc2luY2UgVU5JIGNvbW1hbmRzIGFsd2F5cyByZXF1ZXN0IG9uZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxuJiM0MztcdFx0XHRcdHJlcSwgc2l6ZW9mKCpyZXEpLCBkb25lKTtcbiYjNDM7XHRrZnJlZShyZXEpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsICp0Ymw7XG4mIzQzO1x0X19sZTMyIGNmZ1tNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4gLyBzaXplb2YoX19sZTMyKV0gPSB7MH07XG4mIzQzO1x0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCF0YmwpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsKGRldiwgdGJsKTtcbiYjNDM7XG4mIzQzO1x0Y2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTtcbiYjNDM7XHRjZmdbMl0gPSBjcHVfdG9fbGUzMihNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWCk7XG4mIzQzO1x0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcbiYjNDM7XHRcdFx0XHRcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbiYjNDM7XHRcdFx0XCYjMzQ7ZmFjdC1jYWwgbWFwcGluZyB0YmwgaGVhZGVyIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0c2VxLCByZXQpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRsZWZ0ID0gc2l6ZW9mKCp0YmwpO1xuJiM0MztcdHdoaWxlIChsZWZ0KSB7XG4mIzQzO1x0XHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgJiM0MzsmIzQzO3NlcSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAodTggKil0YmwgJiM0Mzsgb2ZmLCBjaHVuayk7XG4mIzQzO1x0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O2ZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdHNlcSwgb2ZmLCBjaHVuaywgcmV0KTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0b2ZmICAmIzQzOz0gY2h1bms7XG4mIzQzO1x0XHRsZWZ0IC09IGNodW5rO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcbiYjNDM7XHRcdFx0XHRcdCAgICAmIzQzOyYjNDM7c2VxLCB0cnVlLCBOVUxMLCAwKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbiYjNDM7XHRcdFx0XCYjMzQ7ZmFjdC1jYWwgbWFwcGluZyB0YmwgZG9uZSBzZW5kIGZhaWxlZCAoc2VxPSV1KTogJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHNlcSwgcmV0KTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7b3V0OlxuJiM0MztcdGtmcmVlKHRibCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTggX3Jzdls0XTtcbiYjNDM7XG4mIzQzO1x0XHRzdHJ1Y3Qge1xuJiM0MztcdFx0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0XHRfX2xlMTYgbGVuO1xuJiM0MztcdFx0XHRfX2xlMzIgZGF0YTtcbiYjNDM7XHRcdH0gX19wYWNrZWQgdXBkYXRlX2ZsYWc7XG4mIzQzO1x0fSByZXEgPSB7XG4mIzQzO1x0XHQudXBkYXRlX2ZsYWcgPSB7XG4mIzQzO1x0XHRcdC50YWcgID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19VUERBVEVfRkxBRyksXG4mIzQzO1x0XHRcdC5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLFxuJiM0MztcdFx0XHQuZGF0YSA9IGNwdV90b19sZTMyKGVuYWJsZSA/IDEgOiAwKSxcbiYjNDM7XHRcdH0sXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksXG4mIzQzO1x0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjY1NzI1MTNiNzY0NjZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaFxuQEAgLTAsMCAmIzQzOzEsMTUxIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cbiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cbiYjNDM7XG4mIzQzOyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcbiYjNDM7I2RlZmluZSBfX0NBQ0hFRF9DQUxfSFxuJiM0MztcbiYjNDM7ZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcbiYjNDM7XHRNVDc5MjVfQVhJRE1BX1RBR19SRU1BUCA9IDAsXG4mIzQzO1x0TVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwgPSAxLFxuJiM0MztcdE1UNzkyNV9BWElETUFfVEFHX05VTVxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7ZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVJcdD0gMixcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHXHQ9IDMsXG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVRcdD0gNCxcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVFx0PSA1LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7ZW51bSBtdDc5MjVfZmFjdF9jYWxfdHlwZSB7XG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ09NTU9OXHRcdD0gMCxcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFx0XHQ9IDEsXG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ0hBTk5FTFx0XHQ9IDIsXG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkxcdD0gNCxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTlx0XHQxNDAwXG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXHRcdFx0MTZcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWFx0NFxuJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX1UzMl9MRU5cdFx0NFxuJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXG4mIzQzO1x0KE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYICogTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfVTMyX0xFTilcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVx0XHQyXG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTVx0XHQzNVxuJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fMkdcdFx0MTRcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXHRcdDY4XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82R1x0XHQxMDlcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTCBcXFxuJiM0MztcdChNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcgJiM0MzsgXFxcbiYjNDM7XHQgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RylcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT01cdFx0XHQ2MDBcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUFx0XHRcdDQ1MDBcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0NIXHRcdFx0MjgwMFxuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7XG4mIzQzO1x0X19sZTMyIGNhbF90eXBlO1xuJiM0MztcdF9fbGUzMiBjYWxfcGFyYW07XG4mIzQzO1x0X19sZTMyIGJ1Zl9zZXFfbnVtO1xuJiM0MztcdF9fbGUzMiB0b3RhbF9idWZfbnVtO1xuJiM0MztcdF9fbGUzMiBidWZfZGF0YV9sZW47XG4mIzQzO1x0dTggdmFsaWQ7XG4mIzQzO1x0dTggZG9uZTtcbiYjNDM7XHR1OCByc3ZbMl07XG4mIzQzO1x0X19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCxcbiYjNDM7XHQgICAgICBcJiMzNDtidWZfaW5mbyBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDg4IGJ5dGVzKSBvciBpdCByZWplY3RzIHRoZSBtYXBwaW5nIHRhYmxlXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCB7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2g7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2w7XG4mIzQzO1x0X19sZTMyIG9mZnNldDtcbiYjNDM7XHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xuJiM0MztcdHU4IHJzdlsyXTtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIHtcbiYjNDM7XHRfX2xlMzIgcGh5X2FkZHJfaDtcbiYjNDM7XHRfX2xlMzIgcGh5X2FkZHJfbDtcbiYjNDM7XHRfX2xlMzIgb2Zmc2V0O1xuJiM0MztcdHU4IGdyb3VwW01UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU1dO1xuJiM0MztcdHU4IHJzdjtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xuJiM0MztcdF9fbGUzMiBwaHlfYWRkcl9oO1xuJiM0MztcdF9fbGUzMiBwaHlfYWRkcl9sO1xuJiM0MztcdF9fbGUzMiBvZmZzZXQ7XG4mIzQzO1x0X19sZTMyIGNhbF9wYXJhbVtNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTF07XG4mIzQzO1x0dTggdG90YWxfYnVmX251bVtNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTF07XG4mIzQzO1x0dTggcnN2O1xuJiM0Mzt9IF9fcGFja2VkO1xuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XG4mIzQzO1x0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIGNvbW1vbjtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCBncm91cDtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XG4mIzQzO1x0X19sZTMyIGJ1Zl9pbmZvX3NpemU7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2g7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2w7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuJiM0MztcdCAgICAgIFwmIzM0O21hcHBpbmcgdGFibGUgbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICgxMDQ0IGJ5dGVzKSBvciB0aGUgRlcgcGFyc2UgY29ycnVwdHNcJiMzNDspO1xuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcbiYjNDM7XHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4mIzQzO1x0dTMyIGNvbW1vbl9zdHJpZGUsIGdyb3VwX3N0cmlkZSwgY2hhbm5lbF9zdHJpZGU7XG4mIzQzO1x0dTMyIHRvdGFsO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEge1xuJiM0MztcdHU4IF9yc3ZbNF07XG4mIzQzO1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0X19sZTE2IGxlbjtcbiYjNDM7XHRcdF9fbGUzMiByZW1hcF9hZGRyO1xuJiM0MztcdFx0X19sZTMyIHJlc2VydmVkO1xuJiM0MztcdH0gX19wYWNrZWQgcmVtYXA7XG4mIzQzO1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0X19sZTE2IGxlbjtcbiYjNDM7XHRcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xuJiM0MztcdFx0X19sZTMyIHNpemU7XG4mIzQzO1x0XHRfX2xlMzIgYm91bmQ7XG4mIzQzO1x0XHRfX2xlMzIgcmVzZXJ2ZWQ7XG4mIzQzO1x0fSBfX3BhY2tlZCBmYWN0X2NhbDtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxIHtcbiYjNDM7XHR1OCBfcnN2WzRdO1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0X19sZTE2IHRhZztcbiYjNDM7XHRcdF9fbGUxNiBsZW47XG4mIzQzO1x0XHRfX2xlMzIgZGF0YTtcbiYjNDM7XHRcdF9fbGUzMiBzZXFfbnVtO1xuJiM0MztcdFx0X19sZTMyIGJ1Zl9kYXRhX2xlbjtcbiYjNDM7XHRcdHU4IGNhbF90eXBlO1xuJiM0MztcdFx0dTggZG9uZTtcbiYjNDM7XHRcdHU4IHJzdlsyXTtcbiYjNDM7XHRcdHU4IGJ1Zl9kYXRhW01UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5dO1xuJiM0MztcdH0gX19wYWNrZWQgc2V0O1xuJiM0Mzt9IF9fcGFja2VkO1xuJiM0MztcbiYjNDM7aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4mIzQzO1xuJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbiYjNDM7XG4mIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuJiM0MztcbiYjNDM7aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX19DQUNIRURfQ0FMX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzUzLDYgJiM0MzszNTMsNyBAQCBpbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXG4gXG4gaW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuIGludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuJiM0Mzt2b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuIHZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpO1xuIHZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpldnQpO1xuIHZvaWQgbXQ3OTI1X3NldF9ydW50aW1lX3BtKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbmluZGV4IDAyZWYwOWRkNzk3ZGEuLjcyNGFiZDJiZTU3YzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbkBAIC05LDYgJiM0Mzs5LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDttYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2NhY2hlZF9jYWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0Oy4uL2RtYS5oXCYjMzQ7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlW10gPSB7XG5AQCAtMzgsNiAmIzQzOzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XG4gfVxuIFxuJiM0MzsvKiBTZXQgdXAgdGhlIGZhY3RvcnktY2FsaWJyYXRpb24gY2FjaGUgaW4gaG9zdCBtZW1vcnkuIFBDSWUgb25seTogdGhlIEZXXG4mIzQzOyAqIHJlYWNoZXMgdGhlIGJ1ZmZlciB0aHJvdWdoIEFYSSBETUEsIHNvIGl0IGhhcyBubyBtZWFuaW5nIG9uIG90aGVyIGJ1c2VzLlxuJiM0MzsgKiBFdmVyeSBmYWlsdXJlIGp1c3QgbGVhdmVzIHRoZSBjYWNoZSBvZmYsIHdoaWNoIGlzIG5vdCBmYXRhbC5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiYjNDM7e1xuJiM0MztcdGlmICghKGRldi1cdTAwM2VwaHkuY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4pKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEpIHtcbiYjNDM7XHRcdC8qIENhcnJpZWQtb3ZlciBidWZmZXIgc3RpbGwgaG9sZHMgRlctd3JpdHRlbiBjYWwgZGF0YS4gKi9cbiYjNDM7XHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IHRydWU7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChtdDc5MjVfYXhpZG1hX2FsbG9jKGRldikpIHtcbiYjNDM7XHRcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHRcdCBcJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnVmZmVyIGFsbG9jIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cbiYjNDM7XHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyhkZXYpKSB7XG4mIzQzO1x0XHRkZXZfd2FybihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogaW5mbyBjbWQgdG8gRlcgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhXG4mIzQzO1x0ICogKGNvbW1vbiAvIHBvd2VyLW9uIGdyb3VwKSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYSBmdWxsIGNhbGlicmF0aW9uO1xuJiM0MztcdCAqIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgbWFwcGluZyB0YWJsZSBpcyBzZW50LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCB0cnVlKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChkZXYpKSB7XG4mIzQzO1x0XHRkZXZfd2FybihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIGZhbHNlKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZGV2X2luZm8oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0IFwmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0IFx1MDAyNmRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyLCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuJiM0MztcdFx0IGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIHtcbiBcdGludCBpO1xuQEAgLTU4LDYgJiM0MzsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXG4gXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XG4gXHRfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpO1xuJiM0MztcbiYjNDM7XHRtdDc5MjVfYXhpZG1hX2ZyZWUoZGV2KTtcbiYjNDM7XG4gXHRtdDc5MnhfZG1hX2NsZWFudXAoZGV2KTtcbiBcdG10NzkyeF93ZnN5c19yZXNldChkZXYpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG5AQCAtNTg3LDcgJiM0Mzs2NDcsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRpc19tdDc5MjhfaHcgPSAocGRldi1cdTAwM2VkZXZpY2UgPT0gMHg3OTI4IHx8IHBkZXYtXHUwMDNlZGV2aWNlID09IDB4NzkzNSk7XG4gXG4gXHRpZiAoaXNfbXQ3OTI4X2h3KVxuLVx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzNCkpO1xuJiM0MztcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XG4gXHRlbHNlXG4gXHRcdHJldCA9IGRtYV9zZXRfbWFzayhcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG5pbmRleCA4NDc3ZDIxYWJjNjYwLi5jOTBmMTI5YjNhMzRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmNcbkBAIC0xMzUsNiAmIzQzOzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0bXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoZGV2KTtcbiYjNDM7XG4gXHRlcnIgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuaW5kZXggNzI3MDdlZGRjM2RiNi4uMjU4ZjM3NTNkYjFmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jXG5AQCAtNDYsNiAmIzQzOzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdG10NzZfcm13X2ZpZWxkKGRldiwgZGV2LVx1MDAzZXBjaWVfcmVnLVx1MDAzZXBtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTtcbiBcbiBcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbiYjNDM7XHRpZiAoIWVycilcbiYjNDM7XHRcdG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7XG4gXG4gXHRtdDc2X3F1ZXVlX3R4X2NsZWFudXAoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5xX21jdVtNVF9NQ1VRX0ZXRExdLCBmYWxzZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbmluZGV4IDllZmMyNTFjYjc0NWYuLjc0MGQ1MTdlYjM4YmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5AQCAtMzMsNiAmIzQzOzMzLDcgQEBcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KVxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuJiM0MzsjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxuIFxuIC8qIE5PVEU6IHVzZWQgdG8gbWFwIG10NzZfcmF0ZXMuIGlkeCBtYXkgY2hhbmdlIGlmIGZpcm13YXJlIGV4cGFuZHMgdGFibGUgKi9cbiAjZGVmaW5lIE1UNzkyeF9CQVNJQ19SQVRFU19UQkxcdDE0XG5AQCAtMzQyLDYgJiM0MzszNDMsMTMgQEAgc3RydWN0IG10NzkyeF9kZXYge1xuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uICppZmFjZV9jb21iaW5hdGlvbnM7XG4gXHRpbnQgbl9pZmFjZV9jb21iaW5hdGlvbnM7XG4mIzQzO1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHR2b2lkICp2YTtcbiYjNDM7XHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4mIzQzO1x0XHR1MzIgc2l6ZTtcbiYjNDM7XHRcdGJvb2wgcmV1c2VkO1xuJiM0MztcdH0gY2FjaGVkX2NhbDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfYWxsb2MmIzM0OywKICAgICYjMzQ7bXQ3OTI1X2F4aWRtYV9mcmVlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHBhdGhzLCByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgTU1JTy9ETUEgaW50ZXJhY3Rpb25zLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjExYjEwY2FjZmMzMmMxNjRmOGVkY2VmMTVlNzUxN2QxMDIwYmM0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDA2OjEyOjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgKaW5kZXggMGVkZWRhNTY5ZTlhNS4uZTQ2Y2I0YWUzN2E5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oCkBAIC0xMzU3LDkgJiM0MzsxMzU3LDExIEBAIGVudW0gewogCU1DVV9VTklfQ01EX0FMTF9TVEFfSU5GTyA9IDB4NmUsCiAJTUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLAogCU1DVV9VTklfQ01EX0VYVF9FRVBST01fQ1RSTCA9IDB4NzQsCiYjNDM7CU1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YywKIAlNQ1VfVU5JX0NNRF9SQURJT19TVEFUVVMgPSAweDgwLAogCU1DVV9VTklfQ01EX01MRCA9IDB4ODIsCiAJTUNVX1VOSV9DTURfU0RPID0gMHg4OCwKJiM0MzsJTUNVX1VOSV9DTURfQVhJRE1BID0gMHhhMiwKIH07CiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZQppbmRleCBmOWRjYzBiYmEzOTNjLi4zMzUzOTEyMWExNWNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZQpAQCAtNiw1ICYjNDM7Niw1IEBAIG9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vCiAKIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm8KIG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm8KLW10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vCiYjNDM7bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8gY2FjaGVkX2NhbC5vCiBtdDc5MjV1LXkgOj0gdXNiLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wM2JkNjgyZjEyMjRiCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jCkBAIC0wLDAgJiM0MzsxLDMwNCBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIKJiM0MzsvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kbWEtbWFwcGluZy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4vbXQ3OTJ4LmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7Y2FjaGVkX2NhbC5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCAqbCkKJiM0Mzt7CiYjNDM7CXUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7CiYjNDM7CiYjNDM7CWwtJmd0O2NvbW1vbl9zdHJpZGUgID0gaGRyICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NOwomIzQzOwlsLSZndDtncm91cF9zdHJpZGUgICA9IGhkciAmIzQzOyBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUDsKJiM0MzsJbC0mZ3Q7Y2hhbm5lbF9zdHJpZGUgPSBoZHIgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDsKJiM0MzsKJiM0MzsJbC0mZ3Q7Y29tbW9uX29mZiAgPSAwOwomIzQzOwlsLSZndDtncm91cF9vZmYgICA9IGwtJmd0O2NvbW1vbl9vZmYgJiM0MzsKJiM0MzsJCWwtJmd0O2NvbW1vbl9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOwomIzQzOwlsLSZndDtjaGFubmVsX29mZiA9IGwtJmd0O2dyb3VwX29mZiAmIzQzOwomIzQzOwkJbC0mZ3Q7Z3JvdXBfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsKJiM0MzsJbC0mZ3Q7bWFwcGluZ19vZmYgPSBsLSZndDtjaGFubmVsX29mZiAmIzQzOwomIzQzOwkJbC0mZ3Q7Y2hhbm5lbF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDsKJiM0MzsJbC0mZ3Q7dG90YWwgPSBsLSZndDttYXBwaW5nX29mZiAmIzQzOwomIzQzOwkJc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsOwomIzQzOwomIzQzOwltdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KCZhbXA7bCk7CiYjNDM7CiYjNDM7CXJldHVybiBsLnRvdGFsOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbXQ3OTI1X2F4aWRtYV9hbGxvYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJdTMyIHRvdGFsX3NpemU7CiYjNDM7CWRtYV9hZGRyX3QgZG1hX2FkZHI7CiYjNDM7CXZvaWQgKnZhOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXRvdGFsX3NpemUgPSBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplKCk7CiYjNDM7CiYjNDM7CXZhID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldi0mZ3Q7bXQ3Ni5kZXYsIHRvdGFsX3NpemUsICZhbXA7ZG1hX2FkZHIsCiYjNDM7CQkJCUdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXZhKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWRldi0mZ3Q7Y2FjaGVkX2NhbC52YSA9IHZhOwomIzQzOwlkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjsKJiM0MzsJZGV2LSZndDtjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlkbWFfZnJlZV9jb2hlcmVudChkZXYtJmd0O210NzYuZGV2LCBkZXYtJmd0O2NhY2hlZF9jYWwuc2l6ZSwKJiM0MzsJCQkgIGRldi0mZ3Q7Y2FjaGVkX2NhbC52YSwgZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyKTsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7ZGV2LSZndDtjYWNoZWRfY2FsLCAwLCBzaXplb2YoZGV2LSZndDtjYWNoZWRfY2FsKSk7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxICpyZXE7CiYjNDM7CXUzMiByZW1hcF9iYXNlLCBwYV9vZmZzZXQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFyZXEpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJcmVtYXBfYmFzZSA9ICh1MzIpKGRldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciAmZ3Q7Jmd0OyAxNik7CiYjNDM7CXBhX29mZnNldCA9ICh1MzIpKGRldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciAmYW1wOyAweEZGRkYpOwomIzQzOwomIzQzOwlyZXEtJmd0O3JlbWFwLnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9BWElETUFfVEFHX1JFTUFQKTsKJiM0MzsJcmVxLSZndDtyZW1hcC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLSZndDtyZW1hcCkpOwomIzQzOwlyZXEtJmd0O3JlbWFwLnJlbWFwX2FkZHIgPSBjcHVfdG9fbGUzMihyZW1hcF9iYXNlKTsKJiM0MzsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCk7CiYjNDM7CXJlcS0mZ3Q7ZmFjdF9jYWwubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS0mZ3Q7ZmFjdF9jYWwpKTsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LSZndDtjYWNoZWRfY2FsLnNpemUpOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLmJvdW5kID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0ICYjNDM7IGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplIC0gMSk7CiYjNDM7CiYjNDM7CXJldCA9IG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfVU5JX0NNRChBWElETUEpLAomIzQzOwkJCQlyZXEsIHNpemVvZigqcmVxKSwgdHJ1ZSk7CiYjNDM7CiYjNDM7CWtmcmVlKHJlcSk7CiYjNDM7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJJiMzNDtmYWlsZWQgdG8gc2VuZCBBWEkgRE1BIGluZm86ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgbXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lvbl9vZmYsCiYjNDM7CQkJCSAgICAgICB1MzIgc3RyaWRlLCB1MzIgaWR4LAomIzQzOwkJCQkgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8gKmJpOwomIzQzOwl1MzIgb2ZmID0gcmVnaW9uX29mZiAmIzQzOyBzdHJpZGUgKiBpZHg7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhIHx8IG9mZiAmIzQzOyBzaXplb2YoKmJpKSAmZ3Q7IGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwliaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopCiYjNDM7CQkoKGNvbnN0IHU4ICopZGV2LSZndDtjYWNoZWRfY2FsLnZhICYjNDM7IG9mZik7CiYjNDM7CWlmIChjYWxfcGFyYW0pCiYjNDM7CQkqY2FsX3BhcmFtID0gbGUzMl90b19jcHUoYmktJmd0O2NhbF9wYXJhbSk7CiYjNDM7CWlmICh0b3RhbF9idWZfbnVtKQomIzQzOwkJKnRvdGFsX2J1Zl9udW0gPSBsZTMyX3RvX2NwdShiaS0mZ3Q7dG90YWxfYnVmX251bSk7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwKJiM0MzsJCQkJCSAgICAgIHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibCkKJiM0Mzt7CiYjNDM7CWRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTsKJiM0MzsJdTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTsKJiM0MzsJZG1hX2FkZHJfdCBiYXNlID0gZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyOwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDsKJiM0MzsKJiM0MzsJbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dCgmYW1wO2wpOwomIzQzOwomIzQzOwljb21tb25fcGEgID0gYmFzZSAmIzQzOyBsLmNvbW1vbl9vZmY7CiYjNDM7CWdyb3VwX3BhICAgPSBiYXNlICYjNDM7IGwuZ3JvdXBfb2ZmOwomIzQzOwljaGFubmVsX3BhID0gYmFzZSAmIzQzOyBsLmNoYW5uZWxfb2ZmOwomIzQzOwltYXBwaW5nX3BhID0gYmFzZSAmIzQzOyBsLm1hcHBpbmdfb2ZmOwomIzQzOwomIzQzOwltZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpOwomIzQzOwomIzQzOwl0YmwtJmd0O2NvbW1vbi5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjb21tb25fcGEpKTsKJiM0MzsJdGJsLSZndDtjb21tb24ucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY29tbW9uX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Y29tbW9uLm9mZnNldCAgICAgPSBjcHVfdG9fbGUzMihsLmNvbW1vbl9zdHJpZGUpOwomIzQzOwomIzQzOwl0YmwtJmd0O2dyb3VwLnBoeV9hZGRyX2ggID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhncm91cF9wYSkpOwomIzQzOwl0YmwtJmd0O2dyb3VwLnBoeV9hZGRyX2wgID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhncm91cF9wYSkpOwomIzQzOwl0YmwtJmd0O2dyb3VwLm9mZnNldCAgICAgID0gY3B1X3RvX2xlMzIobC5ncm91cF9zdHJpZGUpOwomIzQzOwomIzQzOwl0YmwtJmd0O2NoYW5uZWwucGh5X2FkZHJfaCA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoY2hhbm5lbF9wYSkpOwomIzQzOwl0YmwtJmd0O2NoYW5uZWwucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY2hhbm5lbF9wYSkpOwomIzQzOwl0YmwtJmd0O2NoYW5uZWwub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY2hhbm5lbF9zdHJpZGUpOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDtjYWNoZWRfY2FsLnJldXNlZCkgewomIzQzOwkJdTMyIGksIGNhbF9wYXJhbSwgdG90YWxfYnVmX251bTsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsCiYjNDM7CQkJCQkJICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDtjYWxfcGFyYW0sIE5VTEwpKQomIzQzOwkJCQl0YmwtJmd0O2NvbW1vbi5iYW5kW2ldID0gY2FsX3BhcmFtICZhbXA7IDB4ZmY7CiYjNDM7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5ncm91cF9vZmYsCiYjNDM7CQkJCQkJICAgICAgIGwuZ3JvdXBfc3RyaWRlLCBpLAomIzQzOwkJCQkJCSAgICAgICAmYW1wO2NhbF9wYXJhbSwgTlVMTCkpCiYjNDM7CQkJCXRibC0mZ3Q7Z3JvdXAuZ3JvdXBbaV0gPSBjYWxfcGFyYW0gJmFtcDsgMHhmZjsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZiwKJiM0MzsJCQkJCQkgICAgICAgbC5jaGFubmVsX3N0cmlkZSwgaSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDtjYWxfcGFyYW0sCiYjNDM7CQkJCQkJICAgICAgICZhbXA7dG90YWxfYnVmX251bSkpIHsKJiM0MzsJCQkJdGJsLSZndDtjaGFubmVsLmNhbF9wYXJhbVtpXSA9CiYjNDM7CQkJCQljcHVfdG9fbGUzMihjYWxfcGFyYW0pOwomIzQzOwkJCQl0YmwtJmd0O2NoYW5uZWwudG90YWxfYnVmX251bVtpXSA9CiYjNDM7CQkJCQl0b3RhbF9idWZfbnVtICZhbXA7IDB4ZmY7CiYjNDM7CQkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXRibC0mZ3Q7YnVmX2luZm9fc2l6ZSA9IGNwdV90b19sZTMyKGhkcik7CiYjNDM7CXRibC0mZ3Q7cGh5X2FkZHJfaCAgICA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMobWFwcGluZ19wYSkpOwomIzQzOwl0YmwtJmd0O3BoeV9hZGRyX2wgICAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSwKJiM0MzsJCQkJCSB1MzIgc2VxX251bSwgYm9vbCBkb25lLAomIzQzOwkJCQkJIGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBkYXRhX2xlbikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmIChkYXRhX2xlbiAmZ3Q7IE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZXEtJmd0O3NldC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVCk7CiYjNDM7CXJlcS0mZ3Q7c2V0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtJmd0O3NldCkpOwomIzQzOwlyZXEtJmd0O3NldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7CiYjNDM7CXJlcS0mZ3Q7c2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTsKJiM0MzsJcmVxLSZndDtzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTsKJiM0MzsJcmVxLSZndDtzZXQuZG9uZSA9IGRvbmU7CiYjNDM7CWlmIChkYXRhICZhbXA7JmFtcDsgZGF0YV9sZW4pCiYjNDM7CQltZW1jcHkocmVxLSZndDtzZXQuYnVmX2RhdGEsIGRhdGEsIGRhdGFfbGVuKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIEFDSyBvbiB0aGUgZmluYWwgY2h1bmsgb25seTogdGhlIEZXIGFwcGxpZXMgdGhlIHdob2xlCiYjNDM7CSAqIHRhYmxlIHRoZXJlIChETUFzIHRoZSBjYWNoZWQgY29tbW9uIC8gcG93ZXItb24gZ3JvdXAgY2FsIGRhdGEgaW4gYW5kCiYjNDM7CSAqIHByb2dyYW1zIHRoZSBQSFkpLCBzbyBpdHMgQUNLIGlzIHRoZSBjb21wbGV0aW9uIHBvaW50LiBXYWl0aW5nIGFsc28KJiM0MzsJICogZHJhaW5zIHRoZSBBQ0tzIHRoZSBlYXJsaWVyIGNodW5rcyBsZWZ0IGluIHRoZSBNQ1UgcmVzcG9uc2UgcXVldWUsCiYjNDM7CSAqIHNpbmNlIFVOSSBjb21tYW5kcyBhbHdheXMgcmVxdWVzdCBvbmUuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBtdDc2X21jdV9zZW5kX21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLAomIzQzOwkJCQlyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7CiYjNDM7CWtmcmVlKHJlcSk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDsKJiM0MzsJX19sZTMyIGNmZ1tNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4gLyBzaXplb2YoX19sZTMyKV0gPSB7MH07CiYjNDM7CXUzMiBzZXEgPSAwLCBvZmYgPSAwLCBsZWZ0OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAoIWRldi0mZ3Q7Y2FjaGVkX2NhbC52YSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwl0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghdGJsKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CW10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChkZXYsIHRibCk7CiYjNDM7CiYjNDM7CWNmZ1sxXSA9IGNwdV90b19sZTMyKHNpemVvZigqdGJsKSk7CiYjNDM7CWNmZ1syXSA9IGNwdV90b19sZTMyKE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYKTsKJiM0MzsJcmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCwKJiM0MzsJCQkJCSAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCSYjMzQ7ZmFjdC1jYWwgbWFwcGluZyB0YmwgaGVhZGVyIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxuJiMzNDssCiYjNDM7CQkJc2VxLCByZXQpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGVmdCA9IHNpemVvZigqdGJsKTsKJiM0MzsJd2hpbGUgKGxlZnQpIHsKJiM0MzsJCXUzMiBjaHVuayA9IG1pbl90KHUzMiwgbGVmdCwgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTik7CiYjNDM7CiYjNDM7CQlyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsCiYjNDM7CQkJCQkJICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLAomIzQzOwkJCQkJCSAgICAmIzQzOyYjNDM7c2VxLCBmYWxzZSwKJiM0MzsJCQkJCQkgICAgKHU4ICopdGJsICYjNDM7IG9mZiwgY2h1bmspOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkJJiMzNDtmYWN0LWNhbCBtYXBwaW5nIHRibCBkYXRhIHNlbmQgZmFpbGVkIChzZXE9JXUsIG9mZj0ldSwgY2h1bms9JXUpOiAlZFxuJiMzNDssCiYjNDM7CQkJCXNlcSwgb2ZmLCBjaHVuaywgcmV0KTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW9mZiAgJiM0Mzs9IGNodW5rOwomIzQzOwkJbGVmdCAtPSBjaHVuazsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLAomIzQzOwkJCQkJICAgICYjNDM7JiM0MztzZXEsIHRydWUsIE5VTEwsIDApOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJJiMzNDtmYWN0LWNhbCBtYXBwaW5nIHRibCBkb25lIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxuJiMzNDssCiYjNDM7CQkJc2VxLCByZXQpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MztvdXQ6CiYjNDM7CWtmcmVlKHRibCk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdTggX3Jzdls0XTsKJiM0MzsKJiM0MzsJCXN0cnVjdCB7CiYjNDM7CQkJX19sZTE2IHRhZzsKJiM0MzsJCQlfX2xlMTYgbGVuOwomIzQzOwkJCV9fbGUzMiBkYXRhOwomIzQzOwkJfSBfX3BhY2tlZCB1cGRhdGVfZmxhZzsKJiM0MzsJfSByZXEgPSB7CiYjNDM7CQkudXBkYXRlX2ZsYWcgPSB7CiYjNDM7CQkJLnRhZyAgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHKSwKJiM0MzsJCQkubGVuICA9IGNwdV90b19sZTE2KHNpemVvZihyZXEudXBkYXRlX2ZsYWcpKSwKJiM0MzsJCQkuZGF0YSA9IGNwdV90b19sZTMyKGVuYWJsZSA/IDEgOiAwKSwKJiM0MzsJCX0sCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBtdDc2X21jdV9zZW5kX21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLAomIzQzOwkJCQkgJmFtcDtyZXEsIHNpemVvZihyZXEpLCBmYWxzZSk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY1NzI1MTNiNzY0NjYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgKQEAgLTAsMCAmIzQzOzEsMTUxIEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqLwomIzQzOy8qIENvcHlyaWdodCAoQykgMjAyNiBNZWRpYVRlayBJbmMuICovCiYjNDM7CiYjNDM7I2lmbmRlZiBfX0NBQ0hFRF9DQUxfSAomIzQzOyNkZWZpbmUgX19DQUNIRURfQ0FMX0gKJiM0MzsKJiM0MztlbnVtIG10NzkyNV9heGlkbWFfaW5mb190YWcgewomIzQzOwlNVDc5MjVfQVhJRE1BX1RBR19SRU1BUCA9IDAsCiYjNDM7CU1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMID0gMSwKJiM0MzsJTVQ3OTI1X0FYSURNQV9UQUdfTlVNCiYjNDM7fTsKJiM0MzsKJiM0MztlbnVtIG10NzkyNV9mYWN0X2NhbF90YWcgewomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVIJPSAyLAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHCT0gMywKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVQJPSA0LAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVAk9IDUsCiYjNDM7fTsKJiM0MzsKJiM0MztlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHsKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ09NTU9OCQk9IDAsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UWVBFX0dST1VQCQk9IDEsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UWVBFX0NIQU5ORUwJCT0gMiwKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwJPSA0LAomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOCQkxNDAwCiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4JCQkxNgomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgJNAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfVTMyX0xFTgkJNAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfTUFYX0JVRl9MRU4gXAomIzQzOwkoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVggKiBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOKQomIzQzOwomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTQkJMgomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTQkJMzUKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fMkcJCTE0CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHCQk2OAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RwkJMTA5CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTCBcCiYjNDM7CShNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcgJiM0MzsgXAomIzQzOwkgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RykKJiM0MzsKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NCQkJNjAwCiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUAkJCTQ1MDAKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0gJCQkyODAwCiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7CiYjNDM7CV9fbGUzMiBjYWxfdHlwZTsKJiM0MzsJX19sZTMyIGNhbF9wYXJhbTsKJiM0MzsJX19sZTMyIGJ1Zl9zZXFfbnVtOwomIzQzOwlfX2xlMzIgdG90YWxfYnVmX251bTsKJiM0MzsJX19sZTMyIGJ1Zl9kYXRhX2xlbjsKJiM0MzsJdTggdmFsaWQ7CiYjNDM7CXU4IGRvbmU7CiYjNDM7CXU4IHJzdlsyXTsKJiM0MzsJX19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCwKJiM0MzsJICAgICAgJiMzNDtidWZfaW5mbyBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDg4IGJ5dGVzKSBvciBpdCByZWplY3RzIHRoZSBtYXBwaW5nIHRhYmxlJiMzNDspOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCB7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9oOwomIzQzOwlfX2xlMzIgcGh5X2FkZHJfbDsKJiM0MzsJX19sZTMyIG9mZnNldDsKJiM0MzsJdTggYmFuZFtNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNXTsKJiM0MzsJdTggcnN2WzJdOwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAgewomIzQzOwlfX2xlMzIgcGh5X2FkZHJfaDsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2w7CiYjNDM7CV9fbGUzMiBvZmZzZXQ7CiYjNDM7CXU4IGdyb3VwW01UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU1dOwomIzQzOwl1OCByc3Y7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIHsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2g7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9sOwomIzQzOwlfX2xlMzIgb2Zmc2V0OwomIzQzOwlfX2xlMzIgY2FsX3BhcmFtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTsKJiM0MzsJdTggdG90YWxfYnVmX251bVtNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTF07CiYjNDM7CXU4IHJzdjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgewomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAgY29tbW9uOwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCBncm91cDsKJiM0MzsJc3RydWN0IG10NzkyNV9mYWN0X2NhbF9jaGFubmVsX21hcCBjaGFubmVsOwomIzQzOwlfX2xlMzIgYnVmX2luZm9fc2l6ZTsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2g7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9sOwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCkgPT0gMTA0NCwKJiM0MzsJICAgICAgJiMzNDttYXBwaW5nIHRhYmxlIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoMTA0NCBieXRlcykgb3IgdGhlIEZXIHBhcnNlIGNvcnJ1cHRzJiMzNDspOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCB7CiYjNDM7CXUzMiBjb21tb25fb2ZmLCBncm91cF9vZmYsIGNoYW5uZWxfb2ZmLCBtYXBwaW5nX29mZjsKJiM0MzsJdTMyIGNvbW1vbl9zdHJpZGUsIGdyb3VwX3N0cmlkZSwgY2hhbm5lbF9zdHJpZGU7CiYjNDM7CXUzMiB0b3RhbDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxIHsKJiM0MzsJdTggX3Jzdls0XTsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCV9fbGUxNiB0YWc7CiYjNDM7CQlfX2xlMTYgbGVuOwomIzQzOwkJX19sZTMyIHJlbWFwX2FkZHI7CiYjNDM7CQlfX2xlMzIgcmVzZXJ2ZWQ7CiYjNDM7CX0gX19wYWNrZWQgcmVtYXA7CiYjNDM7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsJCV9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0OwomIzQzOwkJX19sZTMyIHNpemU7CiYjNDM7CQlfX2xlMzIgYm91bmQ7CiYjNDM7CQlfX2xlMzIgcmVzZXJ2ZWQ7CiYjNDM7CX0gX19wYWNrZWQgZmFjdF9jYWw7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX3JlcSB7CiYjNDM7CXU4IF9yc3ZbNF07CiYjNDM7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsJCV9fbGUzMiBkYXRhOwomIzQzOwkJX19sZTMyIHNlcV9udW07CiYjNDM7CQlfX2xlMzIgYnVmX2RhdGFfbGVuOwomIzQzOwkJdTggY2FsX3R5cGU7CiYjNDM7CQl1OCBkb25lOwomIzQzOwkJdTggcnN2WzJdOwomIzQzOwkJdTggYnVmX2RhdGFbTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTl07CiYjNDM7CX0gX19wYWNrZWQgc2V0OwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7CiYjNDM7dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpOwomIzQzOwomIzQzOyNlbmRpZiAvKiBfX0NBQ0hFRF9DQUxfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaAppbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaApAQCAtMzUzLDYgJiM0MzszNTMsNyBAQCBpbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsCiAKIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKIGludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwomIzQzO3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiB2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKTsKIHZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpldnQpOwogdm9pZCBtdDc5MjVfc2V0X3J1bnRpbWVfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jCmluZGV4IDAyZWYwOWRkNzk3ZGEuLjcyNGFiZDJiZTU3YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jCkBAIC05LDYgJiM0Mzs5LDcgQEAKICNpbmNsdWRlICYjMzQ7bWFjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDttY3UuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3JlZ2QuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtjYWNoZWRfY2FsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi9kbWEuaCYjMzQ7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0gewpAQCAtMzgsNiAmIzQzOzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJcmV0dXJuIG10NzkyeF93cGRtYV9yZXNldChkZXYsIHRydWUpOwogfQogCiYjNDM7LyogU2V0IHVwIHRoZSBmYWN0b3J5LWNhbGlicmF0aW9uIGNhY2hlIGluIGhvc3QgbWVtb3J5LiBQQ0llIG9ubHk6IHRoZSBGVwomIzQzOyAqIHJlYWNoZXMgdGhlIGJ1ZmZlciB0aHJvdWdoIEFYSSBETUEsIHNvIGl0IGhhcyBubyBtZWFuaW5nIG9uIG90aGVyIGJ1c2VzLgomIzQzOyAqIEV2ZXJ5IGZhaWx1cmUganVzdCBsZWF2ZXMgdGhlIGNhY2hlIG9mZiwgd2hpY2ggaXMgbm90IGZhdGFsLgomIzQzOyAqLwomIzQzO3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CWlmICghKGRldi0mZ3Q7cGh5LmNoaXBfY2FwICZhbXA7IE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4pKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDtjYWNoZWRfY2FsLnZhKSB7CiYjNDM7CQkvKiBDYXJyaWVkLW92ZXIgYnVmZmVyIHN0aWxsIGhvbGRzIEZXLXdyaXR0ZW4gY2FsIGRhdGEuICovCiYjNDM7CQlkZXYtJmd0O2NhY2hlZF9jYWwucmV1c2VkID0gdHJ1ZTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChtdDc5MjVfYXhpZG1hX2FsbG9jKGRldikpIHsKJiM0MzsJCQlkZXZfd2FybihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnVmZmVyIGFsbG9jIGZhaWxlZFxuJiMzNDspOwomIzQzOwkJCXJldHVybjsKJiM0MzsJCX0KJiM0MzsJCS8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi8KJiM0MzsJCWRldi0mZ3Q7Y2FjaGVkX2NhbC5yZXVzZWQgPSBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHsKJiM0MzsJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJICYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGluZm8gY21kIHRvIEZXIGZhaWxlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhCiYjNDM7CSAqIChjb21tb24gLyBwb3dlci1vbiBncm91cCkgaW5zdGVhZCBvZiBydW5uaW5nIGEgZnVsbCBjYWxpYnJhdGlvbjsKJiM0MzsJICogbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBtYXBwaW5nIHRhYmxlIGlzIHNlbnQuCiYjNDM7CSAqLwomIzQzOwlpZiAobXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKGRldiwgdHJ1ZSkpIHsKJiM0MzsJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJICYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKGRldikpIHsKJiM0MzsJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJICYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IG1hcHBpbmcgdGJsIHNlbmQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIGZhbHNlKSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWRldl9pbmZvKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBlbmFibGVkIChETUE9JXBhZCwgc2l6ZT0ldSwgcmV1c2VkPSVkKVxuJiMzNDssCiYjNDM7CQkgJmFtcDtkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHIsIGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplLAomIzQzOwkJIGRldi0mZ3Q7Y2FjaGVkX2NhbC5yZXVzZWQpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIHsKIAlpbnQgaTsKQEAgLTU4LDYgJiM0MzsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAKIAltdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7CiAJX19tdDc5MnhfbWN1X2Rydl9wbWN0cmwoZGV2KTsKJiM0MzsKJiM0MzsJbXQ3OTI1X2F4aWRtYV9mcmVlKGRldik7CiYjNDM7CiAJbXQ3OTJ4X2RtYV9jbGVhbnVwKGRldik7CiAJbXQ3OTJ4X3dmc3lzX3Jlc2V0KGRldik7CiAJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZGV2LSZndDttdDc2Lm1jdS5yZXNfcSk7CkBAIC01ODcsNyAmIzQzOzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlpc19tdDc5MjhfaHcgPSAocGRldi0mZ3Q7ZGV2aWNlID09IDB4NzkyOCB8fCBwZGV2LSZndDtkZXZpY2UgPT0gMHg3OTM1KTsKIAogCWlmIChpc19tdDc5MjhfaHcpCi0JCXJldCA9IGRtYV9zZXRfbWFzaygmYW1wO3BkZXYtJmd0O2RldiwgRE1BX0JJVF9NQVNLKDM0KSk7CiYjNDM7CQlyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KCZhbXA7cGRldi0mZ3Q7ZGV2LCBETUFfQklUX01BU0soMzQpKTsKIAllbHNlCiAJCXJldCA9IGRtYV9zZXRfbWFzaygmYW1wO3BkZXYtJmd0O2RldiwgRE1BX0JJVF9NQVNLKDMyKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYwppbmRleCA4NDc3ZDIxYWJjNjYwLi5jOTBmMTI5YjNhMzRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jCkBAIC0xMzUsNiAmIzQzOzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCiYjNDM7CW10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7CiYjNDM7CiAJZXJyID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMKaW5kZXggNzI3MDdlZGRjM2RiNi4uMjU4ZjM3NTNkYjFmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYwpAQCAtNDYsNiAmIzQzOzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAltdDc2X3Jtd19maWVsZChkZXYsIGRldi0mZ3Q7cGNpZV9yZWctJmd0O3BtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTsKIAogCWVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTsKJiM0MzsJaWYgKCFlcnIpCiYjNDM7CQltdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpOwogCiAJbXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LSZndDttdDc2LnFfbWN1W01UX01DVVFfRldETF0sIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzQwZDUxN2ViMzhiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oCkBAIC0zMyw2ICYjNDM7MzMsNyBAQAogI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfUkVHRF9FTiBCSVQoNSkKICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOCkKICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTUxfRU4gQklUKDkpCiYjNDM7I2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOIEJJVCgxNikKIAogLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYgZmlybXdhcmUgZXhwYW5kcyB0YWJsZSAqLwogI2RlZmluZSBNVDc5MnhfQkFTSUNfUkFURVNfVEJMCTE0CkBAIC0zNDIsNiAmIzQzOzM0MywxMyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7CiAJc3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zOwogCWludCBuX2lmYWNlX2NvbWJpbmF0aW9uczsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCXZvaWQgKnZhOwomIzQzOwkJZG1hX2FkZHJfdCBkbWFfYWRkcjsKJiM0MzsJCXUzMiBzaXplOwomIzQzOwkJYm9vbCByZXVzZWQ7CiYjNDM7CX0gY2FjaGVkX2NhbDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDc2CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBNZWRpYVRlayBNVDc5MjUgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYG10NzkyNWAgZHJpdmVyLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNZWRpYVRlayBNVDc2IHdpcmVsZXNzIGRyaXZlciBmYW1pbHkuIEl0IGludHJvZHVjZXMgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSYjMzQ7IOKAkyBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIOKAkyBzcGVjaWZpY2FsbHkgZm9yIFBDSWUgZGV2aWNlcy4gVGhlIHBhdGNoIGluY2x1ZGVzIG5ldyBmaWxlcyAoYGNhY2hlZF9jYWwuY2AsIGBjYWNoZWRfY2FsLmhgKSBhbmQgbW9kaWZpZXMgc2V2ZXJhbCBleGlzdGluZyBvbmVzIChgcGNpLmNgLCBgcGNpX21hYy5jYCwgYHBjaV9tY3UuY2ApLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaXMgZnV6emFibGUuIFRoZSBwcm9tcHQgZ2l2ZXMgc29tZSBleGNsdXNpb24gY3JpdGVyaWEuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgaGFyZHdhcmUuIFJpZ2h0LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT8KCmBtdDc5MjVgIGlzIGEgTWVkaWFUZWsgV2ktRmkgZHJpdmVyLiBXaGlsZSBXaS1GaSBkcml2ZXJzICpnZW5lcmFsbHkqIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUsIHNvbWV0aW1lcyB0aGV5ICpjYW4qIGJlIGZ1enplZCB1c2luZyBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBhIHNvZnR3YXJlIHNpbXVsYXRvci4gSG93ZXZlciwgdGhpcyBpcyBmb3IgYSAqUENJZSogZGV2aWNlLCBhbmQgYG10NzkyNWAgaXRzZWxmIHJlcXVpcmVzIGEgcGh5c2ljYWwgTVQ3OTI1IGRldmljZSAoUENJZSBvciBVU0IpLiBTbywgYG1hYzgwMjExX2h3c2ltYCBpc24mIzM5O3QgdGhlIHNvbHV0aW9uIGhlcmUuCgpIb3dldmVyLCBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIFBDSSBlbXVsYXRpb24gY2FwYWJpbGl0aWVzLiBJdCBoYXMgdmhjaSBmb3IgVVNCLCBidXQgZG9lcyBpdCBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIGZvciBQQ0k/IEFjdHVhbGx5LCB5ZXMsIFN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoZSBxdWVzdGlvbiBpczogZG9lcyBzdGFuZGFyZCBRRU1VIGVtdWxhdGUgdGhlIE1UNzkyNT8gTm8uIEJ1dCwgU3l6a2FsbGVyIGZ1enplcyBQQ0kgZGV2aWNlcyBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuCgpEb2VzIFN5emthbGxlciBmdXp6IGBtdDc5MjVgPyBMZXQmIzM5O3MgY2hlY2shIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIFN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIGl0LiBBbmQgd2FpdCwgZ29pbmcgYmFjayB0byB0aGUgcHJvbXB0LCBpdCBsaXN0cyBzcGVjaWZpYyBleGNsdXNpb25zOiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gV2ktRmkgZHJpdmVycyBhcmVuJiMzOTt0ICpleHBsaWNpdGx5KiBpbiB0aGF0IGxpc3QsIGJ1dCB0aGV5ICphcmUqIFBDSWUgZGV2aWNlcy4KCkkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hldGhlciBTeXprYWxsZXIgaGFzIHN1ZmZpY2llbnQgUENJIGZ1enppbmcgc3VwcG9ydCBmb3IgdGhlIGBtdDc2YCBmYW1pbHkuIFRoYXQgd2lsbCBiZSB0aGUgZGVjaWRpbmcgZmFjdG9yIGhlcmUuIEkgbXVzdCByZXNlYXJjaCB0aGUgU3l6a2FsbGVyIGNvdmVyYWdlIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQyOTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrLmgtOS0jZGVmaW5lIEZJUk1XQVJFX01UNzk2MVx0XHRcJiMzNDttZWRpYXRlay9CVF9SQU1fQ09ERV9NVDc5NjFfMV8yX2hkci5iaW5cJiMzNDtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrLmg6MTA6I2RlZmluZSBGSVJNV0FSRV9NVDc5MjVcdFx0XCYjMzQ7bWVkaWF0ZWsvbXQ3OTI1L0JUX1JBTV9DT0RFX01UNzkyNV8xXzFfaGRyLmJpblwmIzM0O1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGsuaC0xMS0jZGVmaW5lIEZJUk1XQVJFX01UNzkyN1x0XHRcJiMzNDttZWRpYXRlay9tdDc5MjcvQlRfUkFNX0NPREVfTVQ2NjM5XzJfMV9oZHIuYmluXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTUwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NTE6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTUxPW9iai0kKENPTkZJR19NVDc5OTZFKSAmIzQzOz0gbXQ3OTk2L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgJiM0Mzs9IG10NzkyNS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTgwPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jb25uYWMzKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTg1OnN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTU0PWludCBtdDc2X2Nvbm5hY19tY3VfaW5pdF9kb3dubG9hZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsIHUzMiBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy02OS1cdCAgICAoaXNfY29ubmFjMihkZXYpIFx1MDAyNlx1MDAyNiBhZGRyID09IDB4OTAwMDAwKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3MDpcdCAgICAoKGlzX210NzkyNShkZXYpIHx8IGlzX210NzkyNyhkZXYpKSBcdTAwMjZcdTAwMjYgKGFkZHIgPT0gMHg5MDAwMDAgfHwgYWRkciA9PSAweGUwMDAyODAwKSkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNzEtXHQgICAgKGlzX210NzkyOChkZXYpIFx1MDAyNlx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDIwMDApKSB8fFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1LWNvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo4Om10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjk6bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8gY2FjaGVkX2NhbC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzo4OnN0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEwOlx0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjMtXHRsLVx1MDAzZXRvdGFsID0gbC1cdTAwM2VtYXBwaW5nX29mZiAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI0Olx0XHRzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI3OnN0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyOTpcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjMxOlx0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcdTAwMjZsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MzY6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjQ1Olx0dG90YWxfc2l6ZSA9IG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NTk6dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy02MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjcwOmludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy03MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NzI6XHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTczLVx0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEwODpzdGF0aWMgYm9vbCBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaW9uX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMDktXHRcdFx0XHQgICAgICAgdTMyIHN0cmlkZSwgdTMyIGlkeCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMTI6XHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMTMtXHR1MzIgb2ZmID0gcmVnaW9uX29mZiAmIzQzOyBzdHJpZGUgKiBpZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTExNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMTg6XHRiaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTE5LVx0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgJiM0Mzsgb2ZmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEyNzpzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMjg6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMjkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzMC1cdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMzE6XHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzMi1cdGRtYV9hZGRyX3QgYmFzZSA9IGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEzMzpcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMzU6XHRtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KFx1MDAyNmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTU5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxNjA6XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jb21tb25fb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE2MS1cdFx0XHRcdFx0XHQgICAgICAgbC5jb21tb25fc3RyaWRlLCBpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjE2NjpcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmdyb3VwX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjctXHRcdFx0XHRcdFx0ICAgICAgIGwuZ3JvdXBfc3RyaWRlLCBpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNzEtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxNzI6XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNzMtXHRcdFx0XHRcdFx0ICAgICAgIGwuY2hhbm5lbF9zdHJpZGUsIGksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxODg6c3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xODktXHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xOTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjE5MjpcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTkzLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjIyNDppbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyMjY6XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsICp0Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI3LVx0X19sZTMyIGNmZ1tNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4gLyBzaXplb2YoX19sZTMyKV0gPSB7MH07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyMzg6XHRtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmwoZGV2LCB0YmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjQxLVx0Y2ZnWzJdID0gY3B1X3RvX2xlMzIoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI0MjpcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjQzLVx0XHRcdFx0XHQgICAgc2VxLCBmYWxzZSwgY2ZnLCBzaXplb2YoY2ZnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNTU6XHRcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNTYtXHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjcwOlx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNzEtXHRcdFx0XHRcdCAgICAmIzQzOyYjNDM7c2VxLCB0cnVlLCBOVUxMLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI4NDppbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6NzplbnVtIG10NzkyNV9heGlkbWFfaW5mb190YWcge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTgtXHRNVDc5MjVfQVhJRE1BX1RBR19SRU1BUCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjEzOmVudW0gbXQ3OTI1X2ZhY3RfY2FsX3RhZyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQtXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVJcdD0gMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MjA6ZW51bSBtdDc5MjVfZmFjdF9jYWxfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMjEtXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DT01NT05cdFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo0NzpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC00OC1cdF9fbGUzMiBjYWxfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6NTk6c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbykgPT0gODgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNjAtXHQgICAgICBcJiMzNDtidWZfaW5mbyBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDg4IGJ5dGVzKSBvciBpdCByZWplY3RzIHRoZSBtYXBwaW5nIHRhYmxlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo2MjpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTYzLVx0X19sZTMyIHBoeV9hZGRyX2g7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjcwOnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03MS1cdF9fbGUzMiBwaHlfYWRkcl9oO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo3ODpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03OS1cdF9fbGUzMiBwaHlfYWRkcl9oO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo4NzpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo4ODpcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6ODk6XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCBncm91cDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5MDpcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAgY2hhbm5lbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05MS1cdF9fbGUzMiBidWZfaW5mb19zaXplO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5NjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTk3LVx0ICAgICAgXCYjMzQ7bWFwcGluZyB0YWJsZSBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDEwNDQgYnl0ZXMpIG9yIHRoZSBGVyBwYXJzZSBjb3JydXB0c1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6OTk6c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xMDAtXHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxMDU6c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEwNi1cdHU4IF9yc3ZbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxMjU6c3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyNi1cdHU4IF9yc3ZbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTE0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxNDE6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0Mzp2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MTQ1OmludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0NzppbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxNDk6aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTUwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXCYjMzQ7bXQ3OTI1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg6bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0Olx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODpcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjVfcmVnX2dldCwgbXQ3OTI1X3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzk6bXQ3OTI1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUtXHRkZXYtXHUwMDNlZndfZGVidWcgPSAodTgpdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ2Olx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9NTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjU0Om10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2NDpcdFx0XHQgbXQ3OTI1X2Z3X2RlYnVnX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTY4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTcwLVx0XHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy04NC0oe1x0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4NTpcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFwmIzM0OyAodG1hYylcJiMzNDssXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVx0XHRcdCAgICAgIHR4cHdyLVx1MDAzZXJhdGUsXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTkxPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjkyOm10NzkyNV9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05Ny1cdFx0ICAgXCYjMzQ7bWNzMTJcJiMzNDssIFwmIzM0O21jczEzXCYjMzQ7LCBcJiMzNDttY3MxNFwmIzM0OywgXCYjMzQ7bWNzMTVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2LCBlaHQ5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nng0LCBlaHQ5OTZ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl81MiwgZWh0MjZfNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0XzI0MiwgZWh0NDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0LCBlaHQ5OTZfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTExOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4Ml80ODQsIGVodDk5NngyXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MywgZWh0OTk2eDMsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExODptdDc5MjVfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcdHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjItXHR1OCBiYW5kX2lkeCA9IGRldi1cdTAwM2VtcGh5LmJhbmRfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzMTpcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMyLVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTM4LVx0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDsxbVwmIzM0OywgXCYjMzQ7Mm1cJiMzNDssIFwmIzM0OzVtXCYjMzQ7LCBcJiMzNDsxMW1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVx0XHQgICBcJiMzNDs0OG1cJiMzNDssIFwmIzM0OzU0bVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0sIG9mZG0sIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1My1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzMzJcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE1NDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTgtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczhcJiMzNDssIFwmIzM0O21jczlcJiMzNDssIFwmIzM0O21jczEwXCYjMzQ7LCBcJiMzNDttY3MxMVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzQ6XHRtdDc5MjVfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xODE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4MjptdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTgzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LVx0cG0tXHUwMDNlZW5hYmxlX3VzZXIgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA2Olx0bXQ3OTI1X3NldF9ydW50aW1lX3BtKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA3LVx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxNTptdDc5MjVfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIxNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMjY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNzptdDc5MjVfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNDItXHRwbS1cdTAwM2Vkc19lbmFibGUgPSBlbmFibGUgXHUwMDI2XHUwMDI2ICFtb25pdG9yO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI0MzpcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBwbS1cdTAwM2Vkc19lbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0NC1vdXQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjUxOm10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYwOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjVfZGVlcF9zbGVlcF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYxOlx0XHRcdCBtdDc5MjVfZGVlcF9zbGVlcF9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yNjM9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NjpzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc4LVx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI3OTpcdFx0cmV0ID0gbXQ3OTI1X21jdV9jaGlwX2NvbmZpZyhkZXYsIFwmIzM0O2Fzc2VydFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjgwLVx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNC1cdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O3R4cG93ZXJfc2t1XCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzA1Olx0XHRcdFx0ICAgIG10NzkyNV90eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzA2LVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0eF9zdGF0c1wmIzM0OywgMDQwMCwgZGlyLCBkZXYsIFx1MDAyNm10NzkyeF90eF9zdGF0c19mb3BzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwLSNpbmNsdWRlIFwmIzM0O3JlZ2QuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjVfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE1LVx0XHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1Olx0XHR0ZW1wZXJhdHVyZSA9IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKG1kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzc6c3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUl9STyh0ZW1wMV9pbnB1dCwgbXQ3OTI1X3RoZXJtYWxfdGVtcCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyNV9od21vbl9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQwLVx0XHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQyLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjVfaHdtb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTI1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NTQ6XHRuYW1lID0gZGV2bV9rYXNwcmludGYoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDttdDc5MjVfJXNcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTUtXHRcdFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01OS1cdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBuYW1lLCBwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjA6XHRcdFx0XHRcdFx0ICAgICAgIG10NzkyNV9od21vbl9ncm91cHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTYxLVx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjY0OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzMtXHRcdCAgICAgICBGSUVMRF9QUkVQKE1UX1RYX1JBVEVfSURYLCByYXRlIFx1MDAyNiBHRU5NQVNLKDcsIDApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3NDpcdFx0bXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShkZXYsIGlkeCwgcmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc4OmludCBtdDc5MjVfbWFjX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6ODc6XHRcdG10NzkyNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg4LVx0XHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjkyOlx0bXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEwMDpzdGF0aWMgaW50IF9fbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTEyOlx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjExNjpcdHJldCA9IG10NzkyNV9tYWNfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMC1cdGlmIChpc19tdDc5MjcoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTIxOlx0XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9kYmRjKFx1MDAyNmRldi1cdTAwM2VtcGh5LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMjItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEzMzpzdGF0aWMgaW50IG10NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0NTpcdFx0cmV0ID0gX19tdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE0Ni1cdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9uYW5fY2FwKHN0cnVjdCBtdDc2X2RldiAqbWRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTkwOnN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTY6XHRyZXQgPSBtdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMC1cdG10NzZfc2V0X3N0cmVhbV9jYXBzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDE6XHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDItXHRtdDc5MnhfY29uZmlnX21hY19hZGRyX2xpc3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA0Olx0cmV0ID0gbXQ3OTI1X2luaXRfbWxvX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjA1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjEwOlx0ZGV2LVx1MDAzZW10NzYuaW5pdF93aXBoeSA9IG10NzkyNV9pbml0X25hbl9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5Olx0cmV0ID0gbXQ3OTI1X2luaXRfZGVidWdmcyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyMC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyNTpcdHJldCA9IG10NzkyNV90aGVybWFsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjMxOlx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjQwOlx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIGRldi1cdTAwM2VwbS5kc19lbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI0MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MzppbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNTQ6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmssIG10NzkyNV9tbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjU1LVx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwbS53YWtlX3dvcmssIG10NzkyeF9wbV93YWtlX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNjEtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTJ4X21hY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjI6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlcGh5LnNjYW5fd29yaywgbXQ3OTI1X3NjYW5fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjYzOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWNvcmVkdW1wLndvcmssIG10NzkyNV9jb3JlZHVtcF93b3JrKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NzIzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBNVDc5MjUgV2ktRmkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MjVgIGRyaXZlciwgd2hpY2ggaXMgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIHdpdGggYm90aCBQQ0kgYW5kIFVTQiB2YXJpYW50cy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgc3RhbmRhcmQgUUVNVSBlbXVsYXRpbmcgdGhpcyBzcGVjaWZpYyBkZXZpY2U/IE5vLCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDogRG9lcyBzeXprYWxsZXIgZXZlbiBmdXp6IGl0PyBJIG5lZWQgdG8gY2hlY2sgZm9yIHN5emthbGxlciBkZXNjcmlwdGlvbnMuIEJ1dCB3YWl0LCB0aGlzIHByb21wdCBnaXZlcyBhIGNydWNpYWwgbGltaXRhdGlvbjogSSBjYW4mIzM5O3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIG9yIGV4cHJlc3Npb25zIHN0YXJ0aW5nIHdpdGggYHN5el9gLCBiZWNhdXNlIHRob3NlIGFyZSBwc2V1ZG8tc3lzY2FsbHMgc3BlY2lmaWMgdG8gc3l6a2FsbGVyLCBub3QgcHJlc2VudCBpbiB0aGUga2VybmVsLiBJIGRvbiYjMzk7dCBoYXZlIHRoZSBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgdG9vbHMsIHNvIEkmIzM5O20gYSBiaXQgc3R1Y2suCgpMZXQgbWUgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBwb2ludHMgb3V0IHRoYXQgY29kZSBpbiBzcGVjaWZpYyBkcml2ZXJzIOKAkyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyDigJMgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB0aGV5IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgd2hpY2ggaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFN5emthbGxlciBnZW5lcmFsbHkgZnV6emVzIFdpLUZpIGRyaXZlcnMgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGUgYG10NzkyNWAgaXMgYSBoYXJkd2FyZSBkcml2ZXIuIFRoYXQgbWFrZXMgbWUgdGhpbms6IFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGluamVjdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuIEJ1dCBkb2VzIHRoYXQgYXBwbHkgaGVyZT8gVGhlIHByb21wdCBtZW50aW9ucyB0aG9zZSBwcm9ibGVtYXRpYyBkcml2ZXJzIGFnYWluLi4uIElzIGBtdDc5MjVgIGluIHRoYXQgY2F0ZWdvcnk/IEl0ICppcyogYSBXaS1GaSBkcml2ZXIsIHdoaWNoIG1pZ2h0IGJlIHZlbmRvci1zcGVjaWZpYy4uLgoKQWxzbywgdGhlIHByb21wdCBtZW50aW9ucyBvdGhlciBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyBgbXQ3OTI1YCByZWFjaGFibGUgaW4gUUVNVT8gSWYgdGhlcmUmIzM5O3Mgbm8gUUVNVSBlbXVsYXRpb24gZm9yIHRoaXMsIGFuZCBpdCBpc24mIzM5O3QgYSBVU0IgZ2FkZ2V0IG9yIGBtYWM4MDIxMV9od3NpbWAsIGhvdyBjYW4gaXQgYmUgcmVhY2hlZD8gT2gsIHJpZ2h0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBVU0IgZnV6emVyICh1c2luZyBgdmhjaWApIHRoYXQgY2FuIGVtdWxhdGUgQU5ZIFVTQiBkZXZpY2UgdXNpbmcgZGVzY3JpcHRvcnMuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IG1vZGlmaWVzIGBtdDc5MjUvcGNpLmNgLCBgcGNpX21hYy5jYCwgYHBjaV9tY3UuY2AsIGFuZCBhZGRzIGBjYWNoZWRfY2FsLmNgLiBUaGUgbmV3IGZlYXR1cmUgZm9jdXNlcyBvbiBQQ0llIHNwZWNpZmljYWxseTogJiMzNDtTZXQgdXAgdGhlIGZhY3RvcnktY2FsaWJyYXRpb24gY2FjaGUgaW4gaG9zdCBtZW1vcnkuIFBDSWUgb25seTogdGhlIEZXIHJlYWNoZXMgdGhlIGJ1ZmZlciB0aHJvdWdoIEFYSSBETUEsIHNvIGl0IGhhcyBubyBtZWFuaW5nIG9uIG90aGVyIGJ1c2VzLiYjMzQ7CgpUaGUgY29tbWVudHMgcmVpbmZvcmNlIHRoYXQgdGhpcyBpcyBQQ0llLW9ubHkuIEFuZCB0aGUgZnVuY3Rpb24gYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTI1ZV9tYWNfcmVzZXRgIGFuZCBgbXQ3OTI1ZV9tY3VfaW5pdGAsIHdoaWNoIGFyZSBpbiBgcGNpX21hYy5jYCBhbmQgYHBjaV9tY3UuY2AuIFRoaXMgUENJZSBhc3BlY3QgaXMgcmVhbGx5IGNyaXRpY2FsLiBJZiB0aGVyZSYjMzk7cyBubyBRRU1VIGVtdWxhdGlvbiwgY2FuIGl0IGFjdHVhbGx5IGJlIHRlc3RlZD8KCkkmIzM5O20gcmVtZW1iZXJpbmcgdGhhdCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBieSBtYXRjaGluZyB0aGUgUENJIHZlbmRvci9kZXZpY2UgSUQgYW5kIGluamVjdGluZyBNTUlPLiBCdXQgZG9lcyBpdCBzdXBwb3J0IGBtdDc5MjVgIHNwZWNpZmljYWxseT8gVXN1YWxseSwgaXQmIzM5O3MgbW9yZSBnZW5lcmljLCBhbmQgdGhlIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uIGlzIHRoZW4gY2FsbGVkLiBUaGUgZHJpdmVyIHRoZW4gdHJpZXMgdG8gcmVhZCBhbmQgd3JpdGUgTU1JTywgYW5kIHN5emthbGxlciBwcm92aWRlcyByYW5kb20gZGF0YS4gQnV0LCB0aGF0IHByb21wdCBrZWVwcyBlY2hvaW5nIGluIG15IG1pbmQ6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgSXMgdGhpcyBXaS1GaSBkcml2ZXIgY29uc2lkZXJlZCAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llJiMzNDs/IElmIHNvLCB0aGF0IGNvdWxkIG1lYW4gaXQmIzM5O3MgKm5vdCogZnV6emVkIGluIHRoZSB1c3VhbCB3YXkuIEJ1dCB3YWl0ISBUaGUgY29tbWl0IGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuLi4gYnV0IHRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDsuIFNvLCB0aGF0IGp1c3QgbWVhbnMgc3l6a2FsbGVyIGFwcGxpZWQgdGhlIHBhdGNoIHRvIHRlc3QgaXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZm9jdXMgb24gdGhlIFBDSWUgYXNwZWN0IGFuZCBzZWUgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZy4gSWYgdGhlIGRyaXZlciBkb2VzIERNQSBhbGxvY2F0aW9uIGFuZCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIE1DVSAoZmlybXdhcmUpLCBpdCByZWxpZXMgb24gdGhhdCBmaXJtd2FyZSBiZWluZyBsb2FkZWQgYW5kIHJ1bm5pbmcsIG9yIGF0IGxlYXN0IE1NSU8gcmVhZHMgcmV0dXJuaW5nIHNlbnNpYmxlIHZhbHVlcy4gTG9va2luZyBhdCBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgOgoKYGBgYwoJaWYgKCEoZGV2LSZndDtwaHkuY2hpcF9jYXAgJmFtcDsgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpCgkJcmV0dXJuOwpgYGAKCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBjaGlwX2NhcGAgaXMgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzkyeF9DSElQX0NBUF9BWElETUFfRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDY9dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTQ5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNS0jZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozNjojZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE2NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgZGVsdmUgaW50byB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYCBEZWZpbml0aW9uKioKCkhtbSwgdGhpcyBpcyBjdXJpb3VzLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBrZXJuZWwgc291cmNlIHdvdWxkIGhhdmUgZGVmaW5lZCBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAsIGVzcGVjaWFsbHkgZ2l2ZW4gaXRzIGNvbnRleHQuIEkgbmVlZCB0byBiZSBzdXJlLiBNeSBpbml0aWFsIHNjYW4gZGlkbiYjMzk7dCByZXZlYWwgaXQsIHdoaWNoIHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdmVyaWZ5IHRoYXQgaXQmIzM5O3MgKm5vdCogZGVmaW5lZCBhbnl3aGVyZSwgZWl0aGVyIGRpcmVjdGx5IGluIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHNvbWUgbWFjcm8gbWFnaWMuIFRoZXJlJiMzOTtzIGFsd2F5cyB0aGUgY2hhbmNlIEkgbWlzc2VkIHNvbWV0aGluZyBpbiBteSBpbml0aWFsIHBlcnVzYWwuIFRoZSBuZXh0IHN0ZXAgaXMgYSBtb3JlIHRob3JvdWdoIHNlYXJjaCBvZiB0aGUgcGF0Y2ggaXRzZWxmLiBQZXJoYXBzIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIHRoaXMgcGF0Y2ggYW5kIEkgb3Zlcmxvb2tlZCBpdCwgb3IgbWF5YmUgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBzb21ld2hlcmUuIElmIGl0JiMzOTtzICpub3QqIHByZXNlbnQgaGVyZSwgSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhpcyBzeW1ib2wgaXMgdXNlZCBhbmQgaWYgdGhlcmUgaXMgYW5vdGhlciB3YXkgdG8gZGV0ZXJtaW5lIHRoZSB1c2Ugb2YgQVhJIERNQS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBWElETUFfRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDY9dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTQ5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNS0jZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozNjojZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTE2NTI9c3RhdGljIGludCBkbWFjX2Z1bmNfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtMTY2My1cdFx0XHQgQl9BWF9XRF9STFNfRU4gfCBCX0FYX01QRFVfUFJPQ19FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjE2NjQ6XHRcdFx0IEJfQVhfRE1BQ19DUlBSVCB8IEJfQVhfSF9BWElETUFfRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy0xNjY1LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NDIwOD1zdGF0aWMgdm9pZCBydHc4OV9tYWNfaGNpX2Z1bmNfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNC1cdFx0dmFsID0gQl9BWF9NQUNfRlVOQ19FTiB8IEJfQVhfRE1BQ19GVU5DX0VOIHwgQl9BWF9ESVNQQVRDSEVSX0VOIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDIxNTpcdFx0ICAgICAgQl9BWF9QS1RfQlVGX0VOIHwgQl9BWF9IX0FYSURNQV9FTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNi1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQyMjI9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2RtYWNfZnVuY19wcmVfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDI1NC1cdHJ0dzg5X3dyaXRlMzJfY2xyKHJ0d2RldiwgUl9BWF9IQVhJX0RNQV9TVE9QMiwgQl9BWF9TVE9QX0NIMTAgfCBCX0FYX1NUT1BfQ0gxMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjQyNTU6XHRydHc4OV93cml0ZTMyX3NldChydHdkZXYsIFJfQVhfUExBVEZPUk1fRU5BQkxFLCBCX0FYX0FYSURNQV9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQyNTYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM9NzY4PXN0YXRpYyBpbnQgZG1hY19mdW5jX2VuX2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jLTc4Mi1cdFx0XHQgIEJfQkVfRElTUEFUQ0hFUl9FTiB8IEJfQkVfQkJSUFRfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzo3ODM6XHRcdFx0ICBCX0JFX01BQ19TRUNfRU4gfCBCX0JFX0hfQVhJRE1BX0VOIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtNzg0LVx0XHRcdCAgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzo3ODU6XHRcdFx0ICBCX0JFX1BfQVhJRE1BX0VOIHwgQl9CRV9ETEVfREFUQUNQVUlPX0VOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtNzg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtMTQzLSNkZWZpbmUgUl9BWF9QTEFURk9STV9FTkFCTEUgMHgwMDg4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oOjE0NDojZGVmaW5lIEJfQVhfQVhJRE1BX0VOIEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC0xNDUtI2RlZmluZSBCX0FYX0FQQl9XUkFQX0VOIEJJVCgyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNTY5LSNkZWZpbmUgQl9BWF9NQUNfVU5fRU4gQklUKDE1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo1NzA6I2RlZmluZSBCX0FYX0hfQVhJRE1BX0VOIEJJVCgxNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNTcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNDg5MS0jZGVmaW5lIEJfQkVfRE1BQ1JFR19HQ0tFTiBCSVQoMTUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oOjQ4OTI6I2RlZmluZSBCX0JFX0hfQVhJRE1BX0VOIEJJVCgxNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNDg5My0jZGVmaW5lIEJfQkVfRE1BQ19NTE9fRU4gQklUKDExKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODk0LSNkZWZpbmUgQl9CRV9QTFJMU19FTiBCSVQoMTApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oOjQ4OTU6I2RlZmluZSBCX0JFX1BfQVhJRE1BX0VOIEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODk2LSNkZWZpbmUgQl9CRV9ETEVfREFUQUNQVUlPX0VOIEJJVCg4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYz0zMjc9c3RhdGljIGludCBydHc4ODUyY19wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTQzOC1cdFx0XHQgIEJfQVhfRElTUEFUQ0hFUl9FTiB8IEJfQVhfQkJSUFRfRU4gfCBCX0FYX01BQ19TRUNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjQzOTpcdFx0XHQgIEJfQVhfTUFDX1VOX0VOIHwgQl9BWF9IX0FYSURNQV9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNDQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz00NzU9c3RhdGljIGludCBydHc4OTIyYV9wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTYxMC1cdFx0Ql9CRV9ESVNQQVRDSEVSX0VOIHwgQl9CRV9CQlJQVF9FTiB8IEJfQkVfTUFDX1NFQ19FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6NjExOlx0XHRCX0JFX0hfQVhJRE1BX0VOIHwgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjYxMjpcdFx0Ql9CRV9QX0FYSURNQV9FTiB8IEJfQkVfRExFX0RBVEFDUFVJT19FTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy02MTMtXHRpZiAocnR3ZGV2LVx1MDAzZWhjaS50eXBlID09IFJUVzg5X0hDSV9UWVBFX1BDSUUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTUwMT1zdGF0aWMgaW50IHJ0dzg5MjJkX3B3cl9vbl9mdW5jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjI5LVx0XHRcdCAgQl9CRV9ESVNQQVRDSEVSX0VOIHwgQl9CRV9CQlJQVF9FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NjMwOlx0XHRcdCAgQl9CRV9NQUNfU0VDX0VOIHwgQl9CRV9IX0FYSURNQV9FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjMxLVx0XHRcdCAgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYzMjpcdFx0XHQgIEJfQkVfUF9BWElETUFfRU4gfCBCX0JFX0RMRV9EQVRBQ1BVSU9fRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTYzMy1cdFx0XHQgIEJfQkVfTFRSX0NUTF9FTik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4ODQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkRpZ2dpbmcgaW50byB0aGUgTVQ3OTJ4IEFYSURNQSBFbmFibGUgRmxhZyoqCgpBbHJpZ2h0LCB0aGlzIGlzIGludGVyZXN0aW5nLiBJJiMzOTttIGxvb2tpbmcgYXQgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgaXNzdWUuIFRoaXMgZGVmaW5lIGlzIG9ubHkgZGVjbGFyZWQgaW4gYG10NzkyeC5oYCBhbmQgdXNlZCB3aXRoaW4gdGhlIGBwY2kuY2AgZmlsZSB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBUaGF04oCZcyBhIHJlZCBmbGFnLiBXaGVyZSB0aGUgaGVjayBpcyB0aGlzIHRoaW5nIGJlaW5nICpzZXQqPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZmxhZyBpcyBlbmFibGVkIGFzIHRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCBzdWdnZXN0cyBpdCAqc2hvdWxkKiBiZS4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIE1UNzkyNS1zcGVjaWZpYyBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gb2YgdGhlIGZsYWcgYW5kIGl0cyB1c2UgYXJlIGNsZWFyLiBJJiMzOTtsbCBjaGVjayBgbXQ3OTI1L3BjaS5jYCwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIHNlZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24sIGJ1dCBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBgbXQ3OTI1L2luaXQuY2AgYW5kIGBtdDc5MjUvbWFpbi5jYCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBydWxlIG91dCBhbnkgb3RoZXIgcG90ZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIGNvbmRpdGlvbmFsIGVuYWJsaW5nIGxvZ2ljLiBUaGlzIG5lZWRzIHRvIGJlIHJlc29sdmVkIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoaXBfY2FwLipBWElETUFfRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDY9dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTQ5LVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDUyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIE15c3RlcmlvdXMgQ29kZSBQYXRoKioKCk9rYXksIHRoaXMgaXMgc3RyYW5nZS4gSG93IGlzIHRoaXMgcGFydGljdWxhciBjb2RlIGV2ZW4gZXhlY3V0aW5nIGlmIGEgY3J1Y2lhbCBmbGFnIGlzbiYjMzk7dCBkZWZpbmVkIGFueXdoZXJlPyBJdCYjMzk7cyBtYWtpbmcgbWUgc2NyYXRjaCBteSBoZWFkLCBiZWNhdXNlIHRoaXMgZG9lc24mIzM5O3QgbWFrZSBhbnkgc2Vuc2UuCgpNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG1ldGljdWxvdXNseSB0cmFjZSB3aGVyZSB0aGlzIGZsYWcsIGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYCwgKm1pZ2h0KiBiZSBzZXQuIExldCBtZSBzdGFydCBieSBzY2FubmluZyB0aGUgbGlrZWx5IGNhbmRpZGF0ZXM6IGBtdDc5MjUvbWFpbi5jYCBhbmQgYG10NzkyNS9wY2kuY2AuIEJ1dCBJIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLCB0b28uIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGl0IG1pZ2h0IGJlIGRlZmluZWQgaW4gYW4gdW5pbmNsdWRlZCBwYXRjaCwgdG9vLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIHNvbWV0aGluZyBvYnZpb3VzLgoKQWhhISBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBpZiBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAgcmVtYWlucyB1bmRlZmluZWQsIHRoZSBmdW5jdGlvbiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIHdpbGwgc2ltcGx5IHJldHVybiByaWdodCBhd2F5LCBzbyBJJiMzOTttIG5vdCBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBidWcuIFN0aWxsLCB0aGlzIGlzIHVuZXhwZWN0ZWQgYmVoYXZpb3Igc28gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYSBsYXRlbnQgYnVnLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1L3BjaS5jYCBpcyB0aGUgcGxhY2UgdG8gZG8gc28sIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB3aGVyZSB0aGUgaW5pdGlhbCBjaGlwIGNvbmZpZ3VyYXRpb24gbWlnaHQgaGFwcGVuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGlwX2NhcC4qPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTEwNzA9bXQ3OTI1X21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTIzLVx0XHRjYXNlIE1UX05JQ19DQVBfQ0hJUF9DQVA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMTI0Olx0XHRcdGRldi1cdTAwM2VwaHkuY2hpcF9jYXAgPSBsZTY0X3RvX2NwdSgqKF9fbGU2NCAqKXRsdi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMjUtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTMwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBWdWxuZXJhYmxlIENvZGUgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYGRldi0mZ3Q7cGh5LmNoaXBfY2FwYCBnZXRzIGl0cyB2YWx1ZSBmcm9tIHRoZSBmaXJtd2FyZSB0aHJvdWdoIGBNVF9OSUNfQ0FQX0NISVBfQ0FQYCB3aXRoaW4gdGhlIGBtdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eWAgZnVuY3Rpb24uIFNvLCB0aGUgZmlybXdhcmUmIzM5O3MgZXNzZW50aWFsbHkgdGVsbGluZyB0aGUgZHJpdmVyIHdoZXRoZXIgaXQmIzM5O3MgZ290IEFYSURNQV9FTiBzdXBwb3J0LiBJZiB0aGF0IGZpcm13YXJlIHNldHMgdGhlIGJpdCwgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgcmVhY2hhYmxlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4sIGlzIHdoZXRoZXIgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIgY291bGQgaW5mbHVlbmNlIHRoaXMgcHJvY2Vzcz8KClN5emthbGxlciwgYmVpbmcgYSBQQ0kgZnV6emVyLCB3b3JrcyBieSBmdXp6aW5nIHRoZSBQQ0kgZGV2aWNlLCBidXQgaXQgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIGZpcm13YXJlLiBJdCBzZWVtcyB0byB0aHJvdyByYW5kb20gZGF0YSBhdCBNTUlPIHJlYWRzLiBBdCBmaXJzdCwgSSB3YXMgd29ycmllZCB0aGUgZHJpdmVyIG1pZ2h0IGp1c3QgcmVhZCBhIHJhbmRvbSBjYXBhYmlsaXR5IHZhbHVlIGlmIHN5emthbGxlciBtZXNzZWQgd2l0aCBNTUlPLiBIb3dldmVyLCBpdCYjMzk7cyBub3QgYSBkaXJlY3QgcmVhZDogYG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5YCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIE1DVSAoZmlybXdhcmUpIGFuZCB3YWl0cyBmb3IgYSByZXNwb25zZS4KClNvLCBpZiBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZSBNQ1UsIHdlJiMzOTtyZSBsaWtlbHkgbG9va2luZyBhdCBhIHRpbWVvdXQsIG9yIGEgY2FzZSB3aGVyZSBzeXprYWxsZXIgbWlnaHQgaW50ZXJjZXB0IHRoZSBNQ1UmIzM5O3MgcmVzcG9uc2UgKG1heWJlIHZpYSBETUEgb3IgTU1JTykgYW5kIHByb3ZpZGUgaXRzIG93biByYW5kb20gZGF0YSEgVGhlIGNyaXRpY2FsIHBvaW50IGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBtYW5pcHVsYXRlIHRoZSBETUEgb3IgTU1JTyBwYXRocywgYW5kIGl0IGNhbiEgVGhlIE1DVSYjMzk7cyByZXNwb25zZXMgdGVuZCB0byBsYW5kIGluIGEgRE1BIHJpbmcgYnVmZmVyLiBTeXprYWxsZXIgY2FuIGluamVjdCByYW5kb20gZGF0YSB0aGVyZSwgbWVhbmluZyB0aGUgZHJpdmVyIHdvdWxkIHBhcnNlIGEgY29tcGxldGVseSBhcmJpdHJhcnkgTUNVIHJlc3BvbnNlIGFuZCBwb3RlbnRpYWxseSBzZXQgYGNoaXBfY2FwYCB0byBhIHJhbmRvbSB2YWx1ZSwgcG90ZW50aWFsbHkgaW5jbHVkaW5nIGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYC4gVGhpcyBtZWFucyB0aGUgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIGZ1enplZCBlbnZpcm9ubWVudC4KCk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1lZXRzIHRoZSBjcml0ZXJpYSBmb3IgJiMzNDtXb3J0aEZ1enppbmcmIzM0Oy4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyB0aGlzIG9uZSBvZiB0aG9zZT8gSXMgYG10NzkyNWAgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZT8KCk5vLCB0aGlzIGlzIGEgV2ktRmkgZHJpdmVyLCBhbmQgZ2VuZXJhbGx5LCBXaS1GaSBkcml2ZXJzIGFyZW4mIzM5O3QgaW4gdGhhdCAmIzM0O25vdCB3b3J0aCBmdXp6aW5nJiMzNDsgY2F0ZWdvcnkuIEJ1dCBpcyBpdCBzdXBwb3J0ZWQgYnkgc3l6a2FsbGVyPyBJdCAqaXMqIGEgUENJZSBXaS1GaSBkcml2ZXIuIERvZXMgc3l6a2FsbGVyIGZ1enogaXQ/CgpMZXQmIzM5O3Mgc2VlLiBJIGNhbiBjaGVjayBpZiBgQ09ORklHX01UNzkyNUVgIGlzIGVuYWJsZWQgaW4gc3l6a2FsbGVyLiBJIGRvbiYjMzk7dCBoYXZlIHRoZSBjb25maWcgZmlsZSBoYW5keSwgYnV0IEkga25vdyBzeXprYWxsZXIgZnV6emVyIFdpLUZpIGRyaXZlcnMsIGJ1dCBpdCB1c3VhbGx5IGRvZXMgc28gdmlhIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgKnNvZnR3YXJlKiBzaW11bGF0b3IsIGFuZCBkb2VzbiYjMzk7dCBhY3R1YWxseSB1c2UgYG10NzkyNWAuCgpCdXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplci4gRG9lcyB0aGF0IGZ1enplciB0YXJnZXQgYG10NzkyNWA/IFllcywgdGhlIFBDSSBmdXp6ZXIgZ29lcyBhZnRlciBhbGwgUENJIGRyaXZlcnMsIGJ5IG1hdGNoaW5nIFBDSSBJRHMuIEkgc2hvdWxkIGRvdWJsZSBjaGVjaywgbGV0JiMzOTtzIGxvb2sgYXQgYG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9wY2lfZGV2aWNlX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy0xNi1cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDc5MjUpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTk3ND1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbXQ3OTI1X3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05NzUtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6OTc2Olx0LmlkX3RhYmxlXHQ9IG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtOTc3LVx0LnByb2JlXHRcdD0gbXQ3OTI1X3BjaV9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz05ODM9bW9kdWxlX3BjaV9kcml2ZXIobXQ3OTI1X3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtOTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6OTg1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtdDc5MjVfcGNpX2RldmljZV90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05ODYtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDc2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBNVDc5MjUgRHJpdmVyIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAqY2FuKiBkZWZpbml0ZWx5IGludGVyYWN0IHdpdGggdGhpcyBgbXQ3OTI1YCBkcml2ZXIgYW5kIHRyaWdnZXIgc29tZSBmdXp6aW5nLiBCdXQgaGFuZyBvbiwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgVVNCIGdhZGdldHMgb3IgYG1hYzgwMjExX2h3c2ltYC4gSWYgdGhpcyBkcml2ZXIgKnJlcXVpcmVzKiBhIHJlYWwgUENJZSBjYXJkIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLCB0aGF0JiMzOTtzIGEgcHJvYmxlbSwgcmlnaHQ/CgpCdXQgd2FpdCBhIG1pbnV0ZeKApiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAqaXMqIGVmZmVjdGl2ZWx5IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlISBJdCBpbnRlcmNlcHRzIHRob3NlIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8gYWNjZXNzZXMuIFNvLCB3ZSYjMzk7cmUgZ29vZDsgaXQgKmNhbiogYmUgcmVhY2hlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIHVzaW5nIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjaywgdGhlIHByb21wdCBnaXZlcyBleGFtcGxlcyBvZiBzcGVjaWZpYyBkcml2ZXJzLiBBcmUgd2UgdGFsa2luZyBhYm91dCBzb21ldGhpbmcgbGlrZSBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXIsIHdoaWNoIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZT8gRHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBvciBgYW1kZ3B1YD8gSXMgdGhlIGBtdDc5MjVgIGRyaXZlciBldmVuICppbiogdGhhdCBjYXRlZ29yeT8gTm8sIGl0JiMzOTtzIGEgV2ktRmkgZHJpdmVyLCBzbyB0aGF0IGRvZXNuJiMzOTt0IGFwcGx5LgoKQnV0IG5vdyBJIGhhdmUgdG8gYXNrIG15c2VsZiwgZG9lcyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBhY3R1YWxseSBnZXQgKmRlZXAqIGludG8gdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbHM/IERvZXMgaXQgaGl0IHRoZSBpbnRlcmVzdGluZyBiaXRzPyBZZXMsIGl0IGNhbi4KCkxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4gSXQgYWRkcyB0aGVzZSBuZXcgZnVuY3Rpb25zOiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgLCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMsIHdoaWNoIGludm9sdmVzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2Ugc2VuZGluZywgYW5kIG1hcHBpbmcgdGFibGUgc2V0dXAuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYWRkZWQgYXJlOiBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgLCBhbmQgdGhhdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KCk5vdywgd2hlcmUgYXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqY2FsbGVkKj8gTG9va3MgbGlrZSBgbXQ3OTI1ZV9tYWNfcmVzZXRgIGFuZCBgbXQ3OTI1ZV9tY3VfaW5pdGAuIENydWNpYWxseSwgYG10NzkyNWVfbWN1X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIG9wZXJhdGlvbi4gU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIGBtdDc5MjVlX21jdV9pbml0YCBkdXJpbmcgcHJvYmU/IElmIHdlIGNhbiByZWFjaCBwcm9iZSwgd2UgY2FuIHJlYWNoIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZW4gd2UgaGF2ZSBhIHBvdGVudGlhbCBlbnRyeSBwb2ludCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1ZV9tY3VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNTQ9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzU1OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NTg4PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy02MTItXHRcdC5yZXNldCA9IG10NzkyNWVfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NjEzOlx0XHQubWN1X2luaXQgPSBtdDc5MjVlX21jdV9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNjE0LVx0XHQuZHJ2X293biA9IG10NzkyeGVfbWN1X2Rydl9wbWN0cmwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTg9bXQ3OTI1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzoyNzppbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3ODAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBNQ1UgSW5pdGlhbGl6YXRpb24gaW4gbXQ3OTI1ZSoqCgpSaWdodCwgc28gYG10NzkyNWVfbWN1X2luaXRgIGlzIGRlZmluaXRlbHkgYXNzaWduZWQgdG8gdGhlIGAubWN1X2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGlzIGRyaXZlciwgYW5kIEkga25vdyB0aGF0IGAubWN1X2luaXRgIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgZGV2aWNlIHByb2JlIHNlcXVlbmNlLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgcHJlY2lzZWx5ICp3aGVyZSogdGhhdCBgLm1jdV9pbml0YCBmdW5jdGlvbiBnZXRzIGludm9rZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHByb2JlIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGFyb3VuZCBpdCBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciB0aW1pbmcgY29uc2lkZXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTUNVIGluaXRpYWxpemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttY3VfaW5pdFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jPTI3OD1tdDc2MDNfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6MzAzOlx0cmV0ID0gbXQ3NjAzX21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtMzA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYz0xMTY9c3RhdGljIGludCBtdDc2MDNfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21jdS5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21jdS5jOjIxODppbnQgbXQ3NjAzX21jdV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYy0yMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE4Nz12b2lkIG10NzYwM19kbWFfY2xlYW51cChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4ODppbnQgbXQ3NjAzX21jdV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMTg5LXZvaWQgbXQ3NjAzX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzM9bXQ3NjE1X3JhZGFyX3BhdHRlcm5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zOS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTY2PW10NzYxNV9zY3Nfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjcxOlx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Mi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwMjpcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAzLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTkyPW10NzYxNV9kYmRjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTk2Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMjE9bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI1Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNTE9bXQ3NjE1X3Jlc2V0X3Rlc3Rfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNTY6XHRpZiAoIW10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTE4PXN0YXRpYyBzc2l6ZV90IG10NzYxNV90aGVybWFsX3Nob3dfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjI1Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQobWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtMjYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz0xODg9bXQ3NjE1X2NoZWNrX29mZmxvYWRfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6MjIxOmJvb2wgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtMjIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM9Mjc9c3RhdGljIGludCBtdDc2MTVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjM1Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0zNi1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTY4MT1zdGF0aWMgaW50IG10NzY2M19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTY5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE2OTY6aW50IG10NzYxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTY5Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9Mzk1PXZvaWQgbXQ3NjE1X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6Mzk2OmludCBtdDc2MTVfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDozOTc6Ym9vbCBtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zOTgtdm9pZCBtdDc2MTVfbWFjX3NldF9yYXRlcyhzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3NjE1X3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU1MD1pbnQgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU1MTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU1Mi1pbnQgbXQ3NjYzdV9tY3VfcG93ZXJfb24oc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTU0LS8qIHNkaW8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU1NTppbnQgbXQ3NjYzc19tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jPTE1PXN0YXRpYyB2b2lkIG10NzYxNV9wY2lfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoyMTpcdHJldCA9IG10NzYxNV9tY3VfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yMi1cdGZvciAoaSA9IDA7IChyZXQgPT0gLUVBR0FJTikgXHUwMDI2XHUwMDI2IChpIFx1MDAzYyAxMCk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIzLVx0XHRtc2xlZXAoMjAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MjQ6XHRcdHJldCA9IG10NzYxNV9tY3VfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yNS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jPTExMj12b2lkIG10NzYxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoxMTY6XHRtY3VfcnVubmluZyA9IG10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTQyPXN0YXRpYyB2b2lkIG10NzY2M3NfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNDYtXHRkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzYxNV9kZXYsIG1jdV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo0NzpcdGlmIChtdDc2NjNzX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNDgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvX21jdS5jPTk4PXN0YXRpYyBpbnQgbXQ3NjYzc19tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpb19tY3UuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvX21jdS5jOjEzMzppbnQgbXQ3NjYzc19tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpb19tY3UuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTEwMT1zdGF0aWMgdm9pZCBtdDc2NjN1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTA1LVx0ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc2MTVfZGV2LCBtY3Vfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMDY6XHRpZiAobXQ3NjYzdV9tY3VfaW5pdChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTA3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jPTQ1PWludCBtdDc2NjN1X21jdV9wb3dlcl9vbihzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYzo2NTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaD0yMj1lbnVtIG1jdV9jYWxpYnJhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21jdS5oLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6Mzk6aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6NDA6aW50IG10NzZ4MHVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtNDEtc3RhdGljIGlubGluZSBpbnQgbXQ3NngwX2Zpcm13YXJlX3J1bm5pbmcoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM9OTU9c3RhdGljIGludCBtdDc2eDBlX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGJvb2wgcmVzdW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTEwMy1cdG10NzZ4MDJfZG1hX2Rpc2FibGUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jOjEwNDpcdGVyciA9IG10NzZ4MGVfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTEwNS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jPTEzPXN0YXRpYyBpbnQgbXQ3NngwZV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaV9tY3UuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM6MTE2OmludCBtdDc2eDBlX21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTExNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTUxPXN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE2MDpcdGVyciA9IG10NzZ4MHVfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2MS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jPTg1PXN0YXRpYyBpbnQgbXQ3NngwdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTY0OmludCBtdDc2eDB1X21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg9NTg9dm9pZCBtdDc2eDJfcGh5X3NldF90eHBvd2VyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg6NjA6aW50IG10NzZ4Ml9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaC02MS1pbnQgbXQ3NngyX21jdV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgdTggY2hhbm5lbCwgdTggYncsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oPTMzPXZvaWQgbXQ3NngydV9tY3VfY29tcGxldGVfdXJiKHN0cnVjdCB1cmIgKnVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1Lmg6MzQ6aW50IG10NzZ4MnVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTM1LWludCBtdDc2eDJ1X21jdV9md19pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jPTIyMD1pbnQgbXQ3NngyX3Jlc3VtZV9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYy0yMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jOjIzNDpcdHJldHVybiBtdDc2eDJfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjM1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jPTIzNz1zdGF0aWMgaW50IG10NzZ4Ml9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYzoyNjI6XHRyZXQgPSBtdDc2eDJfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjYzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmM9MTU4PW10NzZwY2lfbWN1X3Jlc3RhcnQoc3RydWN0IG10NzZfZGV2ICptZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9tY3UuYy0xNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmM6MTc3OmludCBtdDc2eDJfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jPTEyNj1pbnQgbXQ3NngydV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYzoxNTE6XHRlcnIgPSBtdDc2eDJ1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jLTE1Mi1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jPTIzNT1pbnQgbXQ3NngydV9tY3VfZndfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jOjI0NjppbnQgbXQ3NngydV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYy0yNDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NTg9bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NzM6XHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3Mz1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NzQ6aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3NS1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04ND1zdGF0aWMgaW50IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTEtXHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjkyOlx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTMwNz1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMDg6aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMDktaW50IG10NzkyMXNfd2ZzeXNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzExPWludCBtdDc5MjFzX2luaXRfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMTM6aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMTQtaW50IG10NzkyMXNfbWN1X2Rydl9wbWN0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jPTIyPW10NzkyMV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM6NDE6aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy00Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYz02MT1zdGF0aWMgdTMyIG10NzkyMXNfY2xlYXJfcm0zcl9kcnZfb3duKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM6NzQ6aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTM2PW10NzkyMXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo2NTpzdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTAwPXN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTA0Olx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTA1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNTQ9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzU1OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTg9bXQ3OTI1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzoyNzppbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNz1tdDc5MjV1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NTY6c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yNjM9c3RydWN0IG10NzkyeF9kbWFfbGF5b3V0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTI3Ni0jZGVmaW5lIG10NzkyeF9kZXZfcmVzZXQoZGV2KVx0XHQoKGRldiktXHUwMDNlaGlmX29wcy1cdTAwM2VyZXNldChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyNzc6I2RlZmluZSBtdDc5MnhfbWN1X2luaXQoZGV2KVx0XHQoKGRldiktXHUwMDNlaGlmX29wcy1cdTAwM2VtY3VfaW5pdChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0yNzgtI2RlZmluZSBfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpXHQoKGRldiktXHUwMDNlaGlmX29wcy1cdTAwM2VkcnZfb3duKGRldikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTEyNjQ9c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEyODk6XHRyZXQgPSBtdDc5OTZfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjkwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzEzPWludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6Mzc1OTppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD03MDM9aW50IG10Nzk5Nl9ydW4oc3RydWN0IG10Nzk5Nl9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3MDQ6aW50IG10Nzk5Nl9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTcwNS1pbnQgbXQ3OTk2X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA5NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDc0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIENvZGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggb2YgYG10NzkyNWVfbWN1X2luaXRgLiBJdCBsb29rcyBsaWtlIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIHRocm91Z2ggYSBzZXJpZXMgb2YgbWFjcm9zIGFuZCBmdW5jdGlvbiBjYWxsczogYG10NzkyeF9tY3VfaW5pdGAsIHdoaWNoIGV4cGFuZHMgdG8gYChkZXYpLSZndDtoaWZfb3BzLSZndDttY3VfaW5pdChkZXYpYCwgd2hpY2ggdWx0aW1hdGVseSBsZWFkcyB0byBgbXQ3OTI1ZV9tY3VfaW5pdGAuIFRoaXMgYG10NzkyeF9tY3VfaW5pdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhpbiBgX19tdDc5MjVfaW5pdF9oYXJkd2FyZWAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBtdDc5MjVfaW5pdF9oYXJkd2FyZWAuIEFuZCwgY3J1Y2lhbGx5LCBgbXQ3OTI1X2luaXRfaGFyZHdhcmVgIGlzIGluaXRpYXRlZCB2aWEgYG10NzkyNV9pbml0X3dvcmtgLCB3aGljaCBpcyBzY2hlZHVsZWQgZHVyaW5nIHRoZSBkcml2ZXIgcHJvYmUuIEV4Y2VsbGVudCwgdGhhdCBjb25maXJtcyBpdDsgdGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgaGl0IGR1cmluZyB0aGUgaW5pdGlhbCBwcm9iZSBzZXF1ZW5jZS4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogSXMgdGhpcyBwYXRjaCBtZXJlbHkgY29zbWV0aWMsIG9yIGRvZXMgaXQgaW50cm9kdWNlIHN1YnN0YW50aWFsIGNoYW5nZXM/IEkmIzM5O20gc2VlaW5nIHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgYSBjb21wbGV0ZWx5IG5ldyBmZWF0dXJlIOKAkyBBWEkgRE1BIGNhbGlicmF0aW9uIGNhY2hlIOKAkyB3aXRoIGFsbG9jYXRpb25zLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudC4gSXQmIzM5O3Mgbm90IGp1c3QgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSBvciBhIGNoYW5nZSB0byBsb2dnaW5nLCBvciBjb25zdGFudHMuIE5vLCBpdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBkcml2ZXIgbG9naWMuIFRoZXJlZm9yZSwgdGhpcyB3YXJyYW50cyBmdXp6aW5nOyBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuCgpOZXh0LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBuZWVkIHRoZSBtb3N0IHNjcnV0aW55LiBUaGUgbmV3IGZ1bmN0aW9uYWxpdHkgZGlyZWN0bHkgdG91Y2hlcyB0aGVzZToKKiAgIGBtdDc5MjVfYXhpZG1hX2FsbG9jYAoqICAgYG10NzkyNV9heGlkbWFfZnJlZWAKKiAgIGBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9gCiogICBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYAoqICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2AKKiAgIGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAKClRoZXNlIGFyZW4mIzM5O3Qgc3RhdGljOyB0aGV5IGFyZSBleHBvcnRlZCBvciBoYXZlIGV4dGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBzb3VyY2UgZmlsZXMgcmlnaHQuIEFoLCBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYCBhcmUgaW4gYGNhY2hlZF9jYWwuY2AgYW5kIGV4cG9ydGVkIGluIGBjYWNoZWRfY2FsLmhgLiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIGlzIGluIGBwY2kuY2AgYW5kIGV4cG9ydGVkIGluIGBtdDc5MjUuaGAuCgpMZXQmIzM5O3MgbGlzdCB0aG9zZSBmdW5jdGlvbnMgaW4gRm9jdXNTeW1ib2xzOgoqICAgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YAoqICAgYG10NzkyNV9heGlkbWFfYWxsb2NgCiogICBgbXQ3OTI1X2F4aWRtYV9mcmVlYAoqICAgYG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mb2AKKiAgIGBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxgCiogICBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYAoKRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0LCBpZiBhbnksIHNwZWNpZmljIENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgdGVzdGVkLiBUaGUgZHJpdmVyIGlzIGBtdDc5MjVgLCBzbyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIEkmIzM5O2xsIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRoYXQgYXJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDI5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJZSBGYWN0b3J5IENhbGlicmF0aW9uIEZlYXR1cmUqKgoKT2theSwgc28gdGhpcyBmZWF0dXJlIGlzICpkZWZpbml0ZWx5KiBQQ0llLXNwZWNpZmljLiBUaGUgY29tbWVudCBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGFib3V0IHNldHRpbmcgdXAgYSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGluIGhvc3QgbWVtb3J5LCBhbmQgaXQgZXhwbGljaXRseSBzYXlzICYjMzQ7UENJZSBvbmx5LiYjMzQ7IFRoZSBGaXJtd2FyZSBpcyBhY2Nlc3NpbmcgdGhpcyBjYWNoZSB2aWEgQVhJIERNQSwgd2hpY2ggd291bGRuJiMzOTt0IG1ha2Ugc2Vuc2Ugb24gYSBkaWZmZXJlbnQgYnVzIGFyY2hpdGVjdHVyZS4gUGx1cywgdGhlIGNvZGUgY2hhbmdlcyBjb25maXJtIHRoaXM7IGl0JiMzOTtzIHRvdWNoaW5nIGBtdDc5MjUvcGNpLmNgLCBgbXQ3OTI1L3BjaV9tYWMuY2AsIGFuZCBgbXQ3OTI1L3BjaV9tY3UuY2AuIFRoYXQgbWVhbnMgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uIGlzIHVuZGVuaWFibHkgYE1UNzkyNUVgLiBOb3csIGJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJJiMzOTtkIGJldHRlciBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1UNzkyNUVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIHByZS1yZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIHN0YXJ0IHBpY2tpbmcgdGhpcyBhcGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy05LVx0c2VsZWN0IE1UNzkyNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjExOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz0xOT1jb25maWcgTVQ3OTI1VVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjItXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyMzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE3MzcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIHRoZSBNVDc5MjVFIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBgTVQ3OTI1RWAgZHJpdmVyLCBhcyBJIHNlZSBpdCwgcmVsaWVzIGZ1bmRhbWVudGFsbHkgb24gYE1BQzgwMjExYCBhbmQgYFBDSWAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3csIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCBtYWtlIGEgcXVpY2sgbm90ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwYXJlbnQgY29uZmlndXJhdGlvbnMgSSYjMzk7bSBtaXNzaW5nLiBBbHdheXMgZ29vZCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZS4KCkxvb2tpbmcgYSBiaXQgZGVlcGVyLCBJIHNlZSB0aGF0IGBNVDc2X0NPUkVgIGlzLCBhcyBleHBlY3RlZCwgc2VsZWN0ZWQgYnkgYE1UNzkyNV9DT01NT05gLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRlcm1zIG9mIHRoZSB1c3VhbCBNZWRpYXRlayBkcml2ZXIgYXJjaGl0ZWN0dXJlLgoKQW5kIGZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgb3Igbm90IGBXTEFOYCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYCBhcmUgbmVjZXNzYXJ5LiBMZXQgbWUgcG9wIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIHRvIGNvbmZpcm0gdGhvc2Ugc2VsZWN0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTMtXHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIxNTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2IEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlcnMsIGFuZCBteSBzdGFydGluZyBwb2ludCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIEkgbmVlZCB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IGFueXRoaW5nIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBtb2R1bGUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIG91dGxpbmUgYWxsIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIE1UNzYgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCBmb3IgdGhpcyBraW5kIG9mIGtlcm5lbCBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnM6KiogV2hhdCBmZWF0dXJlcyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSXMgdGhlcmUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgY2hpcHNldHMsIGZyZXF1ZW5jeSBiYW5kcywgb3Igd2lyZWxlc3Mgc3RhbmRhcmRzIGxpa2UgODAyLjExYXg/CiogICAqKkRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGRyaXZlcnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgTVQ3NiBkcml2ZXIgdG8gZnVuY3Rpb24/IFRoaXMgbWlnaHQgaW5jbHVkZSB0aGluZ3MgbGlrZSBmaXJtd2FyZSwgb3RoZXIgbmV0d29ya2luZyBzdWJzeXN0ZW1zLCBvciBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMuCiogICAqKkRlZmF1bHQgdmFsdWVzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnM/IFRoaXMgY2FuIGdpdmUgbWUgYSBxdWljayB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGUgZHJpdmVyIG91dC1vZi10aGUtYm94LgoqICAgKipIZWxwIHRleHQ6KiogSG9wZWZ1bGx5LCB0aGVyZSYjMzk7cyBzb21lIHVzZWZ1bCBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb3B0aW9uIGV4cGxhaW5pbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC4gVGhhdCB3aWxsIHNhdmUgbWUgYSBsb3Qgb2YgdGltZS4KCkVzc2VudGlhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIE1UNzYgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIga2VybmVsIHN5c3RlbS4gTm93LCBsZXQmIzM5O3Mgb3BlbiBpdCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI2NjAKCQkJCQkJCW91dHB1dDogMjYwCgkJCQkJCQl0aG91Z2h0czogNzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc5MjVFIEFYSSBETUEgQ2FsaWJyYXRpb24gQ2FjaGUgRmVhdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgZW5hYmxpbmcgdGhpcyBuZXcgQVhJIERNQSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgYXJlIGVuYWJsZWQuICBgTVQ3OTI1RWAsIGBNQUM4MDIxMWAsIGBXTEFOYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgYXJlIGRlZmluaXRlbHkgbmVjZXNzYXJ5LiBJJiMzOTttIG5vdGluZyB0aGF0IGBQQ0lgIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHg4NiwgYW5kIGBNQUM4MDIxMWAgaXMgc3RhbmRhcmQsIHNvIEkmIzM5O2xsIHRydXN0IHRob3NlIGFyZSBhbHJlYWR5IHRha2VuIGNhcmUgb2YuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgQVBJIGVudHJ5cG9pbnRzLiAgSSYjMzk7dmUgY2hlY2tlZCB0aGUgc3ltYm9sIGxpc3QsIGFuZCBpZGVudGlmaWVkOgoKKiAgIGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAKKiAgIGBtdDc5MjVfYXhpZG1hX2FsbG9jYAoqICAgYG10NzkyNV9heGlkbWFfZnJlZWAKKiAgIGBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9gCiogICBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYAoqICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2AKCkkmIzM5O3ZlIGFsc28gc2VlbiBhIGZldyBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uczogYG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXRgLCBgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZWAsIGBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdGAsIGBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmxgLCBhbmQgYG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0YC4gSG93ZXZlciwgc2luY2UgdGhlIGdvYWwgaXMgdG8gZmF2b3Igbm9uLXN0YXRpYyBBUEkgZW50cnlwb2ludHMgdG8gYWxsb3cgZnV6emluZywgYW5kIHRoZXNlIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBJJiMzOTttIGV4Y2x1ZGluZyB0aGUgc3RhdGljIG9uZXMuCgpJJiMzOTt2ZSB2ZXJpZmllZCB0aGF0IGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAgaXMgaW5kZWVkIG5vbi1zdGF0aWMsIGRlZmluZWQgaW4gYHBjaS5jYCBhbmQgZXhwb3J0ZWQgaW4gYG10NzkyNS5oYCwgYW5kIHRoZSBvdGhlcnMgYXJlIGluIGBjYWNoZWRfY2FsLmNgIGFuZCBleHBvcnRlZCBpbiBgY2FjaGVkX2NhbC5oYC4KCkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIERNQSBtZW1vcnkgbWFuYWdlbWVudCwgTUNVIG1lc3NhZ2luZyBhbmQgc3RhdGUgY29udHJvbCB0byByZWR1Y2UgY29tcGxldGUgY2FsaWJyYXRpb24gYnkgcmV1c2luZyBjYWNoZWQgZGF0YS4gVGhpcyB3aWxsIGFmZmVjdCB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocy4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIG1ha2luZyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplci4KCk9rYXksIEkmIzM5O20gY29tZm9ydGFibGUgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBhbmQgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfYWxsb2MmIzM0OywKICAgICYjMzQ7bXQ3OTI1X2F4aWRtYV9mcmVlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHBhdGhzLCByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgTU1JTy9ETUEgaW50ZXJhY3Rpb25zLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdCYjMzQ7LAogICAgJiMzNDttdDc5MjVfYXhpZG1hX2FsbG9jJiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfZnJlZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8mIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEFYSSBETUEgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBJdCBhZGRzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2luZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQgdG8gYnlwYXNzIGZ1bGwgY2FsaWJyYXRpb24gYnkgcmV1c2luZyBjYWNoZWQgZGF0YS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocywgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIHByb2JpbmcgYW5kIE1NSU8vRE1BIGludGVyYWN0aW9ucywgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaAppbmRleCAwZWRlZGE1NjllOWE1Li5lNDZjYjRhZTM3YTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgKQEAgLTEzNTcsOSAmIzQzOzEzNTcsMTEgQEAgZW51bSB7CiAJTUNVX1VOSV9DTURfQUxMX1NUQV9JTkZPID0gMHg2ZSwKIAlNQ1VfVU5JX0NNRF9BU1NFUlRfRFVNUCA9IDB4NmYsCiAJTUNVX1VOSV9DTURfRVhUX0VFUFJPTV9DVFJMID0gMHg3NCwKJiM0MzsJTUNVX1VOSV9DTURfRkFDVF9DQUwgPSAweDdjLAogCU1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsCiAJTUNVX1VOSV9DTURfTUxEID0gMHg4MiwKIAlNQ1VfVU5JX0NNRF9TRE8gPSAweDg4LAomIzQzOwlNQ1VfVU5JX0NNRF9BWElETUEgPSAweGEyLAogfTsKIAogZW51bSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlCmluZGV4IGY5ZGNjMGJiYTM5M2MuLjMzNTM5MTIxYTE1Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlCkBAIC02LDUgJiM0Mzs2LDUgQEAgb2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm8KIAogbXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ubwogbXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUubwotbXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8KJiM0MzttdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3UubyBjYWNoZWRfY2FsLm8KIG10NzkyNXUteSA6PSB1c2IubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjAzYmQ2ODJmMTIyNGIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMKQEAgLTAsMCAmIzQzOzEsMzA0IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhcgomIzQzOy8qIENvcHlyaWdodCAoQykgMjAyNiBNZWRpYVRlayBJbmMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtYS1tYXBwaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDsuLi9tdDc5MnguaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtjYWNoZWRfY2FsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKQomIzQzO3sKJiM0MzsJdTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTsKJiM0MzsKJiM0MzsJbC0mZ3Q7Y29tbW9uX3N0cmlkZSAgPSBoZHIgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007CiYjNDM7CWwtJmd0O2dyb3VwX3N0cmlkZSAgID0gaGRyICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQOwomIzQzOwlsLSZndDtjaGFubmVsX3N0cmlkZSA9IGhkciAmIzQzOyBNVDc5MjVfRkFDVF9DQUxfTEVOX0NIOwomIzQzOwomIzQzOwlsLSZndDtjb21tb25fb2ZmICA9IDA7CiYjNDM7CWwtJmd0O2dyb3VwX29mZiAgID0gbC0mZ3Q7Y29tbW9uX29mZiAmIzQzOwomIzQzOwkJbC0mZ3Q7Y29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07CiYjNDM7CWwtJmd0O2NoYW5uZWxfb2ZmID0gbC0mZ3Q7Z3JvdXBfb2ZmICYjNDM7CiYjNDM7CQlsLSZndDtncm91cF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOwomIzQzOwlsLSZndDttYXBwaW5nX29mZiA9IGwtJmd0O2NoYW5uZWxfb2ZmICYjNDM7CiYjNDM7CQlsLSZndDtjaGFubmVsX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOwomIzQzOwlsLSZndDt0b3RhbCA9IGwtJmd0O21hcHBpbmdfb2ZmICYjNDM7CiYjNDM7CQlzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IGw7CiYjNDM7CiYjNDM7CW10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoJmFtcDtsKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGwudG90YWw7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiYjNDM7ewomIzQzOwl1MzIgdG90YWxfc2l6ZTsKJiM0MzsJZG1hX2FkZHJfdCBkbWFfYWRkcjsKJiM0MzsJdm9pZCAqdmE7CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O2NhY2hlZF9jYWwudmEpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJdG90YWxfc2l6ZSA9IG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUoKTsKJiM0MzsKJiM0MzsJdmEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LSZndDttdDc2LmRldiwgdG90YWxfc2l6ZSwgJmFtcDtkbWFfYWRkciwKJiM0MzsJCQkJR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghdmEpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJZGV2LSZndDtjYWNoZWRfY2FsLnZhID0gdmE7CiYjNDM7CWRldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciA9IGRtYV9hZGRyOwomIzQzOwlkZXYtJmd0O2NhY2hlZF9jYWwuc2l6ZSA9IHRvdGFsX3NpemU7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJaWYgKCFkZXYtJmd0O2NhY2hlZF9jYWwudmEpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWRtYV9mcmVlX2NvaGVyZW50KGRldi0mZ3Q7bXQ3Ni5kZXYsIGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplLAomIzQzOwkJCSAgZGV2LSZndDtjYWNoZWRfY2FsLnZhLCBkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHIpOwomIzQzOwomIzQzOwltZW1zZXQoJmFtcDtkZXYtJmd0O2NhY2hlZF9jYWwsIDAsIHNpemVvZihkZXYtJmd0O2NhY2hlZF9jYWwpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEgKnJlcTsKJiM0MzsJdTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYtJmd0O2NhY2hlZF9jYWwudmEpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZW1hcF9iYXNlID0gKHUzMikoZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyICZndDsmZ3Q7IDE2KTsKJiM0MzsJcGFfb2Zmc2V0ID0gKHUzMikoZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyICZhbXA7IDB4RkZGRik7CiYjNDM7CiYjNDM7CXJlcS0mZ3Q7cmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApOwomIzQzOwlyZXEtJmd0O3JlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtJmd0O3JlbWFwKSk7CiYjNDM7CXJlcS0mZ3Q7cmVtYXAucmVtYXBfYWRkciA9IGNwdV90b19sZTMyKHJlbWFwX2Jhc2UpOwomIzQzOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMKTsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLSZndDtmYWN0X2NhbCkpOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLmhvc3RfYWRkcl9vZmZzZXQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQpOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLnNpemUgPSBjcHVfdG9fbGUzMihkZXYtJmd0O2NhY2hlZF9jYWwuc2l6ZSk7CiYjNDM7CXJlcS0mZ3Q7ZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgJiM0MzsgZGV2LSZndDtjYWNoZWRfY2FsLnNpemUgLSAxKTsKJiM0MzsKJiM0MzsJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coJmFtcDtkZXYtJmd0O210NzYsIE1DVV9VTklfQ01EKEFYSURNQSksCiYjNDM7CQkJCXJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTsKJiM0MzsKJiM0MzsJa2ZyZWUocmVxKTsKJiM0MzsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkmIzM0O2ZhaWxlZCB0byBzZW5kIEFYSSBETUEgaW5mbzogJWRcbiYjMzQ7LCByZXQpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgYm9vbCBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaW9uX29mZiwKJiM0MzsJCQkJICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsCiYjNDM7CQkJCSAgICAgICB1MzIgKmNhbF9wYXJhbSwgdTMyICp0b3RhbF9idWZfbnVtKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyAqYmk7CiYjNDM7CXUzMiBvZmYgPSByZWdpb25fb2ZmICYjNDM7IHN0cmlkZSAqIGlkeDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYtJmd0O2NhY2hlZF9jYWwudmEgfHwgb2ZmICYjNDM7IHNpemVvZigqYmkpICZndDsgZGV2LSZndDtjYWNoZWRfY2FsLnNpemUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWJpID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8gKikKJiM0MzsJCSgoY29uc3QgdTggKilkZXYtJmd0O2NhY2hlZF9jYWwudmEgJiM0Mzsgb2ZmKTsKJiM0MzsJaWYgKGNhbF9wYXJhbSkKJiM0MzsJCSpjYWxfcGFyYW0gPSBsZTMyX3RvX2NwdShiaS0mZ3Q7Y2FsX3BhcmFtKTsKJiM0MzsJaWYgKHRvdGFsX2J1Zl9udW0pCiYjNDM7CQkqdG90YWxfYnVmX251bSA9IGxlMzJfdG9fY3B1KGJpLSZndDt0b3RhbF9idWZfbnVtKTsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LAomIzQzOwkJCQkJICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKQomIzQzO3sKJiM0MzsJZG1hX2FkZHJfdCBjb21tb25fcGEsIGdyb3VwX3BhLCBjaGFubmVsX3BhLCBtYXBwaW5nX3BhOwomIzQzOwl1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pOwomIzQzOwlkbWFfYWRkcl90IGJhc2UgPSBkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHI7CiYjNDM7CXN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsOwomIzQzOwomIzQzOwltdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KCZhbXA7bCk7CiYjNDM7CiYjNDM7CWNvbW1vbl9wYSAgPSBiYXNlICYjNDM7IGwuY29tbW9uX29mZjsKJiM0MzsJZ3JvdXBfcGEgICA9IGJhc2UgJiM0MzsgbC5ncm91cF9vZmY7CiYjNDM7CWNoYW5uZWxfcGEgPSBiYXNlICYjNDM7IGwuY2hhbm5lbF9vZmY7CiYjNDM7CW1hcHBpbmdfcGEgPSBiYXNlICYjNDM7IGwubWFwcGluZ19vZmY7CiYjNDM7CiYjNDM7CW1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7CiYjNDM7CiYjNDM7CXRibC0mZ3Q7Y29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpOwomIzQzOwl0YmwtJmd0O2NvbW1vbi5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjb21tb25fcGEpKTsKJiM0MzsJdGJsLSZndDtjb21tb24ub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY29tbW9uX3N0cmlkZSk7CiYjNDM7CiYjNDM7CXRibC0mZ3Q7Z3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Z3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Z3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7CiYjNDM7CiYjNDM7CXRibC0mZ3Q7Y2hhbm5lbC5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Y2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Y2hhbm5lbC5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jaGFubmVsX3N0cmlkZSk7CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O2NhY2hlZF9jYWwucmV1c2VkKSB7CiYjNDM7CQl1MzIgaSwgY2FsX3BhcmFtLCB0b3RhbF9idWZfbnVtOwomIzQzOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkmIzQzOyYjNDM7KQomIzQzOwkJCWlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuY29tbW9uX29mZiwKJiM0MzsJCQkJCQkgICAgICAgbC5jb21tb25fc3RyaWRlLCBpLAomIzQzOwkJCQkJCSAgICAgICAmYW1wO2NhbF9wYXJhbSwgTlVMTCkpCiYjNDM7CQkJCXRibC0mZ3Q7Y29tbW9uLmJhbmRbaV0gPSBjYWxfcGFyYW0gJmFtcDsgMHhmZjsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmdyb3VwX29mZiwKJiM0MzsJCQkJCQkgICAgICAgbC5ncm91cF9zdHJpZGUsIGksCiYjNDM7CQkJCQkJICAgICAgICZhbXA7Y2FsX3BhcmFtLCBOVUxMKSkKJiM0MzsJCQkJdGJsLSZndDtncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSAmYW1wOyAweGZmOwomIzQzOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNoYW5uZWxfb2ZmLAomIzQzOwkJCQkJCSAgICAgICBsLmNoYW5uZWxfc3RyaWRlLCBpLAomIzQzOwkJCQkJCSAgICAgICAmYW1wO2NhbF9wYXJhbSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDt0b3RhbF9idWZfbnVtKSkgewomIzQzOwkJCQl0YmwtJmd0O2NoYW5uZWwuY2FsX3BhcmFtW2ldID0KJiM0MzsJCQkJCWNwdV90b19sZTMyKGNhbF9wYXJhbSk7CiYjNDM7CQkJCXRibC0mZ3Q7Y2hhbm5lbC50b3RhbF9idWZfbnVtW2ldID0KJiM0MzsJCQkJCXRvdGFsX2J1Zl9udW0gJmFtcDsgMHhmZjsKJiM0MzsJCQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJdGJsLSZndDtidWZfaW5mb19zaXplID0gY3B1X3RvX2xlMzIoaGRyKTsKJiM0MzsJdGJsLSZndDtwaHlfYWRkcl9oICAgID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7CiYjNDM7CXRibC0mZ3Q7cGh5X2FkZHJfbCAgICA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMobWFwcGluZ19wYSkpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGNhbF90eXBlLAomIzQzOwkJCQkJIHUzMiBzZXFfbnVtLCBib29sIGRvbmUsCiYjNDM7CQkJCQkgY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGRhdGFfbGVuKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEgKnJlcTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKGRhdGFfbGVuICZndDsgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTikKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlyZXEgPSBremFsbG9jKHNpemVvZigqcmVxKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghcmVxKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXJlcS0mZ3Q7c2V0LnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUKTsKJiM0MzsJcmVxLSZndDtzZXQubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS0mZ3Q7c2V0KSk7CiYjNDM7CXJlcS0mZ3Q7c2V0LnNlcV9udW0gPSBjcHVfdG9fbGUzMihzZXFfbnVtKTsKJiM0MzsJcmVxLSZndDtzZXQuYnVmX2RhdGFfbGVuID0gY3B1X3RvX2xlMzIoZGF0YV9sZW4pOwomIzQzOwlyZXEtJmd0O3NldC5jYWxfdHlwZSA9IGNhbF90eXBlOwomIzQzOwlyZXEtJmd0O3NldC5kb25lID0gZG9uZTsKJiM0MzsJaWYgKGRhdGEgJmFtcDsmYW1wOyBkYXRhX2xlbikKJiM0MzsJCW1lbWNweShyZXEtJmd0O3NldC5idWZfZGF0YSwgZGF0YSwgZGF0YV9sZW4pOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciB0aGUgQUNLIG9uIHRoZSBmaW5hbCBjaHVuayBvbmx5OiB0aGUgRlcgYXBwbGllcyB0aGUgd2hvbGUKJiM0MzsJICogdGFibGUgdGhlcmUgKERNQXMgdGhlIGNhY2hlZCBjb21tb24gLyBwb3dlci1vbiBncm91cCBjYWwgZGF0YSBpbiBhbmQKJiM0MzsJICogcHJvZ3JhbXMgdGhlIFBIWSksIHNvIGl0cyBBQ0sgaXMgdGhlIGNvbXBsZXRpb24gcG9pbnQuIFdhaXRpbmcgYWxzbwomIzQzOwkgKiBkcmFpbnMgdGhlIEFDS3MgdGhlIGVhcmxpZXIgY2h1bmtzIGxlZnQgaW4gdGhlIE1DVSByZXNwb25zZSBxdWV1ZSwKJiM0MzsJICogc2luY2UgVU5JIGNvbW1hbmRzIGFsd2F5cyByZXF1ZXN0IG9uZS4KJiM0MzsJICovCiYjNDM7CXJldCA9IG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksCiYjNDM7CQkJCXJlcSwgc2l6ZW9mKCpyZXEpLCBkb25lKTsKJiM0MzsJa2ZyZWUocmVxKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsOwomIzQzOwlfX2xlMzIgY2ZnW01UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX0xFTiAvIHNpemVvZihfX2xlMzIpXSA9IHswfTsKJiM0MzsJdTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXRibCA9IGt6YWxsb2Moc2l6ZW9mKCp0YmwpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCF0YmwpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJbXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsKGRldiwgdGJsKTsKJiM0MzsKJiM0MzsJY2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTsKJiM0MzsJY2ZnWzJdID0gY3B1X3RvX2xlMzIoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgpOwomIzQzOwlyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLAomIzQzOwkJCQkJICAgIHNlcSwgZmFsc2UsIGNmZywgc2l6ZW9mKGNmZykpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJJiMzNDtmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXG4mIzM0OywKJiM0MzsJCQlzZXEsIHJldCk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwlsZWZ0ID0gc2l6ZW9mKCp0YmwpOwomIzQzOwl3aGlsZSAobGVmdCkgewomIzQzOwkJdTMyIGNodW5rID0gbWluX3QodTMyLCBsZWZ0LCBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKTsKJiM0MzsKJiM0MzsJCXJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwKJiM0MzsJCQkJCQkgICAgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsCiYjNDM7CQkJCQkJICAgICYjNDM7JiM0MztzZXEsIGZhbHNlLAomIzQzOwkJCQkJCSAgICAodTggKil0YmwgJiM0Mzsgb2ZmLCBjaHVuayk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJZGV2X2VycihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCQkmIzM0O2ZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXG4mIzM0OywKJiM0MzsJCQkJc2VxLCBvZmYsIGNodW5rLCByZXQpOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJb2ZmICAmIzQzOz0gY2h1bms7CiYjNDM7CQlsZWZ0IC09IGNodW5rOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsCiYjNDM7CQkJCQkgICAgJiM0MzsmIzQzO3NlcSwgdHJ1ZSwgTlVMTCwgMCk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkmIzM0O2ZhY3QtY2FsIG1hcHBpbmcgdGJsIGRvbmUgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXG4mIzM0OywKJiM0MzsJCQlzZXEsIHJldCk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzO291dDoKJiM0MzsJa2ZyZWUodGJsKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1OCBfcnN2WzRdOwomIzQzOwomIzQzOwkJc3RydWN0IHsKJiM0MzsJCQlfX2xlMTYgdGFnOwomIzQzOwkJCV9fbGUxNiBsZW47CiYjNDM7CQkJX19sZTMyIGRhdGE7CiYjNDM7CQl9IF9fcGFja2VkIHVwZGF0ZV9mbGFnOwomIzQzOwl9IHJlcSA9IHsKJiM0MzsJCS51cGRhdGVfZmxhZyA9IHsKJiM0MzsJCQkudGFnICA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcpLAomIzQzOwkJCS5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLAomIzQzOwkJCS5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLAomIzQzOwkJfSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksCiYjNDM7CQkJCSAmYW1wO3JlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNjU3MjUxM2I3NjQ2NgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaApAQCAtMCwwICYjNDM7MSwxNTEgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyICovCiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi8KJiM0MzsKJiM0MzsjaWZuZGVmIF9fQ0FDSEVEX0NBTF9ICiYjNDM7I2RlZmluZSBfX0NBQ0hFRF9DQUxfSAomIzQzOwomIzQzO2VudW0gbXQ3OTI1X2F4aWRtYV9pbmZvX3RhZyB7CiYjNDM7CU1UNzkyNV9BWElETUFfVEFHX1JFTUFQID0gMCwKJiM0MzsJTVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwgPSAxLAomIzQzOwlNVDc5MjVfQVhJRE1BX1RBR19OVU0KJiM0Mzt9OwomIzQzOwomIzQzO2VudW0gbXQ3OTI1X2ZhY3RfY2FsX3RhZyB7CiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UQUdfVFJJR0dFUgk9IDIsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcJPSAzLAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX0dFVAk9IDQsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUCT0gNSwKJiM0Mzt9OwomIzQzOwomIzQzO2VudW0gbXQ3OTI1X2ZhY3RfY2FsX3R5cGUgewomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVFlQRV9DT01NT04JCT0gMCwKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfR1JPVVAJCT0gMSwKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ0hBTk5FTAkJPSAyLAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTAk9IDQsCiYjNDM7fTsKJiM0MzsKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4JCTE0MDAKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX0xFTgkJCTE2CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWAk0CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOCQk0CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTiBcCiYjNDM7CShNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWCAqIE1UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX1UzMl9MRU4pCiYjNDM7CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNCQkyCiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNCQkzNQomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV8yRwkJMTQKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcJCTY4CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHCQkxMDkKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMIFwKJiM0MzsJKE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fMkcgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV81RyAmIzQzOyBcCiYjNDM7CSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHKQomIzQzOwomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT00JCQk2MDAKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQCQkJNDUwMAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSAkJCTI4MDAKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvIHsKJiM0MzsJX19sZTMyIGNhbF90eXBlOwomIzQzOwlfX2xlMzIgY2FsX3BhcmFtOwomIzQzOwlfX2xlMzIgYnVmX3NlcV9udW07CiYjNDM7CV9fbGUzMiB0b3RhbF9idWZfbnVtOwomIzQzOwlfX2xlMzIgYnVmX2RhdGFfbGVuOwomIzQzOwl1OCB2YWxpZDsKJiM0MzsJdTggZG9uZTsKJiM0MzsJdTggcnN2WzJdOwomIzQzOwlfX2xlMzIgYnVmX2NmZ19pbmZvW01UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOXTsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pID09IDg4LAomIzQzOwkgICAgICAmIzM0O2J1Zl9pbmZvIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoODggYnl0ZXMpIG9yIGl0IHJlamVjdHMgdGhlIG1hcHBpbmcgdGFibGUmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIHsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2g7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9sOwomIzQzOwlfX2xlMzIgb2Zmc2V0OwomIzQzOwl1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dOwomIzQzOwl1OCByc3ZbMl07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCB7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9oOwomIzQzOwlfX2xlMzIgcGh5X2FkZHJfbDsKJiM0MzsJX19sZTMyIG9mZnNldDsKJiM0MzsJdTggZ3JvdXBbTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTV07CiYjNDM7CXU4IHJzdjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAgewomIzQzOwlfX2xlMzIgcGh5X2FkZHJfaDsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2w7CiYjNDM7CV9fbGUzMiBvZmZzZXQ7CiYjNDM7CV9fbGUzMiBjYWxfcGFyYW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdOwomIzQzOwl1OCB0b3RhbF9idWZfbnVtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTsKJiM0MzsJdTggcnN2OwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIGdyb3VwOwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7CiYjNDM7CV9fbGUzMiBidWZfaW5mb19zaXplOwomIzQzOwlfX2xlMzIgcGh5X2FkZHJfaDsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2w7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LAomIzQzOwkgICAgICAmIzM0O21hcHBpbmcgdGFibGUgbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICgxMDQ0IGJ5dGVzKSBvciB0aGUgRlcgcGFyc2UgY29ycnVwdHMmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHsKJiM0MzsJdTMyIGNvbW1vbl9vZmYsIGdyb3VwX29mZiwgY2hhbm5lbF9vZmYsIG1hcHBpbmdfb2ZmOwomIzQzOwl1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTsKJiM0MzsJdTMyIHRvdGFsOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEgewomIzQzOwl1OCBfcnN2WzRdOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJX19sZTE2IHRhZzsKJiM0MzsJCV9fbGUxNiBsZW47CiYjNDM7CQlfX2xlMzIgcmVtYXBfYWRkcjsKJiM0MzsJCV9fbGUzMiByZXNlcnZlZDsKJiM0MzsJfSBfX3BhY2tlZCByZW1hcDsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCV9fbGUxNiB0YWc7CiYjNDM7CQlfX2xlMTYgbGVuOwomIzQzOwkJX19sZTMyIGhvc3RfYWRkcl9vZmZzZXQ7CiYjNDM7CQlfX2xlMzIgc2l6ZTsKJiM0MzsJCV9fbGUzMiBib3VuZDsKJiM0MzsJCV9fbGUzMiByZXNlcnZlZDsKJiM0MzsJfSBfX3BhY2tlZCBmYWN0X2NhbDsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxIHsKJiM0MzsJdTggX3Jzdls0XTsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCV9fbGUxNiB0YWc7CiYjNDM7CQlfX2xlMTYgbGVuOwomIzQzOwkJX19sZTMyIGRhdGE7CiYjNDM7CQlfX2xlMzIgc2VxX251bTsKJiM0MzsJCV9fbGUzMiBidWZfZGF0YV9sZW47CiYjNDM7CQl1OCBjYWxfdHlwZTsKJiM0MzsJCXU4IGRvbmU7CiYjNDM7CQl1OCByc3ZbMl07CiYjNDM7CQl1OCBidWZfZGF0YVtNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOXTsKJiM0MzsJfSBfX3BhY2tlZCBzZXQ7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X2F4aWRtYV9hbGxvYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKJiM0MzsKJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fQ0FDSEVEX0NBTF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCmluZGV4IDMyMWU3MzIzNDdmMmYuLjRkNzljMWU2NmU2NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCkBAIC0zNTMsNiAmIzQzOzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCwKIAogaW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwogaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKIHZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpOwogdm9pZCBtdDc5MjhfbWFjX2FkZF90eHNfbXNnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmV2dCk7CiB2b2lkIG10NzkyNV9zZXRfcnVudGltZV9wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKaW5kZXggMDJlZjA5ZGQ3OTdkYS4uNzI0YWJkMmJlNTdjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKQEAgLTksNiAmIzQzOzksNyBAQAogI2luY2x1ZGUgJiMzNDttYWMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O21jdS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cmVnZC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2NhY2hlZF9jYWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL2RtYS5oJiMzNDsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlW10gPSB7CkBAIC0zOCw2ICYjNDM7MzksNjIgQEAgc3RhdGljIGludCBtdDc5MjVlX2luaXRfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAlyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7CiB9CiAKJiM0MzsvKiBTZXQgdXAgdGhlIGZhY3RvcnktY2FsaWJyYXRpb24gY2FjaGUgaW4gaG9zdCBtZW1vcnkuIFBDSWUgb25seTogdGhlIEZXCiYjNDM7ICogcmVhY2hlcyB0aGUgYnVmZmVyIHRocm91Z2ggQVhJIERNQSwgc28gaXQgaGFzIG5vIG1lYW5pbmcgb24gb3RoZXIgYnVzZXMuCiYjNDM7ICogRXZlcnkgZmFpbHVyZSBqdXN0IGxlYXZlcyB0aGUgY2FjaGUgb2ZmLCB3aGljaCBpcyBub3QgZmF0YWwuCiYjNDM7ICovCiYjNDM7dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJaWYgKCEoZGV2LSZndDtwaHkuY2hpcF9jYXAgJmFtcDsgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O2NhY2hlZF9jYWwudmEpIHsKJiM0MzsJCS8qIENhcnJpZWQtb3ZlciBidWZmZXIgc3RpbGwgaG9sZHMgRlctd3JpdHRlbiBjYWwgZGF0YS4gKi8KJiM0MzsJCWRldi0mZ3Q7Y2FjaGVkX2NhbC5yZXVzZWQgPSB0cnVlOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKG10NzkyNV9heGlkbWFfYWxsb2MoZGV2KSkgewomIzQzOwkJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJCSAmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBidWZmZXIgYWxsb2MgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuOwomIzQzOwkJfQomIzQzOwkJLyogRnJlc2hseSBhbGxvY2F0ZWQgYnVmZmVyIGlzIHplcm9lZDogbm8gY2FsIGRhdGEgeWV0LiAqLwomIzQzOwkJZGV2LSZndDtjYWNoZWRfY2FsLnJldXNlZCA9IGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oZGV2KSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogaW5mbyBjbWQgdG8gRlcgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogRW5hYmxlIHRoZSBieXBhc3MtY2FsIGZsb3cgc28gdGhlIEZXIHJldXNlcyBjYWNoZWQgY2FsIGRhdGEKJiM0MzsJICogKGNvbW1vbiAvIHBvd2VyLW9uIGdyb3VwKSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYSBmdWxsIGNhbGlicmF0aW9uOwomIzQzOwkgKiBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIG1hcHBpbmcgdGFibGUgaXMgc2VudC4KJiM0MzsJICovCiYjNDM7CWlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCB0cnVlKSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwoZGV2KSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKGRldiwgZmFsc2UpKSB7CiYjNDM7CQlkZXZfd2FybihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCSAmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJZGV2X2luZm8oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCSAmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXG4mIzM0OywKJiM0MzsJCSAmYW1wO2Rldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LSZndDtjYWNoZWRfY2FsLnNpemUsCiYjNDM7CQkgZGV2LSZndDtjYWNoZWRfY2FsLnJldXNlZCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogewogCWludCBpOwpAQCAtNTgsNiAmIzQzOzExNSw5IEBAIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAogCW10NzkyNV90eF90b2tlbl9wdXQoZGV2KTsKIAlfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpOwomIzQzOwomIzQzOwltdDc5MjVfYXhpZG1hX2ZyZWUoZGV2KTsKJiM0MzsKIAltdDc5MnhfZG1hX2NsZWFudXAoZGV2KTsKIAltdDc5Mnhfd2ZzeXNfcmVzZXQoZGV2KTsKIAlza2JfcXVldWVfcHVyZ2UoJmFtcDtkZXYtJmd0O210NzYubWN1LnJlc19xKTsKQEAgLTU4Nyw3ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCWlzX210NzkyOF9odyA9IChwZGV2LSZndDtkZXZpY2UgPT0gMHg3OTI4IHx8IHBkZXYtJmd0O2RldmljZSA9PSAweDc5MzUpOwogCiAJaWYgKGlzX210NzkyOF9odykKLQkJcmV0ID0gZG1hX3NldF9tYXNrKCZhbXA7cGRldi0mZ3Q7ZGV2LCBETUFfQklUX01BU0soMzQpKTsKJiM0MzsJCXJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoJmFtcDtwZGV2LSZndDtkZXYsIERNQV9CSVRfTUFTSygzNCkpOwogCWVsc2UKIAkJcmV0ID0gZG1hX3NldF9tYXNrKCZhbXA7cGRldi0mZ3Q7ZGV2LCBETUFfQklUX01BU0soMzIpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jCmluZGV4IDg0NzdkMjFhYmM2NjAuLmM5MGYxMjliM2EzNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMKQEAgLTEzNSw2ICYjNDM7MTM1LDggQEAgaW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKJiM0MzsJbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoZGV2KTsKJiM0MzsKIAllcnIgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYwppbmRleCA3MjcwN2VkZGMzZGI2Li4yNThmMzc1M2RiMWZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jCkBAIC00Niw2ICYjNDM7NDYsOCBAQCBpbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCW10NzZfcm13X2ZpZWxkKGRldiwgZGV2LSZndDtwY2llX3JlZy0mZ3Q7cG0sIE1UX1BDSUVfTUFDX1BNX0wwU19ESVMsIDEpOwogCiAJZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpOwomIzQzOwlpZiAoIWVycikKJiM0MzsJCW10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7CiAKIAltdDc2X3F1ZXVlX3R4X2NsZWFudXAoZGV2LCBkZXYtJmd0O210NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAppbmRleCA5ZWZjMjUxY2I3NDVmLi43NDBkNTE3ZWIzOGJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKQEAgLTMzLDYgJiM0MzszMyw3IEBACiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KQogI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfTUxPX0VOIEJJVCg4KQogI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfTUxPX0VNTF9FTiBCSVQoOSkKJiM0MzsjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KQogCiAvKiBOT1RFOiB1c2VkIHRvIG1hcCBtdDc2X3JhdGVzLiBpZHggbWF5IGNoYW5nZSBpZiBmaXJtd2FyZSBleHBhbmRzIHRhYmxlICovCiAjZGVmaW5lIE1UNzkyeF9CQVNJQ19SQVRFU19UQkwJMTQKQEAgLTM0Miw2ICYjNDM7MzQzLDEzIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqbmFuX3ZpZjsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uICppZmFjZV9jb21iaW5hdGlvbnM7CiAJaW50IG5faWZhY2VfY29tYmluYXRpb25zOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdm9pZCAqdmE7CiYjNDM7CQlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwkJdTMyIHNpemU7CiYjNDM7CQlib29sIHJldXNlZDsKJiM0MzsJfSBjYWNoZWRfY2FsOwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDczCgkJCQkJCQlvdXRwdXQ6IDIyMwoJCQkJCQkJdGhvdWdodHM6IDE5NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQ2hlY2s6IE1UNzkyNSBGYWN0b3J5IENhbGlicmF0aW9uIERhdGEgQ2FjaGluZyB3aXRoIEFYSSBETUEqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZlYXR1cmUgZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBhbGxvd2luZyBmb3IgY2FjaGluZyBvZiBmYWN0b3J5IGNhbGlicmF0aW9uIGRhdGEgdXNpbmcgQVhJIERNQS4gTXkgaW5pdGlhbCBmb2N1cywgYXMgYWx3YXlzLCBpcyBvbiBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGUgY29kZSBhbGxvY2F0ZXMgYSBETUEgYnVmZmVyIHVzaW5nIGBkbWFfYWxsb2NfY29oZXJlbnRgLCBzZW5kcyBpdHMgYWRkcmVzcyB0byB0aGUgTUNVLCBhbmQgYWxzbyBzZW5kcyBhIG1hcHBpbmcgdGFibGUuIE15IHByaW1hcnkgY29uY2VybiBpcyBpZiB0aGVyZSBhcmUgYW55IHVuaW5pdGlhbGl6ZWQgZmllbGRzIGJlaW5nIHNlbnQgdG8gdGhlIE1DVSwgb3IgZXZlbiB3b3JzZSwgdXNlciBzcGFjZS4KCkxldCBtZSBnbyB0aHJvdWdoIHRoZSBrZXkgYXJlYXMgc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIGV4YW1pbmVkIGBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9gLiBIZXJlLCBhIGByZXFgIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgLiBHb29kLCBga3phbGxvY2AgZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGlzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gVGhlIGNvZGUgdGhlbiBwb3B1bGF0ZXMgc29tZSBmaWVsZHMgcmVsYXRlZCB0byBETUEgcmVtYXBwaW5nIGFuZCBmYWN0b3J5IGNhbGlicmF0aW9uIGRhdGEuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCBga3phbGxvY2AgdGFrZXMgY2FyZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24uCgpOZXh0LCBgbXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsYCBpcyBleGFtaW5lZC4gVGhlIGNvZGUgaW5pdGlhbGl6ZXMgYHRibGAgc3RydWN0dXJlIGJ5IGNhbGxpbmcgYG1lbXNldGAsIHNvIGl0IGlzIGZ1bGx5IHplcm9lZC4KCkkgYWxzbyBjaGVja2VkIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldGAuIFRoZSBgcmVxYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgIHRoZXJlIHRvbywgd2hpY2ggZW5zdXJlcyB0aGUgYnVmZmVyIGlzIHplcm9lZCwgYW5kIGFueSBkYXRhIGNvcGllZCBpbnRvIGByZXEtJmd0O3NldC5idWZfZGF0YWAgd2lsbCBiZSBwb3B1bGF0ZWQgZnJvbSBkYXRhIHBhc3NlZCBpbiB0aGUgZnVuY3Rpb24uCgpUaGVuLCB0aGVyZSYjMzk7cyBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYC4gVGhpcyBvbmUgaGFkIGEgYml0IG9mIGFuIGludGVyZXN0aW5nIHN0cnVjdHVyZSB3aXRoIGEgcmVzZXJ2ZWQgZmllbGQgYF9yc3ZgLiBCdXQsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgdXNlcyBhbiBpbml0aWFsaXplciwgdGhlIEMgc3RhbmRhcmQgZ3VhcmFudGVlcyB0aGF0IHRoZSB1bmluaXRpYWxpemVkIG1lbWJlcnMgd2lsbCBhbHNvIGJlIHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlZm9yZSwgYF9yc3ZgIHdpbGwgYWxzbyBiZSB6ZXJvLgoKTGV0JiMzOTtzIG5vdCBmb3JnZXQgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAgd2hpY2ggdXNlcyBgX19sZTMyIGNmZ1tdID0gezB9YC4gVGhlIGBjZmdgIHZhcmlhYmxlIGlzIGFsc28gZnVsbHkgemVyb2VkLgoKQXJlIHRoZXJlIGFueSBvdGhlciBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVT8gTm8sIGl0JiMzOTtzIGp1c3QgYHJlcWAgYW5kIGB0YmxgLiBJJiMzOTttIHN5c3RlbWF0aWNhbGx5IGdvaW5nIHRocm91Z2ggdGhlIGNvZGUuCgpUaGVuIEkgY29uc2lkZXJlZCB3aGV0aGVyIHRoZXJlIHdlcmUgYW55IHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkuIEluIGBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdGAsIHRoZXJlJiMzOTtzIGEgcmVhZCBmcm9tIGBkZXYtJmd0O2NhY2hlZF9jYWwudmFgLiBBaCwgYnV0IHRoYXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBieSBgZG1hX2FsbG9jX2NvaGVyZW50YC4gVGhpcyBmdW5jdGlvbiB6ZXJvcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgcmVhZCBvcGVyYXRpb24gd29uJiMzOTt0IGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFNwZWNpZmljYWxseSwgSSBjb25maXJtZWQgdGhhdCBgZG1hX2FsbG9jX2NvaGVyZW50YCB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkuCgpBcmUgdGhlcmUgYW55IHdyaXRlcyB0byB1c2VyIHNwYWNlPyBObywgdGhpcyBpcyBhbGwgaW50ZXJuYWwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBNQ1UuCgpHb2luZyBiYWNrIHRvIHRoZSBgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXRgLCBga3phbGxvY2AgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvIGhlcmUgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IGhhcHBlbnMuCgpJIGRpZCBhIGRvdWJsZSBjaGVjayBvZiB0aGUgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2Agc3RydWN0dXJlIGFnYWluLCB0byBtYWtlIHN1cmUgaXQgaXMgaW5kZWVkIHplcm8gaW5pdGlhbGl6ZWQuCgpGaW5hbGx5LCBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYCBpcyBhbHNvIGNoZWNrZWQgdG8gYmUgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NgLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgYWxsIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHNlbnQgdG8gZWl0aGVyIHRoZSBNQ1Ugb3IsIHZpdGFsbHksIHVzZXIgc3BhY2UuIFRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBLQVNBTiBvciBLTVNBTiBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFkZHJlc3NpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzLCBhbmQgc28gSSB3aWxsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdXNpbmcgQVhJIERNQS4gQWxsIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVIChlLmcuLCBgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCB0aGUgYnlwYXNzIHJlcXVlc3QpIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIHVzaW5nIGBremFsbG9jYCwgYG1lbXNldGAsIG9yIEMgc3RydWN0IGluaXRpYWxpemVycy4gVGhlIERNQSBidWZmZXIgaXRzZWxmIGlzIGFsbG9jYXRlZCB3aXRoIGBkbWFfYWxsb2NfY29oZXJlbnRgLCB3aGljaCBndWFyYW50ZWVzIHplcm8taW5pdGlhbGl6YXRpb24uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkIHRvIHRoZSBNQ1Ugb3IgdXNlciBzcGFjZSwgbm9yIGlzIHRoZXJlIGFueSBjb250cm9sIGZsb3cgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMjozOC4xNTgyOTA3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODU3NTYwMzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdFwiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9hbGxvY1wiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9mcmVlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9cIixcbiAgICBcIm10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibFwiLFxuICAgIFwibXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgcGF0aHMsIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTI6MzguMTU4Mjk4MTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTEyODQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIxMWIxMGNhY2ZjMzJjMTY0ZjhlZGNlZjE1ZTc1MTdkMTAyMGJjNDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcXG5pbmRleCAwZWRlZGE1NjllOWE1Li5lNDZjYjRhZTM3YTk4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXFxuQEAgLTEzNTcsOSArMTM1NywxMSBAQCBlbnVtIHtcXG4gXFx0TUNVX1VOSV9DTURfQUxMX1NUQV9JTkZPID0gMHg2ZSxcXG4gXFx0TUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLFxcbiBcXHRNQ1VfVU5JX0NNRF9FWFRfRUVQUk9NX0NUUkwgPSAweDc0LFxcbitcXHRNQ1VfVU5JX0NNRF9GQUNUX0NBTCA9IDB4N2MsXFxuIFxcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXFxuIFxcdE1DVV9VTklfQ01EX01MRCA9IDB4ODIsXFxuIFxcdE1DVV9VTklfQ01EX1NETyA9IDB4ODgsXFxuK1xcdE1DVV9VTklfQ01EX0FYSURNQSA9IDB4YTIsXFxuIH07XFxuIFxcbiBlbnVtIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxcbmluZGV4IGY5ZGNjMGJiYTM5M2MuLjMzNTM5MTIxYTE1Y2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxcbkBAIC02LDUgKzYsNSBAQCBvYmotJChDT05GSUdfTVQ3OTI1VSkgKz0gbXQ3OTI1dS5vXFxuIFxcbiBtdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuIG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbi1tdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbittdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3UubyBjYWNoZWRfY2FsLm9cXG4gbXQ3OTI1dS15IDo9IHVzYi5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDNiZDY4MmYxMjI0Ylxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmNcXG5AQCAtMCwwICsxLDMwNCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuKy8qIENvcHlyaWdodCAoQykgMjAyNiBNZWRpYVRlayBJbmMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIi4uL210NzkyeC5oXFxcIlxcbisjaW5jbHVkZSBcXFwiY2FjaGVkX2NhbC5oXFxcIlxcbitcXG4rc3RhdGljIHZvaWQgbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgKmwpXFxuK3tcXG4rXFx0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcXG4rXFxuK1xcdGwtXFx1MDAzZWNvbW1vbl9zdHJpZGUgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007XFxuK1xcdGwtXFx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9HUlA7XFxuK1xcdGwtXFx1MDAzZWNoYW5uZWxfc3RyaWRlID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcXG4rXFxuK1xcdGwtXFx1MDAzZWNvbW1vbl9vZmYgID0gMDtcXG4rXFx0bC1cXHUwMDNlZ3JvdXBfb2ZmICAgPSBsLVxcdTAwM2Vjb21tb25fb2ZmICtcXG4rXFx0XFx0bC1cXHUwMDNlY29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07XFxuK1xcdGwtXFx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cXHUwMDNlZ3JvdXBfb2ZmICtcXG4rXFx0XFx0bC1cXHUwMDNlZ3JvdXBfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTtcXG4rXFx0bC1cXHUwMDNlbWFwcGluZ19vZmYgPSBsLVxcdTAwM2VjaGFubmVsX29mZiArXFxuK1xcdFxcdGwtXFx1MDAzZWNoYW5uZWxfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7XFxuK1xcdGwtXFx1MDAzZXRvdGFsID0gbC1cXHUwMDNlbWFwcGluZ19vZmYgK1xcbitcXHRcXHRzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7XFxuK31cXG4rXFxuK3N0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xcbitcXG4rXFx0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcXHUwMDI2bCk7XFxuK1xcbitcXHRyZXR1cm4gbC50b3RhbDtcXG4rfVxcbitcXG4raW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4re1xcbitcXHR1MzIgdG90YWxfc2l6ZTtcXG4rXFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcXG4rXFx0dm9pZCAqdmE7XFxuK1xcbitcXHRpZiAoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnZhKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHRvdGFsX3NpemUgPSBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplKCk7XFxuK1xcbitcXHR2YSA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYtXFx1MDAzZW10NzYuZGV2LCB0b3RhbF9zaXplLCBcXHUwMDI2ZG1hX2FkZHIsXFxuK1xcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXZhKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdGRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xcbitcXHRkZXYtXFx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjtcXG4rXFx0ZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuK3tcXG4rXFx0aWYgKCFkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGRtYV9mcmVlX2NvaGVyZW50KGRldi1cXHUwMDNlbXQ3Ni5kZXYsIGRldi1cXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxcbitcXHRcXHRcXHQgIGRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSwgZGV2LVxcdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyKTtcXG4rXFxuK1xcdG1lbXNldChcXHUwMDI2ZGV2LVxcdTAwM2VjYWNoZWRfY2FsLCAwLCBzaXplb2YoZGV2LVxcdTAwM2VjYWNoZWRfY2FsKSk7XFxuK31cXG4rXFxuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xcbitcXHR1MzIgcmVtYXBfYmFzZSwgcGFfb2Zmc2V0O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKCFkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXJlcSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZW1hcF9iYXNlID0gKHUzMikoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyIFxcdTAwM2VcXHUwMDNlIDE2KTtcXG4rXFx0cGFfb2Zmc2V0ID0gKHUzMikoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyIFxcdTAwMjYgMHhGRkZGKTtcXG4rXFxuK1xcdHJlcS1cXHUwMDNlcmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApO1xcbitcXHRyZXEtXFx1MDAzZXJlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXFx1MDAzZXJlbWFwKSk7XFxuK1xcdHJlcS1cXHUwMDNlcmVtYXAucmVtYXBfYWRkciA9IGNwdV90b19sZTMyKHJlbWFwX2Jhc2UpO1xcbitcXG4rXFx0cmVxLVxcdTAwM2VmYWN0X2NhbC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCk7XFxuK1xcdHJlcS1cXHUwMDNlZmFjdF9jYWwubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS1cXHUwMDNlZmFjdF9jYWwpKTtcXG4rXFx0cmVxLVxcdTAwM2VmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTtcXG4rXFx0cmVxLVxcdTAwM2VmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUpO1xcbitcXHRyZXEtXFx1MDAzZWZhY3RfY2FsLmJvdW5kID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0ICsgZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUgLSAxKTtcXG4rXFxuK1xcdHJldCA9IG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKEFYSURNQSksXFxuK1xcdFxcdFxcdFxcdHJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTtcXG4rXFxuK1xcdGtmcmVlKHJlcSk7XFxuK1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWlsZWQgdG8gc2VuZCBBWEkgRE1BIGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgbXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lvbl9vZmYsXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1MzIgc3RyaWRlLCB1MzIgaWR4LFxcbitcXHRcXHRcXHRcXHQgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcXG4rXFx0dTMyIG9mZiA9IHJlZ2lvbl9vZmYgKyBzdHJpZGUgKiBpZHg7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSB8fCBvZmYgKyBzaXplb2YoKmJpKSBcXHUwMDNlIGRldi1cXHUwMDNlY2FjaGVkX2NhbC5zaXplKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRiaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopXFxuK1xcdFxcdCgoY29uc3QgdTggKilkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xcbitcXHRpZiAoY2FsX3BhcmFtKVxcbitcXHRcXHQqY2FsX3BhcmFtID0gbGUzMl90b19jcHUoYmktXFx1MDAzZWNhbF9wYXJhbSk7XFxuK1xcdGlmICh0b3RhbF9idWZfbnVtKVxcbitcXHRcXHQqdG90YWxfYnVmX251bSA9IGxlMzJfdG9fY3B1KGJpLVxcdTAwM2V0b3RhbF9idWZfbnVtKTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsICp0YmwpXFxuK3tcXG4rXFx0ZG1hX2FkZHJfdCBjb21tb25fcGEsIGdyb3VwX3BhLCBjaGFubmVsX3BhLCBtYXBwaW5nX3BhO1xcbitcXHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xcbitcXHRkbWFfYWRkcl90IGJhc2UgPSBkZXYtXFx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHI7XFxuK1xcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xcbitcXG4rXFx0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcXHUwMDI2bCk7XFxuK1xcbitcXHRjb21tb25fcGEgID0gYmFzZSArIGwuY29tbW9uX29mZjtcXG4rXFx0Z3JvdXBfcGEgICA9IGJhc2UgKyBsLmdyb3VwX29mZjtcXG4rXFx0Y2hhbm5lbF9wYSA9IGJhc2UgKyBsLmNoYW5uZWxfb2ZmO1xcbitcXHRtYXBwaW5nX3BhID0gYmFzZSArIGwubWFwcGluZ19vZmY7XFxuK1xcbitcXHRtZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpO1xcbitcXG4rXFx0dGJsLVxcdTAwM2Vjb21tb24ucGh5X2FkZHJfaCA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoY29tbW9uX3BhKSk7XFxuK1xcdHRibC1cXHUwMDNlY29tbW9uLnBoeV9hZGRyX2wgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xcbitcXHR0YmwtXFx1MDAzZWNvbW1vbi5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jb21tb25fc3RyaWRlKTtcXG4rXFxuK1xcdHRibC1cXHUwMDNlZ3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XFxuK1xcdHRibC1cXHUwMDNlZ3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XFxuK1xcdHRibC1cXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XFxuK1xcbitcXHR0YmwtXFx1MDAzZWNoYW5uZWwucGh5X2FkZHJfaCA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoY2hhbm5lbF9wYSkpO1xcbitcXHR0YmwtXFx1MDAzZWNoYW5uZWwucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY2hhbm5lbF9wYSkpO1xcbitcXHR0YmwtXFx1MDAzZWNoYW5uZWwub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY2hhbm5lbF9zdHJpZGUpO1xcbitcXG4rXFx0aWYgKGRldi1cXHUwMDNlY2FjaGVkX2NhbC5yZXVzZWQpIHtcXG4rXFx0XFx0dTMyIGksIGNhbF9wYXJhbSwgdG90YWxfYnVmX251bTtcXG4rXFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOyBpKyspXFxuK1xcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuY29tbW9uX29mZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZjYWxfcGFyYW0sIE5VTEwpKVxcbitcXHRcXHRcXHRcXHR0YmwtXFx1MDAzZWNvbW1vbi5iYW5kW2ldID0gY2FsX3BhcmFtIFxcdTAwMjYgMHhmZjtcXG4rXFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOyBpKyspXFxuK1xcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbC5ncm91cF9zdHJpZGUsIGksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcXG4rXFx0XFx0XFx0XFx0dGJsLVxcdTAwM2Vncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSBcXHUwMDI2IDB4ZmY7XFxuK1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcXG4rXFx0XFx0XFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuY2hhbm5lbF9zdHJpZGUsIGksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y2FsX3BhcmFtLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnRvdGFsX2J1Zl9udW0pKSB7XFxuK1xcdFxcdFxcdFxcdHRibC1cXHUwMDNlY2hhbm5lbC5jYWxfcGFyYW1baV0gPVxcbitcXHRcXHRcXHRcXHRcXHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xcbitcXHRcXHRcXHRcXHR0YmwtXFx1MDAzZWNoYW5uZWwudG90YWxfYnVmX251bVtpXSA9XFxuK1xcdFxcdFxcdFxcdFxcdHRvdGFsX2J1Zl9udW0gXFx1MDAyNiAweGZmO1xcbitcXHRcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHRibC1cXHUwMDNlYnVmX2luZm9fc2l6ZSA9IGNwdV90b19sZTMyKGhkcik7XFxuK1xcdHRibC1cXHUwMDNlcGh5X2FkZHJfaCAgICA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMobWFwcGluZ19wYSkpO1xcbitcXHR0YmwtXFx1MDAzZXBoeV9hZGRyX2wgICAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0IHUzMiBzZXFfbnVtLCBib29sIGRvbmUsXFxuK1xcdFxcdFxcdFxcdFxcdCBjb25zdCB2b2lkICpkYXRhLCB1MzIgZGF0YV9sZW4pXFxuK3tcXG4rXFx0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEgKnJlcTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmIChkYXRhX2xlbiBcXHUwMDNlIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXJlcSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZXEtXFx1MDAzZXNldC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVCk7XFxuK1xcdHJlcS1cXHUwMDNlc2V0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXFx1MDAzZXNldCkpO1xcbitcXHRyZXEtXFx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XFxuK1xcdHJlcS1cXHUwMDNlc2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTtcXG4rXFx0cmVxLVxcdTAwM2VzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTtcXG4rXFx0cmVxLVxcdTAwM2VzZXQuZG9uZSA9IGRvbmU7XFxuK1xcdGlmIChkYXRhIFxcdTAwMjZcXHUwMDI2IGRhdGFfbGVuKVxcbitcXHRcXHRtZW1jcHkocmVxLVxcdTAwM2VzZXQuYnVmX2RhdGEsIGRhdGEsIGRhdGFfbGVuKTtcXG4rXFxuK1xcdC8qIFdhaXQgZm9yIHRoZSBBQ0sgb24gdGhlIGZpbmFsIGNodW5rIG9ubHk6IHRoZSBGVyBhcHBsaWVzIHRoZSB3aG9sZVxcbitcXHQgKiB0YWJsZSB0aGVyZSAoRE1BcyB0aGUgY2FjaGVkIGNvbW1vbiAvIHBvd2VyLW9uIGdyb3VwIGNhbCBkYXRhIGluIGFuZFxcbitcXHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXFxuK1xcdCAqIGRyYWlucyB0aGUgQUNLcyB0aGUgZWFybGllciBjaHVua3MgbGVmdCBpbiB0aGUgTUNVIHJlc3BvbnNlIHF1ZXVlLFxcbitcXHQgKiBzaW5jZSBVTkkgY29tbWFuZHMgYWx3YXlzIHJlcXVlc3Qgb25lLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxcbitcXHRcXHRcXHRcXHRyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7XFxuK1xcdGtmcmVlKHJlcSk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuK3tcXG4rXFx0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsO1xcbitcXHRfX2xlMzIgY2ZnW01UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX0xFTiAvIHNpemVvZihfX2xlMzIpXSA9IHswfTtcXG4rXFx0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghdGJsKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChkZXYsIHRibCk7XFxuK1xcbitcXHRjZmdbMV0gPSBjcHVfdG9fbGUzMihzaXplb2YoKnRibCkpO1xcbitcXHRjZmdbMl0gPSBjcHVfdG9fbGUzMihNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWCk7XFxuK1xcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRzZXEsIHJldCk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbitcXHRsZWZ0ID0gc2l6ZW9mKCp0YmwpO1xcbitcXHR3aGlsZSAobGVmdCkge1xcbitcXHRcXHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xcbitcXG4rXFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICArK3NlcSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAodTggKil0YmwgKyBvZmYsIGNodW5rKTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJmYWN0LWNhbCBtYXBwaW5nIHRibCBkYXRhIHNlbmQgZmFpbGVkIChzZXE9JXUsIG9mZj0ldSwgY2h1bms9JXUpOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0c2VxLCBvZmYsIGNodW5rLCByZXQpO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0b2ZmICArPSBjaHVuaztcXG4rXFx0XFx0bGVmdCAtPSBjaHVuaztcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICsrc2VxLCB0cnVlLCBOVUxMLCAwKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWN0LWNhbCBtYXBwaW5nIHRibCBkb25lIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0c2VxLCByZXQpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitvdXQ6XFxuK1xcdGtmcmVlKHRibCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxcbit7XFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHU4IF9yc3ZbNF07XFxuK1xcbitcXHRcXHRzdHJ1Y3Qge1xcbitcXHRcXHRcXHRfX2xlMTYgdGFnO1xcbitcXHRcXHRcXHRfX2xlMTYgbGVuO1xcbitcXHRcXHRcXHRfX2xlMzIgZGF0YTtcXG4rXFx0XFx0fSBfX3BhY2tlZCB1cGRhdGVfZmxhZztcXG4rXFx0fSByZXEgPSB7XFxuK1xcdFxcdC51cGRhdGVfZmxhZyA9IHtcXG4rXFx0XFx0XFx0LnRhZyAgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHKSxcXG4rXFx0XFx0XFx0LmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnVwZGF0ZV9mbGFnKSksXFxuK1xcdFxcdFxcdC5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLFxcbitcXHRcXHR9LFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKEZBQ1RfQ0FMKSxcXG4rXFx0XFx0XFx0XFx0IFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCBmYWxzZSk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi42NTcyNTEzYjc2NDY2XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaFxcbkBAIC0wLDAgKzEsMTUxIEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cXG4rXFxuKyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcXG4rI2RlZmluZSBfX0NBQ0hFRF9DQUxfSFxcbitcXG4rZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcXG4rXFx0TVQ3OTI1X0FYSURNQV9UQUdfUkVNQVAgPSAwLFxcbitcXHRNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCA9IDEsXFxuK1xcdE1UNzkyNV9BWElETUFfVEFHX05VTVxcbit9O1xcbitcXG4rZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19UUklHR0VSXFx0PSAyLFxcbitcXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHXFx0PSAzLFxcbitcXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX0dFVFxcdD0gNCxcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9TRVRcXHQ9IDUsXFxuK307XFxuK1xcbitlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHtcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ09NTU9OXFx0XFx0PSAwLFxcbitcXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFxcdFxcdD0gMSxcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ0hBTk5FTFxcdFxcdD0gMixcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkxcXHQ9IDQsXFxuK307XFxuK1xcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5cXHRcXHQxNDAwXFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXFx0XFx0XFx0MTZcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWFxcdDRcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOXFx0XFx0NFxcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXFxcXG4rXFx0KE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYICogTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfVTMyX0xFTilcXG4rXFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVxcdFxcdDJcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXFx0XFx0MzVcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHXFx0XFx0MTRcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXFx0XFx0NjhcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHXFx0XFx0MTA5XFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEwgXFxcXFxcbitcXHQoTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV8yRyArIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcgKyBcXFxcXFxuK1xcdCBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHKVxcbitcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0NPTVxcdFxcdFxcdDYwMFxcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQXFx0XFx0XFx0NDUwMFxcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0hcXHRcXHRcXHQyODAwXFxuK1xcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvIHtcXG4rXFx0X19sZTMyIGNhbF90eXBlO1xcbitcXHRfX2xlMzIgY2FsX3BhcmFtO1xcbitcXHRfX2xlMzIgYnVmX3NlcV9udW07XFxuK1xcdF9fbGUzMiB0b3RhbF9idWZfbnVtO1xcbitcXHRfX2xlMzIgYnVmX2RhdGFfbGVuO1xcbitcXHR1OCB2YWxpZDtcXG4rXFx0dTggZG9uZTtcXG4rXFx0dTggcnN2WzJdO1xcbitcXHRfX2xlMzIgYnVmX2NmZ19pbmZvW01UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOXTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pID09IDg4LFxcbitcXHQgICAgICBcXFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVxcXCIpO1xcbitcXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIHtcXG4rXFx0X19sZTMyIHBoeV9hZGRyX2g7XFxuK1xcdF9fbGUzMiBwaHlfYWRkcl9sO1xcbitcXHRfX2xlMzIgb2Zmc2V0O1xcbitcXHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xcbitcXHR1OCByc3ZbMl07XFxuK30gX19wYWNrZWQ7XFxuK1xcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCB7XFxuK1xcdF9fbGUzMiBwaHlfYWRkcl9oO1xcbitcXHRfX2xlMzIgcGh5X2FkZHJfbDtcXG4rXFx0X19sZTMyIG9mZnNldDtcXG4rXFx0dTggZ3JvdXBbTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTV07XFxuK1xcdHU4IHJzdjtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xcbitcXHRfX2xlMzIgcGh5X2FkZHJfaDtcXG4rXFx0X19sZTMyIHBoeV9hZGRyX2w7XFxuK1xcdF9fbGUzMiBvZmZzZXQ7XFxuK1xcdF9fbGUzMiBjYWxfcGFyYW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdO1xcbitcXHR1OCB0b3RhbF9idWZfbnVtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTtcXG4rXFx0dTggcnN2O1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XFxuK1xcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247XFxuK1xcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIGdyb3VwO1xcbitcXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XFxuK1xcdF9fbGUzMiBidWZfaW5mb19zaXplO1xcbitcXHRfX2xlMzIgcGh5X2FkZHJfaDtcXG4rXFx0X19sZTMyIHBoeV9hZGRyX2w7XFxuK30gX19wYWNrZWQ7XFxuK1xcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxcbitcXHQgICAgICBcXFwibWFwcGluZyB0YWJsZSBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDEwNDQgYnl0ZXMpIG9yIHRoZSBGVyBwYXJzZSBjb3JydXB0c1xcXCIpO1xcbitcXG4rc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcXG4rXFx0dTMyIGNvbW1vbl9vZmYsIGdyb3VwX29mZiwgY2hhbm5lbF9vZmYsIG1hcHBpbmdfb2ZmO1xcbitcXHR1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTtcXG4rXFx0dTMyIHRvdGFsO1xcbit9O1xcbitcXG4rc3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEge1xcbitcXHR1OCBfcnN2WzRdO1xcbitcXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0X19sZTE2IHRhZztcXG4rXFx0XFx0X19sZTE2IGxlbjtcXG4rXFx0XFx0X19sZTMyIHJlbWFwX2FkZHI7XFxuK1xcdFxcdF9fbGUzMiByZXNlcnZlZDtcXG4rXFx0fSBfX3BhY2tlZCByZW1hcDtcXG4rXFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdF9fbGUxNiB0YWc7XFxuK1xcdFxcdF9fbGUxNiBsZW47XFxuK1xcdFxcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xcbitcXHRcXHRfX2xlMzIgc2l6ZTtcXG4rXFx0XFx0X19sZTMyIGJvdW5kO1xcbitcXHRcXHRfX2xlMzIgcmVzZXJ2ZWQ7XFxuK1xcdH0gX19wYWNrZWQgZmFjdF9jYWw7XFxuK30gX19wYWNrZWQ7XFxuK1xcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX3JlcSB7XFxuK1xcdHU4IF9yc3ZbNF07XFxuK1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHRfX2xlMTYgdGFnO1xcbitcXHRcXHRfX2xlMTYgbGVuO1xcbitcXHRcXHRfX2xlMzIgZGF0YTtcXG4rXFx0XFx0X19sZTMyIHNlcV9udW07XFxuK1xcdFxcdF9fbGUzMiBidWZfZGF0YV9sZW47XFxuK1xcdFxcdHU4IGNhbF90eXBlO1xcbitcXHRcXHR1OCBkb25lO1xcbitcXHRcXHR1OCByc3ZbMl07XFxuK1xcdFxcdHU4IGJ1Zl9kYXRhW01UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5dO1xcbitcXHR9IF9fcGFja2VkIHNldDtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbitcXG4rdm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuK1xcbitpbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbitcXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG4rXFxuK2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpO1xcbitcXG4rI2VuZGlmIC8qIF9fQ0FDSEVEX0NBTF9IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5AQCAtMzUzLDYgKzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcXG4gXFxuIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG4gaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuK3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuIHZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpO1xcbiB2b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZXZ0KTtcXG4gdm9pZCBtdDc5MjVfc2V0X3J1bnRpbWVfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5pbmRleCAwMmVmMDlkZDc5N2RhLi43MjRhYmQyYmU1N2M1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5AQCAtOSw2ICs5LDcgQEBcXG4gI2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibWN1LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJyZWdkLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJjYWNoZWRfY2FsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi9kbWEuaFxcXCJcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xcbkBAIC0zOCw2ICszOSw2MiBAQCBzdGF0aWMgaW50IG10NzkyNWVfaW5pdF9yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XFxuIH1cXG4gXFxuKy8qIFNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRldcXG4rICogcmVhY2hlcyB0aGUgYnVmZmVyIHRocm91Z2ggQVhJIERNQSwgc28gaXQgaGFzIG5vIG1lYW5pbmcgb24gb3RoZXIgYnVzZXMuXFxuKyAqIEV2ZXJ5IGZhaWx1cmUganVzdCBsZWF2ZXMgdGhlIGNhY2hlIG9mZiwgd2hpY2ggaXMgbm90IGZhdGFsLlxcbisgKi9cXG4rdm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbit7XFxuK1xcdGlmICghKGRldi1cXHUwMDNlcGh5LmNoaXBfY2FwIFxcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEpIHtcXG4rXFx0XFx0LyogQ2FycmllZC1vdmVyIGJ1ZmZlciBzdGlsbCBob2xkcyBGVy13cml0dGVuIGNhbCBkYXRhLiAqL1xcbitcXHRcXHRkZXYtXFx1MDAzZWNhY2hlZF9jYWwucmV1c2VkID0gdHJ1ZTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKG10NzkyNV9heGlkbWFfYWxsb2MoZGV2KSkge1xcbitcXHRcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBidWZmZXIgYWxsb2MgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbitcXHRcXHR9XFxuK1xcdFxcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cXG4rXFx0XFx0ZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHtcXG4rXFx0XFx0ZGV2X3dhcm4oZGV2LVxcdTAwM2VtdDc2LmRldixcXG4rXFx0XFx0XFx0IFxcXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogaW5mbyBjbWQgdG8gRlcgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHQvKiBFbmFibGUgdGhlIGJ5cGFzcy1jYWwgZmxvdyBzbyB0aGUgRlcgcmV1c2VzIGNhY2hlZCBjYWwgZGF0YVxcbitcXHQgKiAoY29tbW9uIC8gcG93ZXItb24gZ3JvdXApIGluc3RlYWQgb2YgcnVubmluZyBhIGZ1bGwgY2FsaWJyYXRpb247XFxuK1xcdCAqIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgbWFwcGluZyB0YWJsZSBpcyBzZW50LlxcbitcXHQgKi9cXG4rXFx0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIHRydWUpKSB7XFxuK1xcdFxcdGRldl93YXJuKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdCBcXFwiQVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwoZGV2KSkge1xcbitcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBtYXBwaW5nIHRibCBzZW5kIGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIGZhbHNlKSkge1xcbitcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxcXG5cXFwiLFxcbitcXHRcXHQgXFx1MDAyNmRldi1cXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUsXFxuK1xcdFxcdCBkZXYtXFx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiB7XFxuIFxcdGludCBpO1xcbkBAIC01OCw2ICsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcbiBcXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XFxuIFxcdF9fbXQ3OTJ4X21jdV9kcnZfcG1jdHJsKGRldik7XFxuK1xcbitcXHRtdDc5MjVfYXhpZG1hX2ZyZWUoZGV2KTtcXG4rXFxuIFxcdG10NzkyeF9kbWFfY2xlYW51cChkZXYpO1xcbiBcXHRtdDc5Mnhfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LnJlc19xKTtcXG5AQCAtNTg3LDcgKzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0aXNfbXQ3OTI4X2h3ID0gKHBkZXYtXFx1MDAzZWRldmljZSA9PSAweDc5MjggfHwgcGRldi1cXHUwMDNlZGV2aWNlID09IDB4NzkzNSk7XFxuIFxcbiBcXHRpZiAoaXNfbXQ3OTI4X2h3KVxcbi1cXHRcXHRyZXQgPSBkbWFfc2V0X21hc2soXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XFxuK1xcdFxcdHJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXFxuaW5kZXggODQ3N2QyMWFiYzY2MC4uYzkwZjEyOWIzYTM0ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmNcXG5AQCAtMTM1LDYgKzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuK1xcdG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7XFxuK1xcbiBcXHRlcnIgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xcbmluZGV4IDcyNzA3ZWRkYzNkYjYuLjI1OGYzNzUzZGIxZmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jXFxuQEAgLTQ2LDYgKzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gXFx0bXQ3Nl9ybXdfZmllbGQoZGV2LCBkZXYtXFx1MDAzZXBjaWVfcmVnLVxcdTAwM2VwbSwgTVRfUENJRV9NQUNfUE1fTDBTX0RJUywgMSk7XFxuIFxcbiBcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuK1xcdGlmICghZXJyKVxcbitcXHRcXHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xcbiBcXG4gXFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVxcdTAwM2VtdDc2LnFfbWN1W01UX01DVVFfRldETF0sIGZhbHNlKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzQwZDUxN2ViMzhiYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxcbkBAIC0zMyw2ICszMyw3IEBAXFxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX1JFR0RfRU4gQklUKDUpXFxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcXG4gI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfTUxPX0VNTF9FTiBCSVQoOSlcXG4rI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOIEJJVCgxNilcXG4gXFxuIC8qIE5PVEU6IHVzZWQgdG8gbWFwIG10NzZfcmF0ZXMuIGlkeCBtYXkgY2hhbmdlIGlmIGZpcm13YXJlIGV4cGFuZHMgdGFibGUgKi9cXG4gI2RlZmluZSBNVDc5MnhfQkFTSUNfUkFURVNfVEJMXFx0MTRcXG5AQCAtMzQyLDYgKzM0MywxMyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpuYW5fdmlmO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uICppZmFjZV9jb21iaW5hdGlvbnM7XFxuIFxcdGludCBuX2lmYWNlX2NvbWJpbmF0aW9ucztcXG4rXFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHZvaWQgKnZhO1xcbitcXHRcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbitcXHRcXHR1MzIgc2l6ZTtcXG4rXFx0XFx0Ym9vbCByZXVzZWQ7XFxuK1xcdH0gY2FjaGVkX2NhbDtcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEyOjM4Ljc1MDM0MTI4OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNzYwNTMxMzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdFwiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9hbGxvY1wiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9mcmVlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9cIixcbiAgICBcIm10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibFwiLFxuICAgIFwibXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBBWEkgRE1BIGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGUgZmVhdHVyZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIFdpLUZpIGRyaXZlci4gSXQgYWRkcyBETUEgbWVtb3J5IGFsbG9jYXRpb24sIE1DVSBtZXNzYWdpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHRvIGJ5cGFzcyBmdWxsIGNhbGlicmF0aW9uIGJ5IHJldXNpbmcgY2FjaGVkIGRhdGEuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocywgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIHByb2JpbmcgYW5kIE1NSU8vRE1BIGludGVyYWN0aW9ucywgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIncyBQQ0kgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuaW5kZXggMGVkZWRhNTY5ZTlhNS4uZTQ2Y2I0YWUzN2E5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbkBAIC0xMzU3LDkgKzEzNTcsMTEgQEAgZW51bSB7XG4gXHRNQ1VfVU5JX0NNRF9BTExfU1RBX0lORk8gPSAweDZlLFxuIFx0TUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLFxuIFx0TUNVX1VOSV9DTURfRVhUX0VFUFJPTV9DVFJMID0gMHg3NCxcbitcdE1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YyxcbiBcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXG4gXHRNQ1VfVU5JX0NNRF9NTEQgPSAweDgyLFxuIFx0TUNVX1VOSV9DTURfU0RPID0gMHg4OCxcbitcdE1DVV9VTklfQ01EX0FYSURNQSA9IDB4YTIsXG4gfTtcbiBcbiBlbnVtIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5pbmRleCBmOWRjYzBiYmEzOTNjLi4zMzUzOTEyMWExNWNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5AQCAtNiw1ICs2LDUgQEAgb2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xuIFxuIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiBtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cbi1tdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuK210NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vIGNhY2hlZF9jYWwub1xuIG10NzkyNXUteSA6PSB1c2Iub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjAzYmQ2ODJmMTIyNGJcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xuQEAgLTAsMCArMSwzMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXCIuLi9tdDc5MnguaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuK1xuK3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuK3tcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXG4rXHRsLVx1MDAzZWNvbW1vbl9zdHJpZGUgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007XG4rXHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9HUlA7XG4rXHRsLVx1MDAzZWNoYW5uZWxfc3RyaWRlID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcbitcbitcdGwtXHUwMDNlY29tbW9uX29mZiAgPSAwO1xuK1x0bC1cdTAwM2Vncm91cF9vZmYgICA9IGwtXHUwMDNlY29tbW9uX29mZiArXG4rXHRcdGwtXHUwMDNlY29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07XG4rXHRsLVx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cdTAwM2Vncm91cF9vZmYgK1xuK1x0XHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07XG4rXHRsLVx1MDAzZW1hcHBpbmdfb2ZmID0gbC1cdTAwM2VjaGFubmVsX29mZiArXG4rXHRcdGwtXHUwMDNlY2hhbm5lbF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDtcbitcdGwtXHUwMDNldG90YWwgPSBsLVx1MDAzZW1hcHBpbmdfb2ZmICtcbitcdFx0c2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpO1xuK31cbitcbitzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDtcbitcbitcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXHUwMDI2bCk7XG4rXG4rXHRyZXR1cm4gbC50b3RhbDtcbit9XG4rXG4raW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHR1MzIgdG90YWxfc2l6ZTtcbitcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHR2b2lkICp2YTtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR0b3RhbF9zaXplID0gbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSgpO1xuK1xuK1x0dmEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCB0b3RhbF9zaXplLCBcdTAwMjZkbWFfYWRkcixcbitcdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0aWYgKCF2YSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xuK1x0ZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjtcbitcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuK1x0XHRcdCAgZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEsIGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyKTtcbitcbitcdG1lbXNldChcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbCwgMCwgc2l6ZW9mKGRldi1cdTAwM2VjYWNoZWRfY2FsKSk7XG4rfVxuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xuK1x0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoIWRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlbWFwX2Jhc2UgPSAodTMyKShkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciBcdTAwM2VcdTAwM2UgMTYpO1xuK1x0cGFfb2Zmc2V0ID0gKHUzMikoZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgXHUwMDI2IDB4RkZGRik7XG4rXG4rXHRyZXEtXHUwMDNlcmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApO1xuK1x0cmVxLVx1MDAzZXJlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlcmVtYXApKTtcbitcdHJlcS1cdTAwM2VyZW1hcC5yZW1hcF9hZGRyID0gY3B1X3RvX2xlMzIocmVtYXBfYmFzZSk7XG4rXG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwpO1xuK1x0cmVxLVx1MDAzZWZhY3RfY2FsLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlZmFjdF9jYWwpKTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSk7XG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgKyBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplIC0gMSk7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQVhJRE1BKSxcbitcdFx0XHRcdHJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTtcbitcbitcdGtmcmVlKHJlcSk7XG4rXG4rXHRpZiAocmV0KVxuK1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHRcImZhaWxlZCB0byBzZW5kIEFYSSBETUEgaW5mbzogJWRcXG5cIiwgcmV0KTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBib29sIG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpb25fb2ZmLFxuK1x0XHRcdFx0ICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsXG4rXHRcdFx0XHQgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSlcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbitcdHUzMiBvZmYgPSByZWdpb25fb2ZmICsgc3RyaWRlICogaWR4O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSB8fCBvZmYgKyBzaXplb2YoKmJpKSBcdTAwM2UgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0YmkgPSAoY29uc3Qgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyAqKVxuK1x0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xuK1x0aWYgKGNhbF9wYXJhbSlcbitcdFx0KmNhbF9wYXJhbSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZWNhbF9wYXJhbSk7XG4rXHRpZiAodG90YWxfYnVmX251bSlcbitcdFx0KnRvdGFsX2J1Zl9udW0gPSBsZTMyX3RvX2NwdShiaS1cdTAwM2V0b3RhbF9idWZfbnVtKTtcbitcdHJldHVybiB0cnVlO1xuK31cbitcbitzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKVxuK3tcbitcdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXHRkbWFfYWRkcl90IGJhc2UgPSBkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcjtcbitcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuK1xuK1x0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcdTAwMjZsKTtcbitcbitcdGNvbW1vbl9wYSAgPSBiYXNlICsgbC5jb21tb25fb2ZmO1xuK1x0Z3JvdXBfcGEgICA9IGJhc2UgKyBsLmdyb3VwX29mZjtcbitcdGNoYW5uZWxfcGEgPSBiYXNlICsgbC5jaGFubmVsX29mZjtcbitcdG1hcHBpbmdfcGEgPSBiYXNlICsgbC5tYXBwaW5nX29mZjtcbitcbitcdG1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7XG4rXG4rXHR0YmwtXHUwMDNlY29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xuK1x0dGJsLVx1MDAzZWNvbW1vbi5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjb21tb25fcGEpKTtcbitcdHRibC1cdTAwM2Vjb21tb24ub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY29tbW9uX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jaGFubmVsX3N0cmlkZSk7XG4rXG4rXHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKSB7XG4rXHRcdHUzMiBpLCBjYWxfcGFyYW0sIHRvdGFsX2J1Zl9udW07XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vjb21tb24uYmFuZFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsgaSsrKVxuK1x0XHRcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmdyb3VwX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNoYW5uZWxfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmNoYW5uZWxfc3RyaWRlLCBpLFxuK1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnRvdGFsX2J1Zl9udW0pKSB7XG4rXHRcdFx0XHR0YmwtXHUwMDNlY2hhbm5lbC5jYWxfcGFyYW1baV0gPVxuK1x0XHRcdFx0XHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xuK1x0XHRcdFx0dGJsLVx1MDAzZWNoYW5uZWwudG90YWxfYnVmX251bVtpXSA9XG4rXHRcdFx0XHRcdHRvdGFsX2J1Zl9udW0gXHUwMDI2IDB4ZmY7XG4rXHRcdFx0fVxuK1x0fVxuK1xuK1x0dGJsLVx1MDAzZWJ1Zl9pbmZvX3NpemUgPSBjcHVfdG9fbGUzMihoZHIpO1xuK1x0dGJsLVx1MDAzZXBoeV9hZGRyX2ggICAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcbitcdHRibC1cdTAwM2VwaHlfYWRkcl9sICAgID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY2FsX3R5cGUsXG4rXHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuK1x0XHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGRhdGFfbGVuKVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKGRhdGFfbGVuIFx1MDAzZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlcS1cdTAwM2VzZXQudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9TRVQpO1xuK1x0cmVxLVx1MDAzZXNldC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLVx1MDAzZXNldCkpO1xuK1x0cmVxLVx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XG4rXHRyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTtcbitcdHJlcS1cdTAwM2VzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTtcbitcdHJlcS1cdTAwM2VzZXQuZG9uZSA9IGRvbmU7XG4rXHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YV9sZW4pXG4rXHRcdG1lbWNweShyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhLCBkYXRhLCBkYXRhX2xlbik7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgQUNLIG9uIHRoZSBmaW5hbCBjaHVuayBvbmx5OiB0aGUgRlcgYXBwbGllcyB0aGUgd2hvbGVcbitcdCAqIHRhYmxlIHRoZXJlIChETUFzIHRoZSBjYWNoZWQgY29tbW9uIC8gcG93ZXItb24gZ3JvdXAgY2FsIGRhdGEgaW4gYW5kXG4rXHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXG4rXHQgKiBkcmFpbnMgdGhlIEFDS3MgdGhlIGVhcmxpZXIgY2h1bmtzIGxlZnQgaW4gdGhlIE1DVSByZXNwb25zZSBxdWV1ZSxcbitcdCAqIHNpbmNlIFVOSSBjb21tYW5kcyBhbHdheXMgcmVxdWVzdCBvbmUuXG4rXHQgKi9cbitcdHJldCA9IG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksXG4rXHRcdFx0XHRyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7XG4rXHRrZnJlZShyZXEpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDtcbitcdF9fbGUzMiBjZmdbTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOIC8gc2l6ZW9mKF9fbGUzMildID0gezB9O1xuK1x0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXRibClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmwoZGV2LCB0YmwpO1xuK1xuK1x0Y2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTtcbitcdGNmZ1syXSA9IGNwdV90b19sZTMyKE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYKTtcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XCJmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0c2VxLCByZXQpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGxlZnQgPSBzaXplb2YoKnRibCk7XG4rXHR3aGlsZSAobGVmdCkge1xuK1x0XHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xuK1xuK1x0XHRyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsXG4rXHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuK1x0XHRcdFx0XHRcdCAgICArK3NlcSwgZmFsc2UsXG4rXHRcdFx0XHRcdFx0ICAgICh1OCAqKXRibCArIG9mZiwgY2h1bmspO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XHRcImZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0XHRzZXEsIG9mZiwgY2h1bmssIHJldCk7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbitcbitcdFx0b2ZmICArPSBjaHVuaztcbitcdFx0bGVmdCAtPSBjaHVuaztcbitcdH1cbitcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICArK3NlcSwgdHJ1ZSwgTlVMTCwgMCk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFwiZmFjdC1jYWwgbWFwcGluZyB0YmwgZG9uZSBzZW5kIGZhaWxlZCAoc2VxPSV1KTogJWRcXG5cIixcbitcdFx0XHRzZXEsIHJldCk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK291dDpcbitcdGtmcmVlKHRibCk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuK3tcbitcdHN0cnVjdCB7XG4rXHRcdHU4IF9yc3ZbNF07XG4rXG4rXHRcdHN0cnVjdCB7XG4rXHRcdFx0X19sZTE2IHRhZztcbitcdFx0XHRfX2xlMTYgbGVuO1xuK1x0XHRcdF9fbGUzMiBkYXRhO1xuK1x0XHR9IF9fcGFja2VkIHVwZGF0ZV9mbGFnO1xuK1x0fSByZXEgPSB7XG4rXHRcdC51cGRhdGVfZmxhZyA9IHtcbitcdFx0XHQudGFnICA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcpLFxuK1x0XHRcdC5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLFxuK1x0XHRcdC5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLFxuK1x0XHR9LFxuK1x0fTtcbitcbitcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxuK1x0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjU3MjUxM2I3NjQ2NlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5AQCAtMCwwICsxLDE1MSBAQFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cbisvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqL1xuK1xuKyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcbisjZGVmaW5lIF9fQ0FDSEVEX0NBTF9IXG4rXG4rZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcbitcdE1UNzkyNV9BWElETUFfVEFHX1JFTUFQID0gMCxcbitcdE1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMID0gMSxcbitcdE1UNzkyNV9BWElETUFfVEFHX05VTVxuK307XG4rXG4rZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfVFJJR0dFUlx0PSAyLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19VUERBVEVfRkxBR1x0PSAzLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVRcdD0gNCxcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUXHQ9IDUsXG4rfTtcbitcbitlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX0NPTU1PTlx0XHQ9IDAsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFx0XHQ9IDEsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DSEFOTkVMXHRcdD0gMixcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMXHQ9IDQsXG4rfTtcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5cdFx0MTQwMFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXHRcdFx0MTZcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYXHQ0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOXHRcdDRcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXG4rXHQoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVggKiBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOKVxuK1xuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVx0XHQyXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXHRcdDM1XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHXHRcdDE0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXHRcdDY4XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHXHRcdDEwOVxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEwgXFxcbitcdChNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICsgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV81RyArIFxcXG4rXHQgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RylcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NXHRcdFx0NjAwXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUFx0XHRcdDQ1MDBcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0hcdFx0XHQyODAwXG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7XG4rXHRfX2xlMzIgY2FsX3R5cGU7XG4rXHRfX2xlMzIgY2FsX3BhcmFtO1xuK1x0X19sZTMyIGJ1Zl9zZXFfbnVtO1xuK1x0X19sZTMyIHRvdGFsX2J1Zl9udW07XG4rXHRfX2xlMzIgYnVmX2RhdGFfbGVuO1xuK1x0dTggdmFsaWQ7XG4rXHR1OCBkb25lO1xuK1x0dTggcnN2WzJdO1xuK1x0X19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCxcbitcdCAgICAgIFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVwiKTtcbitcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xuK1x0dTggcnN2WzJdO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBncm91cFtNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXTtcbitcdHU4IHJzdjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHRfX2xlMzIgY2FsX3BhcmFtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTtcbitcdHU4IHRvdGFsX2J1Zl9udW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdO1xuK1x0dTggcnN2O1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAgY29tbW9uO1xuK1x0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAgZ3JvdXA7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XG4rXHRfX2xlMzIgYnVmX2luZm9fc2l6ZTtcbitcdF9fbGUzMiBwaHlfYWRkcl9oO1xuK1x0X19sZTMyIHBoeV9hZGRyX2w7XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuK1x0ICAgICAgXCJtYXBwaW5nIHRhYmxlIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoMTA0NCBieXRlcykgb3IgdGhlIEZXIHBhcnNlIGNvcnJ1cHRzXCIpO1xuK1xuK3N0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCB7XG4rXHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4rXHR1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTtcbitcdHUzMiB0b3RhbDtcbit9O1xuK1xuK3N0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxIHtcbitcdHU4IF9yc3ZbNF07XG4rXG4rXHRzdHJ1Y3Qge1xuK1x0XHRfX2xlMTYgdGFnO1xuK1x0XHRfX2xlMTYgbGVuO1xuK1x0XHRfX2xlMzIgcmVtYXBfYWRkcjtcbitcdFx0X19sZTMyIHJlc2VydmVkO1xuK1x0fSBfX3BhY2tlZCByZW1hcDtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xuK1x0XHRfX2xlMzIgc2l6ZTtcbitcdFx0X19sZTMyIGJvdW5kO1xuK1x0XHRfX2xlMzIgcmVzZXJ2ZWQ7XG4rXHR9IF9fcGFja2VkIGZhY3RfY2FsO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEge1xuK1x0dTggX3Jzdls0XTtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBkYXRhO1xuK1x0XHRfX2xlMzIgc2VxX251bTtcbitcdFx0X19sZTMyIGJ1Zl9kYXRhX2xlbjtcbitcdFx0dTggY2FsX3R5cGU7XG4rXHRcdHU4IGRvbmU7XG4rXHRcdHU4IHJzdlsyXTtcbitcdFx0dTggYnVmX2RhdGFbTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTl07XG4rXHR9IF9fcGFja2VkIHNldDtcbit9IF9fcGFja2VkO1xuK1xuK2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKTtcbitcbisjZW5kaWYgLyogX19DQUNIRURfQ0FMX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzUzLDYgKzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbiBcbiBpbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4gaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rdm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbiB2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKTtcbiB2b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZXZ0KTtcbiB2b2lkIG10NzkyNV9zZXRfcnVudGltZV9wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5pbmRleCAwMmVmMDlkZDc5N2RhLi43MjRhYmQyYmU1N2M1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcIm1hYy5oXCJcbiAjaW5jbHVkZSBcIm1jdS5oXCJcbiAjaW5jbHVkZSBcInJlZ2QuaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuICNpbmNsdWRlIFwiLi4vZG1hLmhcIlxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xuQEAgLTM4LDYgKzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XG4gfVxuIFxuKy8qIFNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRldcbisgKiByZWFjaGVzIHRoZSBidWZmZXIgdGhyb3VnaCBBWEkgRE1BLCBzbyBpdCBoYXMgbm8gbWVhbmluZyBvbiBvdGhlciBidXNlcy5cbisgKiBFdmVyeSBmYWlsdXJlIGp1c3QgbGVhdmVzIHRoZSBjYWNoZSBvZmYsIHdoaWNoIGlzIG5vdCBmYXRhbC5cbisgKi9cbit2b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCEoZGV2LVx1MDAzZXBoeS5jaGlwX2NhcCBcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSkge1xuK1x0XHQvKiBDYXJyaWVkLW92ZXIgYnVmZmVyIHN0aWxsIGhvbGRzIEZXLXdyaXR0ZW4gY2FsIGRhdGEuICovXG4rXHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IHRydWU7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAobXQ3OTI1X2F4aWRtYV9hbGxvYyhkZXYpKSB7XG4rXHRcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFx0IFwiQVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ1ZmZlciBhbGxvYyBmYWlsZWRcXG5cIik7XG4rXHRcdFx0cmV0dXJuO1xuK1x0XHR9XG4rXHRcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cbitcdFx0ZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkID0gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBpbmZvIGNtZCB0byBGVyBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdC8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhXG4rXHQgKiAoY29tbW9uIC8gcG93ZXItb24gZ3JvdXApIGluc3RlYWQgb2YgcnVubmluZyBhIGZ1bGwgY2FsaWJyYXRpb247XG4rXHQgKiBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIG1hcHBpbmcgdGFibGUgaXMgc2VudC5cbitcdCAqL1xuK1x0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIHRydWUpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxcblwiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChkZXYpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCBmYWxzZSkpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRkZXZfaW5mbyhkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxuXCIsXG4rXHRcdCBcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSxcbitcdFx0IGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRpbnQgaTtcbkBAIC01OCw2ICsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXG4gXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XG4gXHRfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpO1xuK1xuK1x0bXQ3OTI1X2F4aWRtYV9mcmVlKGRldik7XG4rXG4gXHRtdDc5MnhfZG1hX2NsZWFudXAoZGV2KTtcbiBcdG10NzkyeF93ZnN5c19yZXNldChkZXYpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG5AQCAtNTg3LDcgKzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGlzX210NzkyOF9odyA9IChwZGV2LVx1MDAzZWRldmljZSA9PSAweDc5MjggfHwgcGRldi1cdTAwM2VkZXZpY2UgPT0gMHg3OTM1KTtcbiBcbiBcdGlmIChpc19tdDc5MjhfaHcpXG4tXHRcdHJldCA9IGRtYV9zZXRfbWFzayhcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XG4rXHRcdHJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzNCkpO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuaW5kZXggODQ3N2QyMWFiYzY2MC4uYzkwZjEyOWIzYTM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG5AQCAtMTM1LDYgKzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuK1xuIFx0ZXJyID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbmluZGV4IDcyNzA3ZWRkYzNkYjYuLjI1OGYzNzUzZGIxZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuQEAgLTQ2LDYgKzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdG10NzZfcm13X2ZpZWxkKGRldiwgZGV2LVx1MDAzZXBjaWVfcmVnLVx1MDAzZXBtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTtcbiBcbiBcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbitcdGlmICghZXJyKVxuK1x0XHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuIFxuIFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5pbmRleCA5ZWZjMjUxY2I3NDVmLi43NDBkNTE3ZWIzOGJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTMzLDYgKzMzLDcgQEBcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KVxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuKyNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTiBCSVQoMTYpXG4gXG4gLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYgZmlybXdhcmUgZXhwYW5kcyB0YWJsZSAqL1xuICNkZWZpbmUgTVQ3OTJ4X0JBU0lDX1JBVEVTX1RCTFx0MTRcbkBAIC0zNDIsNiArMzQzLDEzIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpuYW5fdmlmO1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zO1xuIFx0aW50IG5faWZhY2VfY29tYmluYXRpb25zO1xuK1xuK1x0c3RydWN0IHtcbitcdFx0dm9pZCAqdmE7XG4rXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHRcdHUzMiBzaXplO1xuK1x0XHRib29sIHJldXNlZDtcbitcdH0gY2FjaGVkX2NhbDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMjozOC43NTAzNDI3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDE3OTk2ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBNZWRpYVRlayBNVDc5MjUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciwgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIgZmFtaWx5LiBJdCBpbnRyb2R1Y2VzIFwiQVhJIERNQSBjYWwgY2FjaGVcIiDigJMgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSDigJMgc3BlY2lmaWNhbGx5IGZvciBQQ0llIGRldmljZXMuIFRoZSBwYXRjaCBpbmNsdWRlcyBuZXcgZmlsZXMgKGBjYWNoZWRfY2FsLmNgLCBgY2FjaGVkX2NhbC5oYCkgYW5kIG1vZGlmaWVzIHNldmVyYWwgZXhpc3Rpbmcgb25lcyAoYHBjaS5jYCwgYHBjaV9tYWMuY2AsIGBwY2lfbWN1LmNgKS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGlzIGZ1enphYmxlLiBUaGUgcHJvbXB0IGdpdmVzIHNvbWUgZXhjbHVzaW9uIGNyaXRlcmlhLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgaGFyZHdhcmUuIFJpZ2h0LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT9cblxuYG10NzkyNWAgaXMgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIuIFdoaWxlIFdpLUZpIGRyaXZlcnMgKmdlbmVyYWxseSogcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSwgc29tZXRpbWVzIHRoZXkgKmNhbiogYmUgZnV6emVkIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUgc2ltdWxhdG9yLiBIb3dldmVyLCB0aGlzIGlzIGZvciBhICpQQ0llKiBkZXZpY2UsIGFuZCBgbXQ3OTI1YCBpdHNlbGYgcmVxdWlyZXMgYSBwaHlzaWNhbCBNVDc5MjUgZGV2aWNlIChQQ0llIG9yIFVTQikuIFNvLCBgbWFjODAyMTFfaHdzaW1gIGlzbid0IHRoZSBzb2x1dGlvbiBoZXJlLlxuXG5Ib3dldmVyLCBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIFBDSSBlbXVsYXRpb24gY2FwYWJpbGl0aWVzLiBJdCBoYXMgdmhjaSBmb3IgVVNCLCBidXQgZG9lcyBpdCBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIGZvciBQQ0k/IEFjdHVhbGx5LCB5ZXMsIFN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoZSBxdWVzdGlvbiBpczogZG9lcyBzdGFuZGFyZCBRRU1VIGVtdWxhdGUgdGhlIE1UNzkyNT8gTm8uIEJ1dCwgU3l6a2FsbGVyIGZ1enplcyBQQ0kgZGV2aWNlcyBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuXG5cbkRvZXMgU3l6a2FsbGVyIGZ1enogYG10NzkyNWA/IExldCdzIGNoZWNrISBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBTeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciBpdC4gQW5kIHdhaXQsIGdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgaXQgbGlzdHMgc3BlY2lmaWMgZXhjbHVzaW9uczogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIFdpLUZpIGRyaXZlcnMgYXJlbid0ICpleHBsaWNpdGx5KiBpbiB0aGF0IGxpc3QsIGJ1dCB0aGV5ICphcmUqIFBDSWUgZGV2aWNlcy5cblxuSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGV0aGVyIFN5emthbGxlciBoYXMgc3VmZmljaWVudCBQQ0kgZnV6emluZyBzdXBwb3J0IGZvciB0aGUgYG10NzZgIGZhbWlseS4gVGhhdCB3aWxsIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaGVyZS4gSSBtdXN0IHJlc2VhcmNoIHRoZSBTeXprYWxsZXIgY292ZXJhZ2UgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ3NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEyOjQ4LjE2ODM0Mjc5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA5NDcyNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0Mjk5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2JsdWV0b290aC9idG10ay5oLTktI2RlZmluZSBGSVJNV0FSRV9NVDc5NjFcXHRcXHRcXFwibWVkaWF0ZWsvQlRfUkFNX0NPREVfTVQ3OTYxXzFfMl9oZHIuYmluXFxcIlxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrLmg6MTA6I2RlZmluZSBGSVJNV0FSRV9NVDc5MjVcXHRcXHRcXFwibWVkaWF0ZWsvbXQ3OTI1L0JUX1JBTV9DT0RFX01UNzkyNV8xXzFfaGRyLmJpblxcXCJcXG5kcml2ZXJzL2JsdWV0b290aC9idG10ay5oLTExLSNkZWZpbmUgRklSTVdBUkVfTVQ3OTI3XFx0XFx0XFxcIm1lZGlhdGVrL210NzkyNy9CVF9SQU1fQ09ERV9NVDY2MzlfMl8xX2hkci5iaW5cXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NTA9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo1MTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTUxPW9iai0kKENPTkZJR19NVDc5OTZFKSArPSBtdDc5OTYvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE4MD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjMyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE4NTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTI1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz01ND1pbnQgbXQ3Nl9jb25uYWNfbWN1X2luaXRfZG93bmxvYWQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLCB1MzIgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy02OS1cXHQgICAgKGlzX2Nvbm5hYzIoZGV2KSBcXHUwMDI2XFx1MDAyNiBhZGRyID09IDB4OTAwMDAwKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6NzA6XFx0ICAgICgoaXNfbXQ3OTI1KGRldikgfHwgaXNfbXQ3OTI3KGRldikpIFxcdTAwMjZcXHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjgwMCkpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy03MS1cXHQgICAgKGlzX210NzkyOChkZXYpIFxcdTAwMjZcXHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjAwMCkpIHx8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICs9IG10NzkyNS1jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyNUUpICs9IG10NzkyNWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6ODptdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo5Om10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vIGNhY2hlZF9jYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjg6c3RhdGljIHZvaWQgbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgKmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMDpcXHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yMy1cXHRsLVxcdTAwM2V0b3RhbCA9IGwtXFx1MDAzZW1hcHBpbmdfb2ZmICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjQ6XFx0XFx0c2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNzpzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyOTpcXHRzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjMxOlxcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXFx1MDAyNmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MzY6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzo0NTpcXHR0b3RhbF9zaXplID0gbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy01OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NTk6dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzo3MDppbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTcxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NzI6XFx0c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEgKnJlcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNzMtXFx0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEwODpzdGF0aWMgYm9vbCBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaW9uX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTA5LVxcdFxcdFxcdFxcdCAgICAgICB1MzIgc3RyaWRlLCB1MzIgaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTExMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjExMjpcXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTEzLVxcdHUzMiBvZmYgPSByZWdpb25fb2ZmICsgc3RyaWRlICogaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTE4OlxcdGJpID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTE5LVxcdFxcdCgoY29uc3QgdTggKilkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTI3OnN0YXRpYyB2b2lkIG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMjkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMzAtXFx0ZG1hX2FkZHJfdCBjb21tb25fcGEsIGdyb3VwX3BhLCBjaGFubmVsX3BhLCBtYXBwaW5nX3BhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMzE6XFx0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTMyLVxcdGRtYV9hZGRyX3QgYmFzZSA9IGRldi1cXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTMzOlxcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEzNTpcXHRtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KFxcdTAwMjZsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE1OS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTTsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxNjA6XFx0XFx0XFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jb21tb25fb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjUtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTY2OlxcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuZ3JvdXBfc3RyaWRlLCBpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE3MS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTcyOlxcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuY2hhbm5lbF9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE3My1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbC5jaGFubmVsX3N0cmlkZSwgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjE4ODpzdGF0aWMgaW50IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGNhbF90eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xODktXFx0XFx0XFx0XFx0XFx0IHUzMiBzZXFfbnVtLCBib29sIGRvbmUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTkyOlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE5My1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjI0OmludCBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjI2OlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI3LVxcdF9fbGUzMiBjZmdbTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOIC8gc2l6ZW9mKF9fbGUzMildID0gezB9O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjM4OlxcdG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChkZXYsIHRibCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNDEtXFx0Y2ZnWzJdID0gY3B1X3RvX2xlMzIoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNDI6XFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjQzLVxcdFxcdFxcdFxcdFxcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI1NTpcXHRcXHRyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI1Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNzA6XFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjcxLVxcdFxcdFxcdFxcdFxcdCAgICArK3NlcSwgdHJ1ZSwgTlVMTCwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyODQ6aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo3OmVudW0gbXQ3OTI1X2F4aWRtYV9pbmZvX3RhZyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTgtXFx0TVQ3OTI1X0FYSURNQV9UQUdfUkVNQVAgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxMzplbnVtIG10NzkyNV9mYWN0X2NhbF90YWcge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNC1cXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVJcXHQ9IDIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjIwOmVudW0gbXQ3OTI1X2ZhY3RfY2FsX3R5cGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0yMS1cXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DT01NT05cXHRcXHQ9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjQ3OnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC00OC1cXHRfX2xlMzIgY2FsX3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjU5OnN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pID09IDg4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02MC1cXHQgICAgICBcXFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6NjI6c3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNjMtXFx0X19sZTMyIHBoeV9hZGRyX2g7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjcwOnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNzEtXFx0X19sZTMyIHBoeV9hZGRyX2g7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjc4OnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03OS1cXHRfX2xlMzIgcGh5X2FkZHJfaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6ODc6c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjg4OlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjg5OlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIGdyb3VwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5MDpcXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTkxLVxcdF9fbGUzMiBidWZfaW5mb19zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5NjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05Ny1cXHQgICAgICBcXFwibWFwcGluZyB0YWJsZSBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDEwNDQgYnl0ZXMpIG9yIHRoZSBGVyBwYXJzZSBjb3JydXB0c1xcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6OTk6c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTAwLVxcdHUzMiBjb21tb25fb2ZmLCBncm91cF9vZmYsIGNoYW5uZWxfb2ZmLCBtYXBwaW5nX29mZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjEwNTpzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEwNi1cXHR1OCBfcnN2WzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MTI1OnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTI2LVxcdHU4IF9yc3ZbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxNDE6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTE0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MTQzOnZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0NTppbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0NzppbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0OTppbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz03PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cXHRkZXYtXFx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjQ6XFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy03MC1cXHRcXHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODQtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1OlxcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHRtYWMpXFxcIixcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVxcdFxcdFxcdCAgICAgIHR4cHdyLVxcdTAwM2VyYXRlLFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz05MT1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVxcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTg6bXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcXHRzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cXHR1OCBiYW5kX2lkeCA9IGRldi1cXHUwMDNlbXBoeS5iYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlxcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzOC1cXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTMtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3MzMlxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTc0OlxcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4MjptdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LVxcdHBtLVxcdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA2OlxcdG10NzkyNV9zZXRfcnVudGltZV9wbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBwbSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIxNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjc6bXQ3OTI1X2RlZXBfc2xlZXBfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQyLVxcdHBtLVxcdTAwM2Vkc19lbmFibGUgPSBlbmFibGUgXFx1MDAyNlxcdTAwMjYgIW1vbml0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI0MzpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgcG0tXFx1MDAzZWRzX2VuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0NC1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjUxOm10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XFx0XFx0XFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5OlxcdFxcdHJldCA9IG10NzkyNV9tY3VfY2hpcF9jb25maWcoZGV2LCBcXFwiYXNzZXJ0XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4MC1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNC1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInR4cG93ZXJfc2t1XFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XFx0XFx0XFx0XFx0ICAgIG10NzkyNV90eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eF9zdGF0c1xcXCIsIDA0MDAsIGRpciwgZGV2LCBcXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMC0jaW5jbHVkZSBcXFwicmVnZC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjVfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM3OnN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfUk8odGVtcDFfaW5wdXQsIG10NzkyNV90aGVybWFsX3RlbXAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyNV9od21vbl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00MC1cXHRcXHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjVfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NTQ6XFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTI1XyVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTUtXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkyNV9od21vbl9ncm91cHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02MS1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cXHRcXHQgICAgICAgRklFTERfUFJFUChNVF9UWF9SQVRFX0lEWCwgcmF0ZSBcXHUwMDI2IEdFTk1BU0soNywgMCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3NDpcXHRcXHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3ODppbnQgbXQ3OTI1X21hY19pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcXHRcXHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXFx0XFx0XFx0XFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjkyOlxcdG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDA6c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2OlxcdHJldCA9IG10NzkyNV9tYWNfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMjAtXFx0aWYgKGlzX210NzkyNyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZGJkYyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEzMzpzdGF0aWMgaW50IG10NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDU6XFx0XFx0cmV0ID0gX19tdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDYtXFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9uYW5fY2FwKHN0cnVjdCBtdDc2X2RldiAqbWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5MDpzdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcXHRyZXQgPSBtdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDAtXFx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcXHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDItXFx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA0OlxcdHJldCA9IG10NzkyNV9pbml0X21sb19jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XFx0ZGV2LVxcdTAwM2VtdDc2LmluaXRfd2lwaHkgPSBtdDc5MjVfaW5pdF9uYW5fY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XFx0cmV0ID0gbXQ3OTI1X2luaXRfZGVidWdmcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1OlxcdHJldCA9IG10NzkyNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzMTpcXHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MDpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVxcdTAwM2VwbS5kc19lbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MzppbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYxLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjYzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWNvcmVkdW1wLndvcmssIG10NzkyNV9jb3JlZHVtcF93b3JrKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTI6NTAuNzc3ODIxMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTkxMzI5MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIE1UNzkyNSBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtdDc5MjVgIGRyaXZlciwgd2hpY2ggaXMgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIHdpdGggYm90aCBQQ0kgYW5kIFVTQiB2YXJpYW50cy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgc3RhbmRhcmQgUUVNVSBlbXVsYXRpbmcgdGhpcyBzcGVjaWZpYyBkZXZpY2U/IE5vLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwOiBEb2VzIHN5emthbGxlciBldmVuIGZ1enogaXQ/IEkgbmVlZCB0byBjaGVjayBmb3Igc3l6a2FsbGVyIGRlc2NyaXB0aW9ucy4gQnV0IHdhaXQsIHRoaXMgcHJvbXB0IGdpdmVzIGEgY3J1Y2lhbCBsaW1pdGF0aW9uOiBJIGNhbid0IGRpcmVjdGx5IHNlYXJjaCBmb3IgYHN5emxhbmdgIGRlc2NyaXB0aW9ucyBvciBleHByZXNzaW9ucyBzdGFydGluZyB3aXRoIGBzeXpfYCwgYmVjYXVzZSB0aG9zZSBhcmUgcHNldWRvLXN5c2NhbGxzIHNwZWNpZmljIHRvIHN5emthbGxlciwgbm90IHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gSSBkb24ndCBoYXZlIHRoZSBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgdG9vbHMsIHNvIEknbSBhIGJpdCBzdHVjay5cblxuTGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgcG9pbnRzIG91dCB0aGF0IGNvZGUgaW4gc3BlY2lmaWMgZHJpdmVycyDigJMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMg4oCTIGlzIHByb2JsZW1hdGljIGJlY2F1c2UgdGhleSBuZWVkIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIHdoaWNoIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFN5emthbGxlciBnZW5lcmFsbHkgZnV6emVzIFdpLUZpIGRyaXZlcnMgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGUgYG10NzkyNWAgaXMgYSBoYXJkd2FyZSBkcml2ZXIuIFRoYXQgbWFrZXMgbWUgdGhpbms6IFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGluamVjdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuIEJ1dCBkb2VzIHRoYXQgYXBwbHkgaGVyZT8gVGhlIHByb21wdCBtZW50aW9ucyB0aG9zZSBwcm9ibGVtYXRpYyBkcml2ZXJzIGFnYWluLi4uIElzIGBtdDc5MjVgIGluIHRoYXQgY2F0ZWdvcnk/IEl0ICppcyogYSBXaS1GaSBkcml2ZXIsIHdoaWNoIG1pZ2h0IGJlIHZlbmRvci1zcGVjaWZpYy4uLlxuXG5BbHNvLCB0aGUgcHJvbXB0IG1lbnRpb25zIG90aGVyIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIGBtdDc5MjVgIHJlYWNoYWJsZSBpbiBRRU1VPyBJZiB0aGVyZSdzIG5vIFFFTVUgZW11bGF0aW9uIGZvciB0aGlzLCBhbmQgaXQgaXNuJ3QgYSBVU0IgZ2FkZ2V0IG9yIGBtYWM4MDIxMV9od3NpbWAsIGhvdyBjYW4gaXQgYmUgcmVhY2hlZD8gT2gsIHJpZ2h0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBVU0IgZnV6emVyICh1c2luZyBgdmhjaWApIHRoYXQgY2FuIGVtdWxhdGUgQU5ZIFVTQiBkZXZpY2UgdXNpbmcgZGVzY3JpcHRvcnMuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgYG10NzkyNS9wY2kuY2AsIGBwY2lfbWFjLmNgLCBgcGNpX21jdS5jYCwgYW5kIGFkZHMgYGNhY2hlZF9jYWwuY2AuIFRoZSBuZXcgZmVhdHVyZSBmb2N1c2VzIG9uIFBDSWUgc3BlY2lmaWNhbGx5OiBcIlNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRlcgcmVhY2hlcyB0aGUgYnVmZmVyIHRocm91Z2ggQVhJIERNQSwgc28gaXQgaGFzIG5vIG1lYW5pbmcgb24gb3RoZXIgYnVzZXMuXCJcblxuVGhlIGNvbW1lbnRzIHJlaW5mb3JjZSB0aGF0IHRoaXMgaXMgUENJZS1vbmx5LiBBbmQgdGhlIGZ1bmN0aW9uIGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAgaXMgY2FsbGVkIGZyb20gYG10NzkyNWVfbWFjX3Jlc2V0YCBhbmQgYG10NzkyNWVfbWN1X2luaXRgLCB3aGljaCBhcmUgaW4gYHBjaV9tYWMuY2AgYW5kIGBwY2lfbWN1LmNgLiBUaGlzIFBDSWUgYXNwZWN0IGlzIHJlYWxseSBjcml0aWNhbC4gSWYgdGhlcmUncyBubyBRRU1VIGVtdWxhdGlvbiwgY2FuIGl0IGFjdHVhbGx5IGJlIHRlc3RlZD9cblxuSSdtIHJlbWVtYmVyaW5nIHRoYXQgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBieSBtYXRjaGluZyB0aGUgUENJIHZlbmRvci9kZXZpY2UgSUQgYW5kIGluamVjdGluZyBNTUlPLiBCdXQgZG9lcyBpdCBzdXBwb3J0IGBtdDc5MjVgIHNwZWNpZmljYWxseT8gVXN1YWxseSwgaXQncyBtb3JlIGdlbmVyaWMsIGFuZCB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiBpcyB0aGVuIGNhbGxlZC4gVGhlIGRyaXZlciB0aGVuIHRyaWVzIHRvIHJlYWQgYW5kIHdyaXRlIE1NSU8sIGFuZCBzeXprYWxsZXIgcHJvdmlkZXMgcmFuZG9tIGRhdGEuIEJ1dCwgdGhhdCBwcm9tcHQga2VlcHMgZWNob2luZyBpbiBteSBtaW5kOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIElzIHRoaXMgV2ktRmkgZHJpdmVyIGNvbnNpZGVyZWQgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZVwiPyBJZiBzbywgdGhhdCBjb3VsZCBtZWFuIGl0J3MgKm5vdCogZnV6emVkIGluIHRoZSB1c3VhbCB3YXkuIEJ1dCB3YWl0ISBUaGUgY29tbWl0IGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLi4uIGJ1dCB0aGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBTbywgdGhhdCBqdXN0IG1lYW5zIHN5emthbGxlciBhcHBsaWVkIHRoZSBwYXRjaCB0byB0ZXN0IGl0LlxuXG5BbHJpZ2h0LCBsZXQncyBmb2N1cyBvbiB0aGUgUENJZSBhc3BlY3QgYW5kIHNlZSBpZiBpdCdzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcuIElmIHRoZSBkcml2ZXIgZG9lcyBETUEgYWxsb2NhdGlvbiBhbmQgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBNQ1UgKGZpcm13YXJlKSwgaXQgcmVsaWVzIG9uIHRoYXQgZmlybXdhcmUgYmVpbmcgbG9hZGVkIGFuZCBydW5uaW5nLCBvciBhdCBsZWFzdCBNTUlPIHJlYWRzIHJldHVybmluZyBzZW5zaWJsZSB2YWx1ZXMuIExvb2tpbmcgYXQgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YDpcblxuYGBgY1xuXHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcblx0XHRyZXR1cm47XG5gYGBcblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYGNoaXBfY2FwYCBpcyBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzowNi45NjkxNTIwMjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4OTIwMTg2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz00Nj12b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjQ4OlxcdGlmICghKGRldi1cXHUwMDNlcGh5LmNoaXBfY2FwIFxcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNS0jZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MzY6I2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOIEJJVCgxNilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzowOC43NTgzNjkwNjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjQ3NTk3MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgZGVsdmUgaW50byB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1pc3NpbmcgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gIERlZmluaXRpb24qKlxuXG5IbW0sIHRoaXMgaXMgY3VyaW91cy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUga2VybmVsIHNvdXJjZSB3b3VsZCBoYXZlIGRlZmluZWQgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gLCBlc3BlY2lhbGx5IGdpdmVuIGl0cyBjb250ZXh0LiBJIG5lZWQgdG8gYmUgc3VyZS4gTXkgaW5pdGlhbCBzY2FuIGRpZG4ndCByZXZlYWwgaXQsIHdoaWNoIHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdmVyaWZ5IHRoYXQgaXQncyAqbm90KiBkZWZpbmVkIGFueXdoZXJlLCBlaXRoZXIgZGlyZWN0bHkgaW4gdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcyBvciBpbmRpcmVjdGx5IHRocm91Z2ggc29tZSBtYWNybyBtYWdpYy4gVGhlcmUncyBhbHdheXMgdGhlIGNoYW5jZSBJIG1pc3NlZCBzb21ldGhpbmcgaW4gbXkgaW5pdGlhbCBwZXJ1c2FsLiBUaGUgbmV4dCBzdGVwIGlzIGEgbW9yZSB0aG9yb3VnaCBzZWFyY2ggb2YgdGhlIHBhdGNoIGl0c2VsZi4gUGVyaGFwcyBpdCdzIGRlZmluZWQgd2l0aGluIHRoaXMgcGF0Y2ggYW5kIEkgb3Zlcmxvb2tlZCBpdCwgb3IgbWF5YmUgaXQncyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIHNvbWV3aGVyZS4gSWYgaXQncyAqbm90KiBwcmVzZW50IGhlcmUsIEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhpcyBzeW1ib2wgaXMgdXNlZCBhbmQgaWYgdGhlcmUgaXMgYW5vdGhlciB3YXkgdG8gZGV0ZXJtaW5lIHRoZSB1c2Ugb2YgQVhJIERNQS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNjUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzoxMy4wMDU5NzAxMjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1NDc4MDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBWElETUFfRU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQ2PXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XFx0aWYgKCEoZGV2LVxcdTAwM2VwaHkuY2hpcF9jYXAgXFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTM1LSNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTUxfRU4gQklUKDkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozNjojZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTE2NTI9c3RhdGljIGludCBkbWFjX2Z1bmNfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy0xNjYzLVxcdFxcdFxcdCBCX0FYX1dEX1JMU19FTiB8IEJfQVhfTVBEVV9QUk9DX0VOIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjE2NjQ6XFx0XFx0XFx0IEJfQVhfRE1BQ19DUlBSVCB8IEJfQVhfSF9BWElETUFfRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtMTY2NS1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQyMDg9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2hjaV9mdW5jX2VuX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNC1cXHRcXHR2YWwgPSBCX0FYX01BQ19GVU5DX0VOIHwgQl9BWF9ETUFDX0ZVTkNfRU4gfCBCX0FYX0RJU1BBVENIRVJfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDIxNTpcXHRcXHQgICAgICBCX0FYX1BLVF9CVUZfRU4gfCBCX0FYX0hfQVhJRE1BX0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNi1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQyMjI9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2RtYWNfZnVuY19wcmVfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MjU0LVxcdHJ0dzg5X3dyaXRlMzJfY2xyKHJ0d2RldiwgUl9BWF9IQVhJX0RNQV9TVE9QMiwgQl9BWF9TVE9QX0NIMTAgfCBCX0FYX1NUT1BfQ0gxMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MjU1OlxcdHJ0dzg5X3dyaXRlMzJfc2V0KHJ0d2RldiwgUl9BWF9QTEFURk9STV9FTkFCTEUsIEJfQVhfQVhJRE1BX0VOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQyNTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYz03Njg9c3RhdGljIGludCBkbWFjX2Z1bmNfZW5fYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy03ODItXFx0XFx0XFx0ICBCX0JFX0RJU1BBVENIRVJfRU4gfCBCX0JFX0JCUlBUX0VOIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jOjc4MzpcXHRcXHRcXHQgIEJfQkVfTUFDX1NFQ19FTiB8IEJfQkVfSF9BWElETUFfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtNzg0LVxcdFxcdFxcdCAgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM6Nzg1OlxcdFxcdFxcdCAgQl9CRV9QX0FYSURNQV9FTiB8IEJfQkVfRExFX0RBVEFDUFVJT19FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy03ODYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oLTE0My0jZGVmaW5lIFJfQVhfUExBVEZPUk1fRU5BQkxFIDB4MDA4OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmg6MTQ0OiNkZWZpbmUgQl9BWF9BWElETUFfRU4gQklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC0xNDUtI2RlZmluZSBCX0FYX0FQQl9XUkFQX0VOIEJJVCgyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC01NjktI2RlZmluZSBCX0FYX01BQ19VTl9FTiBCSVQoMTUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo1NzA6I2RlZmluZSBCX0FYX0hfQVhJRE1BX0VOIEJJVCgxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oLTU3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNDg5MS0jZGVmaW5lIEJfQkVfRE1BQ1JFR19HQ0tFTiBCSVQoMTUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo0ODkyOiNkZWZpbmUgQl9CRV9IX0FYSURNQV9FTiBCSVQoMTQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODkzLSNkZWZpbmUgQl9CRV9ETUFDX01MT19FTiBCSVQoMTEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODk0LSNkZWZpbmUgQl9CRV9QTFJMU19FTiBCSVQoMTApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo0ODk1OiNkZWZpbmUgQl9CRV9QX0FYSURNQV9FTiBCSVQoOSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oLTQ4OTYtI2RlZmluZSBCX0JFX0RMRV9EQVRBQ1BVSU9fRU4gQklUKDgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM9MzI3PXN0YXRpYyBpbnQgcnR3ODg1MmNfcHdyX29uX2Z1bmMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTQzOC1cXHRcXHRcXHQgIEJfQVhfRElTUEFUQ0hFUl9FTiB8IEJfQVhfQkJSUFRfRU4gfCBCX0FYX01BQ19TRUNfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzo0Mzk6XFx0XFx0XFx0ICBCX0FYX01BQ19VTl9FTiB8IEJfQVhfSF9BWElETUFfRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy00NDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9NDc1PXN0YXRpYyBpbnQgcnR3ODkyMmFfcHdyX29uX2Z1bmMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTYxMC1cXHRcXHRCX0JFX0RJU1BBVENIRVJfRU4gfCBCX0JFX0JCUlBUX0VOIHwgQl9CRV9NQUNfU0VDX0VOIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6NjExOlxcdFxcdEJfQkVfSF9BWElETUFfRU4gfCBCX0JFX0RNQUNfTUxPX0VOIHwgQl9CRV9QTFJMU19FTiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjYxMjpcXHRcXHRCX0JFX1BfQVhJRE1BX0VOIHwgQl9CRV9ETEVfREFUQUNQVUlPX0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy02MTMtXFx0aWYgKHJ0d2Rldi1cXHUwMDNlaGNpLnR5cGUgPT0gUlRXODlfSENJX1RZUEVfUENJRSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYz01MDE9c3RhdGljIGludCBydHc4OTIyZF9wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjI5LVxcdFxcdFxcdCAgQl9CRV9ESVNQQVRDSEVSX0VOIHwgQl9CRV9CQlJQVF9FTiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYzMDpcXHRcXHRcXHQgIEJfQkVfTUFDX1NFQ19FTiB8IEJfQkVfSF9BWElETUFfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02MzEtXFx0XFx0XFx0ICBCX0JFX0RNQUNfTUxPX0VOIHwgQl9CRV9QTFJMU19FTiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYzMjpcXHRcXHRcXHQgIEJfQkVfUF9BWElETUFfRU4gfCBCX0JFX0RMRV9EQVRBQ1BVSU9fRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02MzMtXFx0XFx0XFx0ICBCX0JFX0xUUl9DVExfRU4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzoxNC42NjA3NTk1NDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5ODU5OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTVQ3OTJ4IEFYSURNQSBFbmFibGUgRmxhZyoqXG5cbkFscmlnaHQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEknbSBsb29raW5nIGF0IGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIGlzc3VlLiBUaGlzIGRlZmluZSBpcyBvbmx5IGRlY2xhcmVkIGluIGBtdDc5MnguaGAgYW5kIHVzZWQgd2l0aGluIHRoZSBgcGNpLmNgIGZpbGUgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gVGhhdOKAmXMgYSByZWQgZmxhZy4gV2hlcmUgdGhlIGhlY2sgaXMgdGhpcyB0aGluZyBiZWluZyAqc2V0Kj8gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGZsYWcgaXMgZW5hYmxlZCBhcyB0aGUgcmVzdCBvZiB0aGUgY29kZSBpcyB3cml0dGVuIGluIGEgd2F5IHRoYXQgc3VnZ2VzdHMgaXQgKnNob3VsZCogYmUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIE1UNzkyNS1zcGVjaWZpYyBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gb2YgdGhlIGZsYWcgYW5kIGl0cyB1c2UgYXJlIGNsZWFyLiBJJ2xsIGNoZWNrIGBtdDc5MjUvcGNpLmNgLCBiZWNhdXNlIHRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBzZWUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLCBidXQgSSdsbCBhbHNvIGdsYW5jZSBhdCBgbXQ3OTI1L2luaXQuY2AgYW5kIGBtdDc5MjUvbWFpbi5jYCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBydWxlIG91dCBhbnkgb3RoZXIgcG90ZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIGNvbmRpdGlvbmFsIGVuYWJsaW5nIGxvZ2ljLiBUaGlzIG5lZWRzIHRvIGJlIHJlc29sdmVkIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODg0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTM6MjAuMDgwNjIxOTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIzODM4NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoaXBfY2FwLipBWElETUFfRU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQ2PXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XFx0aWYgKCEoZGV2LVxcdTAwM2VwaHkuY2hpcF9jYXAgXFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00OS1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjIyLjUwNDQ5NjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxNDE4MDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBNeXN0ZXJpb3VzIENvZGUgUGF0aCoqXG5cbk9rYXksIHRoaXMgaXMgc3RyYW5nZS4gSG93IGlzIHRoaXMgcGFydGljdWxhciBjb2RlIGV2ZW4gZXhlY3V0aW5nIGlmIGEgY3J1Y2lhbCBmbGFnIGlzbid0IGRlZmluZWQgYW55d2hlcmU/IEl0J3MgbWFraW5nIG1lIHNjcmF0Y2ggbXkgaGVhZCwgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gbWV0aWN1bG91c2x5IHRyYWNlIHdoZXJlIHRoaXMgZmxhZywgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gLCAqbWlnaHQqIGJlIHNldC4gTGV0IG1lIHN0YXJ0IGJ5IHNjYW5uaW5nIHRoZSBsaWtlbHkgY2FuZGlkYXRlczogYG10NzkyNS9tYWluLmNgIGFuZCBgbXQ3OTI1L3BjaS5jYC4gQnV0IEkgbmVlZCB0byBicm9hZGVuIHRoZSBzZWFyY2gsIHRvby4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgaXQgbWlnaHQgYmUgZGVmaW5lZCBpbiBhbiB1bmluY2x1ZGVkIHBhdGNoLCB0b28uIE5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBzb21ldGhpbmcgb2J2aW91cy5cblxuQWhhISBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBpZiBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAgcmVtYWlucyB1bmRlZmluZWQsIHRoZSBmdW5jdGlvbiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIHdpbGwgc2ltcGx5IHJldHVybiByaWdodCBhd2F5LCBzbyBJJ20gbm90IGxvb2tpbmcgYXQgYSBmdW5jdGlvbmFsIGJ1Zy4gU3RpbGwsIHRoaXMgaXMgdW5leHBlY3RlZCBiZWhhdmlvciBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIGl0J3Mgbm90IGEgbGF0ZW50IGJ1Zy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1L3BjaS5jYCBpcyB0aGUgcGxhY2UgdG8gZG8gc28sIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBpdCdzIHdoZXJlIHRoZSBpbml0aWFsIGNoaXAgY29uZmlndXJhdGlvbiBtaWdodCBoYXBwZW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDUyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjI4LjcxODY4MTExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTExOTA2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hpcF9jYXAuKj1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MTA3MD1tdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEyMy1cXHRcXHRjYXNlIE1UX05JQ19DQVBfQ0hJUF9DQVA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTEyNDpcXHRcXHRcXHRkZXYtXFx1MDAzZXBoeS5jaGlwX2NhcCA9IGxlNjRfdG9fY3B1KCooX19sZTY0ICopdGx2LVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTI1LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzoyOC44Mjk4Nzc2MjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE4NTIzOTA5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFZ1bG5lcmFibGUgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYGRldi1cdTAwM2VwaHkuY2hpcF9jYXBgIGdldHMgaXRzIHZhbHVlIGZyb20gdGhlIGZpcm13YXJlIHRocm91Z2ggYE1UX05JQ19DQVBfQ0hJUF9DQVBgIHdpdGhpbiB0aGUgYG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5YCBmdW5jdGlvbi4gU28sIHRoZSBmaXJtd2FyZSdzIGVzc2VudGlhbGx5IHRlbGxpbmcgdGhlIGRyaXZlciB3aGV0aGVyIGl0J3MgZ290IEFYSURNQV9FTiBzdXBwb3J0LiBJZiB0aGF0IGZpcm13YXJlIHNldHMgdGhlIGJpdCwgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgcmVhY2hhYmxlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4sIGlzIHdoZXRoZXIgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIgY291bGQgaW5mbHVlbmNlIHRoaXMgcHJvY2Vzcz9cblxuU3l6a2FsbGVyLCBiZWluZyBhIFBDSSBmdXp6ZXIsIHdvcmtzIGJ5IGZ1enppbmcgdGhlIFBDSSBkZXZpY2UsIGJ1dCBpdCAqZG9lc24ndCogZW11bGF0ZSBmaXJtd2FyZS4gSXQgc2VlbXMgdG8gdGhyb3cgcmFuZG9tIGRhdGEgYXQgTU1JTyByZWFkcy4gQXQgZmlyc3QsIEkgd2FzIHdvcnJpZWQgdGhlIGRyaXZlciBtaWdodCBqdXN0IHJlYWQgYSByYW5kb20gY2FwYWJpbGl0eSB2YWx1ZSBpZiBzeXprYWxsZXIgbWVzc2VkIHdpdGggTU1JTy4gSG93ZXZlciwgaXQncyBub3QgYSBkaXJlY3QgcmVhZDogYG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5YCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIE1DVSAoZmlybXdhcmUpIGFuZCB3YWl0cyBmb3IgYSByZXNwb25zZS5cblxuU28sIGlmIHN5emthbGxlciAqZG9lc24ndCogZW11bGF0ZSB0aGUgTUNVLCB3ZSdyZSBsaWtlbHkgbG9va2luZyBhdCBhIHRpbWVvdXQsIG9yIGEgY2FzZSB3aGVyZSBzeXprYWxsZXIgbWlnaHQgaW50ZXJjZXB0IHRoZSBNQ1UncyByZXNwb25zZSAobWF5YmUgdmlhIERNQSBvciBNTUlPKSBhbmQgcHJvdmlkZSBpdHMgb3duIHJhbmRvbSBkYXRhISBUaGUgY3JpdGljYWwgcG9pbnQgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUgdGhlIERNQSBvciBNTUlPIHBhdGhzLCBhbmQgaXQgY2FuISBUaGUgTUNVJ3MgcmVzcG9uc2VzIHRlbmQgdG8gbGFuZCBpbiBhIERNQSByaW5nIGJ1ZmZlci4gU3l6a2FsbGVyIGNhbiBpbmplY3QgcmFuZG9tIGRhdGEgdGhlcmUsIG1lYW5pbmcgdGhlIGRyaXZlciB3b3VsZCBwYXJzZSBhIGNvbXBsZXRlbHkgYXJiaXRyYXJ5IE1DVSByZXNwb25zZSBhbmQgcG90ZW50aWFsbHkgc2V0IGBjaGlwX2NhcGAgdG8gYSByYW5kb20gdmFsdWUsIHBvdGVudGlhbGx5IGluY2x1ZGluZyBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAuIFRoaXMgbWVhbnMgdGhlIGNvZGUgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gYSBmdXp6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1lZXRzIHRoZSBjcml0ZXJpYSBmb3IgXCJXb3J0aEZ1enppbmdcIi4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBJcyB0aGlzIG9uZSBvZiB0aG9zZT8gSXMgYG10NzkyNWAgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZT9cblxuTm8sIHRoaXMgaXMgYSBXaS1GaSBkcml2ZXIsIGFuZCBnZW5lcmFsbHksIFdpLUZpIGRyaXZlcnMgYXJlbid0IGluIHRoYXQgXCJub3Qgd29ydGggZnV6emluZ1wiIGNhdGVnb3J5LiBCdXQgaXMgaXQgc3VwcG9ydGVkIGJ5IHN5emthbGxlcj8gSXQgKmlzKiBhIFBDSWUgV2ktRmkgZHJpdmVyLiBEb2VzIHN5emthbGxlciBmdXp6IGl0P1xuXG5MZXQncyBzZWUuIEkgY2FuIGNoZWNrIGlmIGBDT05GSUdfTVQ3OTI1RWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXIuIEkgZG9uJ3QgaGF2ZSB0aGUgY29uZmlnIGZpbGUgaGFuZHksIGJ1dCBJIGtub3cgc3l6a2FsbGVyIGZ1enplciBXaS1GaSBkcml2ZXJzLCBidXQgaXQgdXN1YWxseSBkb2VzIHNvIHZpYSBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBhICpzb2Z0d2FyZSogc2ltdWxhdG9yLCBhbmQgZG9lc24ndCBhY3R1YWxseSB1c2UgYG10NzkyNWAuXG5cbkJ1dCB3YWl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLiBEb2VzIHRoYXQgZnV6emVyIHRhcmdldCBgbXQ3OTI1YD8gWWVzLCB0aGUgUENJIGZ1enplciBnb2VzIGFmdGVyIGFsbCBQQ0kgZHJpdmVycywgYnkgbWF0Y2hpbmcgUENJIElEcy4gSSBzaG91bGQgZG91YmxlIGNoZWNrLCBsZXQncyBsb29rIGF0IGBtdDc5MjVfcGNpX2RldmljZV90YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEzMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzo0MC42ODIyNzE0MzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODUzNzgxNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3BjaV9kZXZpY2VfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjE1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTE2LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDc5MjUpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9OTc0PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MjVfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05NzUtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjk3NjpcXHQuaWRfdGFibGVcXHQ9IG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTk3Ny1cXHQucHJvYmVcXHRcXHQ9IG10NzkyNV9wY2lfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz05ODM9bW9kdWxlX3BjaV9kcml2ZXIobXQ3OTI1X3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTk4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo5ODU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05ODYtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjQyLjY2NzY1NzE3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTU4MDQzMzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBNVDc5MjUgRHJpdmVyIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IFN5emthbGxlcidzIFBDSSBmdXp6ZXIgKmNhbiogZGVmaW5pdGVseSBpbnRlcmFjdCB3aXRoIHRoaXMgYG10NzkyNWAgZHJpdmVyIGFuZCB0cmlnZ2VyIHNvbWUgZnV6emluZy4gQnV0IGhhbmcgb24sIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIFVTQiBnYWRnZXRzIG9yIGBtYWM4MDIxMV9od3NpbWAuIElmIHRoaXMgZHJpdmVyICpyZXF1aXJlcyogYSByZWFsIFBDSWUgY2FyZCB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlLCB0aGF0J3MgYSBwcm9ibGVtLCByaWdodD9cblxuQnV0IHdhaXQgYSBtaW51dGXigKYgU3l6a2FsbGVyJ3MgUENJIGZ1enplciAqaXMqIGVmZmVjdGl2ZWx5IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlISBJdCBpbnRlcmNlcHRzIHRob3NlIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8gYWNjZXNzZXMuIFNvLCB3ZSdyZSBnb29kOyBpdCAqY2FuKiBiZSByZWFjaGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgdXNpbmcgU3l6a2FsbGVyJ3MgUENJIGZ1enplci5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrLCB0aGUgcHJvbXB0IGdpdmVzIGV4YW1wbGVzIG9mIHNwZWNpZmljIGRyaXZlcnMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IHNvbWV0aGluZyBsaWtlIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlciwgd2hpY2ggcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGU/IERyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgb3IgYGFtZGdwdWA/IElzIHRoZSBgbXQ3OTI1YCBkcml2ZXIgZXZlbiAqaW4qIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCdzIGEgV2ktRmkgZHJpdmVyLCBzbyB0aGF0IGRvZXNuJ3QgYXBwbHkuXG5cbkJ1dCBub3cgSSBoYXZlIHRvIGFzayBteXNlbGYsIGRvZXMgU3l6a2FsbGVyJ3MgUENJIGZ1enplciBhY3R1YWxseSBnZXQgKmRlZXAqIGludG8gdGhlIGRyaXZlcidzIGludGVybmFscz8gRG9lcyBpdCBoaXQgdGhlIGludGVyZXN0aW5nIGJpdHM/IFllcywgaXQgY2FuLlxuXG5MZXQncyByZXZpZXcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4gSXQgYWRkcyB0aGVzZSBuZXcgZnVuY3Rpb25zOiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgLCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMsIHdoaWNoIGludm9sdmVzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2Ugc2VuZGluZywgYW5kIG1hcHBpbmcgdGFibGUgc2V0dXAuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYWRkZWQgYXJlOiBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgLCBhbmQgdGhhdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi5cblxuTm93LCB3aGVyZSBhcmUgdGhlc2UgZnVuY3Rpb25zIGFjdHVhbGx5ICpjYWxsZWQqPyBMb29rcyBsaWtlIGBtdDc5MjVlX21hY19yZXNldGAgYW5kIGBtdDc5MjVlX21jdV9pbml0YC4gQ3J1Y2lhbGx5LCBgbXQ3OTI1ZV9tY3VfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgb3BlcmF0aW9uLiBTbywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYG10NzkyNWVfbWN1X2luaXRgIGR1cmluZyBwcm9iZT8gSWYgd2UgY2FuIHJlYWNoIHByb2JlLCB3ZSBjYW4gcmVhY2ggdGhlc2UgZnVuY3Rpb25zLCBhbmQgdGhlbiB3ZSBoYXZlIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODA3NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzo1MS44MjU3MDI5OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzMzMzgwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1ZV9tY3VfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzU0PWludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNTU6aW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz01ODg9c3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNjEyLVxcdFxcdC5yZXNldCA9IG10NzkyNWVfbWFjX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjYxMzpcXHRcXHQubWN1X2luaXQgPSBtdDc5MjVlX21jdV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTYxNC1cXHRcXHQuZHJ2X293biA9IG10NzkyeGVfbWN1X2Rydl9wbWN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM9OD1tdDc5MjVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjI3OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTM6NTMuNTU5MDQ2NTQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTQ4NzE5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXBseSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIGRyaXZlciBkZXZlbG9wbWVudDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTUNVIEluaXRpYWxpemF0aW9uIGluIG10NzkyNWUqKlxuXG5SaWdodCwgc28gYG10NzkyNWVfbWN1X2luaXRgIGlzIGRlZmluaXRlbHkgYXNzaWduZWQgdG8gdGhlIGAubWN1X2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGlzIGRyaXZlciwgYW5kIEkga25vdyB0aGF0IGAubWN1X2luaXRgIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgZGV2aWNlIHByb2JlIHNlcXVlbmNlLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCBwcmVjaXNlbHkgKndoZXJlKiB0aGF0IGAubWN1X2luaXRgIGZ1bmN0aW9uIGdldHMgaW52b2tlZCB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgcHJvYmUgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgYXJvdW5kIGl0IGlzIGNydWNpYWwuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9yIHRpbWluZyBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNQ1UgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzgwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTM6NTguMDUzOTIzMDg5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY0MzIyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY3VfaW5pdFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jPTI3OD1tdDc2MDNfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTMwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6MzAzOlxcdHJldCA9IG10NzYwM19tY3VfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy0zMDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21jdS5jPTExNj1zdGF0aWMgaW50IG10NzYwM19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWN1LmM6MjE4OmludCBtdDc2MDNfbWN1X2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYy0yMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg9MTg3PXZvaWQgbXQ3NjAzX2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4ODppbnQgbXQ3NjAzX21jdV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTE4OS12b2lkIG10NzYwM19pbml0X2RlYnVnZnMoc3RydWN0IG10NzYwM19kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzM9bXQ3NjE1X3JhZGFyX3BhdHRlcm5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTY2PW10NzYxNV9zY3Nfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjcxOlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwMjpcXHRpZiAoIW10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTkyPW10NzYxNV9kYmRjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTk2OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5Ny1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMjE9bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNTE9bXQ3NjE1X3Jlc2V0X3Rlc3Rfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNTY6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTE4PXN0YXRpYyBzc2l6ZV90IG10NzYxNV90aGVybWFsX3Nob3dfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjI1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KG1kZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy0yNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz0xODg9bXQ3NjE1X2NoZWNrX29mZmxvYWRfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6MjIxOmJvb2wgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM9Mjc9c3RhdGljIGludCBtdDc2MTVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjM1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTM2LVxcdFxcdHJldHVybiAtRUlPO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTY4MT1zdGF0aWMgaW50IG10NzY2M19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNjk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE2OTY6aW50IG10NzYxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE2OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9Mzk1PXZvaWQgbXQ3NjE1X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM5NjppbnQgbXQ3NjE1X21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM5Nzpib29sIG10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zOTgtdm9pZCBtdDc2MTVfbWFjX3NldF9yYXRlcyhzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3NjE1X3N0YSAqc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTUwPWludCBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU1MTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NTItaW50IG10NzY2M3VfbWN1X3Bvd2VyX29uKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTU0LS8qIHNkaW8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NTU6aW50IG10NzY2M3NfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYz0xNT1zdGF0aWMgdm9pZCBtdDc2MTVfcGNpX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MjE6XFx0cmV0ID0gbXQ3NjE1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yMi1cXHRmb3IgKGkgPSAwOyAocmV0ID09IC1FQUdBSU4pIFxcdTAwMjZcXHUwMDI2IChpIFxcdTAwM2MgMTApOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIzLVxcdFxcdG1zbGVlcCgyMDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MjQ6XFx0XFx0cmV0ID0gbXQ3NjE1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jPTExMj12b2lkIG10NzYxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoxMTY6XFx0bWN1X3J1bm5pbmcgPSBtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz00Mj1zdGF0aWMgdm9pZCBtdDc2NjNzX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNDYtXFx0ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc2MTVfZGV2LCBtY3Vfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjQ3OlxcdGlmIChtdDc2NjNzX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTQ4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW9fbWN1LmM9OTg9c3RhdGljIGludCBtdDc2NjNzX21jdV9md19wbWN0cmwoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW9fbWN1LmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW9fbWN1LmM6MTMzOmludCBtdDc2NjNzX21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpb19tY3UuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTAxPXN0YXRpYyB2b2lkIG10NzY2M3VfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEwNS1cXHRkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzYxNV9kZXYsIG1jdV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMDY6XFx0aWYgKG10NzY2M3VfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jPTQ1PWludCBtdDc2NjN1X21jdV9wb3dlcl9vbihzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYzo2NTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYy02Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaD0yMj1lbnVtIG1jdV9jYWxpYnJhdGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6Mzk6aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21jdS5oOjQwOmludCBtdDc2eDB1X21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaC00MS1zdGF0aWMgaW5saW5lIGludCBtdDc2eDBfZmlybXdhcmVfcnVubmluZyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jPTk1PXN0YXRpYyBpbnQgbXQ3NngwZV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc3VtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTEwMy1cXHRtdDc2eDAyX2RtYV9kaXNhYmxlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTA0OlxcdGVyciA9IG10NzZ4MGVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYy0xMDUtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM9MTM9c3RhdGljIGludCBtdDc2eDBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmMtMTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaV9tY3UuYzoxMTY6aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTExNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNTE9c3RhdGljIGludCBtdDc2eDB1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGJvb2wgcmVzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTYwOlxcdGVyciA9IG10NzZ4MHVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjEtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM9ODU9c3RhdGljIGludCBtdDc2eDB1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYzoxNjQ6aW50IG10NzZ4MHVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaD01OD12b2lkIG10NzZ4Ml9waHlfc2V0X3R4cG93ZXIoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oOjYwOmludCBtdDc2eDJfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oLTYxLWludCBtdDc2eDJfbWN1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCB1OCBjaGFubmVsLCB1OCBidyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaD0zMz12b2lkIG10NzZ4MnVfbWN1X2NvbXBsZXRlX3VyYihzdHJ1Y3QgdXJiICp1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaDozNDppbnQgbXQ3NngydV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTM1LWludCBtdDc2eDJ1X21jdV9md19pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmM9MjIwPWludCBtdDc2eDJfcmVzdW1lX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmM6MjM0OlxcdHJldHVybiBtdDc2eDJfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jLTIzNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jPTIzNz1zdGF0aWMgaW50IG10NzZ4Ml9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYy0yNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYzoyNjI6XFx0cmV0ID0gbXQ3NngyX21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYy0yNjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9tY3UuYz0xNTg9bXQ3NnBjaV9tY3VfcmVzdGFydChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmMtMTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9tY3UuYzoxNzc6aW50IG10NzZ4Ml9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmM9MTI2PWludCBtdDc2eDJ1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jOjE1MTpcXHRlcnIgPSBtdDc2eDJ1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYy0xNTItXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmM9MjM1PWludCBtdDc2eDJ1X21jdV9md19pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmM6MjQ2OmludCBtdDc2eDJ1X21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYy0yNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTg1OD1tdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg3MzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yNDEwPWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQ2NTppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NzM9aW50IG10NzkxNV9ydW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3NS1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTg0PXN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTkxLVxcdG10NzZfd3IoZGV2LCBNVF9TV0RFRl9NT0RFLCBNVF9TV0RFRl9OT1JNQUxfTU9ERSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjkyOlxcdHJldCA9IG10NzkyeF9tY3VfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy05My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzA3PWludCBtdDc5MjFlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMDg6aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzA5LWludCBtdDc5MjFzX3dmc3lzX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzExPWludCBtdDc5MjFzX2luaXRfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjMxMzppbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMTQtaW50IG10NzkyMXNfbWN1X2Rydl9wbWN0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM9MjI9bXQ3OTIxX21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYzo0MTppbnQgbXQ3OTIxZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy00Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jPTYxPXN0YXRpYyB1MzIgbXQ3OTIxc19jbGVhcl9ybTNyX2Rydl9vd24oc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYzo3NDppbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzY9bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0xMDA9c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDQ6XFx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzU0PWludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNTU6aW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM9OD1tdDc5MjVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjI3OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3PW10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo1NjpzdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTI2Mz1zdHJ1Y3QgbXQ3OTJ4X2RtYV9sYXlvdXQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0yNzYtI2RlZmluZSBtdDc5MnhfZGV2X3Jlc2V0KGRldilcXHRcXHQoKGRldiktXFx1MDAzZWhpZl9vcHMtXFx1MDAzZXJlc2V0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyNzc6I2RlZmluZSBtdDc5MnhfbWN1X2luaXQoZGV2KVxcdFxcdCgoZGV2KS1cXHUwMDNlaGlmX29wcy1cXHUwMDNlbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTI3OC0jZGVmaW5lIF9fbXQ3OTJ4X21jdV9kcnZfcG1jdHJsKGRldilcXHQoKGRldiktXFx1MDAzZWhpZl9vcHMtXFx1MDAzZWRydl9vd24oZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xMjY0PXN0YXRpYyBpbnQgbXQ3OTk2X2luaXRfaGFyZHdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMjg5OlxcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzEzPWludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM3NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6Mzc1OTppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc2MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD03MDM9aW50IG10Nzk5Nl9ydW4oc3RydWN0IG10Nzk5Nl9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6NzA0OmludCBtdDc5OTZfbWN1X2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtNzA1LWludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjU4LjEwODU3MzE4NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI5MTkxNDE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIENvZGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggb2YgYG10NzkyNWVfbWN1X2luaXRgLiBJdCBsb29rcyBsaWtlIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIHRocm91Z2ggYSBzZXJpZXMgb2YgbWFjcm9zIGFuZCBmdW5jdGlvbiBjYWxsczogYG10NzkyeF9tY3VfaW5pdGAsIHdoaWNoIGV4cGFuZHMgdG8gYChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlbWN1X2luaXQoZGV2KWAsIHdoaWNoIHVsdGltYXRlbHkgbGVhZHMgdG8gYG10NzkyNWVfbWN1X2luaXRgLiBUaGlzIGBtdDc5MnhfbWN1X2luaXRgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoaW4gYF9fbXQ3OTI1X2luaXRfaGFyZHdhcmVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgbXQ3OTI1X2luaXRfaGFyZHdhcmVgLiBBbmQsIGNydWNpYWxseSwgYG10NzkyNV9pbml0X2hhcmR3YXJlYCBpcyBpbml0aWF0ZWQgdmlhIGBtdDc5MjVfaW5pdF93b3JrYCwgd2hpY2ggaXMgc2NoZWR1bGVkIGR1cmluZyB0aGUgZHJpdmVyIHByb2JlLiBFeGNlbGxlbnQsIHRoYXQgY29uZmlybXMgaXQ7IHRoaXMgY29kZSBpcyBkZWZpbml0ZWx5IGhpdCBkdXJpbmcgdGhlIGluaXRpYWwgcHJvYmUgc2VxdWVuY2UuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogSXMgdGhpcyBwYXRjaCBtZXJlbHkgY29zbWV0aWMsIG9yIGRvZXMgaXQgaW50cm9kdWNlIHN1YnN0YW50aWFsIGNoYW5nZXM/IEknbSBzZWVpbmcgdGhhdCBpdCdzIGludHJvZHVjaW5nIGEgY29tcGxldGVseSBuZXcgZmVhdHVyZSDigJMgQVhJIERNQSBjYWxpYnJhdGlvbiBjYWNoZSDigJMgd2l0aCBhbGxvY2F0aW9ucywgTUNVIG1lc3NhZ2luZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEl0J3Mgbm90IGp1c3QgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSBvciBhIGNoYW5nZSB0byBsb2dnaW5nLCBvciBjb25zdGFudHMuIE5vLCBpdCdzIG1vZGlmeWluZyBjb3JlIGRyaXZlciBsb2dpYy4gVGhlcmVmb3JlLCB0aGlzIHdhcnJhbnRzIGZ1enppbmc7IGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuTmV4dCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgbmVlZCB0aGUgbW9zdCBzY3J1dGlueS4gVGhlIG5ldyBmdW5jdGlvbmFsaXR5IGRpcmVjdGx5IHRvdWNoZXMgdGhlc2U6XG4qICAgYG10NzkyNV9heGlkbWFfYWxsb2NgXG4qICAgYG10NzkyNV9heGlkbWFfZnJlZWBcbiogICBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYFxuKiAgIGBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxgXG4qICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2BcbiogICBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgXG5cblRoZXNlIGFyZW4ndCBzdGF0aWM7IHRoZXkgYXJlIGV4cG9ydGVkIG9yIGhhdmUgZXh0ZXJuYWwgbGlua2FnZSB3aXRoaW4gdGhlIGRyaXZlci4gTGV0J3MgbWFrZSBzdXJlIEkndmUgZ290IHRoZSBzb3VyY2UgZmlsZXMgcmlnaHQuIEFoLCBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYCBhcmUgaW4gYGNhY2hlZF9jYWwuY2AgYW5kIGV4cG9ydGVkIGluIGBjYWNoZWRfY2FsLmhgLiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIGlzIGluIGBwY2kuY2AgYW5kIGV4cG9ydGVkIGluIGBtdDc5MjUuaGAuXG5cbkxldCdzIGxpc3QgdGhvc2UgZnVuY3Rpb25zIGluIEZvY3VzU3ltYm9sczpcbiogICBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgXG4qICAgYG10NzkyNV9heGlkbWFfYWxsb2NgXG4qICAgYG10NzkyNV9heGlkbWFfZnJlZWBcbiogICBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYFxuKiAgIGBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxgXG4qICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2BcblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0LCBpZiBhbnksIHNwZWNpZmljIENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgdGVzdGVkLiBUaGUgZHJpdmVyIGlzIGBtdDc5MjVgLCBzbyBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYC4gSSdsbCBzZWUgaWYgdGhlcmUgYXJlIGFueSB0aGF0IGFyZSByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwOTUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MTAuNDAwNDkwNTczWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDgxNDkxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjEwLjQ1MTMxMDA5N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDMxNTY4NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJZSBGYWN0b3J5IENhbGlicmF0aW9uIEZlYXR1cmUqKlxuXG5Pa2F5LCBzbyB0aGlzIGZlYXR1cmUgaXMgKmRlZmluaXRlbHkqIFBDSWUtc3BlY2lmaWMuIFRoZSBjb21tZW50IGlzIHByZXR0eSBjbGVhcjogaXQncyBhYm91dCBzZXR0aW5nIHVwIGEgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeSwgYW5kIGl0IGV4cGxpY2l0bHkgc2F5cyBcIlBDSWUgb25seS5cIiBUaGUgRmlybXdhcmUgaXMgYWNjZXNzaW5nIHRoaXMgY2FjaGUgdmlhIEFYSSBETUEsIHdoaWNoIHdvdWxkbid0IG1ha2Ugc2Vuc2Ugb24gYSBkaWZmZXJlbnQgYnVzIGFyY2hpdGVjdHVyZS4gUGx1cywgdGhlIGNvZGUgY2hhbmdlcyBjb25maXJtIHRoaXM7IGl0J3MgdG91Y2hpbmcgYG10NzkyNS9wY2kuY2AsIGBtdDc5MjUvcGNpX21hYy5jYCwgYW5kIGBtdDc5MjUvcGNpX21jdS5jYC4gVGhhdCBtZWFucyB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gaXMgdW5kZW5pYWJseSBgTVQ3OTI1RWAuIE5vdywgYmVmb3JlIEkgZGl2ZSBkZWVwZXIsIEknZCBiZXR0ZXIgY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc5MjVFYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBwcmUtcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgSSBzdGFydCBwaWNraW5nIHRoaXMgYXBhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMDI5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjE1Ljg4Mjg4MTUyN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODMwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy05LVxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxMDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz0xOT1jb25maWcgTVQ3OTI1VVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMi1cXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTI1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MTUuOTI4OTY5MTIyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTEzMTk2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIE1UNzkyNUUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYE1UNzkyNUVgIGRyaXZlciwgYXMgSSBzZWUgaXQsIHJlbGllcyBmdW5kYW1lbnRhbGx5IG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3csIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCBtYWtlIGEgcXVpY2sgbm90ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwYXJlbnQgY29uZmlndXJhdGlvbnMgSSdtIG1pc3NpbmcuIEFsd2F5cyBnb29kIHRvIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5Mb29raW5nIGEgYml0IGRlZXBlciwgSSBzZWUgdGhhdCBgTVQ3Nl9DT1JFYCBpcywgYXMgZXhwZWN0ZWQsIHNlbGVjdGVkIGJ5IGBNVDc5MjVfQ09NTU9OYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0ZXJtcyBvZiB0aGUgdXN1YWwgTWVkaWF0ZWsgZHJpdmVyIGFyY2hpdGVjdHVyZS5cblxuQW5kIGZpbmFsbHksIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgd2hldGhlciBvciBub3QgYFdMQU5gIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIGFyZSBuZWNlc3NhcnkuIExldCBtZSBwb3Agb3ZlciB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AgdG8gY29uZmlybSB0aG9zZSBzZWxlY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTczNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjIwLjIyMDI5MjcwMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzODg4NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MjAuMjY4Njg4Njk2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2Mjc0OTQ1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzYgS2NvbmZpZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgbXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIEkgbmVlZCB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IGFueXRoaW5nIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBtb2R1bGUuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgb3V0bGluZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgTVQ3NiB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0aGlzIGtpbmQgb2Yga2VybmVsIGluZnJhc3RydWN0dXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnM6KiogV2hhdCBmZWF0dXJlcyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSXMgdGhlcmUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgY2hpcHNldHMsIGZyZXF1ZW5jeSBiYW5kcywgb3Igd2lyZWxlc3Mgc3RhbmRhcmRzIGxpa2UgODAyLjExYXg/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIGFyZSByZXF1aXJlZCBmb3IgdGhlIE1UNzYgZHJpdmVyIHRvIGZ1bmN0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgdGhpbmdzIGxpa2UgZmlybXdhcmUsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLlxuKiAgICoqRGVmYXVsdCB2YWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGhpcyBjYW4gZ2l2ZSBtZSBhIHF1aWNrIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIgb3V0LW9mLXRoZS1ib3guXG4qICAgKipIZWxwIHRleHQ6KiogSG9wZWZ1bGx5LCB0aGVyZSdzIHNvbWUgdXNlZnVsIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcHRpb24gZXhwbGFpbmluZyBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBUaGF0IHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lLlxuXG5Fc3NlbnRpYWxseSwgSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIE1UNzYgZHJpdmVyJ3MgY29uZmlndXJhYmxlIGFzcGVjdHMgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBzeXN0ZW0uIE5vdywgbGV0J3Mgb3BlbiBpdCBhbmQgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE1NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjI0Ljg5NjE4NzVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjI2MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2X0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxNDoyNC45NDE0MTg0MDVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMzM5MTMwNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyNUUgQVhJIERNQSBDYWxpYnJhdGlvbiBDYWNoZSBGZWF0dXJlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgZW5hYmxpbmcgdGhpcyBuZXcgQVhJIERNQSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBMZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZC4gIGBNVDc5MjVFYCwgYE1BQzgwMjExYCwgYFdMQU5gLCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYCBhcmUgZGVmaW5pdGVseSBuZWNlc3NhcnkuIEknbSBub3RpbmcgdGhhdCBgUENJYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiB4ODYsIGFuZCBgTUFDODAyMTFgIGlzIHN0YW5kYXJkLCBzbyBJJ2xsIHRydXN0IHRob3NlIGFyZSBhbHJlYWR5IHRha2VuIGNhcmUgb2YuXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIEFQSSBlbnRyeXBvaW50cy4gIEkndmUgY2hlY2tlZCB0aGUgc3ltYm9sIGxpc3QsIGFuZCBpZGVudGlmaWVkOlxuXG4qICAgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YFxuKiAgIGBtdDc5MjVfYXhpZG1hX2FsbG9jYFxuKiAgIGBtdDc5MjVfYXhpZG1hX2ZyZWVgXG4qICAgYG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mb2BcbiogICBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYFxuKiAgIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgXG5cbkkndmUgYWxzbyBzZWVuIGEgZmV3IHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zOiBgbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dGAsIGBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplYCwgYG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90YCwgYG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibGAsIGFuZCBgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXRgLiBIb3dldmVyLCBzaW5jZSB0aGUgZ29hbCBpcyB0byBmYXZvciBub24tc3RhdGljIEFQSSBlbnRyeXBvaW50cyB0byBhbGxvdyBmdXp6aW5nLCBhbmQgdGhlc2UgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIEknbSBleGNsdWRpbmcgdGhlIHN0YXRpYyBvbmVzLlxuXG5JJ3ZlIHZlcmlmaWVkIHRoYXQgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YCBpcyBpbmRlZWQgbm9uLXN0YXRpYywgZGVmaW5lZCBpbiBgcGNpLmNgIGFuZCBleHBvcnRlZCBpbiBgbXQ3OTI1LmhgLCBhbmQgdGhlIG90aGVycyBhcmUgaW4gYGNhY2hlZF9jYWwuY2AgYW5kIGV4cG9ydGVkIGluIGBjYWNoZWRfY2FsLmhgLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBETUEgbWVtb3J5IG1hbmFnZW1lbnQsIE1DVSBtZXNzYWdpbmcgYW5kIHN0YXRlIGNvbnRyb2wgdG8gcmVkdWNlIGNvbXBsZXRlIGNhbGlicmF0aW9uIGJ5IHJldXNpbmcgY2FjaGVkIGRhdGEuIFRoaXMgd2lsbCBhZmZlY3QgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocy4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIG1ha2luZyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBzeXprYWxsZXIncyBQQ0kgZnV6emVyLlxuXG5Pa2F5LCBJJ20gY29tZm9ydGFibGUgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBhbmQgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjY2MCwiT3V0cHV0VG9rZW5zIjoyNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MzYuMjc1MzM0NzE1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzMTYyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0XCIsXG4gICAgXCJtdDc5MjVfYXhpZG1hX2FsbG9jXCIsXG4gICAgXCJtdDc5MjVfYXhpZG1hX2ZyZWVcIixcbiAgICBcIm10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mb1wiLFxuICAgIFwibXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsXCIsXG4gICAgXCJtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEFYSSBETUEgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBJdCBhZGRzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2luZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQgdG8gYnlwYXNzIGZ1bGwgY2FsaWJyYXRpb24gYnkgcmV1c2luZyBjYWNoZWQgZGF0YS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHBhdGhzLCByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgTU1JTy9ETUEgaW50ZXJhY3Rpb25zLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlcidzIFBDSSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRcIixcbiAgICBcIm10NzkyNV9heGlkbWFfYWxsb2NcIixcbiAgICBcIm10NzkyNV9heGlkbWFfZnJlZVwiLFxuICAgIFwibXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxcIixcbiAgICBcIm10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgcGF0aHMsIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MzYuMzU1NjU5MTg3WiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDM3ODIyMTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjM2LjM1NjMzMDIzN1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMDM3NzU0NjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hpbmcgbWVjaGFuaXNtIGZvciB0aGUgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB1c2luZyBBWEkgRE1BLiBBbGwgc3RydWN0dXJlcyBzZW50IHRvIHRoZSBNQ1UgKGUuZy4sIGBtdDc5MjVfYXhpZG1hX2luZm9fcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsYCwgYW5kIHRoZSBieXBhc3MgcmVxdWVzdCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgdXNpbmcgYGt6YWxsb2NgLCBgbWVtc2V0YCwgb3IgQyBzdHJ1Y3QgaW5pdGlhbGl6ZXJzLiBUaGUgRE1BIGJ1ZmZlciBpdHNlbGYgaXMgYWxsb2NhdGVkIHdpdGggYGRtYV9hbGxvY19jb2hlcmVudGAsIHdoaWNoIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBsZWFrZWQgdG8gdGhlIE1DVSBvciB1c2VyIHNwYWNlLCBub3IgaXMgdGhlcmUgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuaW5kZXggMGVkZWRhNTY5ZTlhNS4uZTQ2Y2I0YWUzN2E5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbkBAIC0xMzU3LDkgKzEzNTcsMTEgQEAgZW51bSB7XG4gXHRNQ1VfVU5JX0NNRF9BTExfU1RBX0lORk8gPSAweDZlLFxuIFx0TUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLFxuIFx0TUNVX1VOSV9DTURfRVhUX0VFUFJPTV9DVFJMID0gMHg3NCxcbitcdE1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YyxcbiBcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXG4gXHRNQ1VfVU5JX0NNRF9NTEQgPSAweDgyLFxuIFx0TUNVX1VOSV9DTURfU0RPID0gMHg4OCxcbitcdE1DVV9VTklfQ01EX0FYSURNQSA9IDB4YTIsXG4gfTtcbiBcbiBlbnVtIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5pbmRleCBmOWRjYzBiYmEzOTNjLi4zMzUzOTEyMWExNWNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5AQCAtNiw1ICs2LDUgQEAgb2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xuIFxuIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiBtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cbi1tdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuK210NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vIGNhY2hlZF9jYWwub1xuIG10NzkyNXUteSA6PSB1c2Iub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjAzYmQ2ODJmMTIyNGJcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xuQEAgLTAsMCArMSwzMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXCIuLi9tdDc5MnguaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuK1xuK3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuK3tcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXG4rXHRsLVx1MDAzZWNvbW1vbl9zdHJpZGUgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007XG4rXHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9HUlA7XG4rXHRsLVx1MDAzZWNoYW5uZWxfc3RyaWRlID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcbitcbitcdGwtXHUwMDNlY29tbW9uX29mZiAgPSAwO1xuK1x0bC1cdTAwM2Vncm91cF9vZmYgICA9IGwtXHUwMDNlY29tbW9uX29mZiArXG4rXHRcdGwtXHUwMDNlY29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07XG4rXHRsLVx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cdTAwM2Vncm91cF9vZmYgK1xuK1x0XHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07XG4rXHRsLVx1MDAzZW1hcHBpbmdfb2ZmID0gbC1cdTAwM2VjaGFubmVsX29mZiArXG4rXHRcdGwtXHUwMDNlY2hhbm5lbF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDtcbitcdGwtXHUwMDNldG90YWwgPSBsLVx1MDAzZW1hcHBpbmdfb2ZmICtcbitcdFx0c2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpO1xuK31cbitcbitzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDtcbitcbitcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXHUwMDI2bCk7XG4rXG4rXHRyZXR1cm4gbC50b3RhbDtcbit9XG4rXG4raW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHR1MzIgdG90YWxfc2l6ZTtcbitcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHR2b2lkICp2YTtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR0b3RhbF9zaXplID0gbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSgpO1xuK1xuK1x0dmEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCB0b3RhbF9zaXplLCBcdTAwMjZkbWFfYWRkcixcbitcdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0aWYgKCF2YSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xuK1x0ZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjtcbitcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuK1x0XHRcdCAgZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEsIGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyKTtcbitcbitcdG1lbXNldChcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbCwgMCwgc2l6ZW9mKGRldi1cdTAwM2VjYWNoZWRfY2FsKSk7XG4rfVxuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xuK1x0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoIWRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlbWFwX2Jhc2UgPSAodTMyKShkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciBcdTAwM2VcdTAwM2UgMTYpO1xuK1x0cGFfb2Zmc2V0ID0gKHUzMikoZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgXHUwMDI2IDB4RkZGRik7XG4rXG4rXHRyZXEtXHUwMDNlcmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApO1xuK1x0cmVxLVx1MDAzZXJlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlcmVtYXApKTtcbitcdHJlcS1cdTAwM2VyZW1hcC5yZW1hcF9hZGRyID0gY3B1X3RvX2xlMzIocmVtYXBfYmFzZSk7XG4rXG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwpO1xuK1x0cmVxLVx1MDAzZWZhY3RfY2FsLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlZmFjdF9jYWwpKTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSk7XG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgKyBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplIC0gMSk7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQVhJRE1BKSxcbitcdFx0XHRcdHJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTtcbitcbitcdGtmcmVlKHJlcSk7XG4rXG4rXHRpZiAocmV0KVxuK1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHRcImZhaWxlZCB0byBzZW5kIEFYSSBETUEgaW5mbzogJWRcXG5cIiwgcmV0KTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBib29sIG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpb25fb2ZmLFxuK1x0XHRcdFx0ICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsXG4rXHRcdFx0XHQgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSlcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbitcdHUzMiBvZmYgPSByZWdpb25fb2ZmICsgc3RyaWRlICogaWR4O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSB8fCBvZmYgKyBzaXplb2YoKmJpKSBcdTAwM2UgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0YmkgPSAoY29uc3Qgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyAqKVxuK1x0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xuK1x0aWYgKGNhbF9wYXJhbSlcbitcdFx0KmNhbF9wYXJhbSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZWNhbF9wYXJhbSk7XG4rXHRpZiAodG90YWxfYnVmX251bSlcbitcdFx0KnRvdGFsX2J1Zl9udW0gPSBsZTMyX3RvX2NwdShiaS1cdTAwM2V0b3RhbF9idWZfbnVtKTtcbitcdHJldHVybiB0cnVlO1xuK31cbitcbitzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKVxuK3tcbitcdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXHRkbWFfYWRkcl90IGJhc2UgPSBkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcjtcbitcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuK1xuK1x0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcdTAwMjZsKTtcbitcbitcdGNvbW1vbl9wYSAgPSBiYXNlICsgbC5jb21tb25fb2ZmO1xuK1x0Z3JvdXBfcGEgICA9IGJhc2UgKyBsLmdyb3VwX29mZjtcbitcdGNoYW5uZWxfcGEgPSBiYXNlICsgbC5jaGFubmVsX29mZjtcbitcdG1hcHBpbmdfcGEgPSBiYXNlICsgbC5tYXBwaW5nX29mZjtcbitcbitcdG1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7XG4rXG4rXHR0YmwtXHUwMDNlY29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xuK1x0dGJsLVx1MDAzZWNvbW1vbi5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjb21tb25fcGEpKTtcbitcdHRibC1cdTAwM2Vjb21tb24ub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY29tbW9uX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jaGFubmVsX3N0cmlkZSk7XG4rXG4rXHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKSB7XG4rXHRcdHUzMiBpLCBjYWxfcGFyYW0sIHRvdGFsX2J1Zl9udW07XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vjb21tb24uYmFuZFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsgaSsrKVxuK1x0XHRcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmdyb3VwX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNoYW5uZWxfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmNoYW5uZWxfc3RyaWRlLCBpLFxuK1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnRvdGFsX2J1Zl9udW0pKSB7XG4rXHRcdFx0XHR0YmwtXHUwMDNlY2hhbm5lbC5jYWxfcGFyYW1baV0gPVxuK1x0XHRcdFx0XHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xuK1x0XHRcdFx0dGJsLVx1MDAzZWNoYW5uZWwudG90YWxfYnVmX251bVtpXSA9XG4rXHRcdFx0XHRcdHRvdGFsX2J1Zl9udW0gXHUwMDI2IDB4ZmY7XG4rXHRcdFx0fVxuK1x0fVxuK1xuK1x0dGJsLVx1MDAzZWJ1Zl9pbmZvX3NpemUgPSBjcHVfdG9fbGUzMihoZHIpO1xuK1x0dGJsLVx1MDAzZXBoeV9hZGRyX2ggICAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcbitcdHRibC1cdTAwM2VwaHlfYWRkcl9sICAgID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY2FsX3R5cGUsXG4rXHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuK1x0XHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGRhdGFfbGVuKVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKGRhdGFfbGVuIFx1MDAzZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlcS1cdTAwM2VzZXQudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9TRVQpO1xuK1x0cmVxLVx1MDAzZXNldC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLVx1MDAzZXNldCkpO1xuK1x0cmVxLVx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XG4rXHRyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTtcbitcdHJlcS1cdTAwM2VzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTtcbitcdHJlcS1cdTAwM2VzZXQuZG9uZSA9IGRvbmU7XG4rXHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YV9sZW4pXG4rXHRcdG1lbWNweShyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhLCBkYXRhLCBkYXRhX2xlbik7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgQUNLIG9uIHRoZSBmaW5hbCBjaHVuayBvbmx5OiB0aGUgRlcgYXBwbGllcyB0aGUgd2hvbGVcbitcdCAqIHRhYmxlIHRoZXJlIChETUFzIHRoZSBjYWNoZWQgY29tbW9uIC8gcG93ZXItb24gZ3JvdXAgY2FsIGRhdGEgaW4gYW5kXG4rXHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXG4rXHQgKiBkcmFpbnMgdGhlIEFDS3MgdGhlIGVhcmxpZXIgY2h1bmtzIGxlZnQgaW4gdGhlIE1DVSByZXNwb25zZSBxdWV1ZSxcbitcdCAqIHNpbmNlIFVOSSBjb21tYW5kcyBhbHdheXMgcmVxdWVzdCBvbmUuXG4rXHQgKi9cbitcdHJldCA9IG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksXG4rXHRcdFx0XHRyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7XG4rXHRrZnJlZShyZXEpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDtcbitcdF9fbGUzMiBjZmdbTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOIC8gc2l6ZW9mKF9fbGUzMildID0gezB9O1xuK1x0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXRibClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmwoZGV2LCB0YmwpO1xuK1xuK1x0Y2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTtcbitcdGNmZ1syXSA9IGNwdV90b19sZTMyKE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYKTtcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XCJmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0c2VxLCByZXQpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGxlZnQgPSBzaXplb2YoKnRibCk7XG4rXHR3aGlsZSAobGVmdCkge1xuK1x0XHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xuK1xuK1x0XHRyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsXG4rXHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuK1x0XHRcdFx0XHRcdCAgICArK3NlcSwgZmFsc2UsXG4rXHRcdFx0XHRcdFx0ICAgICh1OCAqKXRibCArIG9mZiwgY2h1bmspO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XHRcImZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0XHRzZXEsIG9mZiwgY2h1bmssIHJldCk7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbitcbitcdFx0b2ZmICArPSBjaHVuaztcbitcdFx0bGVmdCAtPSBjaHVuaztcbitcdH1cbitcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICArK3NlcSwgdHJ1ZSwgTlVMTCwgMCk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFwiZmFjdC1jYWwgbWFwcGluZyB0YmwgZG9uZSBzZW5kIGZhaWxlZCAoc2VxPSV1KTogJWRcXG5cIixcbitcdFx0XHRzZXEsIHJldCk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK291dDpcbitcdGtmcmVlKHRibCk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuK3tcbitcdHN0cnVjdCB7XG4rXHRcdHU4IF9yc3ZbNF07XG4rXG4rXHRcdHN0cnVjdCB7XG4rXHRcdFx0X19sZTE2IHRhZztcbitcdFx0XHRfX2xlMTYgbGVuO1xuK1x0XHRcdF9fbGUzMiBkYXRhO1xuK1x0XHR9IF9fcGFja2VkIHVwZGF0ZV9mbGFnO1xuK1x0fSByZXEgPSB7XG4rXHRcdC51cGRhdGVfZmxhZyA9IHtcbitcdFx0XHQudGFnICA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcpLFxuK1x0XHRcdC5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLFxuK1x0XHRcdC5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLFxuK1x0XHR9LFxuK1x0fTtcbitcbitcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxuK1x0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjU3MjUxM2I3NjQ2NlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5AQCAtMCwwICsxLDE1MSBAQFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cbisvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqL1xuK1xuKyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcbisjZGVmaW5lIF9fQ0FDSEVEX0NBTF9IXG4rXG4rZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcbitcdE1UNzkyNV9BWElETUFfVEFHX1JFTUFQID0gMCxcbitcdE1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMID0gMSxcbitcdE1UNzkyNV9BWElETUFfVEFHX05VTVxuK307XG4rXG4rZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfVFJJR0dFUlx0PSAyLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19VUERBVEVfRkxBR1x0PSAzLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVRcdD0gNCxcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUXHQ9IDUsXG4rfTtcbitcbitlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX0NPTU1PTlx0XHQ9IDAsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFx0XHQ9IDEsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DSEFOTkVMXHRcdD0gMixcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMXHQ9IDQsXG4rfTtcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5cdFx0MTQwMFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXHRcdFx0MTZcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYXHQ0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOXHRcdDRcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXG4rXHQoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVggKiBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOKVxuK1xuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVx0XHQyXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXHRcdDM1XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHXHRcdDE0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXHRcdDY4XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHXHRcdDEwOVxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEwgXFxcbitcdChNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICsgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV81RyArIFxcXG4rXHQgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RylcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NXHRcdFx0NjAwXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUFx0XHRcdDQ1MDBcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0hcdFx0XHQyODAwXG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7XG4rXHRfX2xlMzIgY2FsX3R5cGU7XG4rXHRfX2xlMzIgY2FsX3BhcmFtO1xuK1x0X19sZTMyIGJ1Zl9zZXFfbnVtO1xuK1x0X19sZTMyIHRvdGFsX2J1Zl9udW07XG4rXHRfX2xlMzIgYnVmX2RhdGFfbGVuO1xuK1x0dTggdmFsaWQ7XG4rXHR1OCBkb25lO1xuK1x0dTggcnN2WzJdO1xuK1x0X19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCxcbitcdCAgICAgIFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVwiKTtcbitcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xuK1x0dTggcnN2WzJdO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBncm91cFtNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXTtcbitcdHU4IHJzdjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHRfX2xlMzIgY2FsX3BhcmFtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTtcbitcdHU4IHRvdGFsX2J1Zl9udW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdO1xuK1x0dTggcnN2O1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAgY29tbW9uO1xuK1x0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAgZ3JvdXA7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XG4rXHRfX2xlMzIgYnVmX2luZm9fc2l6ZTtcbitcdF9fbGUzMiBwaHlfYWRkcl9oO1xuK1x0X19sZTMyIHBoeV9hZGRyX2w7XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuK1x0ICAgICAgXCJtYXBwaW5nIHRhYmxlIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoMTA0NCBieXRlcykgb3IgdGhlIEZXIHBhcnNlIGNvcnJ1cHRzXCIpO1xuK1xuK3N0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCB7XG4rXHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4rXHR1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTtcbitcdHUzMiB0b3RhbDtcbit9O1xuK1xuK3N0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxIHtcbitcdHU4IF9yc3ZbNF07XG4rXG4rXHRzdHJ1Y3Qge1xuK1x0XHRfX2xlMTYgdGFnO1xuK1x0XHRfX2xlMTYgbGVuO1xuK1x0XHRfX2xlMzIgcmVtYXBfYWRkcjtcbitcdFx0X19sZTMyIHJlc2VydmVkO1xuK1x0fSBfX3BhY2tlZCByZW1hcDtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xuK1x0XHRfX2xlMzIgc2l6ZTtcbitcdFx0X19sZTMyIGJvdW5kO1xuK1x0XHRfX2xlMzIgcmVzZXJ2ZWQ7XG4rXHR9IF9fcGFja2VkIGZhY3RfY2FsO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEge1xuK1x0dTggX3Jzdls0XTtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBkYXRhO1xuK1x0XHRfX2xlMzIgc2VxX251bTtcbitcdFx0X19sZTMyIGJ1Zl9kYXRhX2xlbjtcbitcdFx0dTggY2FsX3R5cGU7XG4rXHRcdHU4IGRvbmU7XG4rXHRcdHU4IHJzdlsyXTtcbitcdFx0dTggYnVmX2RhdGFbTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTl07XG4rXHR9IF9fcGFja2VkIHNldDtcbit9IF9fcGFja2VkO1xuK1xuK2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKTtcbitcbisjZW5kaWYgLyogX19DQUNIRURfQ0FMX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzUzLDYgKzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbiBcbiBpbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4gaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rdm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbiB2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKTtcbiB2b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZXZ0KTtcbiB2b2lkIG10NzkyNV9zZXRfcnVudGltZV9wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5pbmRleCAwMmVmMDlkZDc5N2RhLi43MjRhYmQyYmU1N2M1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcIm1hYy5oXCJcbiAjaW5jbHVkZSBcIm1jdS5oXCJcbiAjaW5jbHVkZSBcInJlZ2QuaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuICNpbmNsdWRlIFwiLi4vZG1hLmhcIlxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xuQEAgLTM4LDYgKzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XG4gfVxuIFxuKy8qIFNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRldcbisgKiByZWFjaGVzIHRoZSBidWZmZXIgdGhyb3VnaCBBWEkgRE1BLCBzbyBpdCBoYXMgbm8gbWVhbmluZyBvbiBvdGhlciBidXNlcy5cbisgKiBFdmVyeSBmYWlsdXJlIGp1c3QgbGVhdmVzIHRoZSBjYWNoZSBvZmYsIHdoaWNoIGlzIG5vdCBmYXRhbC5cbisgKi9cbit2b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCEoZGV2LVx1MDAzZXBoeS5jaGlwX2NhcCBcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSkge1xuK1x0XHQvKiBDYXJyaWVkLW92ZXIgYnVmZmVyIHN0aWxsIGhvbGRzIEZXLXdyaXR0ZW4gY2FsIGRhdGEuICovXG4rXHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IHRydWU7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAobXQ3OTI1X2F4aWRtYV9hbGxvYyhkZXYpKSB7XG4rXHRcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFx0IFwiQVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ1ZmZlciBhbGxvYyBmYWlsZWRcXG5cIik7XG4rXHRcdFx0cmV0dXJuO1xuK1x0XHR9XG4rXHRcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cbitcdFx0ZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkID0gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBpbmZvIGNtZCB0byBGVyBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdC8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhXG4rXHQgKiAoY29tbW9uIC8gcG93ZXItb24gZ3JvdXApIGluc3RlYWQgb2YgcnVubmluZyBhIGZ1bGwgY2FsaWJyYXRpb247XG4rXHQgKiBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIG1hcHBpbmcgdGFibGUgaXMgc2VudC5cbitcdCAqL1xuK1x0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIHRydWUpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxcblwiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChkZXYpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCBmYWxzZSkpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRkZXZfaW5mbyhkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxuXCIsXG4rXHRcdCBcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSxcbitcdFx0IGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRpbnQgaTtcbkBAIC01OCw2ICsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXG4gXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XG4gXHRfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpO1xuK1xuK1x0bXQ3OTI1X2F4aWRtYV9mcmVlKGRldik7XG4rXG4gXHRtdDc5MnhfZG1hX2NsZWFudXAoZGV2KTtcbiBcdG10NzkyeF93ZnN5c19yZXNldChkZXYpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG5AQCAtNTg3LDcgKzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGlzX210NzkyOF9odyA9IChwZGV2LVx1MDAzZWRldmljZSA9PSAweDc5MjggfHwgcGRldi1cdTAwM2VkZXZpY2UgPT0gMHg3OTM1KTtcbiBcbiBcdGlmIChpc19tdDc5MjhfaHcpXG4tXHRcdHJldCA9IGRtYV9zZXRfbWFzayhcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XG4rXHRcdHJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzNCkpO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuaW5kZXggODQ3N2QyMWFiYzY2MC4uYzkwZjEyOWIzYTM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG5AQCAtMTM1LDYgKzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuK1xuIFx0ZXJyID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbmluZGV4IDcyNzA3ZWRkYzNkYjYuLjI1OGYzNzUzZGIxZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuQEAgLTQ2LDYgKzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdG10NzZfcm13X2ZpZWxkKGRldiwgZGV2LVx1MDAzZXBjaWVfcmVnLVx1MDAzZXBtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTtcbiBcbiBcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbitcdGlmICghZXJyKVxuK1x0XHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuIFxuIFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5pbmRleCA5ZWZjMjUxY2I3NDVmLi43NDBkNTE3ZWIzOGJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTMzLDYgKzMzLDcgQEBcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KVxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuKyNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTiBCSVQoMTYpXG4gXG4gLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYgZmlybXdhcmUgZXhwYW5kcyB0YWJsZSAqL1xuICNkZWZpbmUgTVQ3OTJ4X0JBU0lDX1JBVEVTX1RCTFx0MTRcbkBAIC0zNDIsNiArMzQzLDEzIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpuYW5fdmlmO1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zO1xuIFx0aW50IG5faWZhY2VfY29tYmluYXRpb25zO1xuK1xuK1x0c3RydWN0IHtcbitcdFx0dm9pZCAqdmE7XG4rXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHRcdHUzMiBzaXplO1xuK1x0XHRib29sIHJldXNlZDtcbitcdH0gY2FjaGVkX2NhbDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxNDozNi4zNTYzMzExMDdaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAzNzc1MjI4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQ2hlY2s6IE1UNzkyNSBGYWN0b3J5IENhbGlicmF0aW9uIERhdGEgQ2FjaGluZyB3aXRoIEFYSSBETUEqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmVhdHVyZSBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIsIGFsbG93aW5nIGZvciBjYWNoaW5nIG9mIGZhY3RvcnkgY2FsaWJyYXRpb24gZGF0YSB1c2luZyBBWEkgRE1BLiBNeSBpbml0aWFsIGZvY3VzLCBhcyBhbHdheXMsIGlzIG9uIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZSBjb2RlIGFsbG9jYXRlcyBhIERNQSBidWZmZXIgdXNpbmcgYGRtYV9hbGxvY19jb2hlcmVudGAsIHNlbmRzIGl0cyBhZGRyZXNzIHRvIHRoZSBNQ1UsIGFuZCBhbHNvIHNlbmRzIGEgbWFwcGluZyB0YWJsZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGlmIHRoZXJlIGFyZSBhbnkgdW5pbml0aWFsaXplZCBmaWVsZHMgYmVpbmcgc2VudCB0byB0aGUgTUNVLCBvciBldmVuIHdvcnNlLCB1c2VyIHNwYWNlLlxuXG5MZXQgbWUgZ28gdGhyb3VnaCB0aGUga2V5IGFyZWFzIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgSSBleGFtaW5lZCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYC4gSGVyZSwgYSBgcmVxYCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYC4gR29vZCwgYGt6YWxsb2NgIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbi4gVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuIFRoZSBjb2RlIHRoZW4gcG9wdWxhdGVzIHNvbWUgZmllbGRzIHJlbGF0ZWQgdG8gRE1BIHJlbWFwcGluZyBhbmQgZmFjdG9yeSBjYWxpYnJhdGlvbiBkYXRhLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoYXQgYGt6YWxsb2NgIHRha2VzIGNhcmUgb2YgdGhlIGluaXRpYWxpemF0aW9uLlxuXG5OZXh0LCBgbXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsYCBpcyBleGFtaW5lZC4gVGhlIGNvZGUgaW5pdGlhbGl6ZXMgYHRibGAgc3RydWN0dXJlIGJ5IGNhbGxpbmcgYG1lbXNldGAsIHNvIGl0IGlzIGZ1bGx5IHplcm9lZC5cblxuSSBhbHNvIGNoZWNrZWQgYG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0YC4gVGhlIGByZXFgIGlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgdGhlcmUgdG9vLCB3aGljaCBlbnN1cmVzIHRoZSBidWZmZXIgaXMgemVyb2VkLCBhbmQgYW55IGRhdGEgY29waWVkIGludG8gYHJlcS1cdTAwM2VzZXQuYnVmX2RhdGFgIHdpbGwgYmUgcG9wdWxhdGVkIGZyb20gZGF0YSBwYXNzZWQgaW4gdGhlIGZ1bmN0aW9uLlxuXG5UaGVuLCB0aGVyZSdzIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgLiBUaGlzIG9uZSBoYWQgYSBiaXQgb2YgYW4gaW50ZXJlc3Rpbmcgc3RydWN0dXJlIHdpdGggYSByZXNlcnZlZCBmaWVsZCBgX3JzdmAuIEJ1dCwgc2luY2UgdGhlIHN0cnVjdHVyZSB1c2VzIGFuIGluaXRpYWxpemVyLCB0aGUgQyBzdGFuZGFyZCBndWFyYW50ZWVzIHRoYXQgdGhlIHVuaW5pdGlhbGl6ZWQgbWVtYmVycyB3aWxsIGFsc28gYmUgemVyby1pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBgX3JzdmAgd2lsbCBhbHNvIGJlIHplcm8uXG5cbkxldCdzIG5vdCBmb3JnZXQgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAgd2hpY2ggdXNlcyBgX19sZTMyIGNmZ1tdID0gezB9YC4gVGhlIGBjZmdgIHZhcmlhYmxlIGlzIGFsc28gZnVsbHkgemVyb2VkLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVPyBObywgaXQncyBqdXN0IGByZXFgIGFuZCBgdGJsYC4gSSdtIHN5c3RlbWF0aWNhbGx5IGdvaW5nIHRocm91Z2ggdGhlIGNvZGUuXG5cblRoZW4gSSBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUgd2VyZSBhbnkgcmVhZHMgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSW4gYG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90YCwgdGhlcmUncyBhIHJlYWQgZnJvbSBgZGV2LVx1MDAzZWNhY2hlZF9jYWwudmFgLiBBaCwgYnV0IHRoYXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBieSBgZG1hX2FsbG9jX2NvaGVyZW50YC4gVGhpcyBmdW5jdGlvbiB6ZXJvcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgcmVhZCBvcGVyYXRpb24gd29uJ3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YS4gU3BlY2lmaWNhbGx5LCBJIGNvbmZpcm1lZCB0aGF0IGBkbWFfYWxsb2NfY29oZXJlbnRgIHplcm8taW5pdGlhbGl6ZXMgdGhlIG1lbW9yeS5cblxuQXJlIHRoZXJlIGFueSB3cml0ZXMgdG8gdXNlciBzcGFjZT8gTm8sIHRoaXMgaXMgYWxsIGludGVybmFsIGNvbW11bmljYXRpb24gd2l0aCB0aGUgTUNVLlxuXG5Hb2luZyBiYWNrIHRvIHRoZSBgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXRgLCBga3phbGxvY2AgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvIGhlcmUgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IGhhcHBlbnMuXG5cbkkgZGlkIGEgZG91YmxlIGNoZWNrIG9mIHRoZSBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYCBzdHJ1Y3R1cmUgYWdhaW4sIHRvIG1ha2Ugc3VyZSBpdCBpcyBpbmRlZWQgemVybyBpbml0aWFsaXplZC5cblxuRmluYWxseSwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAgaXMgYWxzbyBjaGVja2VkIHRvIGJlIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYC5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBjb25maWRlbnQgdGhhdCBhbGwgc3RydWN0dXJlcyBzZW50IHRvIHRoZSBNQ1UgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgc2VudCB0byBlaXRoZXIgdGhlIE1DVSBvciwgdml0YWxseSwgdXNlciBzcGFjZS4gVGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgS0FTQU4gb3IgS01TQU4gaXNzdWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhZGRyZXNzaW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcywgYW5kIHNvIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ3MywiT3V0cHV0VG9rZW5zIjoyMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6NTYuNzMzODU2ODQ3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdXNpbmcgQVhJIERNQS4gQWxsIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVIChlLmcuLCBgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCB0aGUgYnlwYXNzIHJlcXVlc3QpIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIHVzaW5nIGBremFsbG9jYCwgYG1lbXNldGAsIG9yIEMgc3RydWN0IGluaXRpYWxpemVycy4gVGhlIERNQSBidWZmZXIgaXRzZWxmIGlzIGFsbG9jYXRlZCB3aXRoIGBkbWFfYWxsb2NfY29oZXJlbnRgLCB3aGljaCBndWFyYW50ZWVzIHplcm8taW5pdGlhbGl6YXRpb24uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkIHRvIHRoZSBNQ1Ugb3IgdXNlciBzcGFjZSwgbm9yIGlzIHRoZXJlIGFueSBjb250cm9sIGZsb3cgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgqg87[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-10 06:10:03 +0000 UTC FinishedAt: 2026-08-10 06:14:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4df22710a77d2365e56d720bc4106e54c1dfa2ff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MAC80211", "WLAN", "WLAN_VENDOR_MEDIATEK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4df22710a77d2365e56d720bc4106e54c1dfa2ff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925E", "MAC80211", "WLAN", "WLAN_VENDOR_MEDIATEK" ], "series_id": "9f4b1f23-bebd-42b7-be0d-58ad19686601" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925e_axidma_cal_cache_init", "mt7925_axidma_alloc", "mt7925_axidma_free", "mt7925_mcu_send_axidma_info", "mt7925_mcu_send_fact_cal_mapping_tbl", "mt7925_mcu_fact_cal_set_bypass" ], "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+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfYWxsb2MmIzM0OywKICAgICYjMzQ7bXQ3OTI1X2F4aWRtYV9mcmVlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hpbmcgbWVjaGFuaXNtIGZvciB0aGUgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB1c2luZyBBWEkgRE1BLiBBbGwgc3RydWN0dXJlcyBzZW50IHRvIHRoZSBNQ1UgKGUuZy4sIGBtdDc5MjVfYXhpZG1hX2luZm9fcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsYCwgYW5kIHRoZSBieXBhc3MgcmVxdWVzdCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgdXNpbmcgYGt6YWxsb2NgLCBgbWVtc2V0YCwgb3IgQyBzdHJ1Y3QgaW5pdGlhbGl6ZXJzLiBUaGUgRE1BIGJ1ZmZlciBpdHNlbGYgaXMgYWxsb2NhdGVkIHdpdGggYGRtYV9hbGxvY19jb2hlcmVudGAsIHdoaWNoIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBsZWFrZWQgdG8gdGhlIE1DVSBvciB1c2VyIHNwYWNlLCBub3IgaXMgdGhlcmUgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBBWEkgRE1BIGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGUgZmVhdHVyZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIFdpLUZpIGRyaXZlci4gSXQgYWRkcyBETUEgbWVtb3J5IGFsbG9jYXRpb24sIE1DVSBtZXNzYWdpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHRvIGJ5cGFzcyBmdWxsIGNhbGlicmF0aW9uIGJ5IHJldXNpbmcgY2FjaGVkIGRhdGEuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgcGF0aHMsIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbmluZGV4IDBlZGVkYTU2OWU5YTUuLmU0NmNiNGFlMzdhOTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXG5AQCAtMTM1Nyw5ICYjNDM7MTM1NywxMSBAQCBlbnVtIHtcbiBcdE1DVV9VTklfQ01EX0FMTF9TVEFfSU5GTyA9IDB4NmUsXG4gXHRNQ1VfVU5JX0NNRF9BU1NFUlRfRFVNUCA9IDB4NmYsXG4gXHRNQ1VfVU5JX0NNRF9FWFRfRUVQUk9NX0NUUkwgPSAweDc0LFxuJiM0MztcdE1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YyxcbiBcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXG4gXHRNQ1VfVU5JX0NNRF9NTEQgPSAweDgyLFxuIFx0TUNVX1VOSV9DTURfU0RPID0gMHg4OCxcbiYjNDM7XHRNQ1VfVU5JX0NNRF9BWElETUEgPSAweGEyLFxuIH07XG4gXG4gZW51bSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxuaW5kZXggZjlkY2MwYmJhMzkzYy4uMzM1MzkxMjFhMTVjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxuQEAgLTYsNSAmIzQzOzYsNSBAQCBvYmotJChDT05GSUdfTVQ3OTI1VSkgJiM0Mzs9IG10NzkyNXUub1xuIFxuIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiBtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4tbXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbiYjNDM7bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8gY2FjaGVkX2NhbC5vXG4gbXQ3OTI1dS15IDo9IHVzYi5vXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDNiZDY4MmYxMjI0YlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jXG5AQCAtMCwwICYjNDM7MSwzMDQgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuJiM0MzsvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDsuLi9tdDc5MnguaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtjYWNoZWRfY2FsLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuJiM0Mzt7XG4mIzQzO1x0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcbiYjNDM7XG4mIzQzO1x0bC1cdTAwM2Vjb21tb25fc3RyaWRlICA9IGhkciAmIzQzOyBNVDc5MjVfRkFDVF9DQUxfTEVOX0NPTTtcbiYjNDM7XHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQO1xuJiM0MztcdGwtXHUwMDNlY2hhbm5lbF9zdHJpZGUgPSBoZHIgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcbiYjNDM7XG4mIzQzO1x0bC1cdTAwM2Vjb21tb25fb2ZmICA9IDA7XG4mIzQzO1x0bC1cdTAwM2Vncm91cF9vZmYgICA9IGwtXHUwMDNlY29tbW9uX29mZiAmIzQzO1xuJiM0MztcdFx0bC1cdTAwM2Vjb21tb25fc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTTtcbiYjNDM7XHRsLVx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cdTAwM2Vncm91cF9vZmYgJiM0MztcbiYjNDM7XHRcdGwtXHUwMDNlZ3JvdXBfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTtcbiYjNDM7XHRsLVx1MDAzZW1hcHBpbmdfb2ZmID0gbC1cdTAwM2VjaGFubmVsX29mZiAmIzQzO1xuJiM0MztcdFx0bC1cdTAwM2VjaGFubmVsX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMO1xuJiM0MztcdGwtXHUwMDNldG90YWwgPSBsLVx1MDAzZW1hcHBpbmdfb2ZmICYjNDM7XG4mIzQzO1x0XHRzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IGw7XG4mIzQzO1xuJiM0MztcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXHUwMDI2bCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBsLnRvdGFsO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X2F4aWRtYV9hbGxvYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0dTMyIHRvdGFsX3NpemU7XG4mIzQzO1x0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHR2b2lkICp2YTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHRvdGFsX3NpemUgPSBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplKCk7XG4mIzQzO1xuJiM0MztcdHZhID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldi1cdTAwM2VtdDc2LmRldiwgdG90YWxfc2l6ZSwgXHUwMDI2ZG1hX2FkZHIsXG4mIzQzO1x0XHRcdFx0R0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCF2YSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xuJiM0MztcdGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyID0gZG1hX2FkZHI7XG4mIzQzO1x0ZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSA9IHRvdGFsX3NpemU7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuJiM0MztcdFx0XHQgIGRldi1cdTAwM2VjYWNoZWRfY2FsLnZhLCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcik7XG4mIzQzO1xuJiM0MztcdG1lbXNldChcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbCwgMCwgc2l6ZW9mKGRldi1cdTAwM2VjYWNoZWRfY2FsKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxICpyZXE7XG4mIzQzO1x0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXJlcSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRyZW1hcF9iYXNlID0gKHUzMikoZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgXHUwMDNlXHUwMDNlIDE2KTtcbiYjNDM7XHRwYV9vZmZzZXQgPSAodTMyKShkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciBcdTAwMjYgMHhGRkZGKTtcbiYjNDM7XG4mIzQzO1x0cmVxLVx1MDAzZXJlbWFwLnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9BWElETUFfVEFHX1JFTUFQKTtcbiYjNDM7XHRyZXEtXHUwMDNlcmVtYXAubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS1cdTAwM2VyZW1hcCkpO1xuJiM0MztcdHJlcS1cdTAwM2VyZW1hcC5yZW1hcF9hZGRyID0gY3B1X3RvX2xlMzIocmVtYXBfYmFzZSk7XG4mIzQzO1xuJiM0MztcdHJlcS1cdTAwM2VmYWN0X2NhbC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCk7XG4mIzQzO1x0cmVxLVx1MDAzZWZhY3RfY2FsLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlZmFjdF9jYWwpKTtcbiYjNDM7XHRyZXEtXHUwMDNlZmFjdF9jYWwuaG9zdF9hZGRyX29mZnNldCA9IGNwdV90b19sZTMyKHBhX29mZnNldCk7XG4mIzQzO1x0cmVxLVx1MDAzZWZhY3RfY2FsLnNpemUgPSBjcHVfdG9fbGUzMihkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplKTtcbiYjNDM7XHRyZXEtXHUwMDNlZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgJiM0MzsgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSAtIDEpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQVhJRE1BKSxcbiYjNDM7XHRcdFx0XHRyZXEsIHNpemVvZigqcmVxKSwgdHJ1ZSk7XG4mIzQzO1xuJiM0MztcdGtmcmVlKHJlcSk7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbiYjNDM7XHRcdFx0XCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQVhJIERNQSBpbmZvOiAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgbXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lvbl9vZmYsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHUzMiAqY2FsX3BhcmFtLCB1MzIgKnRvdGFsX2J1Zl9udW0pXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbiYjNDM7XHR1MzIgb2ZmID0gcmVnaW9uX29mZiAmIzQzOyBzdHJpZGUgKiBpZHg7XG4mIzQzO1xuJiM0MztcdGlmICghZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgfHwgb2ZmICYjNDM7IHNpemVvZigqYmkpIFx1MDAzZSBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRiaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopXG4mIzQzO1x0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgJiM0Mzsgb2ZmKTtcbiYjNDM7XHRpZiAoY2FsX3BhcmFtKVxuJiM0MztcdFx0KmNhbF9wYXJhbSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZWNhbF9wYXJhbSk7XG4mIzQzO1x0aWYgKHRvdGFsX2J1Zl9udW0pXG4mIzQzO1x0XHQqdG90YWxfYnVmX251bSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZXRvdGFsX2J1Zl9udW0pO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbiYjNDM7XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibClcbiYjNDM7e1xuJiM0MztcdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbiYjNDM7XHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xuJiM0MztcdGRtYV9hZGRyX3QgYmFzZSA9IGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyO1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuJiM0MztcbiYjNDM7XHRtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KFx1MDAyNmwpO1xuJiM0MztcbiYjNDM7XHRjb21tb25fcGEgID0gYmFzZSAmIzQzOyBsLmNvbW1vbl9vZmY7XG4mIzQzO1x0Z3JvdXBfcGEgICA9IGJhc2UgJiM0MzsgbC5ncm91cF9vZmY7XG4mIzQzO1x0Y2hhbm5lbF9wYSA9IGJhc2UgJiM0MzsgbC5jaGFubmVsX29mZjtcbiYjNDM7XHRtYXBwaW5nX3BhID0gYmFzZSAmIzQzOyBsLm1hcHBpbmdfb2ZmO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpO1xuJiM0MztcbiYjNDM7XHR0YmwtXHUwMDNlY29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xuJiM0MztcdHRibC1cdTAwM2Vjb21tb24ucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY29tbW9uX3BhKSk7XG4mIzQzO1x0dGJsLVx1MDAzZWNvbW1vbi5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jb21tb25fc3RyaWRlKTtcbiYjNDM7XG4mIzQzO1x0dGJsLVx1MDAzZWdyb3VwLnBoeV9hZGRyX2ggID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhncm91cF9wYSkpO1xuJiM0MztcdHRibC1cdTAwM2Vncm91cC5waHlfYWRkcl9sICA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoZ3JvdXBfcGEpKTtcbiYjNDM7XHR0YmwtXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XG4mIzQzO1xuJiM0MztcdHRibC1cdTAwM2VjaGFubmVsLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNoYW5uZWxfcGEpKTtcbiYjNDM7XHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4mIzQzO1x0dGJsLVx1MDAzZWNoYW5uZWwub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY2hhbm5lbF9zdHJpZGUpO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKSB7XG4mIzQzO1x0XHR1MzIgaSwgY2FsX3BhcmFtLCB0b3RhbF9idWZfbnVtO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBsLmNvbW1vbl9zdHJpZGUsIGksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sIE5VTEwpKVxuJiM0MztcdFx0XHRcdHRibC1cdTAwM2Vjb21tb24uYmFuZFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbiYjNDM7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5ncm91cF9vZmYsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBsLmdyb3VwX3N0cmlkZSwgaSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmNhbF9wYXJhbSwgTlVMTCkpXG4mIzQzO1x0XHRcdFx0dGJsLVx1MDAzZWdyb3VwLmdyb3VwW2ldID0gY2FsX3BhcmFtIFx1MDAyNiAweGZmO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGwuY2hhbm5lbF9zdHJpZGUsIGksXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0b3RhbF9idWZfbnVtKSkge1xuJiM0MztcdFx0XHRcdHRibC1cdTAwM2VjaGFubmVsLmNhbF9wYXJhbVtpXSA9XG4mIzQzO1x0XHRcdFx0XHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xuJiM0MztcdFx0XHRcdHRibC1cdTAwM2VjaGFubmVsLnRvdGFsX2J1Zl9udW1baV0gPVxuJiM0MztcdFx0XHRcdFx0dG90YWxfYnVmX251bSBcdTAwMjYgMHhmZjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0dGJsLVx1MDAzZWJ1Zl9pbmZvX3NpemUgPSBjcHVfdG9fbGUzMihoZHIpO1xuJiM0MztcdHRibC1cdTAwM2VwaHlfYWRkcl9oICAgID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7XG4mIzQzO1x0dGJsLVx1MDAzZXBoeV9hZGRyX2wgICAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSxcbiYjNDM7XHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuJiM0MztcdFx0XHRcdFx0IGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBkYXRhX2xlbilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKGRhdGFfbGVuIFx1MDAzZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRpZiAoIXJlcSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRyZXEtXHUwMDNlc2V0LnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUKTtcbiYjNDM7XHRyZXEtXHUwMDNlc2V0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlc2V0KSk7XG4mIzQzO1x0cmVxLVx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XG4mIzQzO1x0cmVxLVx1MDAzZXNldC5idWZfZGF0YV9sZW4gPSBjcHVfdG9fbGUzMihkYXRhX2xlbik7XG4mIzQzO1x0cmVxLVx1MDAzZXNldC5jYWxfdHlwZSA9IGNhbF90eXBlO1xuJiM0MztcdHJlcS1cdTAwM2VzZXQuZG9uZSA9IGRvbmU7XG4mIzQzO1x0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFfbGVuKVxuJiM0MztcdFx0bWVtY3B5KHJlcS1cdTAwM2VzZXQuYnVmX2RhdGEsIGRhdGEsIGRhdGFfbGVuKTtcbiYjNDM7XG4mIzQzO1x0LyogV2FpdCBmb3IgdGhlIEFDSyBvbiB0aGUgZmluYWwgY2h1bmsgb25seTogdGhlIEZXIGFwcGxpZXMgdGhlIHdob2xlXG4mIzQzO1x0ICogdGFibGUgdGhlcmUgKERNQXMgdGhlIGNhY2hlZCBjb21tb24gLyBwb3dlci1vbiBncm91cCBjYWwgZGF0YSBpbiBhbmRcbiYjNDM7XHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXG4mIzQzO1x0ICogZHJhaW5zIHRoZSBBQ0tzIHRoZSBlYXJsaWVyIGNodW5rcyBsZWZ0IGluIHRoZSBNQ1UgcmVzcG9uc2UgcXVldWUsXG4mIzQzO1x0ICogc2luY2UgVU5JIGNvbW1hbmRzIGFsd2F5cyByZXF1ZXN0IG9uZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxuJiM0MztcdFx0XHRcdHJlcSwgc2l6ZW9mKCpyZXEpLCBkb25lKTtcbiYjNDM7XHRrZnJlZShyZXEpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsICp0Ymw7XG4mIzQzO1x0X19sZTMyIGNmZ1tNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4gLyBzaXplb2YoX19sZTMyKV0gPSB7MH07XG4mIzQzO1x0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCF0YmwpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsKGRldiwgdGJsKTtcbiYjNDM7XG4mIzQzO1x0Y2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTtcbiYjNDM7XHRjZmdbMl0gPSBjcHVfdG9fbGUzMihNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWCk7XG4mIzQzO1x0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcbiYjNDM7XHRcdFx0XHRcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbiYjNDM7XHRcdFx0XCYjMzQ7ZmFjdC1jYWwgbWFwcGluZyB0YmwgaGVhZGVyIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0c2VxLCByZXQpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRsZWZ0ID0gc2l6ZW9mKCp0YmwpO1xuJiM0MztcdHdoaWxlIChsZWZ0KSB7XG4mIzQzO1x0XHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xuJiM0MztcbiYjNDM7XHRcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldixcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgJiM0MzsmIzQzO3NlcSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAodTggKil0YmwgJiM0Mzsgb2ZmLCBjaHVuayk7XG4mIzQzO1x0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHRcdFwmIzM0O2ZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdHNlcSwgb2ZmLCBjaHVuaywgcmV0KTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0b2ZmICAmIzQzOz0gY2h1bms7XG4mIzQzO1x0XHRsZWZ0IC09IGNodW5rO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcbiYjNDM7XHRcdFx0XHRcdCAgICAmIzQzOyYjNDM7c2VxLCB0cnVlLCBOVUxMLCAwKTtcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbiYjNDM7XHRcdFx0XCYjMzQ7ZmFjdC1jYWwgbWFwcGluZyB0YmwgZG9uZSBzZW5kIGZhaWxlZCAoc2VxPSV1KTogJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdHNlcSwgcmV0KTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiYjNDM7b3V0OlxuJiM0MztcdGtmcmVlKHRibCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTggX3Jzdls0XTtcbiYjNDM7XG4mIzQzO1x0XHRzdHJ1Y3Qge1xuJiM0MztcdFx0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0XHRfX2xlMTYgbGVuO1xuJiM0MztcdFx0XHRfX2xlMzIgZGF0YTtcbiYjNDM7XHRcdH0gX19wYWNrZWQgdXBkYXRlX2ZsYWc7XG4mIzQzO1x0fSByZXEgPSB7XG4mIzQzO1x0XHQudXBkYXRlX2ZsYWcgPSB7XG4mIzQzO1x0XHRcdC50YWcgID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19VUERBVEVfRkxBRyksXG4mIzQzO1x0XHRcdC5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLFxuJiM0MztcdFx0XHQuZGF0YSA9IGNwdV90b19sZTMyKGVuYWJsZSA/IDEgOiAwKSxcbiYjNDM7XHRcdH0sXG4mIzQzO1x0fTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksXG4mIzQzO1x0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjY1NzI1MTNiNzY0NjZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaFxuQEAgLTAsMCAmIzQzOzEsMTUxIEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cbiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cbiYjNDM7XG4mIzQzOyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcbiYjNDM7I2RlZmluZSBfX0NBQ0hFRF9DQUxfSFxuJiM0MztcbiYjNDM7ZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcbiYjNDM7XHRNVDc5MjVfQVhJRE1BX1RBR19SRU1BUCA9IDAsXG4mIzQzO1x0TVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwgPSAxLFxuJiM0MztcdE1UNzkyNV9BWElETUFfVEFHX05VTVxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7ZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVJcdD0gMixcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHXHQ9IDMsXG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVRcdD0gNCxcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVFx0PSA1LFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7ZW51bSBtdDc5MjVfZmFjdF9jYWxfdHlwZSB7XG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ09NTU9OXHRcdD0gMCxcbiYjNDM7XHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFx0XHQ9IDEsXG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ0hBTk5FTFx0XHQ9IDIsXG4mIzQzO1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkxcdD0gNCxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTlx0XHQxNDAwXG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXHRcdFx0MTZcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWFx0NFxuJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX1UzMl9MRU5cdFx0NFxuJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXG4mIzQzO1x0KE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYICogTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfVTMyX0xFTilcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVx0XHQyXG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTVx0XHQzNVxuJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fMkdcdFx0MTRcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXHRcdDY4XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82R1x0XHQxMDlcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTCBcXFxuJiM0MztcdChNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcgJiM0MzsgXFxcbiYjNDM7XHQgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RylcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT01cdFx0XHQ2MDBcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUFx0XHRcdDQ1MDBcbiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0NIXHRcdFx0MjgwMFxuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7XG4mIzQzO1x0X19sZTMyIGNhbF90eXBlO1xuJiM0MztcdF9fbGUzMiBjYWxfcGFyYW07XG4mIzQzO1x0X19sZTMyIGJ1Zl9zZXFfbnVtO1xuJiM0MztcdF9fbGUzMiB0b3RhbF9idWZfbnVtO1xuJiM0MztcdF9fbGUzMiBidWZfZGF0YV9sZW47XG4mIzQzO1x0dTggdmFsaWQ7XG4mIzQzO1x0dTggZG9uZTtcbiYjNDM7XHR1OCByc3ZbMl07XG4mIzQzO1x0X19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCxcbiYjNDM7XHQgICAgICBcJiMzNDtidWZfaW5mbyBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDg4IGJ5dGVzKSBvciBpdCByZWplY3RzIHRoZSBtYXBwaW5nIHRhYmxlXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCB7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2g7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2w7XG4mIzQzO1x0X19sZTMyIG9mZnNldDtcbiYjNDM7XHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xuJiM0MztcdHU4IHJzdlsyXTtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIHtcbiYjNDM7XHRfX2xlMzIgcGh5X2FkZHJfaDtcbiYjNDM7XHRfX2xlMzIgcGh5X2FkZHJfbDtcbiYjNDM7XHRfX2xlMzIgb2Zmc2V0O1xuJiM0MztcdHU4IGdyb3VwW01UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU1dO1xuJiM0MztcdHU4IHJzdjtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xuJiM0MztcdF9fbGUzMiBwaHlfYWRkcl9oO1xuJiM0MztcdF9fbGUzMiBwaHlfYWRkcl9sO1xuJiM0MztcdF9fbGUzMiBvZmZzZXQ7XG4mIzQzO1x0X19sZTMyIGNhbF9wYXJhbVtNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTF07XG4mIzQzO1x0dTggdG90YWxfYnVmX251bVtNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTF07XG4mIzQzO1x0dTggcnN2O1xuJiM0Mzt9IF9fcGFja2VkO1xuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XG4mIzQzO1x0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIGNvbW1vbjtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCBncm91cDtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XG4mIzQzO1x0X19sZTMyIGJ1Zl9pbmZvX3NpemU7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2g7XG4mIzQzO1x0X19sZTMyIHBoeV9hZGRyX2w7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuJiM0MztcdCAgICAgIFwmIzM0O21hcHBpbmcgdGFibGUgbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICgxMDQ0IGJ5dGVzKSBvciB0aGUgRlcgcGFyc2UgY29ycnVwdHNcJiMzNDspO1xuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcbiYjNDM7XHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4mIzQzO1x0dTMyIGNvbW1vbl9zdHJpZGUsIGdyb3VwX3N0cmlkZSwgY2hhbm5lbF9zdHJpZGU7XG4mIzQzO1x0dTMyIHRvdGFsO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEge1xuJiM0MztcdHU4IF9yc3ZbNF07XG4mIzQzO1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0X19sZTE2IGxlbjtcbiYjNDM7XHRcdF9fbGUzMiByZW1hcF9hZGRyO1xuJiM0MztcdFx0X19sZTMyIHJlc2VydmVkO1xuJiM0MztcdH0gX19wYWNrZWQgcmVtYXA7XG4mIzQzO1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHRfX2xlMTYgdGFnO1xuJiM0MztcdFx0X19sZTE2IGxlbjtcbiYjNDM7XHRcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xuJiM0MztcdFx0X19sZTMyIHNpemU7XG4mIzQzO1x0XHRfX2xlMzIgYm91bmQ7XG4mIzQzO1x0XHRfX2xlMzIgcmVzZXJ2ZWQ7XG4mIzQzO1x0fSBfX3BhY2tlZCBmYWN0X2NhbDtcbiYjNDM7fSBfX3BhY2tlZDtcbiYjNDM7XG4mIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxIHtcbiYjNDM7XHR1OCBfcnN2WzRdO1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0X19sZTE2IHRhZztcbiYjNDM7XHRcdF9fbGUxNiBsZW47XG4mIzQzO1x0XHRfX2xlMzIgZGF0YTtcbiYjNDM7XHRcdF9fbGUzMiBzZXFfbnVtO1xuJiM0MztcdFx0X19sZTMyIGJ1Zl9kYXRhX2xlbjtcbiYjNDM7XHRcdHU4IGNhbF90eXBlO1xuJiM0MztcdFx0dTggZG9uZTtcbiYjNDM7XHRcdHU4IHJzdlsyXTtcbiYjNDM7XHRcdHU4IGJ1Zl9kYXRhW01UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5dO1xuJiM0MztcdH0gX19wYWNrZWQgc2V0O1xuJiM0Mzt9IF9fcGFja2VkO1xuJiM0MztcbiYjNDM7aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4mIzQzO1xuJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbiYjNDM7XG4mIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4mIzQzO1xuJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuJiM0MztcbiYjNDM7aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX19DQUNIRURfQ0FMX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzUzLDYgJiM0MzszNTMsNyBAQCBpbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXG4gXG4gaW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuIGludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuJiM0Mzt2b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuIHZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpO1xuIHZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpldnQpO1xuIHZvaWQgbXQ3OTI1X3NldF9ydW50aW1lX3BtKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbmluZGV4IDAyZWYwOWRkNzk3ZGEuLjcyNGFiZDJiZTU3YzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbkBAIC05LDYgJiM0Mzs5LDcgQEBcbiAjaW5jbHVkZSBcJiMzNDttYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2NhY2hlZF9jYWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0Oy4uL2RtYS5oXCYjMzQ7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlW10gPSB7XG5AQCAtMzgsNiAmIzQzOzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XG4gfVxuIFxuJiM0MzsvKiBTZXQgdXAgdGhlIGZhY3RvcnktY2FsaWJyYXRpb24gY2FjaGUgaW4gaG9zdCBtZW1vcnkuIFBDSWUgb25seTogdGhlIEZXXG4mIzQzOyAqIHJlYWNoZXMgdGhlIGJ1ZmZlciB0aHJvdWdoIEFYSSBETUEsIHNvIGl0IGhhcyBubyBtZWFuaW5nIG9uIG90aGVyIGJ1c2VzLlxuJiM0MzsgKiBFdmVyeSBmYWlsdXJlIGp1c3QgbGVhdmVzIHRoZSBjYWNoZSBvZmYsIHdoaWNoIGlzIG5vdCBmYXRhbC5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiYjNDM7e1xuJiM0MztcdGlmICghKGRldi1cdTAwM2VwaHkuY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4pKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEpIHtcbiYjNDM7XHRcdC8qIENhcnJpZWQtb3ZlciBidWZmZXIgc3RpbGwgaG9sZHMgRlctd3JpdHRlbiBjYWwgZGF0YS4gKi9cbiYjNDM7XHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IHRydWU7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGlmIChtdDc5MjVfYXhpZG1hX2FsbG9jKGRldikpIHtcbiYjNDM7XHRcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHRcdCBcJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnVmZmVyIGFsbG9jIGZhaWxlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybjtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cbiYjNDM7XHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyhkZXYpKSB7XG4mIzQzO1x0XHRkZXZfd2FybihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogaW5mbyBjbWQgdG8gRlcgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhXG4mIzQzO1x0ICogKGNvbW1vbiAvIHBvd2VyLW9uIGdyb3VwKSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYSBmdWxsIGNhbGlicmF0aW9uO1xuJiM0MztcdCAqIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgbWFwcGluZyB0YWJsZSBpcyBzZW50LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCB0cnVlKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChkZXYpKSB7XG4mIzQzO1x0XHRkZXZfd2FybihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4mIzQzO1x0XHRcdCBcJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIGZhbHNlKSkge1xuJiM0MztcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0XHQgXCYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZGV2X2luZm8oZGV2LVx1MDAzZW10NzYuZGV2LFxuJiM0MztcdFx0IFwmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0IFx1MDAyNmRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyLCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuJiM0MztcdFx0IGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIHtcbiBcdGludCBpO1xuQEAgLTU4LDYgJiM0MzsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXG4gXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XG4gXHRfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpO1xuJiM0MztcbiYjNDM7XHRtdDc5MjVfYXhpZG1hX2ZyZWUoZGV2KTtcbiYjNDM7XG4gXHRtdDc5MnhfZG1hX2NsZWFudXAoZGV2KTtcbiBcdG10NzkyeF93ZnN5c19yZXNldChkZXYpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG5AQCAtNTg3LDcgJiM0Mzs2NDcsNyBAQCBzdGF0aWMgaW50IG10NzkyNV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRpc19tdDc5MjhfaHcgPSAocGRldi1cdTAwM2VkZXZpY2UgPT0gMHg3OTI4IHx8IHBkZXYtXHUwMDNlZGV2aWNlID09IDB4NzkzNSk7XG4gXG4gXHRpZiAoaXNfbXQ3OTI4X2h3KVxuLVx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzNCkpO1xuJiM0MztcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XG4gXHRlbHNlXG4gXHRcdHJldCA9IGRtYV9zZXRfbWFzayhcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG5pbmRleCA4NDc3ZDIxYWJjNjYwLi5jOTBmMTI5YjNhMzRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmNcbkBAIC0xMzUsNiAmIzQzOzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG4mIzQzO1x0bXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoZGV2KTtcbiYjNDM7XG4gXHRlcnIgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gb3V0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuaW5kZXggNzI3MDdlZGRjM2RiNi4uMjU4ZjM3NTNkYjFmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jXG5AQCAtNDYsNiAmIzQzOzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdG10NzZfcm13X2ZpZWxkKGRldiwgZGV2LVx1MDAzZXBjaWVfcmVnLVx1MDAzZXBtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTtcbiBcbiBcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbiYjNDM7XHRpZiAoIWVycilcbiYjNDM7XHRcdG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7XG4gXG4gXHRtdDc2X3F1ZXVlX3R4X2NsZWFudXAoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5xX21jdVtNVF9NQ1VRX0ZXRExdLCBmYWxzZSk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcbmluZGV4IDllZmMyNTFjYjc0NWYuLjc0MGQ1MTdlYjM4YmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5AQCAtMzMsNiAmIzQzOzMzLDcgQEBcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KVxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuJiM0MzsjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxuIFxuIC8qIE5PVEU6IHVzZWQgdG8gbWFwIG10NzZfcmF0ZXMuIGlkeCBtYXkgY2hhbmdlIGlmIGZpcm13YXJlIGV4cGFuZHMgdGFibGUgKi9cbiAjZGVmaW5lIE1UNzkyeF9CQVNJQ19SQVRFU19UQkxcdDE0XG5AQCAtMzQyLDYgJiM0MzszNDMsMTMgQEAgc3RydWN0IG10NzkyeF9kZXYge1xuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uICppZmFjZV9jb21iaW5hdGlvbnM7XG4gXHRpbnQgbl9pZmFjZV9jb21iaW5hdGlvbnM7XG4mIzQzO1xuJiM0MztcdHN0cnVjdCB7XG4mIzQzO1x0XHR2b2lkICp2YTtcbiYjNDM7XHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4mIzQzO1x0XHR1MzIgc2l6ZTtcbiYjNDM7XHRcdGJvb2wgcmV1c2VkO1xuJiM0MztcdH0gY2FjaGVkX2NhbDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfYWxsb2MmIzM0OywKICAgICYjMzQ7bXQ3OTI1X2F4aWRtYV9mcmVlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHBhdGhzLCByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgTU1JTy9ETUEgaW50ZXJhY3Rpb25zLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjExYjEwY2FjZmMzMmMxNjRmOGVkY2VmMTVlNzUxN2QxMDIwYmM0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDEwIDA2OjEyOjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgKaW5kZXggMGVkZWRhNTY5ZTlhNS4uZTQ2Y2I0YWUzN2E5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oCkBAIC0xMzU3LDkgJiM0MzsxMzU3LDExIEBAIGVudW0gewogCU1DVV9VTklfQ01EX0FMTF9TVEFfSU5GTyA9IDB4NmUsCiAJTUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLAogCU1DVV9VTklfQ01EX0VYVF9FRVBST01fQ1RSTCA9IDB4NzQsCiYjNDM7CU1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YywKIAlNQ1VfVU5JX0NNRF9SQURJT19TVEFUVVMgPSAweDgwLAogCU1DVV9VTklfQ01EX01MRCA9IDB4ODIsCiAJTUNVX1VOSV9DTURfU0RPID0gMHg4OCwKJiM0MzsJTUNVX1VOSV9DTURfQVhJRE1BID0gMHhhMiwKIH07CiAKIGVudW0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZQppbmRleCBmOWRjYzBiYmEzOTNjLi4zMzUzOTEyMWExNWNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZQpAQCAtNiw1ICYjNDM7Niw1IEBAIG9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vCiAKIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm8KIG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm8KLW10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vCiYjNDM7bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8gY2FjaGVkX2NhbC5vCiBtdDc5MjV1LXkgOj0gdXNiLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4wM2JkNjgyZjEyMjRiCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jCkBAIC0wLDAgJiM0MzsxLDMwNCBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIKJiM0MzsvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9kbWEtbWFwcGluZy5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7Li4vbXQ3OTJ4LmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7Y2FjaGVkX2NhbC5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCAqbCkKJiM0Mzt7CiYjNDM7CXUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7CiYjNDM7CiYjNDM7CWwtJmd0O2NvbW1vbl9zdHJpZGUgID0gaGRyICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NOwomIzQzOwlsLSZndDtncm91cF9zdHJpZGUgICA9IGhkciAmIzQzOyBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUDsKJiM0MzsJbC0mZ3Q7Y2hhbm5lbF9zdHJpZGUgPSBoZHIgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDsKJiM0MzsKJiM0MzsJbC0mZ3Q7Y29tbW9uX29mZiAgPSAwOwomIzQzOwlsLSZndDtncm91cF9vZmYgICA9IGwtJmd0O2NvbW1vbl9vZmYgJiM0MzsKJiM0MzsJCWwtJmd0O2NvbW1vbl9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOwomIzQzOwlsLSZndDtjaGFubmVsX29mZiA9IGwtJmd0O2dyb3VwX29mZiAmIzQzOwomIzQzOwkJbC0mZ3Q7Z3JvdXBfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsKJiM0MzsJbC0mZ3Q7bWFwcGluZ19vZmYgPSBsLSZndDtjaGFubmVsX29mZiAmIzQzOwomIzQzOwkJbC0mZ3Q7Y2hhbm5lbF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDsKJiM0MzsJbC0mZ3Q7dG90YWwgPSBsLSZndDttYXBwaW5nX29mZiAmIzQzOwomIzQzOwkJc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsOwomIzQzOwomIzQzOwltdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KCZhbXA7bCk7CiYjNDM7CiYjNDM7CXJldHVybiBsLnRvdGFsOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbXQ3OTI1X2F4aWRtYV9hbGxvYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJdTMyIHRvdGFsX3NpemU7CiYjNDM7CWRtYV9hZGRyX3QgZG1hX2FkZHI7CiYjNDM7CXZvaWQgKnZhOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXRvdGFsX3NpemUgPSBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplKCk7CiYjNDM7CiYjNDM7CXZhID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldi0mZ3Q7bXQ3Ni5kZXYsIHRvdGFsX3NpemUsICZhbXA7ZG1hX2FkZHIsCiYjNDM7CQkJCUdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXZhKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CWRldi0mZ3Q7Y2FjaGVkX2NhbC52YSA9IHZhOwomIzQzOwlkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjsKJiM0MzsJZGV2LSZndDtjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlkbWFfZnJlZV9jb2hlcmVudChkZXYtJmd0O210NzYuZGV2LCBkZXYtJmd0O2NhY2hlZF9jYWwuc2l6ZSwKJiM0MzsJCQkgIGRldi0mZ3Q7Y2FjaGVkX2NhbC52YSwgZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyKTsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7ZGV2LSZndDtjYWNoZWRfY2FsLCAwLCBzaXplb2YoZGV2LSZndDtjYWNoZWRfY2FsKSk7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxICpyZXE7CiYjNDM7CXUzMiByZW1hcF9iYXNlLCBwYV9vZmZzZXQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFyZXEpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJcmVtYXBfYmFzZSA9ICh1MzIpKGRldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciAmZ3Q7Jmd0OyAxNik7CiYjNDM7CXBhX29mZnNldCA9ICh1MzIpKGRldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciAmYW1wOyAweEZGRkYpOwomIzQzOwomIzQzOwlyZXEtJmd0O3JlbWFwLnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9BWElETUFfVEFHX1JFTUFQKTsKJiM0MzsJcmVxLSZndDtyZW1hcC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLSZndDtyZW1hcCkpOwomIzQzOwlyZXEtJmd0O3JlbWFwLnJlbWFwX2FkZHIgPSBjcHVfdG9fbGUzMihyZW1hcF9iYXNlKTsKJiM0MzsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCk7CiYjNDM7CXJlcS0mZ3Q7ZmFjdF9jYWwubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS0mZ3Q7ZmFjdF9jYWwpKTsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LSZndDtjYWNoZWRfY2FsLnNpemUpOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLmJvdW5kID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0ICYjNDM7IGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplIC0gMSk7CiYjNDM7CiYjNDM7CXJldCA9IG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfVU5JX0NNRChBWElETUEpLAomIzQzOwkJCQlyZXEsIHNpemVvZigqcmVxKSwgdHJ1ZSk7CiYjNDM7CiYjNDM7CWtmcmVlKHJlcSk7CiYjNDM7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJJiMzNDtmYWlsZWQgdG8gc2VuZCBBWEkgRE1BIGluZm86ICVkXG4mIzM0OywgcmV0KTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgbXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lvbl9vZmYsCiYjNDM7CQkJCSAgICAgICB1MzIgc3RyaWRlLCB1MzIgaWR4LAomIzQzOwkJCQkgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8gKmJpOwomIzQzOwl1MzIgb2ZmID0gcmVnaW9uX29mZiAmIzQzOyBzdHJpZGUgKiBpZHg7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhIHx8IG9mZiAmIzQzOyBzaXplb2YoKmJpKSAmZ3Q7IGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwliaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopCiYjNDM7CQkoKGNvbnN0IHU4ICopZGV2LSZndDtjYWNoZWRfY2FsLnZhICYjNDM7IG9mZik7CiYjNDM7CWlmIChjYWxfcGFyYW0pCiYjNDM7CQkqY2FsX3BhcmFtID0gbGUzMl90b19jcHUoYmktJmd0O2NhbF9wYXJhbSk7CiYjNDM7CWlmICh0b3RhbF9idWZfbnVtKQomIzQzOwkJKnRvdGFsX2J1Zl9udW0gPSBsZTMyX3RvX2NwdShiaS0mZ3Q7dG90YWxfYnVmX251bSk7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwKJiM0MzsJCQkJCSAgICAgIHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibCkKJiM0Mzt7CiYjNDM7CWRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTsKJiM0MzsJdTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTsKJiM0MzsJZG1hX2FkZHJfdCBiYXNlID0gZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyOwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDsKJiM0MzsKJiM0MzsJbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dCgmYW1wO2wpOwomIzQzOwomIzQzOwljb21tb25fcGEgID0gYmFzZSAmIzQzOyBsLmNvbW1vbl9vZmY7CiYjNDM7CWdyb3VwX3BhICAgPSBiYXNlICYjNDM7IGwuZ3JvdXBfb2ZmOwomIzQzOwljaGFubmVsX3BhID0gYmFzZSAmIzQzOyBsLmNoYW5uZWxfb2ZmOwomIzQzOwltYXBwaW5nX3BhID0gYmFzZSAmIzQzOyBsLm1hcHBpbmdfb2ZmOwomIzQzOwomIzQzOwltZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpOwomIzQzOwomIzQzOwl0YmwtJmd0O2NvbW1vbi5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjb21tb25fcGEpKTsKJiM0MzsJdGJsLSZndDtjb21tb24ucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY29tbW9uX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Y29tbW9uLm9mZnNldCAgICAgPSBjcHVfdG9fbGUzMihsLmNvbW1vbl9zdHJpZGUpOwomIzQzOwomIzQzOwl0YmwtJmd0O2dyb3VwLnBoeV9hZGRyX2ggID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhncm91cF9wYSkpOwomIzQzOwl0YmwtJmd0O2dyb3VwLnBoeV9hZGRyX2wgID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhncm91cF9wYSkpOwomIzQzOwl0YmwtJmd0O2dyb3VwLm9mZnNldCAgICAgID0gY3B1X3RvX2xlMzIobC5ncm91cF9zdHJpZGUpOwomIzQzOwomIzQzOwl0YmwtJmd0O2NoYW5uZWwucGh5X2FkZHJfaCA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoY2hhbm5lbF9wYSkpOwomIzQzOwl0YmwtJmd0O2NoYW5uZWwucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY2hhbm5lbF9wYSkpOwomIzQzOwl0YmwtJmd0O2NoYW5uZWwub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY2hhbm5lbF9zdHJpZGUpOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDtjYWNoZWRfY2FsLnJldXNlZCkgewomIzQzOwkJdTMyIGksIGNhbF9wYXJhbSwgdG90YWxfYnVmX251bTsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsCiYjNDM7CQkJCQkJICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDtjYWxfcGFyYW0sIE5VTEwpKQomIzQzOwkJCQl0YmwtJmd0O2NvbW1vbi5iYW5kW2ldID0gY2FsX3BhcmFtICZhbXA7IDB4ZmY7CiYjNDM7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5ncm91cF9vZmYsCiYjNDM7CQkJCQkJICAgICAgIGwuZ3JvdXBfc3RyaWRlLCBpLAomIzQzOwkJCQkJCSAgICAgICAmYW1wO2NhbF9wYXJhbSwgTlVMTCkpCiYjNDM7CQkJCXRibC0mZ3Q7Z3JvdXAuZ3JvdXBbaV0gPSBjYWxfcGFyYW0gJmFtcDsgMHhmZjsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDsgaSYjNDM7JiM0MzspCiYjNDM7CQkJaWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZiwKJiM0MzsJCQkJCQkgICAgICAgbC5jaGFubmVsX3N0cmlkZSwgaSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDtjYWxfcGFyYW0sCiYjNDM7CQkJCQkJICAgICAgICZhbXA7dG90YWxfYnVmX251bSkpIHsKJiM0MzsJCQkJdGJsLSZndDtjaGFubmVsLmNhbF9wYXJhbVtpXSA9CiYjNDM7CQkJCQljcHVfdG9fbGUzMihjYWxfcGFyYW0pOwomIzQzOwkJCQl0YmwtJmd0O2NoYW5uZWwudG90YWxfYnVmX251bVtpXSA9CiYjNDM7CQkJCQl0b3RhbF9idWZfbnVtICZhbXA7IDB4ZmY7CiYjNDM7CQkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXRibC0mZ3Q7YnVmX2luZm9fc2l6ZSA9IGNwdV90b19sZTMyKGhkcik7CiYjNDM7CXRibC0mZ3Q7cGh5X2FkZHJfaCAgICA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMobWFwcGluZ19wYSkpOwomIzQzOwl0YmwtJmd0O3BoeV9hZGRyX2wgICAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSwKJiM0MzsJCQkJCSB1MzIgc2VxX251bSwgYm9vbCBkb25lLAomIzQzOwkJCQkJIGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBkYXRhX2xlbikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmIChkYXRhX2xlbiAmZ3Q7IE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZXEtJmd0O3NldC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVCk7CiYjNDM7CXJlcS0mZ3Q7c2V0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtJmd0O3NldCkpOwomIzQzOwlyZXEtJmd0O3NldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7CiYjNDM7CXJlcS0mZ3Q7c2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTsKJiM0MzsJcmVxLSZndDtzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTsKJiM0MzsJcmVxLSZndDtzZXQuZG9uZSA9IGRvbmU7CiYjNDM7CWlmIChkYXRhICZhbXA7JmFtcDsgZGF0YV9sZW4pCiYjNDM7CQltZW1jcHkocmVxLSZndDtzZXQuYnVmX2RhdGEsIGRhdGEsIGRhdGFfbGVuKTsKJiM0MzsKJiM0MzsJLyogV2FpdCBmb3IgdGhlIEFDSyBvbiB0aGUgZmluYWwgY2h1bmsgb25seTogdGhlIEZXIGFwcGxpZXMgdGhlIHdob2xlCiYjNDM7CSAqIHRhYmxlIHRoZXJlIChETUFzIHRoZSBjYWNoZWQgY29tbW9uIC8gcG93ZXItb24gZ3JvdXAgY2FsIGRhdGEgaW4gYW5kCiYjNDM7CSAqIHByb2dyYW1zIHRoZSBQSFkpLCBzbyBpdHMgQUNLIGlzIHRoZSBjb21wbGV0aW9uIHBvaW50LiBXYWl0aW5nIGFsc28KJiM0MzsJICogZHJhaW5zIHRoZSBBQ0tzIHRoZSBlYXJsaWVyIGNodW5rcyBsZWZ0IGluIHRoZSBNQ1UgcmVzcG9uc2UgcXVldWUsCiYjNDM7CSAqIHNpbmNlIFVOSSBjb21tYW5kcyBhbHdheXMgcmVxdWVzdCBvbmUuCiYjNDM7CSAqLwomIzQzOwlyZXQgPSBtdDc2X21jdV9zZW5kX21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLAomIzQzOwkJCQlyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7CiYjNDM7CWtmcmVlKHJlcSk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDsKJiM0MzsJX19sZTMyIGNmZ1tNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4gLyBzaXplb2YoX19sZTMyKV0gPSB7MH07CiYjNDM7CXUzMiBzZXEgPSAwLCBvZmYgPSAwLCBsZWZ0OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAoIWRldi0mZ3Q7Y2FjaGVkX2NhbC52YSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwl0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghdGJsKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CW10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChkZXYsIHRibCk7CiYjNDM7CiYjNDM7CWNmZ1sxXSA9IGNwdV90b19sZTMyKHNpemVvZigqdGJsKSk7CiYjNDM7CWNmZ1syXSA9IGNwdV90b19sZTMyKE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYKTsKJiM0MzsJcmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCwKJiM0MzsJCQkJCSAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTsKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJZGV2X2VycihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCSYjMzQ7ZmFjdC1jYWwgbWFwcGluZyB0YmwgaGVhZGVyIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxuJiMzNDssCiYjNDM7CQkJc2VxLCByZXQpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGVmdCA9IHNpemVvZigqdGJsKTsKJiM0MzsJd2hpbGUgKGxlZnQpIHsKJiM0MzsJCXUzMiBjaHVuayA9IG1pbl90KHUzMiwgbGVmdCwgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTik7CiYjNDM7CiYjNDM7CQlyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsCiYjNDM7CQkJCQkJICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLAomIzQzOwkJCQkJCSAgICAmIzQzOyYjNDM7c2VxLCBmYWxzZSwKJiM0MzsJCQkJCQkgICAgKHU4ICopdGJsICYjNDM7IG9mZiwgY2h1bmspOwomIzQzOwkJaWYgKHJldCkgewomIzQzOwkJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkJJiMzNDtmYWN0LWNhbCBtYXBwaW5nIHRibCBkYXRhIHNlbmQgZmFpbGVkIChzZXE9JXUsIG9mZj0ldSwgY2h1bms9JXUpOiAlZFxuJiMzNDssCiYjNDM7CQkJCXNlcSwgb2ZmLCBjaHVuaywgcmV0KTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW9mZiAgJiM0Mzs9IGNodW5rOwomIzQzOwkJbGVmdCAtPSBjaHVuazsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLAomIzQzOwkJCQkJICAgICYjNDM7JiM0MztzZXEsIHRydWUsIE5VTEwsIDApOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJJiMzNDtmYWN0LWNhbCBtYXBwaW5nIHRibCBkb25lIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxuJiMzNDssCiYjNDM7CQkJc2VxLCByZXQpOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MztvdXQ6CiYjNDM7CWtmcmVlKHRibCk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdTggX3Jzdls0XTsKJiM0MzsKJiM0MzsJCXN0cnVjdCB7CiYjNDM7CQkJX19sZTE2IHRhZzsKJiM0MzsJCQlfX2xlMTYgbGVuOwomIzQzOwkJCV9fbGUzMiBkYXRhOwomIzQzOwkJfSBfX3BhY2tlZCB1cGRhdGVfZmxhZzsKJiM0MzsJfSByZXEgPSB7CiYjNDM7CQkudXBkYXRlX2ZsYWcgPSB7CiYjNDM7CQkJLnRhZyAgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHKSwKJiM0MzsJCQkubGVuICA9IGNwdV90b19sZTE2KHNpemVvZihyZXEudXBkYXRlX2ZsYWcpKSwKJiM0MzsJCQkuZGF0YSA9IGNwdV90b19sZTMyKGVuYWJsZSA/IDEgOiAwKSwKJiM0MzsJCX0sCiYjNDM7CX07CiYjNDM7CiYjNDM7CXJldHVybiBtdDc2X21jdV9zZW5kX21zZygmYW1wO2Rldi0mZ3Q7bXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLAomIzQzOwkJCQkgJmFtcDtyZXEsIHNpemVvZihyZXEpLCBmYWxzZSk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY1NzI1MTNiNzY0NjYKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgKQEAgLTAsMCAmIzQzOzEsMTUxIEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqLwomIzQzOy8qIENvcHlyaWdodCAoQykgMjAyNiBNZWRpYVRlayBJbmMuICovCiYjNDM7CiYjNDM7I2lmbmRlZiBfX0NBQ0hFRF9DQUxfSAomIzQzOyNkZWZpbmUgX19DQUNIRURfQ0FMX0gKJiM0MzsKJiM0MztlbnVtIG10NzkyNV9heGlkbWFfaW5mb190YWcgewomIzQzOwlNVDc5MjVfQVhJRE1BX1RBR19SRU1BUCA9IDAsCiYjNDM7CU1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMID0gMSwKJiM0MzsJTVQ3OTI1X0FYSURNQV9UQUdfTlVNCiYjNDM7fTsKJiM0MzsKJiM0MztlbnVtIG10NzkyNV9mYWN0X2NhbF90YWcgewomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVIJPSAyLAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHCT0gMywKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVQJPSA0LAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVAk9IDUsCiYjNDM7fTsKJiM0MzsKJiM0MztlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHsKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ09NTU9OCQk9IDAsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UWVBFX0dST1VQCQk9IDEsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UWVBFX0NIQU5ORUwJCT0gMiwKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwJPSA0LAomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOCQkxNDAwCiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4JCQkxNgomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgJNAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfVTMyX0xFTgkJNAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfTUFYX0JVRl9MRU4gXAomIzQzOwkoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVggKiBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOKQomIzQzOwomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTQkJMgomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTQkJMzUKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fMkcJCTE0CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHCQk2OAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RwkJMTA5CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTCBcCiYjNDM7CShNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcgJiM0MzsgXAomIzQzOwkgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RykKJiM0MzsKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NCQkJNjAwCiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUAkJCTQ1MDAKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0gJCQkyODAwCiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7CiYjNDM7CV9fbGUzMiBjYWxfdHlwZTsKJiM0MzsJX19sZTMyIGNhbF9wYXJhbTsKJiM0MzsJX19sZTMyIGJ1Zl9zZXFfbnVtOwomIzQzOwlfX2xlMzIgdG90YWxfYnVmX251bTsKJiM0MzsJX19sZTMyIGJ1Zl9kYXRhX2xlbjsKJiM0MzsJdTggdmFsaWQ7CiYjNDM7CXU4IGRvbmU7CiYjNDM7CXU4IHJzdlsyXTsKJiM0MzsJX19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCwKJiM0MzsJICAgICAgJiMzNDtidWZfaW5mbyBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDg4IGJ5dGVzKSBvciBpdCByZWplY3RzIHRoZSBtYXBwaW5nIHRhYmxlJiMzNDspOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCB7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9oOwomIzQzOwlfX2xlMzIgcGh5X2FkZHJfbDsKJiM0MzsJX19sZTMyIG9mZnNldDsKJiM0MzsJdTggYmFuZFtNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNXTsKJiM0MzsJdTggcnN2WzJdOwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAgewomIzQzOwlfX2xlMzIgcGh5X2FkZHJfaDsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2w7CiYjNDM7CV9fbGUzMiBvZmZzZXQ7CiYjNDM7CXU4IGdyb3VwW01UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU1dOwomIzQzOwl1OCByc3Y7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIHsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2g7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9sOwomIzQzOwlfX2xlMzIgb2Zmc2V0OwomIzQzOwlfX2xlMzIgY2FsX3BhcmFtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTsKJiM0MzsJdTggdG90YWxfYnVmX251bVtNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTF07CiYjNDM7CXU4IHJzdjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgewomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAgY29tbW9uOwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCBncm91cDsKJiM0MzsJc3RydWN0IG10NzkyNV9mYWN0X2NhbF9jaGFubmVsX21hcCBjaGFubmVsOwomIzQzOwlfX2xlMzIgYnVmX2luZm9fc2l6ZTsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2g7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9sOwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCkgPT0gMTA0NCwKJiM0MzsJICAgICAgJiMzNDttYXBwaW5nIHRhYmxlIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoMTA0NCBieXRlcykgb3IgdGhlIEZXIHBhcnNlIGNvcnJ1cHRzJiMzNDspOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCB7CiYjNDM7CXUzMiBjb21tb25fb2ZmLCBncm91cF9vZmYsIGNoYW5uZWxfb2ZmLCBtYXBwaW5nX29mZjsKJiM0MzsJdTMyIGNvbW1vbl9zdHJpZGUsIGdyb3VwX3N0cmlkZSwgY2hhbm5lbF9zdHJpZGU7CiYjNDM7CXUzMiB0b3RhbDsKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxIHsKJiM0MzsJdTggX3Jzdls0XTsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCV9fbGUxNiB0YWc7CiYjNDM7CQlfX2xlMTYgbGVuOwomIzQzOwkJX19sZTMyIHJlbWFwX2FkZHI7CiYjNDM7CQlfX2xlMzIgcmVzZXJ2ZWQ7CiYjNDM7CX0gX19wYWNrZWQgcmVtYXA7CiYjNDM7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsJCV9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0OwomIzQzOwkJX19sZTMyIHNpemU7CiYjNDM7CQlfX2xlMzIgYm91bmQ7CiYjNDM7CQlfX2xlMzIgcmVzZXJ2ZWQ7CiYjNDM7CX0gX19wYWNrZWQgZmFjdF9jYWw7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX3JlcSB7CiYjNDM7CXU4IF9yc3ZbNF07CiYjNDM7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQlfX2xlMTYgdGFnOwomIzQzOwkJX19sZTE2IGxlbjsKJiM0MzsJCV9fbGUzMiBkYXRhOwomIzQzOwkJX19sZTMyIHNlcV9udW07CiYjNDM7CQlfX2xlMzIgYnVmX2RhdGFfbGVuOwomIzQzOwkJdTggY2FsX3R5cGU7CiYjNDM7CQl1OCBkb25lOwomIzQzOwkJdTggcnN2WzJdOwomIzQzOwkJdTggYnVmX2RhdGFbTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTl07CiYjNDM7CX0gX19wYWNrZWQgc2V0OwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7CiYjNDM7dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpOwomIzQzOwomIzQzOyNlbmRpZiAvKiBfX0NBQ0hFRF9DQUxfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaAppbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaApAQCAtMzUzLDYgJiM0MzszNTMsNyBAQCBpbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsCiAKIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKIGludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwomIzQzO3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiB2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKTsKIHZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpldnQpOwogdm9pZCBtdDc5MjVfc2V0X3J1bnRpbWVfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jCmluZGV4IDAyZWYwOWRkNzk3ZGEuLjcyNGFiZDJiZTU3YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jCkBAIC05LDYgJiM0Mzs5LDcgQEAKICNpbmNsdWRlICYjMzQ7bWFjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDttY3UuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3JlZ2QuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtjYWNoZWRfY2FsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDsuLi9kbWEuaCYjMzQ7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0gewpAQCAtMzgsNiAmIzQzOzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJcmV0dXJuIG10NzkyeF93cGRtYV9yZXNldChkZXYsIHRydWUpOwogfQogCiYjNDM7LyogU2V0IHVwIHRoZSBmYWN0b3J5LWNhbGlicmF0aW9uIGNhY2hlIGluIGhvc3QgbWVtb3J5LiBQQ0llIG9ubHk6IHRoZSBGVwomIzQzOyAqIHJlYWNoZXMgdGhlIGJ1ZmZlciB0aHJvdWdoIEFYSSBETUEsIHNvIGl0IGhhcyBubyBtZWFuaW5nIG9uIG90aGVyIGJ1c2VzLgomIzQzOyAqIEV2ZXJ5IGZhaWx1cmUganVzdCBsZWF2ZXMgdGhlIGNhY2hlIG9mZiwgd2hpY2ggaXMgbm90IGZhdGFsLgomIzQzOyAqLwomIzQzO3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikKJiM0Mzt7CiYjNDM7CWlmICghKGRldi0mZ3Q7cGh5LmNoaXBfY2FwICZhbXA7IE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4pKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlpZiAoZGV2LSZndDtjYWNoZWRfY2FsLnZhKSB7CiYjNDM7CQkvKiBDYXJyaWVkLW92ZXIgYnVmZmVyIHN0aWxsIGhvbGRzIEZXLXdyaXR0ZW4gY2FsIGRhdGEuICovCiYjNDM7CQlkZXYtJmd0O2NhY2hlZF9jYWwucmV1c2VkID0gdHJ1ZTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWlmIChtdDc5MjVfYXhpZG1hX2FsbG9jKGRldikpIHsKJiM0MzsJCQlkZXZfd2FybihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnVmZmVyIGFsbG9jIGZhaWxlZFxuJiMzNDspOwomIzQzOwkJCXJldHVybjsKJiM0MzsJCX0KJiM0MzsJCS8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi8KJiM0MzsJCWRldi0mZ3Q7Y2FjaGVkX2NhbC5yZXVzZWQgPSBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHsKJiM0MzsJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJICYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGluZm8gY21kIHRvIEZXIGZhaWxlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhCiYjNDM7CSAqIChjb21tb24gLyBwb3dlci1vbiBncm91cCkgaW5zdGVhZCBvZiBydW5uaW5nIGEgZnVsbCBjYWxpYnJhdGlvbjsKJiM0MzsJICogbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBtYXBwaW5nIHRhYmxlIGlzIHNlbnQuCiYjNDM7CSAqLwomIzQzOwlpZiAobXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKGRldiwgdHJ1ZSkpIHsKJiM0MzsJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJICYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKGRldikpIHsKJiM0MzsJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJICYjMzQ7QVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IG1hcHBpbmcgdGJsIHNlbmQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJaWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIGZhbHNlKSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWRldl9pbmZvKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBlbmFibGVkIChETUE9JXBhZCwgc2l6ZT0ldSwgcmV1c2VkPSVkKVxuJiMzNDssCiYjNDM7CQkgJmFtcDtkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHIsIGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplLAomIzQzOwkJIGRldi0mZ3Q7Y2FjaGVkX2NhbC5yZXVzZWQpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIHsKIAlpbnQgaTsKQEAgLTU4LDYgJiM0MzsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAKIAltdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7CiAJX19tdDc5MnhfbWN1X2Rydl9wbWN0cmwoZGV2KTsKJiM0MzsKJiM0MzsJbXQ3OTI1X2F4aWRtYV9mcmVlKGRldik7CiYjNDM7CiAJbXQ3OTJ4X2RtYV9jbGVhbnVwKGRldik7CiAJbXQ3OTJ4X3dmc3lzX3Jlc2V0KGRldik7CiAJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7ZGV2LSZndDttdDc2Lm1jdS5yZXNfcSk7CkBAIC01ODcsNyAmIzQzOzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlpc19tdDc5MjhfaHcgPSAocGRldi0mZ3Q7ZGV2aWNlID09IDB4NzkyOCB8fCBwZGV2LSZndDtkZXZpY2UgPT0gMHg3OTM1KTsKIAogCWlmIChpc19tdDc5MjhfaHcpCi0JCXJldCA9IGRtYV9zZXRfbWFzaygmYW1wO3BkZXYtJmd0O2RldiwgRE1BX0JJVF9NQVNLKDM0KSk7CiYjNDM7CQlyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KCZhbXA7cGRldi0mZ3Q7ZGV2LCBETUFfQklUX01BU0soMzQpKTsKIAllbHNlCiAJCXJldCA9IGRtYV9zZXRfbWFzaygmYW1wO3BkZXYtJmd0O2RldiwgRE1BX0JJVF9NQVNLKDMyKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYwppbmRleCA4NDc3ZDIxYWJjNjYwLi5jOTBmMTI5YjNhMzRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jCkBAIC0xMzUsNiAmIzQzOzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCWlmIChlcnIpCiAJCWdvdG8gb3V0OwogCiYjNDM7CW10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7CiYjNDM7CiAJZXJyID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7CiAJaWYgKGVycikKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMKaW5kZXggNzI3MDdlZGRjM2RiNi4uMjU4ZjM3NTNkYjFmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYwpAQCAtNDYsNiAmIzQzOzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAltdDc2X3Jtd19maWVsZChkZXYsIGRldi0mZ3Q7cGNpZV9yZWctJmd0O3BtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTsKIAogCWVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTsKJiM0MzsJaWYgKCFlcnIpCiYjNDM7CQltdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpOwogCiAJbXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LSZndDttdDc2LnFfbWN1W01UX01DVVFfRldETF0sIGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzQwZDUxN2ViMzhiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oCkBAIC0zMyw2ICYjNDM7MzMsNyBAQAogI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfUkVHRF9FTiBCSVQoNSkKICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOCkKICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTUxfRU4gQklUKDkpCiYjNDM7I2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOIEJJVCgxNikKIAogLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYgZmlybXdhcmUgZXhwYW5kcyB0YWJsZSAqLwogI2RlZmluZSBNVDc5MnhfQkFTSUNfUkFURVNfVEJMCTE0CkBAIC0zNDIsNiAmIzQzOzM0MywxMyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7CiAJc3RydWN0IGllZWU4MDIxMV92aWYgKm5hbl92aWY7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zOwogCWludCBuX2lmYWNlX2NvbWJpbmF0aW9uczsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCXZvaWQgKnZhOwomIzQzOwkJZG1hX2FkZHJfdCBkbWFfYWRkcjsKJiM0MzsJCXUzMiBzaXplOwomIzQzOwkJYm9vbCByZXVzZWQ7CiYjNDM7CX0gY2FjaGVkX2NhbDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDc2CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNTM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBNZWRpYVRlayBNVDc5MjUgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYG10NzkyNWAgZHJpdmVyLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBNZWRpYVRlayBNVDc2IHdpcmVsZXNzIGRyaXZlciBmYW1pbHkuIEl0IGludHJvZHVjZXMgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSYjMzQ7IOKAkyBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIOKAkyBzcGVjaWZpY2FsbHkgZm9yIFBDSWUgZGV2aWNlcy4gVGhlIHBhdGNoIGluY2x1ZGVzIG5ldyBmaWxlcyAoYGNhY2hlZF9jYWwuY2AsIGBjYWNoZWRfY2FsLmhgKSBhbmQgbW9kaWZpZXMgc2V2ZXJhbCBleGlzdGluZyBvbmVzIChgcGNpLmNgLCBgcGNpX21hYy5jYCwgYHBjaV9tY3UuY2ApLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaXMgZnV6emFibGUuIFRoZSBwcm9tcHQgZ2l2ZXMgc29tZSBleGNsdXNpb24gY3JpdGVyaWEuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgaGFyZHdhcmUuIFJpZ2h0LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT8KCmBtdDc5MjVgIGlzIGEgTWVkaWFUZWsgV2ktRmkgZHJpdmVyLiBXaGlsZSBXaS1GaSBkcml2ZXJzICpnZW5lcmFsbHkqIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUsIHNvbWV0aW1lcyB0aGV5ICpjYW4qIGJlIGZ1enplZCB1c2luZyBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBhIHNvZnR3YXJlIHNpbXVsYXRvci4gSG93ZXZlciwgdGhpcyBpcyBmb3IgYSAqUENJZSogZGV2aWNlLCBhbmQgYG10NzkyNWAgaXRzZWxmIHJlcXVpcmVzIGEgcGh5c2ljYWwgTVQ3OTI1IGRldmljZSAoUENJZSBvciBVU0IpLiBTbywgYG1hYzgwMjExX2h3c2ltYCBpc24mIzM5O3QgdGhlIHNvbHV0aW9uIGhlcmUuCgpIb3dldmVyLCBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIFBDSSBlbXVsYXRpb24gY2FwYWJpbGl0aWVzLiBJdCBoYXMgdmhjaSBmb3IgVVNCLCBidXQgZG9lcyBpdCBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIGZvciBQQ0k/IEFjdHVhbGx5LCB5ZXMsIFN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoZSBxdWVzdGlvbiBpczogZG9lcyBzdGFuZGFyZCBRRU1VIGVtdWxhdGUgdGhlIE1UNzkyNT8gTm8uIEJ1dCwgU3l6a2FsbGVyIGZ1enplcyBQQ0kgZGV2aWNlcyBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuCgpEb2VzIFN5emthbGxlciBmdXp6IGBtdDc5MjVgPyBMZXQmIzM5O3MgY2hlY2shIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIFN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIGl0LiBBbmQgd2FpdCwgZ29pbmcgYmFjayB0byB0aGUgcHJvbXB0LCBpdCBsaXN0cyBzcGVjaWZpYyBleGNsdXNpb25zOiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gV2ktRmkgZHJpdmVycyBhcmVuJiMzOTt0ICpleHBsaWNpdGx5KiBpbiB0aGF0IGxpc3QsIGJ1dCB0aGV5ICphcmUqIFBDSWUgZGV2aWNlcy4KCkkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gd2hldGhlciBTeXprYWxsZXIgaGFzIHN1ZmZpY2llbnQgUENJIGZ1enppbmcgc3VwcG9ydCBmb3IgdGhlIGBtdDc2YCBmYW1pbHkuIFRoYXQgd2lsbCBiZSB0aGUgZGVjaWRpbmcgZmFjdG9yIGhlcmUuIEkgbXVzdCByZXNlYXJjaCB0aGUgU3l6a2FsbGVyIGNvdmVyYWdlIGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQyOTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrLmgtOS0jZGVmaW5lIEZJUk1XQVJFX01UNzk2MVx0XHRcJiMzNDttZWRpYXRlay9CVF9SQU1fQ09ERV9NVDc5NjFfMV8yX2hkci5iaW5cJiMzNDtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrLmg6MTA6I2RlZmluZSBGSVJNV0FSRV9NVDc5MjVcdFx0XCYjMzQ7bWVkaWF0ZWsvbXQ3OTI1L0JUX1JBTV9DT0RFX01UNzkyNV8xXzFfaGRyLmJpblwmIzM0O1xuZHJpdmVycy9ibHVldG9vdGgvYnRtdGsuaC0xMS0jZGVmaW5lIEZJUk1XQVJFX01UNzkyN1x0XHRcJiMzNDttZWRpYXRlay9tdDc5MjcvQlRfUkFNX0NPREVfTVQ2NjM5XzJfMV9oZHIuYmluXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTUwPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NTE6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTUxPW9iai0kKENPTkZJR19NVDc5OTZFKSAmIzQzOz0gbXQ3OTk2L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgJiM0Mzs9IG10NzkyNS9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg9MTgwPXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jb25uYWMzKHN0cnVjdCBtdDc2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmg6MTg1OnN0YXRpYyBpbmxpbmUgYm9vbCBpc19tdDc5MjUoc3RydWN0IG10NzZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jPTU0PWludCBtdDc2X2Nvbm5hY19tY3VfaW5pdF9kb3dubG9hZChzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgdTMyIGFkZHIsIHUzMiBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy02OS1cdCAgICAoaXNfY29ubmFjMihkZXYpIFx1MDAyNlx1MDAyNiBhZGRyID09IDB4OTAwMDAwKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYzo3MDpcdCAgICAoKGlzX210NzkyNShkZXYpIHx8IGlzX210NzkyNyhkZXYpKSBcdTAwMjZcdTAwMjYgKGFkZHIgPT0gMHg5MDAwMDAgfHwgYWRkciA9PSAweGUwMDAyODAwKSkgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNzEtXHQgICAgKGlzX210NzkyOChkZXYpIFx1MDAyNlx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDIwMDApKSB8fFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1LWNvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo4Om10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjk6bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8gY2FjaGVkX2NhbC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZToxMDptdDc5MjV1LXkgOj0gdXNiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzo4OnN0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEwOlx0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjMtXHRsLVx1MDAzZXRvdGFsID0gbC1cdTAwM2VtYXBwaW5nX29mZiAmIzQzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI0Olx0XHRzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjUtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI3OnN0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyOTpcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjMxOlx0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcdTAwMjZsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MzY6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjQ1Olx0dG90YWxfc2l6ZSA9IG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NTk6dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy02MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjcwOmludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy03MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NzI6XHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTczLVx0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEwODpzdGF0aWMgYm9vbCBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaW9uX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMDktXHRcdFx0XHQgICAgICAgdTMyIHN0cmlkZSwgdTMyIGlkeCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMTI6XHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMTMtXHR1MzIgb2ZmID0gcmVnaW9uX29mZiAmIzQzOyBzdHJpZGUgKiBpZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTExNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMTg6XHRiaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTE5LVx0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgJiM0Mzsgb2ZmKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEyNzpzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMjg6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMjkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzMC1cdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMzE6XHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzMi1cdGRtYV9hZGRyX3QgYmFzZSA9IGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEzMzpcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMzU6XHRtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KFx1MDAyNmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEzNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTU5LVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxNjA6XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jb21tb25fb2ZmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE2MS1cdFx0XHRcdFx0XHQgICAgICAgbC5jb21tb25fc3RyaWRlLCBpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjE2NjpcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmdyb3VwX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjctXHRcdFx0XHRcdFx0ICAgICAgIGwuZ3JvdXBfc3RyaWRlLCBpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNzEtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxNzI6XHRcdFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNzMtXHRcdFx0XHRcdFx0ICAgICAgIGwuY2hhbm5lbF9zdHJpZGUsIGksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxODg6c3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xODktXHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xOTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjE5MjpcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTkzLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjIyNDppbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyMjY6XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsICp0Ymw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI3LVx0X19sZTMyIGNmZ1tNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19MRU4gLyBzaXplb2YoX19sZTMyKV0gPSB7MH07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyMzg6XHRtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmwoZGV2LCB0YmwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjQxLVx0Y2ZnWzJdID0gY3B1X3RvX2xlMzIoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI0MjpcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjQzLVx0XHRcdFx0XHQgICAgc2VxLCBmYWxzZSwgY2ZnLCBzaXplb2YoY2ZnKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNTU6XHRcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNTYtXHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjcwOlx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNzEtXHRcdFx0XHRcdCAgICAmIzQzOyYjNDM7c2VxLCB0cnVlLCBOVUxMLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI4NDppbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI4NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6NzplbnVtIG10NzkyNV9heGlkbWFfaW5mb190YWcge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTgtXHRNVDc5MjVfQVhJRE1BX1RBR19SRU1BUCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjEzOmVudW0gbXQ3OTI1X2ZhY3RfY2FsX3RhZyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQtXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVJcdD0gMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MjA6ZW51bSBtdDc5MjVfZmFjdF9jYWxfdHlwZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMjEtXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DT01NT05cdFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC00Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo0NzpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC00OC1cdF9fbGUzMiBjYWxfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6NTk6c3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbykgPT0gODgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNjAtXHQgICAgICBcJiMzNDtidWZfaW5mbyBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDg4IGJ5dGVzKSBvciBpdCByZWplY3RzIHRoZSBtYXBwaW5nIHRhYmxlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo2MjpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTYzLVx0X19sZTMyIHBoeV9hZGRyX2g7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjcwOnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03MS1cdF9fbGUzMiBwaHlfYWRkcl9oO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo3ODpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03OS1cdF9fbGUzMiBwaHlfYWRkcl9oO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC04Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo4NzpzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo4ODpcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6ODk6XHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCBncm91cDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5MDpcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAgY2hhbm5lbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05MS1cdF9fbGUzMiBidWZfaW5mb19zaXplO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5NjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTk3LVx0ICAgICAgXCYjMzQ7bWFwcGluZyB0YWJsZSBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDEwNDQgYnl0ZXMpIG9yIHRoZSBGVyBwYXJzZSBjb3JydXB0c1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6OTk6c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xMDAtXHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxMDU6c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEwNi1cdHU4IF9yc3ZbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxMjU6c3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyNi1cdHU4IF9yc3ZbNF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTE0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxNDE6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0Mzp2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MTQ1OmludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0NzppbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTE0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxNDk6aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTUwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXCYjMzQ7bXQ3OTI1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg6bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0Olx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODpcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjVfcmVnX2dldCwgbXQ3OTI1X3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzk6bXQ3OTI1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUtXHRkZXYtXHUwMDNlZndfZGVidWcgPSAodTgpdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ2Olx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9NTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjU0Om10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2NDpcdFx0XHQgbXQ3OTI1X2Z3X2RlYnVnX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTY4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTcwLVx0XHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy04NC0oe1x0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4NTpcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFwmIzM0OyAodG1hYylcJiMzNDssXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVx0XHRcdCAgICAgIHR4cHdyLVx1MDAzZXJhdGUsXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTkxPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjkyOm10NzkyNV9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05Ny1cdFx0ICAgXCYjMzQ7bWNzMTJcJiMzNDssIFwmIzM0O21jczEzXCYjMzQ7LCBcJiMzNDttY3MxNFwmIzM0OywgXCYjMzQ7bWNzMTVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2LCBlaHQ5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nng0LCBlaHQ5OTZ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl81MiwgZWh0MjZfNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0XzI0MiwgZWh0NDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0LCBlaHQ5OTZfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTExOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4Ml80ODQsIGVodDk5NngyXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MywgZWh0OTk2eDMsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExODptdDc5MjVfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcdHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjItXHR1OCBiYW5kX2lkeCA9IGRldi1cdTAwM2VtcGh5LmJhbmRfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzMTpcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMyLVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTM4LVx0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDsxbVwmIzM0OywgXCYjMzQ7Mm1cJiMzNDssIFwmIzM0OzVtXCYjMzQ7LCBcJiMzNDsxMW1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVx0XHQgICBcJiMzNDs0OG1cJiMzNDssIFwmIzM0OzU0bVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0sIG9mZG0sIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1My1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzMzJcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE1NDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTgtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczhcJiMzNDssIFwmIzM0O21jczlcJiMzNDssIFwmIzM0O21jczEwXCYjMzQ7LCBcJiMzNDttY3MxMVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzQ6XHRtdDc5MjVfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xODE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4MjptdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTgzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LVx0cG0tXHUwMDNlZW5hYmxlX3VzZXIgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA2Olx0bXQ3OTI1X3NldF9ydW50aW1lX3BtKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA3LVx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxNTptdDc5MjVfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIxNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMjY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNzptdDc5MjVfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNDItXHRwbS1cdTAwM2Vkc19lbmFibGUgPSBlbmFibGUgXHUwMDI2XHUwMDI2ICFtb25pdG9yO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI0MzpcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBwbS1cdTAwM2Vkc19lbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0NC1vdXQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjUxOm10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYwOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjVfZGVlcF9zbGVlcF9nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYxOlx0XHRcdCBtdDc5MjVfZGVlcF9zbGVlcF9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yNjM9REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG1faWRsZV90aW1lb3V0LCBtdDc5MnhfcG1faWRsZV90aW1lb3V0X2dldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NjpzdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc4LVx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI3OTpcdFx0cmV0ID0gbXQ3OTI1X21jdV9jaGlwX2NvbmZpZyhkZXYsIFwmIzM0O2Fzc2VydFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjgwLVx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNC1cdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O3R4cG93ZXJfc2t1XCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzA1Olx0XHRcdFx0ICAgIG10NzkyNV90eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzA2LVx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0eF9zdGF0c1wmIzM0OywgMDQwMCwgZGlyLCBkZXYsIFx1MDAyNm10NzkyeF90eF9zdGF0c19mb3BzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwLSNpbmNsdWRlIFwmIzM0O3JlZ2QuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjVfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE1LVx0XHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1Olx0XHR0ZW1wZXJhdHVyZSA9IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKG1kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzc6c3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUl9STyh0ZW1wMV9pbnB1dCwgbXQ3OTI1X3RoZXJtYWxfdGVtcCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyNV9od21vbl9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQwLVx0XHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQyLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjVfaHdtb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTI1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NTQ6XHRuYW1lID0gZGV2bV9rYXNwcmludGYoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDttdDc5MjVfJXNcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTUtXHRcdFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01OS1cdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBuYW1lLCBwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjA6XHRcdFx0XHRcdFx0ICAgICAgIG10NzkyNV9od21vbl9ncm91cHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTYxLVx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjY0OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzMtXHRcdCAgICAgICBGSUVMRF9QUkVQKE1UX1RYX1JBVEVfSURYLCByYXRlIFx1MDAyNiBHRU5NQVNLKDcsIDApKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3NDpcdFx0bXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShkZXYsIGlkeCwgcmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc4OmludCBtdDc5MjVfbWFjX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6ODc6XHRcdG10NzkyNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg4LVx0XHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjkyOlx0bXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEwMDpzdGF0aWMgaW50IF9fbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTEyOlx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjExNjpcdHJldCA9IG10NzkyNV9tYWNfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExNy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMC1cdGlmIChpc19tdDc5MjcoXHUwMDI2ZGV2LVx1MDAzZW10NzYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTIxOlx0XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9kYmRjKFx1MDAyNmRldi1cdTAwM2VtcGh5LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMjItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEzMzpzdGF0aWMgaW50IG10NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0NTpcdFx0cmV0ID0gX19tdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE0Ni1cdFx0aWYgKCFyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9uYW5fY2FwKHN0cnVjdCBtdDc2X2RldiAqbWRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTkwOnN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTY6XHRyZXQgPSBtdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMC1cdG10NzZfc2V0X3N0cmVhbV9jYXBzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDE6XHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDItXHRtdDc5MnhfY29uZmlnX21hY19hZGRyX2xpc3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA0Olx0cmV0ID0gbXQ3OTI1X2luaXRfbWxvX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjA1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjEwOlx0ZGV2LVx1MDAzZW10NzYuaW5pdF93aXBoeSA9IG10NzkyNV9pbml0X25hbl9jYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE5Olx0cmV0ID0gbXQ3OTI1X2luaXRfZGVidWdmcyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyMC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyNTpcdHJldCA9IG10NzkyNV90aGVybWFsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjMxOlx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfdGhlcm1hbF9wcm90ZWN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjQwOlx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIGRldi1cdTAwM2VwbS5kc19lbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI0MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MzppbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNTQ6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmssIG10NzkyNV9tbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjU1LVx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwbS53YWtlX3dvcmssIG10NzkyeF9wbV93YWtlX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNjEtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTJ4X21hY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjI6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlcGh5LnNjYW5fd29yaywgbXQ3OTI1X3NjYW5fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjYzOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWNvcmVkdW1wLndvcmssIG10NzkyNV9jb3JlZHVtcF93b3JrKTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NzIzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTEwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIHRoZSBNVDc5MjUgV2ktRmkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBtdDc5MjVgIGRyaXZlciwgd2hpY2ggaXMgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIHdpdGggYm90aCBQQ0kgYW5kIFVTQiB2YXJpYW50cy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgc3RhbmRhcmQgUUVNVSBlbXVsYXRpbmcgdGhpcyBzcGVjaWZpYyBkZXZpY2U/IE5vLCBpdCBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcDogRG9lcyBzeXprYWxsZXIgZXZlbiBmdXp6IGl0PyBJIG5lZWQgdG8gY2hlY2sgZm9yIHN5emthbGxlciBkZXNjcmlwdGlvbnMuIEJ1dCB3YWl0LCB0aGlzIHByb21wdCBnaXZlcyBhIGNydWNpYWwgbGltaXRhdGlvbjogSSBjYW4mIzM5O3QgZGlyZWN0bHkgc2VhcmNoIGZvciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIG9yIGV4cHJlc3Npb25zIHN0YXJ0aW5nIHdpdGggYHN5el9gLCBiZWNhdXNlIHRob3NlIGFyZSBwc2V1ZG8tc3lzY2FsbHMgc3BlY2lmaWMgdG8gc3l6a2FsbGVyLCBub3QgcHJlc2VudCBpbiB0aGUga2VybmVsLiBJIGRvbiYjMzk7dCBoYXZlIHRoZSBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgdG9vbHMsIHNvIEkmIzM5O20gYSBiaXQgc3R1Y2suCgpMZXQgbWUgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBwb2ludHMgb3V0IHRoYXQgY29kZSBpbiBzcGVjaWZpYyBkcml2ZXJzIOKAkyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyDigJMgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSB0aGV5IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgd2hpY2ggaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFN5emthbGxlciBnZW5lcmFsbHkgZnV6emVzIFdpLUZpIGRyaXZlcnMgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGUgYG10NzkyNWAgaXMgYSBoYXJkd2FyZSBkcml2ZXIuIFRoYXQgbWFrZXMgbWUgdGhpbms6IFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGluamVjdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuIEJ1dCBkb2VzIHRoYXQgYXBwbHkgaGVyZT8gVGhlIHByb21wdCBtZW50aW9ucyB0aG9zZSBwcm9ibGVtYXRpYyBkcml2ZXJzIGFnYWluLi4uIElzIGBtdDc5MjVgIGluIHRoYXQgY2F0ZWdvcnk/IEl0ICppcyogYSBXaS1GaSBkcml2ZXIsIHdoaWNoIG1pZ2h0IGJlIHZlbmRvci1zcGVjaWZpYy4uLgoKQWxzbywgdGhlIHByb21wdCBtZW50aW9ucyBvdGhlciBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyBgbXQ3OTI1YCByZWFjaGFibGUgaW4gUUVNVT8gSWYgdGhlcmUmIzM5O3Mgbm8gUUVNVSBlbXVsYXRpb24gZm9yIHRoaXMsIGFuZCBpdCBpc24mIzM5O3QgYSBVU0IgZ2FkZ2V0IG9yIGBtYWM4MDIxMV9od3NpbWAsIGhvdyBjYW4gaXQgYmUgcmVhY2hlZD8gT2gsIHJpZ2h0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBVU0IgZnV6emVyICh1c2luZyBgdmhjaWApIHRoYXQgY2FuIGVtdWxhdGUgQU5ZIFVTQiBkZXZpY2UgdXNpbmcgZGVzY3JpcHRvcnMuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggSSYjMzk7bSBsb29raW5nIGF0IG1vZGlmaWVzIGBtdDc5MjUvcGNpLmNgLCBgcGNpX21hYy5jYCwgYHBjaV9tY3UuY2AsIGFuZCBhZGRzIGBjYWNoZWRfY2FsLmNgLiBUaGUgbmV3IGZlYXR1cmUgZm9jdXNlcyBvbiBQQ0llIHNwZWNpZmljYWxseTogJiMzNDtTZXQgdXAgdGhlIGZhY3RvcnktY2FsaWJyYXRpb24gY2FjaGUgaW4gaG9zdCBtZW1vcnkuIFBDSWUgb25seTogdGhlIEZXIHJlYWNoZXMgdGhlIGJ1ZmZlciB0aHJvdWdoIEFYSSBETUEsIHNvIGl0IGhhcyBubyBtZWFuaW5nIG9uIG90aGVyIGJ1c2VzLiYjMzQ7CgpUaGUgY29tbWVudHMgcmVpbmZvcmNlIHRoYXQgdGhpcyBpcyBQQ0llLW9ubHkuIEFuZCB0aGUgZnVuY3Rpb24gYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YCBpcyBjYWxsZWQgZnJvbSBgbXQ3OTI1ZV9tYWNfcmVzZXRgIGFuZCBgbXQ3OTI1ZV9tY3VfaW5pdGAsIHdoaWNoIGFyZSBpbiBgcGNpX21hYy5jYCBhbmQgYHBjaV9tY3UuY2AuIFRoaXMgUENJZSBhc3BlY3QgaXMgcmVhbGx5IGNyaXRpY2FsLiBJZiB0aGVyZSYjMzk7cyBubyBRRU1VIGVtdWxhdGlvbiwgY2FuIGl0IGFjdHVhbGx5IGJlIHRlc3RlZD8KCkkmIzM5O20gcmVtZW1iZXJpbmcgdGhhdCBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBieSBtYXRjaGluZyB0aGUgUENJIHZlbmRvci9kZXZpY2UgSUQgYW5kIGluamVjdGluZyBNTUlPLiBCdXQgZG9lcyBpdCBzdXBwb3J0IGBtdDc5MjVgIHNwZWNpZmljYWxseT8gVXN1YWxseSwgaXQmIzM5O3MgbW9yZSBnZW5lcmljLCBhbmQgdGhlIGRyaXZlciYjMzk7cyBgcHJvYmVgIGZ1bmN0aW9uIGlzIHRoZW4gY2FsbGVkLiBUaGUgZHJpdmVyIHRoZW4gdHJpZXMgdG8gcmVhZCBhbmQgd3JpdGUgTU1JTywgYW5kIHN5emthbGxlciBwcm92aWRlcyByYW5kb20gZGF0YS4gQnV0LCB0aGF0IHByb21wdCBrZWVwcyBlY2hvaW5nIGluIG15IG1pbmQ6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgSXMgdGhpcyBXaS1GaSBkcml2ZXIgY29uc2lkZXJlZCAmIzM0O3ZlbmRvci1zcGVjaWZpYyBQQ0llJiMzNDs/IElmIHNvLCB0aGF0IGNvdWxkIG1lYW4gaXQmIzM5O3MgKm5vdCogZnV6emVkIGluIHRoZSB1c3VhbCB3YXkuIEJ1dCB3YWl0ISBUaGUgY29tbWl0IGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AuLi4gYnV0IHRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDsuIFNvLCB0aGF0IGp1c3QgbWVhbnMgc3l6a2FsbGVyIGFwcGxpZWQgdGhlIHBhdGNoIHRvIHRlc3QgaXQuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZm9jdXMgb24gdGhlIFBDSWUgYXNwZWN0IGFuZCBzZWUgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSBQQ0kgZnV6emluZy4gSWYgdGhlIGRyaXZlciBkb2VzIERNQSBhbGxvY2F0aW9uIGFuZCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIE1DVSAoZmlybXdhcmUpLCBpdCByZWxpZXMgb24gdGhhdCBmaXJtd2FyZSBiZWluZyBsb2FkZWQgYW5kIHJ1bm5pbmcsIG9yIGF0IGxlYXN0IE1NSU8gcmVhZHMgcmV0dXJuaW5nIHNlbnNpYmxlIHZhbHVlcy4gTG9va2luZyBhdCBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgOgoKYGBgYwoJaWYgKCEoZGV2LSZndDtwaHkuY2hpcF9jYXAgJmFtcDsgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpCgkJcmV0dXJuOwpgYGAKCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBjaGlwX2NhcGAgaXMgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01UNzkyeF9DSElQX0NBUF9BWElETUFfRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDY9dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTQ5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNS0jZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozNjojZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjE2NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgZGVsdmUgaW50byB0aGlzLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNaXNzaW5nIGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYCBEZWZpbml0aW9uKioKCkhtbSwgdGhpcyBpcyBjdXJpb3VzLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZSBrZXJuZWwgc291cmNlIHdvdWxkIGhhdmUgZGVmaW5lZCBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAsIGVzcGVjaWFsbHkgZ2l2ZW4gaXRzIGNvbnRleHQuIEkgbmVlZCB0byBiZSBzdXJlLiBNeSBpbml0aWFsIHNjYW4gZGlkbiYjMzk7dCByZXZlYWwgaXQsIHdoaWNoIHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdmVyaWZ5IHRoYXQgaXQmIzM5O3MgKm5vdCogZGVmaW5lZCBhbnl3aGVyZSwgZWl0aGVyIGRpcmVjdGx5IGluIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHNvbWUgbWFjcm8gbWFnaWMuIFRoZXJlJiMzOTtzIGFsd2F5cyB0aGUgY2hhbmNlIEkgbWlzc2VkIHNvbWV0aGluZyBpbiBteSBpbml0aWFsIHBlcnVzYWwuIFRoZSBuZXh0IHN0ZXAgaXMgYSBtb3JlIHRob3JvdWdoIHNlYXJjaCBvZiB0aGUgcGF0Y2ggaXRzZWxmLiBQZXJoYXBzIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIHRoaXMgcGF0Y2ggYW5kIEkgb3Zlcmxvb2tlZCBpdCwgb3IgbWF5YmUgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBzb21ld2hlcmUuIElmIGl0JiMzOTtzICpub3QqIHByZXNlbnQgaGVyZSwgSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhpcyBzeW1ib2wgaXMgdXNlZCBhbmQgaWYgdGhlcmUgaXMgYW5vdGhlciB3YXkgdG8gZGV0ZXJtaW5lIHRoZSB1c2Ugb2YgQVhJIERNQS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBWElETUFfRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDY9dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTQ5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNS0jZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozNjojZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTE2NTI9c3RhdGljIGludCBkbWFjX2Z1bmNfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtMTY2My1cdFx0XHQgQl9BWF9XRF9STFNfRU4gfCBCX0FYX01QRFVfUFJPQ19FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjE2NjQ6XHRcdFx0IEJfQVhfRE1BQ19DUlBSVCB8IEJfQVhfSF9BWElETUFfRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy0xNjY1LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NDIwOD1zdGF0aWMgdm9pZCBydHc4OV9tYWNfaGNpX2Z1bmNfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNC1cdFx0dmFsID0gQl9BWF9NQUNfRlVOQ19FTiB8IEJfQVhfRE1BQ19GVU5DX0VOIHwgQl9BWF9ESVNQQVRDSEVSX0VOIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDIxNTpcdFx0ICAgICAgQl9BWF9QS1RfQlVGX0VOIHwgQl9BWF9IX0FYSURNQV9FTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNi1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQyMjI9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2RtYWNfZnVuY19wcmVfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDI1NC1cdHJ0dzg5X3dyaXRlMzJfY2xyKHJ0d2RldiwgUl9BWF9IQVhJX0RNQV9TVE9QMiwgQl9BWF9TVE9QX0NIMTAgfCBCX0FYX1NUT1BfQ0gxMSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjQyNTU6XHRydHc4OV93cml0ZTMyX3NldChydHdkZXYsIFJfQVhfUExBVEZPUk1fRU5BQkxFLCBCX0FYX0FYSURNQV9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQyNTYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM9NzY4PXN0YXRpYyBpbnQgZG1hY19mdW5jX2VuX2JlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jLTc4Mi1cdFx0XHQgIEJfQkVfRElTUEFUQ0hFUl9FTiB8IEJfQkVfQkJSUFRfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzo3ODM6XHRcdFx0ICBCX0JFX01BQ19TRUNfRU4gfCBCX0JFX0hfQVhJRE1BX0VOIHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtNzg0LVx0XHRcdCAgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYzo3ODU6XHRcdFx0ICBCX0JFX1BfQVhJRE1BX0VOIHwgQl9CRV9ETEVfREFUQUNQVUlPX0VOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtNzg2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtMTQzLSNkZWZpbmUgUl9BWF9QTEFURk9STV9FTkFCTEUgMHgwMDg4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oOjE0NDojZGVmaW5lIEJfQVhfQVhJRE1BX0VOIEJJVCgzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC0xNDUtI2RlZmluZSBCX0FYX0FQQl9XUkFQX0VOIEJJVCgyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNTY5LSNkZWZpbmUgQl9BWF9NQUNfVU5fRU4gQklUKDE1KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo1NzA6I2RlZmluZSBCX0FYX0hfQVhJRE1BX0VOIEJJVCgxNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNTcxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNDg5MS0jZGVmaW5lIEJfQkVfRE1BQ1JFR19HQ0tFTiBCSVQoMTUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oOjQ4OTI6I2RlZmluZSBCX0JFX0hfQVhJRE1BX0VOIEJJVCgxNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNDg5My0jZGVmaW5lIEJfQkVfRE1BQ19NTE9fRU4gQklUKDExKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODk0LSNkZWZpbmUgQl9CRV9QTFJMU19FTiBCSVQoMTApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oOjQ4OTU6I2RlZmluZSBCX0JFX1BfQVhJRE1BX0VOIEJJVCg5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODk2LSNkZWZpbmUgQl9CRV9ETEVfREFUQUNQVUlPX0VOIEJJVCg4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYz0zMjc9c3RhdGljIGludCBydHc4ODUyY19wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTQzOC1cdFx0XHQgIEJfQVhfRElTUEFUQ0hFUl9FTiB8IEJfQVhfQkJSUFRfRU4gfCBCX0FYX01BQ19TRUNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjQzOTpcdFx0XHQgIEJfQVhfTUFDX1VOX0VOIHwgQl9BWF9IX0FYSURNQV9FTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNDQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz00NzU9c3RhdGljIGludCBydHc4OTIyYV9wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTYxMC1cdFx0Ql9CRV9ESVNQQVRDSEVSX0VOIHwgQl9CRV9CQlJQVF9FTiB8IEJfQkVfTUFDX1NFQ19FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6NjExOlx0XHRCX0JFX0hfQVhJRE1BX0VOIHwgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjYxMjpcdFx0Ql9CRV9QX0FYSURNQV9FTiB8IEJfQkVfRExFX0RBVEFDUFVJT19FTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy02MTMtXHRpZiAocnR3ZGV2LVx1MDAzZWhjaS50eXBlID09IFJUVzg5X0hDSV9UWVBFX1BDSUUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTUwMT1zdGF0aWMgaW50IHJ0dzg5MjJkX3B3cl9vbl9mdW5jKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjI5LVx0XHRcdCAgQl9CRV9ESVNQQVRDSEVSX0VOIHwgQl9CRV9CQlJQVF9FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM6NjMwOlx0XHRcdCAgQl9CRV9NQUNfU0VDX0VOIHwgQl9CRV9IX0FYSURNQV9FTiB8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjMxLVx0XHRcdCAgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYzMjpcdFx0XHQgIEJfQkVfUF9BWElETUFfRU4gfCBCX0JFX0RMRV9EQVRBQ1BVSU9fRU4gfFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTYzMy1cdFx0XHQgIEJfQkVfTFRSX0NUTF9FTik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ4ODQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkRpZ2dpbmcgaW50byB0aGUgTVQ3OTJ4IEFYSURNQSBFbmFibGUgRmxhZyoqCgpBbHJpZ2h0LCB0aGlzIGlzIGludGVyZXN0aW5nLiBJJiMzOTttIGxvb2tpbmcgYXQgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgaXNzdWUuIFRoaXMgZGVmaW5lIGlzIG9ubHkgZGVjbGFyZWQgaW4gYG10NzkyeC5oYCBhbmQgdXNlZCB3aXRoaW4gdGhlIGBwY2kuY2AgZmlsZSB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBUaGF04oCZcyBhIHJlZCBmbGFnLiBXaGVyZSB0aGUgaGVjayBpcyB0aGlzIHRoaW5nIGJlaW5nICpzZXQqPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZmxhZyBpcyBlbmFibGVkIGFzIHRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIHdyaXR0ZW4gaW4gYSB3YXkgdGhhdCBzdWdnZXN0cyBpdCAqc2hvdWxkKiBiZS4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIE1UNzkyNS1zcGVjaWZpYyBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gb2YgdGhlIGZsYWcgYW5kIGl0cyB1c2UgYXJlIGNsZWFyLiBJJiMzOTtsbCBjaGVjayBgbXQ3OTI1L3BjaS5jYCwgYmVjYXVzZSB0aGF0JiMzOTtzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIHNlZSBQQ0ktc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24sIGJ1dCBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBgbXQ3OTI1L2luaXQuY2AgYW5kIGBtdDc5MjUvbWFpbi5jYCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBydWxlIG91dCBhbnkgb3RoZXIgcG90ZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIGNvbmRpdGlvbmFsIGVuYWJsaW5nIGxvZ2ljLiBUaGlzIG5lZWRzIHRvIGJlIHJlc29sdmVkIHF1aWNrbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoaXBfY2FwLipBWElETUFfRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDY9dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTQ5LVx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDUyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIE15c3RlcmlvdXMgQ29kZSBQYXRoKioKCk9rYXksIHRoaXMgaXMgc3RyYW5nZS4gSG93IGlzIHRoaXMgcGFydGljdWxhciBjb2RlIGV2ZW4gZXhlY3V0aW5nIGlmIGEgY3J1Y2lhbCBmbGFnIGlzbiYjMzk7dCBkZWZpbmVkIGFueXdoZXJlPyBJdCYjMzk7cyBtYWtpbmcgbWUgc2NyYXRjaCBteSBoZWFkLCBiZWNhdXNlIHRoaXMgZG9lc24mIzM5O3QgbWFrZSBhbnkgc2Vuc2UuCgpNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIG1ldGljdWxvdXNseSB0cmFjZSB3aGVyZSB0aGlzIGZsYWcsIGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYCwgKm1pZ2h0KiBiZSBzZXQuIExldCBtZSBzdGFydCBieSBzY2FubmluZyB0aGUgbGlrZWx5IGNhbmRpZGF0ZXM6IGBtdDc5MjUvbWFpbi5jYCBhbmQgYG10NzkyNS9wY2kuY2AuIEJ1dCBJIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLCB0b28uIEkgbmVlZCB0byBjb25zaWRlciB0aGF0IGl0IG1pZ2h0IGJlIGRlZmluZWQgaW4gYW4gdW5pbmNsdWRlZCBwYXRjaCwgdG9vLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIHNvbWV0aGluZyBvYnZpb3VzLgoKQWhhISBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBpZiBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAgcmVtYWlucyB1bmRlZmluZWQsIHRoZSBmdW5jdGlvbiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIHdpbGwgc2ltcGx5IHJldHVybiByaWdodCBhd2F5LCBzbyBJJiMzOTttIG5vdCBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBidWcuIFN0aWxsLCB0aGlzIGlzIHVuZXhwZWN0ZWQgYmVoYXZpb3Igc28gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYSBsYXRlbnQgYnVnLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1L3BjaS5jYCBpcyB0aGUgcGxhY2UgdG8gZG8gc28sIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB3aGVyZSB0aGUgaW5pdGlhbCBjaGlwIGNvbmZpZ3VyYXRpb24gbWlnaHQgaGFwcGVuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGlwX2NhcC4qPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTEwNzA9bXQ3OTI1X21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTIzLVx0XHRjYXNlIE1UX05JQ19DQVBfQ0hJUF9DQVA6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMTI0Olx0XHRcdGRldi1cdTAwM2VwaHkuY2hpcF9jYXAgPSBsZTY0X3RvX2NwdSgqKF9fbGU2NCAqKXRsdi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTExMjUtXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTMwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBWdWxuZXJhYmxlIENvZGUgUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYGRldi0mZ3Q7cGh5LmNoaXBfY2FwYCBnZXRzIGl0cyB2YWx1ZSBmcm9tIHRoZSBmaXJtd2FyZSB0aHJvdWdoIGBNVF9OSUNfQ0FQX0NISVBfQ0FQYCB3aXRoaW4gdGhlIGBtdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eWAgZnVuY3Rpb24uIFNvLCB0aGUgZmlybXdhcmUmIzM5O3MgZXNzZW50aWFsbHkgdGVsbGluZyB0aGUgZHJpdmVyIHdoZXRoZXIgaXQmIzM5O3MgZ290IEFYSURNQV9FTiBzdXBwb3J0LiBJZiB0aGF0IGZpcm13YXJlIHNldHMgdGhlIGJpdCwgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgcmVhY2hhYmxlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4sIGlzIHdoZXRoZXIgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIgY291bGQgaW5mbHVlbmNlIHRoaXMgcHJvY2Vzcz8KClN5emthbGxlciwgYmVpbmcgYSBQQ0kgZnV6emVyLCB3b3JrcyBieSBmdXp6aW5nIHRoZSBQQ0kgZGV2aWNlLCBidXQgaXQgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIGZpcm13YXJlLiBJdCBzZWVtcyB0byB0aHJvdyByYW5kb20gZGF0YSBhdCBNTUlPIHJlYWRzLiBBdCBmaXJzdCwgSSB3YXMgd29ycmllZCB0aGUgZHJpdmVyIG1pZ2h0IGp1c3QgcmVhZCBhIHJhbmRvbSBjYXBhYmlsaXR5IHZhbHVlIGlmIHN5emthbGxlciBtZXNzZWQgd2l0aCBNTUlPLiBIb3dldmVyLCBpdCYjMzk7cyBub3QgYSBkaXJlY3QgcmVhZDogYG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5YCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIE1DVSAoZmlybXdhcmUpIGFuZCB3YWl0cyBmb3IgYSByZXNwb25zZS4KClNvLCBpZiBzeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZSBNQ1UsIHdlJiMzOTtyZSBsaWtlbHkgbG9va2luZyBhdCBhIHRpbWVvdXQsIG9yIGEgY2FzZSB3aGVyZSBzeXprYWxsZXIgbWlnaHQgaW50ZXJjZXB0IHRoZSBNQ1UmIzM5O3MgcmVzcG9uc2UgKG1heWJlIHZpYSBETUEgb3IgTU1JTykgYW5kIHByb3ZpZGUgaXRzIG93biByYW5kb20gZGF0YSEgVGhlIGNyaXRpY2FsIHBvaW50IGlzIHdoZXRoZXIgc3l6a2FsbGVyIGNhbiBtYW5pcHVsYXRlIHRoZSBETUEgb3IgTU1JTyBwYXRocywgYW5kIGl0IGNhbiEgVGhlIE1DVSYjMzk7cyByZXNwb25zZXMgdGVuZCB0byBsYW5kIGluIGEgRE1BIHJpbmcgYnVmZmVyLiBTeXprYWxsZXIgY2FuIGluamVjdCByYW5kb20gZGF0YSB0aGVyZSwgbWVhbmluZyB0aGUgZHJpdmVyIHdvdWxkIHBhcnNlIGEgY29tcGxldGVseSBhcmJpdHJhcnkgTUNVIHJlc3BvbnNlIGFuZCBwb3RlbnRpYWxseSBzZXQgYGNoaXBfY2FwYCB0byBhIHJhbmRvbSB2YWx1ZSwgcG90ZW50aWFsbHkgaW5jbHVkaW5nIGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYC4gVGhpcyBtZWFucyB0aGUgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIGZ1enplZCBlbnZpcm9ubWVudC4KCk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1lZXRzIHRoZSBjcml0ZXJpYSBmb3IgJiMzNDtXb3J0aEZ1enppbmcmIzM0Oy4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBJcyB0aGlzIG9uZSBvZiB0aG9zZT8gSXMgYG10NzkyNWAgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZT8KCk5vLCB0aGlzIGlzIGEgV2ktRmkgZHJpdmVyLCBhbmQgZ2VuZXJhbGx5LCBXaS1GaSBkcml2ZXJzIGFyZW4mIzM5O3QgaW4gdGhhdCAmIzM0O25vdCB3b3J0aCBmdXp6aW5nJiMzNDsgY2F0ZWdvcnkuIEJ1dCBpcyBpdCBzdXBwb3J0ZWQgYnkgc3l6a2FsbGVyPyBJdCAqaXMqIGEgUENJZSBXaS1GaSBkcml2ZXIuIERvZXMgc3l6a2FsbGVyIGZ1enogaXQ/CgpMZXQmIzM5O3Mgc2VlLiBJIGNhbiBjaGVjayBpZiBgQ09ORklHX01UNzkyNUVgIGlzIGVuYWJsZWQgaW4gc3l6a2FsbGVyLiBJIGRvbiYjMzk7dCBoYXZlIHRoZSBjb25maWcgZmlsZSBoYW5keSwgYnV0IEkga25vdyBzeXprYWxsZXIgZnV6emVyIFdpLUZpIGRyaXZlcnMsIGJ1dCBpdCB1c3VhbGx5IGRvZXMgc28gdmlhIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgKnNvZnR3YXJlKiBzaW11bGF0b3IsIGFuZCBkb2VzbiYjMzk7dCBhY3R1YWxseSB1c2UgYG10NzkyNWAuCgpCdXQgd2FpdCwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplci4gRG9lcyB0aGF0IGZ1enplciB0YXJnZXQgYG10NzkyNWA/IFllcywgdGhlIFBDSSBmdXp6ZXIgZ29lcyBhZnRlciBhbGwgUENJIGRyaXZlcnMsIGJ5IG1hdGNoaW5nIFBDSSBJRHMuIEkgc2hvdWxkIGRvdWJsZSBjaGVjaywgbGV0JiMzOTtzIGxvb2sgYXQgYG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9wY2lfZGV2aWNlX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy0xNi1cdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDc5MjUpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTk3ND1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbXQ3OTI1X3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05NzUtXHQubmFtZVx0XHQ9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6OTc2Olx0LmlkX3RhYmxlXHQ9IG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtOTc3LVx0LnByb2JlXHRcdD0gbXQ3OTI1X3BjaV9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz05ODM9bW9kdWxlX3BjaV9kcml2ZXIobXQ3OTI1X3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtOTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6OTg1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtdDc5MjVfcGNpX2RldmljZV90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05ODYtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDc2CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBNVDc5MjUgRHJpdmVyIHdpdGggU3l6a2FsbGVyKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAqY2FuKiBkZWZpbml0ZWx5IGludGVyYWN0IHdpdGggdGhpcyBgbXQ3OTI1YCBkcml2ZXIgYW5kIHRyaWdnZXIgc29tZSBmdXp6aW5nLiBCdXQgaGFuZyBvbiwgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgVVNCIGdhZGdldHMgb3IgYG1hYzgwMjExX2h3c2ltYC4gSWYgdGhpcyBkcml2ZXIgKnJlcXVpcmVzKiBhIHJlYWwgUENJZSBjYXJkIHRoYXQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlLCB0aGF0JiMzOTtzIGEgcHJvYmxlbSwgcmlnaHQ/CgpCdXQgd2FpdCBhIG1pbnV0ZeKApiBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciAqaXMqIGVmZmVjdGl2ZWx5IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlISBJdCBpbnRlcmNlcHRzIHRob3NlIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8gYWNjZXNzZXMuIFNvLCB3ZSYjMzk7cmUgZ29vZDsgaXQgKmNhbiogYmUgcmVhY2hlZCB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIHVzaW5nIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjaywgdGhlIHByb21wdCBnaXZlcyBleGFtcGxlcyBvZiBzcGVjaWZpYyBkcml2ZXJzLiBBcmUgd2UgdGFsa2luZyBhYm91dCBzb21ldGhpbmcgbGlrZSBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXIsIHdoaWNoIHJlbGllcyBvbiBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZT8gRHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBvciBgYW1kZ3B1YD8gSXMgdGhlIGBtdDc5MjVgIGRyaXZlciBldmVuICppbiogdGhhdCBjYXRlZ29yeT8gTm8sIGl0JiMzOTtzIGEgV2ktRmkgZHJpdmVyLCBzbyB0aGF0IGRvZXNuJiMzOTt0IGFwcGx5LgoKQnV0IG5vdyBJIGhhdmUgdG8gYXNrIG15c2VsZiwgZG9lcyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBhY3R1YWxseSBnZXQgKmRlZXAqIGludG8gdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbHM/IERvZXMgaXQgaGl0IHRoZSBpbnRlcmVzdGluZyBiaXRzPyBZZXMsIGl0IGNhbi4KCkxldCYjMzk7cyByZXZpZXcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4gSXQgYWRkcyB0aGVzZSBuZXcgZnVuY3Rpb25zOiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgLCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMsIHdoaWNoIGludm9sdmVzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2Ugc2VuZGluZywgYW5kIG1hcHBpbmcgdGFibGUgc2V0dXAuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYWRkZWQgYXJlOiBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgLCBhbmQgdGhhdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KCk5vdywgd2hlcmUgYXJlIHRoZXNlIGZ1bmN0aW9ucyBhY3R1YWxseSAqY2FsbGVkKj8gTG9va3MgbGlrZSBgbXQ3OTI1ZV9tYWNfcmVzZXRgIGFuZCBgbXQ3OTI1ZV9tY3VfaW5pdGAuIENydWNpYWxseSwgYG10NzkyNWVfbWN1X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIG9wZXJhdGlvbi4gU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIGBtdDc5MjVlX21jdV9pbml0YCBkdXJpbmcgcHJvYmU/IElmIHdlIGNhbiByZWFjaCBwcm9iZSwgd2UgY2FuIHJlYWNoIHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZW4gd2UgaGF2ZSBhIHBvdGVudGlhbCBlbnRyeSBwb2ludCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1ZV9tY3VfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNTQ9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzU1OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NTg4PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy02MTItXHRcdC5yZXNldCA9IG10NzkyNWVfbWFjX3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NjEzOlx0XHQubWN1X2luaXQgPSBtdDc5MjVlX21jdV9pbml0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNjE0LVx0XHQuZHJ2X293biA9IG10NzkyeGVfbWN1X2Rydl9wbWN0cmwsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTg9bXQ3OTI1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzoyNzppbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk3ODAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBNQ1UgSW5pdGlhbGl6YXRpb24gaW4gbXQ3OTI1ZSoqCgpSaWdodCwgc28gYG10NzkyNWVfbWN1X2luaXRgIGlzIGRlZmluaXRlbHkgYXNzaWduZWQgdG8gdGhlIGAubWN1X2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGlzIGRyaXZlciwgYW5kIEkga25vdyB0aGF0IGAubWN1X2luaXRgIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgZGV2aWNlIHByb2JlIHNlcXVlbmNlLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgcHJlY2lzZWx5ICp3aGVyZSogdGhhdCBgLm1jdV9pbml0YCBmdW5jdGlvbiBnZXRzIGludm9rZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIHByb2JlIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHN0YWNrIGFyb3VuZCBpdCBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvciB0aW1pbmcgY29uc2lkZXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgTUNVIGluaXRpYWxpemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttY3VfaW5pdFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jPTI3OD1tdDc2MDNfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy0zMDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6MzAzOlx0cmV0ID0gbXQ3NjAzX21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMtMzA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYz0xMTY9c3RhdGljIGludCBtdDc2MDNfbG9hZF9maXJtd2FyZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21jdS5jLTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21jdS5jOjIxODppbnQgbXQ3NjAzX21jdV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYy0yMTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oPTE4Nz12b2lkIG10NzYwM19kbWFfY2xlYW51cChzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4ODppbnQgbXQ3NjAzX21jdV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmgtMTg5LXZvaWQgbXQ3NjAzX2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzM9bXQ3NjE1X3JhZGFyX3BhdHRlcm5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0zOS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTY2PW10NzYxNV9zY3Nfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjcxOlx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy03Mi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwMjpcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMTAzLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTkyPW10NzYxNV9kYmRjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTk2Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xOTctXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMjE9bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI1Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0yMjYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNTE9bXQ3NjE1X3Jlc2V0X3Rlc3Rfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNTY6XHRpZiAoIW10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTI1Ny1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTE4PXN0YXRpYyBzc2l6ZV90IG10NzYxNV90aGVybWFsX3Nob3dfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjI1Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQobWRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtMjYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz0xODg9bXQ3NjE1X2NoZWNrX29mZmxvYWRfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy0yMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6MjIxOmJvb2wgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtMjIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM9Mjc9c3RhdGljIGludCBtdDc2MTVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjM1Olx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0zNi1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTY4MT1zdGF0aWMgaW50IG10NzY2M19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTY5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE2OTY6aW50IG10NzYxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmMtMTY5Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9Mzk1PXZvaWQgbXQ3NjE1X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg6Mzk2OmludCBtdDc2MTVfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDozOTc6Ym9vbCBtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zOTgtdm9pZCBtdDc2MTVfbWFjX3NldF9yYXRlcyhzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3NjE1X3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oPTU1MD1pbnQgbXQ3NjYzX3VzYl9zZGlvX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU1MTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU1Mi1pbnQgbXQ3NjYzdV9tY3VfcG93ZXJfb24oc3RydWN0IG10NzYxNV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTU0LS8qIHNkaW8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU1NTppbnQgbXQ3NjYzc19tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oLTU1Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jPTE1PXN0YXRpYyB2b2lkIG10NzYxNV9wY2lfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoyMTpcdHJldCA9IG10NzYxNV9tY3VfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yMi1cdGZvciAoaSA9IDA7IChyZXQgPT0gLUVBR0FJTikgXHUwMDI2XHUwMDI2IChpIFx1MDAzYyAxMCk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIzLVx0XHRtc2xlZXAoMjAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MjQ6XHRcdHJldCA9IG10NzYxNV9tY3VfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yNS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jPTExMj12b2lkIG10NzYxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmMtMTE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoxMTY6XHRtY3VfcnVubmluZyA9IG10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jPTQyPXN0YXRpYyB2b2lkIG10NzY2M3NfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNDYtXHRkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzYxNV9kZXYsIG1jdV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYzo0NzpcdGlmIChtdDc2NjNzX21jdV9pbml0KGRldikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNDgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvX21jdS5jPTk4PXN0YXRpYyBpbnQgbXQ3NjYzc19tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpb19tY3UuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvX21jdS5jOjEzMzppbnQgbXQ3NjYzc19tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpb19tY3UuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jPTEwMT1zdGF0aWMgdm9pZCBtdDc2NjN1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTA1LVx0ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc2MTVfZGV2LCBtY3Vfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMDY6XHRpZiAobXQ3NjYzdV9tY3VfaW5pdChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmMtMTA3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jPTQ1PWludCBtdDc2NjN1X21jdV9wb3dlcl9vbihzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYzo2NTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaD0yMj1lbnVtIG1jdV9jYWxpYnJhdGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21jdS5oLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6Mzk6aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6NDA6aW50IG10NzZ4MHVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtNDEtc3RhdGljIGlubGluZSBpbnQgbXQ3NngwX2Zpcm13YXJlX3J1bm5pbmcoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM9OTU9c3RhdGljIGludCBtdDc2eDBlX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGJvb2wgcmVzdW1lKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTEwMy1cdG10NzZ4MDJfZG1hX2Rpc2FibGUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jOjEwNDpcdGVyciA9IG10NzZ4MGVfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTEwNS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jPTEzPXN0YXRpYyBpbnQgbXQ3NngwZV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaV9tY3UuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM6MTE2OmludCBtdDc2eDBlX21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTExNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM9MTUxPXN0YXRpYyBpbnQgbXQ3NngwdV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jOjE2MDpcdGVyciA9IG10NzZ4MHVfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYi5jLTE2MS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jPTg1PXN0YXRpYyBpbnQgbXQ3NngwdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYy0xNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM6MTY0OmludCBtdDc2eDB1X21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg9NTg9dm9pZCBtdDc2eDJfcGh5X3NldF90eHBvd2VyKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oLTU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngyLmg6NjA6aW50IG10NzZ4Ml9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaC02MS1pbnQgbXQ3NngyX21jdV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldiwgdTggY2hhbm5lbCwgdTggYncsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oPTMzPXZvaWQgbXQ3NngydV9tY3VfY29tcGxldGVfdXJiKHN0cnVjdCB1cmIgKnVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDJ1Lmg6MzQ6aW50IG10NzZ4MnVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTM1LWludCBtdDc2eDJ1X21jdV9md19pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jPTIyMD1pbnQgbXQ3NngyX3Jlc3VtZV9kZXZpY2Uoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYy0yMzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jOjIzNDpcdHJldHVybiBtdDc2eDJfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjM1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jPTIzNz1zdGF0aWMgaW50IG10NzZ4Ml9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYzoyNjI6XHRyZXQgPSBtdDc2eDJfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjYzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmM9MTU4PW10NzZwY2lfbWN1X3Jlc3RhcnQoc3RydWN0IG10NzZfZGV2ICptZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9tY3UuYy0xNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmM6MTc3OmludCBtdDc2eDJfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmMtMTc4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jPTEyNj1pbnQgbXQ3NngydV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmMtMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYzoxNTE6XHRlcnIgPSBtdDc2eDJ1X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jLTE1Mi1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jPTIzNT1pbnQgbXQ3NngydV9tY3VfZndfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jOjI0NjppbnQgbXQ3NngydV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYy0yNDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYz04NTg9bXQ3OTE1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeTIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jLTg3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYzo4NzM6XHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI0MTA9aW50IG10NzkxNV9tY3VfaW5pdF9maXJtd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyNDY1OmludCBtdDc5MTVfbWN1X2luaXQoc3RydWN0IG10NzkxNV9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTQ3Mz1pbnQgbXQ3OTE1X3J1bihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaDo0NzQ6aW50IG10NzkxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3NS1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYz04ND1zdGF0aWMgaW50IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTEtXHRtdDc2X3dyKGRldiwgTVRfU1dERUZfTU9ERSwgTVRfU1dERUZfTk9STUFMX01PREUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjkyOlx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oPTMwNz1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMDg6aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMDktaW50IG10NzkyMXNfd2ZzeXNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzExPWludCBtdDc5MjFzX2luaXRfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMTM6aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMTQtaW50IG10NzkyMXNfbWN1X2Rydl9wbWN0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jPTIyPW10NzkyMV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM6NDE6aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy00Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYz02MT1zdGF0aWMgdTMyIG10NzkyMXNfY2xlYXJfcm0zcl9kcnZfb3duKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYy03My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM6NzQ6aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTM2PW10NzkyMXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo2NTpzdGF0aWMgaW50IG10NzkyMXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM9MTAwPXN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTA0Olx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTA1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0zNTQ9aW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzU1OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTg9bXQ3OTI1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzoyNzppbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNz1tdDc5MjV1X21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NTY6c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yNjM9c3RydWN0IG10NzkyeF9kbWFfbGF5b3V0IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTI3Ni0jZGVmaW5lIG10NzkyeF9kZXZfcmVzZXQoZGV2KVx0XHQoKGRldiktXHUwMDNlaGlmX29wcy1cdTAwM2VyZXNldChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyNzc6I2RlZmluZSBtdDc5MnhfbWN1X2luaXQoZGV2KVx0XHQoKGRldiktXHUwMDNlaGlmX29wcy1cdTAwM2VtY3VfaW5pdChkZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0yNzgtI2RlZmluZSBfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpXHQoKGRldiktXHUwMDNlaGlmX29wcy1cdTAwM2VkcnZfb3duKGRldikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jPTEyNjQ9c3RhdGljIGludCBtdDc5OTZfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvaW5pdC5jOjEyODk6XHRyZXQgPSBtdDc5OTZfbWN1X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjkwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzEzPWludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6Mzc1OTppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy0zNzYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD03MDM9aW50IG10Nzk5Nl9ydW4oc3RydWN0IG10Nzk5Nl9waHkgKnBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo3MDQ6aW50IG10Nzk5Nl9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTcwNS1pbnQgbXQ3OTk2X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA5NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDc0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIENvZGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggb2YgYG10NzkyNWVfbWN1X2luaXRgLiBJdCBsb29rcyBsaWtlIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIHRocm91Z2ggYSBzZXJpZXMgb2YgbWFjcm9zIGFuZCBmdW5jdGlvbiBjYWxsczogYG10NzkyeF9tY3VfaW5pdGAsIHdoaWNoIGV4cGFuZHMgdG8gYChkZXYpLSZndDtoaWZfb3BzLSZndDttY3VfaW5pdChkZXYpYCwgd2hpY2ggdWx0aW1hdGVseSBsZWFkcyB0byBgbXQ3OTI1ZV9tY3VfaW5pdGAuIFRoaXMgYG10NzkyeF9tY3VfaW5pdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhpbiBgX19tdDc5MjVfaW5pdF9oYXJkd2FyZWAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBtdDc5MjVfaW5pdF9oYXJkd2FyZWAuIEFuZCwgY3J1Y2lhbGx5LCBgbXQ3OTI1X2luaXRfaGFyZHdhcmVgIGlzIGluaXRpYXRlZCB2aWEgYG10NzkyNV9pbml0X3dvcmtgLCB3aGljaCBpcyBzY2hlZHVsZWQgZHVyaW5nIHRoZSBkcml2ZXIgcHJvYmUuIEV4Y2VsbGVudCwgdGhhdCBjb25maXJtcyBpdDsgdGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgaGl0IGR1cmluZyB0aGUgaW5pdGlhbCBwcm9iZSBzZXF1ZW5jZS4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogSXMgdGhpcyBwYXRjaCBtZXJlbHkgY29zbWV0aWMsIG9yIGRvZXMgaXQgaW50cm9kdWNlIHN1YnN0YW50aWFsIGNoYW5nZXM/IEkmIzM5O20gc2VlaW5nIHRoYXQgaXQmIzM5O3MgaW50cm9kdWNpbmcgYSBjb21wbGV0ZWx5IG5ldyBmZWF0dXJlIOKAkyBBWEkgRE1BIGNhbGlicmF0aW9uIGNhY2hlIOKAkyB3aXRoIGFsbG9jYXRpb25zLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudC4gSXQmIzM5O3Mgbm90IGp1c3QgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSBvciBhIGNoYW5nZSB0byBsb2dnaW5nLCBvciBjb25zdGFudHMuIE5vLCBpdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBkcml2ZXIgbG9naWMuIFRoZXJlZm9yZSwgdGhpcyB3YXJyYW50cyBmdXp6aW5nOyBgV29ydGhGdXp6aW5nID0gdHJ1ZWAuCgpOZXh0LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBuZWVkIHRoZSBtb3N0IHNjcnV0aW55LiBUaGUgbmV3IGZ1bmN0aW9uYWxpdHkgZGlyZWN0bHkgdG91Y2hlcyB0aGVzZToKKiAgIGBtdDc5MjVfYXhpZG1hX2FsbG9jYAoqICAgYG10NzkyNV9heGlkbWFfZnJlZWAKKiAgIGBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9gCiogICBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYAoqICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2AKKiAgIGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAKClRoZXNlIGFyZW4mIzM5O3Qgc3RhdGljOyB0aGV5IGFyZSBleHBvcnRlZCBvciBoYXZlIGV4dGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IHRoZSBzb3VyY2UgZmlsZXMgcmlnaHQuIEFoLCBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYCBhcmUgaW4gYGNhY2hlZF9jYWwuY2AgYW5kIGV4cG9ydGVkIGluIGBjYWNoZWRfY2FsLmhgLiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIGlzIGluIGBwY2kuY2AgYW5kIGV4cG9ydGVkIGluIGBtdDc5MjUuaGAuCgpMZXQmIzM5O3MgbGlzdCB0aG9zZSBmdW5jdGlvbnMgaW4gRm9jdXNTeW1ib2xzOgoqICAgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YAoqICAgYG10NzkyNV9heGlkbWFfYWxsb2NgCiogICBgbXQ3OTI1X2F4aWRtYV9mcmVlYAoqICAgYG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mb2AKKiAgIGBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxgCiogICBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYAoKRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0LCBpZiBhbnksIHNwZWNpZmljIENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgdGVzdGVkLiBUaGUgZHJpdmVyIGlzIGBtdDc5MjVgLCBzbyBJJiMzOTtsbCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AuIEkmIzM5O2xsIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRoYXQgYXJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDI5CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJZSBGYWN0b3J5IENhbGlicmF0aW9uIEZlYXR1cmUqKgoKT2theSwgc28gdGhpcyBmZWF0dXJlIGlzICpkZWZpbml0ZWx5KiBQQ0llLXNwZWNpZmljLiBUaGUgY29tbWVudCBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGFib3V0IHNldHRpbmcgdXAgYSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGluIGhvc3QgbWVtb3J5LCBhbmQgaXQgZXhwbGljaXRseSBzYXlzICYjMzQ7UENJZSBvbmx5LiYjMzQ7IFRoZSBGaXJtd2FyZSBpcyBhY2Nlc3NpbmcgdGhpcyBjYWNoZSB2aWEgQVhJIERNQSwgd2hpY2ggd291bGRuJiMzOTt0IG1ha2Ugc2Vuc2Ugb24gYSBkaWZmZXJlbnQgYnVzIGFyY2hpdGVjdHVyZS4gUGx1cywgdGhlIGNvZGUgY2hhbmdlcyBjb25maXJtIHRoaXM7IGl0JiMzOTtzIHRvdWNoaW5nIGBtdDc5MjUvcGNpLmNgLCBgbXQ3OTI1L3BjaV9tYWMuY2AsIGFuZCBgbXQ3OTI1L3BjaV9tY3UuY2AuIFRoYXQgbWVhbnMgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uIGlzIHVuZGVuaWFibHkgYE1UNzkyNUVgLiBOb3csIGJlZm9yZSBJIGRpdmUgZGVlcGVyLCBJJiMzOTtkIGJldHRlciBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1UNzkyNUVgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIHByZS1yZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIHN0YXJ0IHBpY2tpbmcgdGhpcyBhcGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy05LVx0c2VsZWN0IE1UNzkyNV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTA6XHRkZXBlbmRzIG9uIE1BQzgwMjExXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjExOlx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz0xOT1jb25maWcgTVQ3OTI1VVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjItXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyMzpcdGRlcGVuZHMgb24gTUFDODAyMTFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yNS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE3MzcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIHRoZSBNVDc5MjVFIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBgTVQ3OTI1RWAgZHJpdmVyLCBhcyBJIHNlZSBpdCwgcmVsaWVzIGZ1bmRhbWVudGFsbHkgb24gYE1BQzgwMjExYCBhbmQgYFBDSWAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3csIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCBtYWtlIGEgcXVpY2sgbm90ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwYXJlbnQgY29uZmlndXJhdGlvbnMgSSYjMzk7bSBtaXNzaW5nLiBBbHdheXMgZ29vZCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZS4KCkxvb2tpbmcgYSBiaXQgZGVlcGVyLCBJIHNlZSB0aGF0IGBNVDc2X0NPUkVgIGlzLCBhcyBleHBlY3RlZCwgc2VsZWN0ZWQgYnkgYE1UNzkyNV9DT01NT05gLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRlcm1zIG9mIHRoZSB1c3VhbCBNZWRpYXRlayBkcml2ZXIgYXJjaGl0ZWN0dXJlLgoKQW5kIGZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHdoZXRoZXIgb3Igbm90IGBXTEFOYCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYCBhcmUgbmVjZXNzYXJ5LiBMZXQgbWUgcG9wIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIHRvIGNvbmZpcm0gdGhvc2Ugc2VsZWN0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTMtXHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIxNTcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc2IEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlcnMsIGFuZCBteSBzdGFydGluZyBwb2ludCBpcyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIEkgbmVlZCB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IGFueXRoaW5nIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBtb2R1bGUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGlzIEtjb25maWcgZmlsZSB3aWxsIG91dGxpbmUgYWxsIHRoZSBidWlsZCBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIE1UNzYgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBpcyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaCBmb3IgdGhpcyBraW5kIG9mIGtlcm5lbCBpbmZyYXN0cnVjdHVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnM6KiogV2hhdCBmZWF0dXJlcyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSXMgdGhlcmUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgY2hpcHNldHMsIGZyZXF1ZW5jeSBiYW5kcywgb3Igd2lyZWxlc3Mgc3RhbmRhcmRzIGxpa2UgODAyLjExYXg/CiogICAqKkRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzIG9yIGRyaXZlcnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgTVQ3NiBkcml2ZXIgdG8gZnVuY3Rpb24/IFRoaXMgbWlnaHQgaW5jbHVkZSB0aGluZ3MgbGlrZSBmaXJtd2FyZSwgb3RoZXIgbmV0d29ya2luZyBzdWJzeXN0ZW1zLCBvciBldmVuIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMuCiogICAqKkRlZmF1bHQgdmFsdWVzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnM/IFRoaXMgY2FuIGdpdmUgbWUgYSBxdWljayB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleHBlY3RlZCBiZWhhdmlvciBvZiB0aGUgZHJpdmVyIG91dC1vZi10aGUtYm94LgoqICAgKipIZWxwIHRleHQ6KiogSG9wZWZ1bGx5LCB0aGVyZSYjMzk7cyBzb21lIHVzZWZ1bCBoZWxwIHRleHQgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb3B0aW9uIGV4cGxhaW5pbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC4gVGhhdCB3aWxsIHNhdmUgbWUgYSBsb3Qgb2YgdGltZS4KCkVzc2VudGlhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIE1UNzYgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIGFuZCBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCBpbnRvIHRoZSBsYXJnZXIga2VybmVsIHN5c3RlbS4gTm93LCBsZXQmIzM5O3Mgb3BlbiBpdCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzZfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI2NjAKCQkJCQkJCW91dHB1dDogMjYwCgkJCQkJCQl0aG91Z2h0czogNzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBNVDc5MjVFIEFYSSBETUEgQ2FsaWJyYXRpb24gQ2FjaGUgRmVhdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgZW5hYmxpbmcgdGhpcyBuZXcgQVhJIERNQSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3MgYXJlIGVuYWJsZWQuICBgTVQ3OTI1RWAsIGBNQUM4MDIxMWAsIGBXTEFOYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgYXJlIGRlZmluaXRlbHkgbmVjZXNzYXJ5LiBJJiMzOTttIG5vdGluZyB0aGF0IGBQQ0lgIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHg4NiwgYW5kIGBNQUM4MDIxMWAgaXMgc3RhbmRhcmQsIHNvIEkmIzM5O2xsIHRydXN0IHRob3NlIGFyZSBhbHJlYWR5IHRha2VuIGNhcmUgb2YuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgQVBJIGVudHJ5cG9pbnRzLiAgSSYjMzk7dmUgY2hlY2tlZCB0aGUgc3ltYm9sIGxpc3QsIGFuZCBpZGVudGlmaWVkOgoKKiAgIGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAKKiAgIGBtdDc5MjVfYXhpZG1hX2FsbG9jYAoqICAgYG10NzkyNV9heGlkbWFfZnJlZWAKKiAgIGBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9gCiogICBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYAoqICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2AKCkkmIzM5O3ZlIGFsc28gc2VlbiBhIGZldyBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uczogYG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXRgLCBgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZWAsIGBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdGAsIGBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmxgLCBhbmQgYG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0YC4gSG93ZXZlciwgc2luY2UgdGhlIGdvYWwgaXMgdG8gZmF2b3Igbm9uLXN0YXRpYyBBUEkgZW50cnlwb2ludHMgdG8gYWxsb3cgZnV6emluZywgYW5kIHRoZXNlIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCBJJiMzOTttIGV4Y2x1ZGluZyB0aGUgc3RhdGljIG9uZXMuCgpJJiMzOTt2ZSB2ZXJpZmllZCB0aGF0IGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAgaXMgaW5kZWVkIG5vbi1zdGF0aWMsIGRlZmluZWQgaW4gYHBjaS5jYCBhbmQgZXhwb3J0ZWQgaW4gYG10NzkyNS5oYCwgYW5kIHRoZSBvdGhlcnMgYXJlIGluIGBjYWNoZWRfY2FsLmNgIGFuZCBleHBvcnRlZCBpbiBgY2FjaGVkX2NhbC5oYC4KCkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIERNQSBtZW1vcnkgbWFuYWdlbWVudCwgTUNVIG1lc3NhZ2luZyBhbmQgc3RhdGUgY29udHJvbCB0byByZWR1Y2UgY29tcGxldGUgY2FsaWJyYXRpb24gYnkgcmV1c2luZyBjYWNoZWQgZGF0YS4gVGhpcyB3aWxsIGFmZmVjdCB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocy4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIG1ha2luZyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplci4KCk9rYXksIEkmIzM5O20gY29tZm9ydGFibGUgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBhbmQgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNUUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0JiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfYWxsb2MmIzM0OywKICAgICYjMzQ7bXQ3OTI1X2F4aWRtYV9mcmVlJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHBhdGhzLCByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgTU1JTy9ETUEgaW50ZXJhY3Rpb25zLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVFJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdCYjMzQ7LAogICAgJiMzNDttdDc5MjVfYXhpZG1hX2FsbG9jJiMzNDssCiAgICAmIzM0O210NzkyNV9heGlkbWFfZnJlZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8mIzM0OywKICAgICYjMzQ7bXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsJiMzNDssCiAgICAmIzM0O210NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEFYSSBETUEgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBJdCBhZGRzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2luZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQgdG8gYnlwYXNzIGZ1bGwgY2FsaWJyYXRpb24gYnkgcmV1c2luZyBjYWNoZWQgZGF0YS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocywgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIHByb2JpbmcgYW5kIE1NSU8vRE1BIGludGVyYWN0aW9ucywgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTAgMDY6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMCAwNjoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaAppbmRleCAwZWRlZGE1NjllOWE1Li5lNDZjYjRhZTM3YTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmgKQEAgLTEzNTcsOSAmIzQzOzEzNTcsMTEgQEAgZW51bSB7CiAJTUNVX1VOSV9DTURfQUxMX1NUQV9JTkZPID0gMHg2ZSwKIAlNQ1VfVU5JX0NNRF9BU1NFUlRfRFVNUCA9IDB4NmYsCiAJTUNVX1VOSV9DTURfRVhUX0VFUFJPTV9DVFJMID0gMHg3NCwKJiM0MzsJTUNVX1VOSV9DTURfRkFDVF9DQUwgPSAweDdjLAogCU1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsCiAJTUNVX1VOSV9DTURfTUxEID0gMHg4MiwKIAlNQ1VfVU5JX0NNRF9TRE8gPSAweDg4LAomIzQzOwlNQ1VfVU5JX0NNRF9BWElETUEgPSAweGEyLAogfTsKIAogZW51bSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlCmluZGV4IGY5ZGNjMGJiYTM5M2MuLjMzNTM5MTIxYTE1Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlCkBAIC02LDUgJiM0Mzs2LDUgQEAgb2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm8KIAogbXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ubwogbXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUubwotbXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm8KJiM0MzttdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3UubyBjYWNoZWRfY2FsLm8KIG10NzkyNXUteSA6PSB1c2IubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjAzYmQ2ODJmMTIyNGIKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMKQEAgLTAsMCAmIzQzOzEsMzA0IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhcgomIzQzOy8qIENvcHlyaWdodCAoQykgMjAyNiBNZWRpYVRlayBJbmMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtYS1tYXBwaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDsuLi9tdDc5MnguaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtjYWNoZWRfY2FsLmgmIzM0OwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKQomIzQzO3sKJiM0MzsJdTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTsKJiM0MzsKJiM0MzsJbC0mZ3Q7Y29tbW9uX3N0cmlkZSAgPSBoZHIgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007CiYjNDM7CWwtJmd0O2dyb3VwX3N0cmlkZSAgID0gaGRyICYjNDM7IE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQOwomIzQzOwlsLSZndDtjaGFubmVsX3N0cmlkZSA9IGhkciAmIzQzOyBNVDc5MjVfRkFDVF9DQUxfTEVOX0NIOwomIzQzOwomIzQzOwlsLSZndDtjb21tb25fb2ZmICA9IDA7CiYjNDM7CWwtJmd0O2dyb3VwX29mZiAgID0gbC0mZ3Q7Y29tbW9uX29mZiAmIzQzOwomIzQzOwkJbC0mZ3Q7Y29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07CiYjNDM7CWwtJmd0O2NoYW5uZWxfb2ZmID0gbC0mZ3Q7Z3JvdXBfb2ZmICYjNDM7CiYjNDM7CQlsLSZndDtncm91cF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOwomIzQzOwlsLSZndDttYXBwaW5nX29mZiA9IGwtJmd0O2NoYW5uZWxfb2ZmICYjNDM7CiYjNDM7CQlsLSZndDtjaGFubmVsX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOwomIzQzOwlsLSZndDt0b3RhbCA9IGwtJmd0O21hcHBpbmdfb2ZmICYjNDM7CiYjNDM7CQlzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IGw7CiYjNDM7CiYjNDM7CW10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoJmFtcDtsKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGwudG90YWw7CiYjNDM7fQomIzQzOwomIzQzO2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiYjNDM7ewomIzQzOwl1MzIgdG90YWxfc2l6ZTsKJiM0MzsJZG1hX2FkZHJfdCBkbWFfYWRkcjsKJiM0MzsJdm9pZCAqdmE7CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O2NhY2hlZF9jYWwudmEpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJdG90YWxfc2l6ZSA9IG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUoKTsKJiM0MzsKJiM0MzsJdmEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LSZndDttdDc2LmRldiwgdG90YWxfc2l6ZSwgJmFtcDtkbWFfYWRkciwKJiM0MzsJCQkJR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghdmEpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJZGV2LSZndDtjYWNoZWRfY2FsLnZhID0gdmE7CiYjNDM7CWRldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciA9IGRtYV9hZGRyOwomIzQzOwlkZXYtJmd0O2NhY2hlZF9jYWwuc2l6ZSA9IHRvdGFsX3NpemU7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJaWYgKCFkZXYtJmd0O2NhY2hlZF9jYWwudmEpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWRtYV9mcmVlX2NvaGVyZW50KGRldi0mZ3Q7bXQ3Ni5kZXYsIGRldi0mZ3Q7Y2FjaGVkX2NhbC5zaXplLAomIzQzOwkJCSAgZGV2LSZndDtjYWNoZWRfY2FsLnZhLCBkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHIpOwomIzQzOwomIzQzOwltZW1zZXQoJmFtcDtkZXYtJmd0O2NhY2hlZF9jYWwsIDAsIHNpemVvZihkZXYtJmd0O2NhY2hlZF9jYWwpKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEgKnJlcTsKJiM0MzsJdTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYtJmd0O2NhY2hlZF9jYWwudmEpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJcmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIXJlcSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwlyZW1hcF9iYXNlID0gKHUzMikoZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyICZndDsmZ3Q7IDE2KTsKJiM0MzsJcGFfb2Zmc2V0ID0gKHUzMikoZGV2LSZndDtjYWNoZWRfY2FsLmRtYV9hZGRyICZhbXA7IDB4RkZGRik7CiYjNDM7CiYjNDM7CXJlcS0mZ3Q7cmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApOwomIzQzOwlyZXEtJmd0O3JlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtJmd0O3JlbWFwKSk7CiYjNDM7CXJlcS0mZ3Q7cmVtYXAucmVtYXBfYWRkciA9IGNwdV90b19sZTMyKHJlbWFwX2Jhc2UpOwomIzQzOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMKTsKJiM0MzsJcmVxLSZndDtmYWN0X2NhbC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLSZndDtmYWN0X2NhbCkpOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLmhvc3RfYWRkcl9vZmZzZXQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQpOwomIzQzOwlyZXEtJmd0O2ZhY3RfY2FsLnNpemUgPSBjcHVfdG9fbGUzMihkZXYtJmd0O2NhY2hlZF9jYWwuc2l6ZSk7CiYjNDM7CXJlcS0mZ3Q7ZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgJiM0MzsgZGV2LSZndDtjYWNoZWRfY2FsLnNpemUgLSAxKTsKJiM0MzsKJiM0MzsJcmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coJmFtcDtkZXYtJmd0O210NzYsIE1DVV9VTklfQ01EKEFYSURNQSksCiYjNDM7CQkJCXJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTsKJiM0MzsKJiM0MzsJa2ZyZWUocmVxKTsKJiM0MzsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkmIzM0O2ZhaWxlZCB0byBzZW5kIEFYSSBETUEgaW5mbzogJWRcbiYjMzQ7LCByZXQpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgYm9vbCBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaW9uX29mZiwKJiM0MzsJCQkJICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsCiYjNDM7CQkJCSAgICAgICB1MzIgKmNhbF9wYXJhbSwgdTMyICp0b3RhbF9idWZfbnVtKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyAqYmk7CiYjNDM7CXUzMiBvZmYgPSByZWdpb25fb2ZmICYjNDM7IHN0cmlkZSAqIGlkeDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYtJmd0O2NhY2hlZF9jYWwudmEgfHwgb2ZmICYjNDM7IHNpemVvZigqYmkpICZndDsgZGV2LSZndDtjYWNoZWRfY2FsLnNpemUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWJpID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8gKikKJiM0MzsJCSgoY29uc3QgdTggKilkZXYtJmd0O2NhY2hlZF9jYWwudmEgJiM0Mzsgb2ZmKTsKJiM0MzsJaWYgKGNhbF9wYXJhbSkKJiM0MzsJCSpjYWxfcGFyYW0gPSBsZTMyX3RvX2NwdShiaS0mZ3Q7Y2FsX3BhcmFtKTsKJiM0MzsJaWYgKHRvdGFsX2J1Zl9udW0pCiYjNDM7CQkqdG90YWxfYnVmX251bSA9IGxlMzJfdG9fY3B1KGJpLSZndDt0b3RhbF9idWZfbnVtKTsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LAomIzQzOwkJCQkJICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKQomIzQzO3sKJiM0MzsJZG1hX2FkZHJfdCBjb21tb25fcGEsIGdyb3VwX3BhLCBjaGFubmVsX3BhLCBtYXBwaW5nX3BhOwomIzQzOwl1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pOwomIzQzOwlkbWFfYWRkcl90IGJhc2UgPSBkZXYtJmd0O2NhY2hlZF9jYWwuZG1hX2FkZHI7CiYjNDM7CXN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsOwomIzQzOwomIzQzOwltdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KCZhbXA7bCk7CiYjNDM7CiYjNDM7CWNvbW1vbl9wYSAgPSBiYXNlICYjNDM7IGwuY29tbW9uX29mZjsKJiM0MzsJZ3JvdXBfcGEgICA9IGJhc2UgJiM0MzsgbC5ncm91cF9vZmY7CiYjNDM7CWNoYW5uZWxfcGEgPSBiYXNlICYjNDM7IGwuY2hhbm5lbF9vZmY7CiYjNDM7CW1hcHBpbmdfcGEgPSBiYXNlICYjNDM7IGwubWFwcGluZ19vZmY7CiYjNDM7CiYjNDM7CW1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7CiYjNDM7CiYjNDM7CXRibC0mZ3Q7Y29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpOwomIzQzOwl0YmwtJmd0O2NvbW1vbi5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjb21tb25fcGEpKTsKJiM0MzsJdGJsLSZndDtjb21tb24ub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY29tbW9uX3N0cmlkZSk7CiYjNDM7CiYjNDM7CXRibC0mZ3Q7Z3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Z3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Z3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7CiYjNDM7CiYjNDM7CXRibC0mZ3Q7Y2hhbm5lbC5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Y2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7CiYjNDM7CXRibC0mZ3Q7Y2hhbm5lbC5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jaGFubmVsX3N0cmlkZSk7CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O2NhY2hlZF9jYWwucmV1c2VkKSB7CiYjNDM7CQl1MzIgaSwgY2FsX3BhcmFtLCB0b3RhbF9idWZfbnVtOwomIzQzOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkmIzQzOyYjNDM7KQomIzQzOwkJCWlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuY29tbW9uX29mZiwKJiM0MzsJCQkJCQkgICAgICAgbC5jb21tb25fc3RyaWRlLCBpLAomIzQzOwkJCQkJCSAgICAgICAmYW1wO2NhbF9wYXJhbSwgTlVMTCkpCiYjNDM7CQkJCXRibC0mZ3Q7Y29tbW9uLmJhbmRbaV0gPSBjYWxfcGFyYW0gJmFtcDsgMHhmZjsKJiM0MzsKJiM0MzsJCWZvciAoaSA9IDA7IGkgJmx0OyBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmdyb3VwX29mZiwKJiM0MzsJCQkJCQkgICAgICAgbC5ncm91cF9zdHJpZGUsIGksCiYjNDM7CQkJCQkJICAgICAgICZhbXA7Y2FsX3BhcmFtLCBOVUxMKSkKJiM0MzsJCQkJdGJsLSZndDtncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSAmYW1wOyAweGZmOwomIzQzOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMOyBpJiM0MzsmIzQzOykKJiM0MzsJCQlpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNoYW5uZWxfb2ZmLAomIzQzOwkJCQkJCSAgICAgICBsLmNoYW5uZWxfc3RyaWRlLCBpLAomIzQzOwkJCQkJCSAgICAgICAmYW1wO2NhbF9wYXJhbSwKJiM0MzsJCQkJCQkgICAgICAgJmFtcDt0b3RhbF9idWZfbnVtKSkgewomIzQzOwkJCQl0YmwtJmd0O2NoYW5uZWwuY2FsX3BhcmFtW2ldID0KJiM0MzsJCQkJCWNwdV90b19sZTMyKGNhbF9wYXJhbSk7CiYjNDM7CQkJCXRibC0mZ3Q7Y2hhbm5lbC50b3RhbF9idWZfbnVtW2ldID0KJiM0MzsJCQkJCXRvdGFsX2J1Zl9udW0gJmFtcDsgMHhmZjsKJiM0MzsJCQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsJdGJsLSZndDtidWZfaW5mb19zaXplID0gY3B1X3RvX2xlMzIoaGRyKTsKJiM0MzsJdGJsLSZndDtwaHlfYWRkcl9oICAgID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7CiYjNDM7CXRibC0mZ3Q7cGh5X2FkZHJfbCAgICA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMobWFwcGluZ19wYSkpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGNhbF90eXBlLAomIzQzOwkJCQkJIHUzMiBzZXFfbnVtLCBib29sIGRvbmUsCiYjNDM7CQkJCQkgY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGRhdGFfbGVuKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEgKnJlcTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJaWYgKGRhdGFfbGVuICZndDsgTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTikKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwomIzQzOwlyZXEgPSBremFsbG9jKHNpemVvZigqcmVxKSwgR0ZQX0tFUk5FTCk7CiYjNDM7CWlmICghcmVxKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXJlcS0mZ3Q7c2V0LnRhZyA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUKTsKJiM0MzsJcmVxLSZndDtzZXQubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS0mZ3Q7c2V0KSk7CiYjNDM7CXJlcS0mZ3Q7c2V0LnNlcV9udW0gPSBjcHVfdG9fbGUzMihzZXFfbnVtKTsKJiM0MzsJcmVxLSZndDtzZXQuYnVmX2RhdGFfbGVuID0gY3B1X3RvX2xlMzIoZGF0YV9sZW4pOwomIzQzOwlyZXEtJmd0O3NldC5jYWxfdHlwZSA9IGNhbF90eXBlOwomIzQzOwlyZXEtJmd0O3NldC5kb25lID0gZG9uZTsKJiM0MzsJaWYgKGRhdGEgJmFtcDsmYW1wOyBkYXRhX2xlbikKJiM0MzsJCW1lbWNweShyZXEtJmd0O3NldC5idWZfZGF0YSwgZGF0YSwgZGF0YV9sZW4pOwomIzQzOwomIzQzOwkvKiBXYWl0IGZvciB0aGUgQUNLIG9uIHRoZSBmaW5hbCBjaHVuayBvbmx5OiB0aGUgRlcgYXBwbGllcyB0aGUgd2hvbGUKJiM0MzsJICogdGFibGUgdGhlcmUgKERNQXMgdGhlIGNhY2hlZCBjb21tb24gLyBwb3dlci1vbiBncm91cCBjYWwgZGF0YSBpbiBhbmQKJiM0MzsJICogcHJvZ3JhbXMgdGhlIFBIWSksIHNvIGl0cyBBQ0sgaXMgdGhlIGNvbXBsZXRpb24gcG9pbnQuIFdhaXRpbmcgYWxzbwomIzQzOwkgKiBkcmFpbnMgdGhlIEFDS3MgdGhlIGVhcmxpZXIgY2h1bmtzIGxlZnQgaW4gdGhlIE1DVSByZXNwb25zZSBxdWV1ZSwKJiM0MzsJICogc2luY2UgVU5JIGNvbW1hbmRzIGFsd2F5cyByZXF1ZXN0IG9uZS4KJiM0MzsJICovCiYjNDM7CXJldCA9IG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksCiYjNDM7CQkJCXJlcSwgc2l6ZW9mKCpyZXEpLCBkb25lKTsKJiM0MzsJa2ZyZWUocmVxKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsOwomIzQzOwlfX2xlMzIgY2ZnW01UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX0xFTiAvIHNpemVvZihfX2xlMzIpXSA9IHswfTsKJiM0MzsJdTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWlmICghZGV2LSZndDtjYWNoZWRfY2FsLnZhKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXRibCA9IGt6YWxsb2Moc2l6ZW9mKCp0YmwpLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCF0YmwpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJbXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsKGRldiwgdGJsKTsKJiM0MzsKJiM0MzsJY2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTsKJiM0MzsJY2ZnWzJdID0gY3B1X3RvX2xlMzIoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgpOwomIzQzOwlyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLAomIzQzOwkJCQkJICAgIHNlcSwgZmFsc2UsIGNmZywgc2l6ZW9mKGNmZykpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJJiMzNDtmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXG4mIzM0OywKJiM0MzsJCQlzZXEsIHJldCk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwomIzQzOwlsZWZ0ID0gc2l6ZW9mKCp0YmwpOwomIzQzOwl3aGlsZSAobGVmdCkgewomIzQzOwkJdTMyIGNodW5rID0gbWluX3QodTMyLCBsZWZ0LCBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKTsKJiM0MzsKJiM0MzsJCXJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwKJiM0MzsJCQkJCQkgICAgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsCiYjNDM7CQkJCQkJICAgICYjNDM7JiM0MztzZXEsIGZhbHNlLAomIzQzOwkJCQkJCSAgICAodTggKil0YmwgJiM0Mzsgb2ZmLCBjaHVuayk7CiYjNDM7CQlpZiAocmV0KSB7CiYjNDM7CQkJZGV2X2VycihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCQkmIzM0O2ZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXG4mIzM0OywKJiM0MzsJCQkJc2VxLCBvZmYsIGNodW5rLCByZXQpOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJb2ZmICAmIzQzOz0gY2h1bms7CiYjNDM7CQlsZWZ0IC09IGNodW5rOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsCiYjNDM7CQkJCQkgICAgJiM0MzsmIzQzO3NlcSwgdHJ1ZSwgTlVMTCwgMCk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRldl9lcnIoZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkmIzM0O2ZhY3QtY2FsIG1hcHBpbmcgdGJsIGRvbmUgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXG4mIzM0OywKJiM0MzsJCQlzZXEsIHJldCk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzO291dDoKJiM0MzsJa2ZyZWUodGJsKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1OCBfcnN2WzRdOwomIzQzOwomIzQzOwkJc3RydWN0IHsKJiM0MzsJCQlfX2xlMTYgdGFnOwomIzQzOwkJCV9fbGUxNiBsZW47CiYjNDM7CQkJX19sZTMyIGRhdGE7CiYjNDM7CQl9IF9fcGFja2VkIHVwZGF0ZV9mbGFnOwomIzQzOwl9IHJlcSA9IHsKJiM0MzsJCS51cGRhdGVfZmxhZyA9IHsKJiM0MzsJCQkudGFnICA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcpLAomIzQzOwkJCS5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLAomIzQzOwkJCS5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLAomIzQzOwkJfSwKJiM0MzsJfTsKJiM0MzsKJiM0MzsJcmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKCZhbXA7ZGV2LSZndDttdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksCiYjNDM7CQkJCSAmYW1wO3JlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNjU3MjUxM2I3NjQ2NgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaApAQCAtMCwwICYjNDM7MSwxNTEgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyICovCiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi8KJiM0MzsKJiM0MzsjaWZuZGVmIF9fQ0FDSEVEX0NBTF9ICiYjNDM7I2RlZmluZSBfX0NBQ0hFRF9DQUxfSAomIzQzOwomIzQzO2VudW0gbXQ3OTI1X2F4aWRtYV9pbmZvX3RhZyB7CiYjNDM7CU1UNzkyNV9BWElETUFfVEFHX1JFTUFQID0gMCwKJiM0MzsJTVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwgPSAxLAomIzQzOwlNVDc5MjVfQVhJRE1BX1RBR19OVU0KJiM0Mzt9OwomIzQzOwomIzQzO2VudW0gbXQ3OTI1X2ZhY3RfY2FsX3RhZyB7CiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UQUdfVFJJR0dFUgk9IDIsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcJPSAzLAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX0dFVAk9IDQsCiYjNDM7CU1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUCT0gNSwKJiM0Mzt9OwomIzQzOwomIzQzO2VudW0gbXQ3OTI1X2ZhY3RfY2FsX3R5cGUgewomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVFlQRV9DT01NT04JCT0gMCwKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfR1JPVVAJCT0gMSwKJiM0MzsJTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ0hBTk5FTAkJPSAyLAomIzQzOwlNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTAk9IDQsCiYjNDM7fTsKJiM0MzsKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4JCTE0MDAKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX0xFTgkJCTE2CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWAk0CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOCQk0CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTiBcCiYjNDM7CShNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWCAqIE1UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX1UzMl9MRU4pCiYjNDM7CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNCQkyCiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNCQkzNQomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV8yRwkJMTQKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcJCTY4CiYjNDM7I2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHCQkxMDkKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMIFwKJiM0MzsJKE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fMkcgJiM0MzsgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV81RyAmIzQzOyBcCiYjNDM7CSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHKQomIzQzOwomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT00JCQk2MDAKJiM0MzsjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQCQkJNDUwMAomIzQzOyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSAkJCTI4MDAKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvIHsKJiM0MzsJX19sZTMyIGNhbF90eXBlOwomIzQzOwlfX2xlMzIgY2FsX3BhcmFtOwomIzQzOwlfX2xlMzIgYnVmX3NlcV9udW07CiYjNDM7CV9fbGUzMiB0b3RhbF9idWZfbnVtOwomIzQzOwlfX2xlMzIgYnVmX2RhdGFfbGVuOwomIzQzOwl1OCB2YWxpZDsKJiM0MzsJdTggZG9uZTsKJiM0MzsJdTggcnN2WzJdOwomIzQzOwlfX2xlMzIgYnVmX2NmZ19pbmZvW01UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOXTsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pID09IDg4LAomIzQzOwkgICAgICAmIzM0O2J1Zl9pbmZvIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoODggYnl0ZXMpIG9yIGl0IHJlamVjdHMgdGhlIG1hcHBpbmcgdGFibGUmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIHsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2g7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9sOwomIzQzOwlfX2xlMzIgb2Zmc2V0OwomIzQzOwl1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dOwomIzQzOwl1OCByc3ZbMl07CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCB7CiYjNDM7CV9fbGUzMiBwaHlfYWRkcl9oOwomIzQzOwlfX2xlMzIgcGh5X2FkZHJfbDsKJiM0MzsJX19sZTMyIG9mZnNldDsKJiM0MzsJdTggZ3JvdXBbTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTV07CiYjNDM7CXU4IHJzdjsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAgewomIzQzOwlfX2xlMzIgcGh5X2FkZHJfaDsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2w7CiYjNDM7CV9fbGUzMiBvZmZzZXQ7CiYjNDM7CV9fbGUzMiBjYWxfcGFyYW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdOwomIzQzOwl1OCB0b3RhbF9idWZfbnVtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTsKJiM0MzsJdTggcnN2OwomIzQzO30gX19wYWNrZWQ7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247CiYjNDM7CXN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIGdyb3VwOwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7CiYjNDM7CV9fbGUzMiBidWZfaW5mb19zaXplOwomIzQzOwlfX2xlMzIgcGh5X2FkZHJfaDsKJiM0MzsJX19sZTMyIHBoeV9hZGRyX2w7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LAomIzQzOwkgICAgICAmIzM0O21hcHBpbmcgdGFibGUgbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICgxMDQ0IGJ5dGVzKSBvciB0aGUgRlcgcGFyc2UgY29ycnVwdHMmIzM0Oyk7CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHsKJiM0MzsJdTMyIGNvbW1vbl9vZmYsIGdyb3VwX29mZiwgY2hhbm5lbF9vZmYsIG1hcHBpbmdfb2ZmOwomIzQzOwl1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTsKJiM0MzsJdTMyIHRvdGFsOwomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEgewomIzQzOwl1OCBfcnN2WzRdOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJX19sZTE2IHRhZzsKJiM0MzsJCV9fbGUxNiBsZW47CiYjNDM7CQlfX2xlMzIgcmVtYXBfYWRkcjsKJiM0MzsJCV9fbGUzMiByZXNlcnZlZDsKJiM0MzsJfSBfX3BhY2tlZCByZW1hcDsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCV9fbGUxNiB0YWc7CiYjNDM7CQlfX2xlMTYgbGVuOwomIzQzOwkJX19sZTMyIGhvc3RfYWRkcl9vZmZzZXQ7CiYjNDM7CQlfX2xlMzIgc2l6ZTsKJiM0MzsJCV9fbGUzMiBib3VuZDsKJiM0MzsJCV9fbGUzMiByZXNlcnZlZDsKJiM0MzsJfSBfX3BhY2tlZCBmYWN0X2NhbDsKJiM0Mzt9IF9fcGFja2VkOwomIzQzOwomIzQzO3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxIHsKJiM0MzsJdTggX3Jzdls0XTsKJiM0MzsKJiM0MzsJc3RydWN0IHsKJiM0MzsJCV9fbGUxNiB0YWc7CiYjNDM7CQlfX2xlMTYgbGVuOwomIzQzOwkJX19sZTMyIGRhdGE7CiYjNDM7CQlfX2xlMzIgc2VxX251bTsKJiM0MzsJCV9fbGUzMiBidWZfZGF0YV9sZW47CiYjNDM7CQl1OCBjYWxfdHlwZTsKJiM0MzsJCXU4IGRvbmU7CiYjNDM7CQl1OCByc3ZbMl07CiYjNDM7CQl1OCBidWZfZGF0YVtNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOXTsKJiM0MzsJfSBfX3BhY2tlZCBzZXQ7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X2F4aWRtYV9hbGxvYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKJiM0MzsKJiM0Mzt2b2lkIG10NzkyNV9heGlkbWFfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKJiM0MzsKJiM0MztpbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwomIzQzOwomIzQzO2ludCBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7CiYjNDM7aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9fQ0FDSEVEX0NBTF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCmluZGV4IDMyMWU3MzIzNDdmMmYuLjRkNzljMWU2NmU2NmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCkBAIC0zNTMsNiAmIzQzOzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCwKIAogaW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpOwogaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7CiYjNDM7dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKIHZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpOwogdm9pZCBtdDc5MjhfbWFjX2FkZF90eHNfbXNnKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmV2dCk7CiB2b2lkIG10NzkyNV9zZXRfcnVudGltZV9wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKaW5kZXggMDJlZjA5ZGQ3OTdkYS4uNzI0YWJkMmJlNTdjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKQEAgLTksNiAmIzQzOzksNyBAQAogI2luY2x1ZGUgJiMzNDttYWMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O21jdS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cmVnZC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2NhY2hlZF9jYWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL2RtYS5oJiMzNDsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlW10gPSB7CkBAIC0zOCw2ICYjNDM7MzksNjIgQEAgc3RhdGljIGludCBtdDc5MjVlX2luaXRfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAlyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7CiB9CiAKJiM0MzsvKiBTZXQgdXAgdGhlIGZhY3RvcnktY2FsaWJyYXRpb24gY2FjaGUgaW4gaG9zdCBtZW1vcnkuIFBDSWUgb25seTogdGhlIEZXCiYjNDM7ICogcmVhY2hlcyB0aGUgYnVmZmVyIHRocm91Z2ggQVhJIERNQSwgc28gaXQgaGFzIG5vIG1lYW5pbmcgb24gb3RoZXIgYnVzZXMuCiYjNDM7ICogRXZlcnkgZmFpbHVyZSBqdXN0IGxlYXZlcyB0aGUgY2FjaGUgb2ZmLCB3aGljaCBpcyBub3QgZmF0YWwuCiYjNDM7ICovCiYjNDM7dm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQomIzQzO3sKJiM0MzsJaWYgKCEoZGV2LSZndDtwaHkuY2hpcF9jYXAgJmFtcDsgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChkZXYtJmd0O2NhY2hlZF9jYWwudmEpIHsKJiM0MzsJCS8qIENhcnJpZWQtb3ZlciBidWZmZXIgc3RpbGwgaG9sZHMgRlctd3JpdHRlbiBjYWwgZGF0YS4gKi8KJiM0MzsJCWRldi0mZ3Q7Y2FjaGVkX2NhbC5yZXVzZWQgPSB0cnVlOwomIzQzOwl9IGVsc2UgewomIzQzOwkJaWYgKG10NzkyNV9heGlkbWFfYWxsb2MoZGV2KSkgewomIzQzOwkJCWRldl93YXJuKGRldi0mZ3Q7bXQ3Ni5kZXYsCiYjNDM7CQkJCSAmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBidWZmZXIgYWxsb2MgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuOwomIzQzOwkJfQomIzQzOwkJLyogRnJlc2hseSBhbGxvY2F0ZWQgYnVmZmVyIGlzIHplcm9lZDogbm8gY2FsIGRhdGEgeWV0LiAqLwomIzQzOwkJZGV2LSZndDtjYWNoZWRfY2FsLnJldXNlZCA9IGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oZGV2KSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogaW5mbyBjbWQgdG8gRlcgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogRW5hYmxlIHRoZSBieXBhc3MtY2FsIGZsb3cgc28gdGhlIEZXIHJldXNlcyBjYWNoZWQgY2FsIGRhdGEKJiM0MzsJICogKGNvbW1vbiAvIHBvd2VyLW9uIGdyb3VwKSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYSBmdWxsIGNhbGlicmF0aW9uOwomIzQzOwkgKiBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIG1hcHBpbmcgdGFibGUgaXMgc2VudC4KJiM0MzsJICovCiYjNDM7CWlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCB0cnVlKSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxuJiMzNDspOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwoZGV2KSkgewomIzQzOwkJZGV2X3dhcm4oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCQkgJiMzNDtBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKGRldiwgZmFsc2UpKSB7CiYjNDM7CQlkZXZfd2FybihkZXYtJmd0O210NzYuZGV2LAomIzQzOwkJCSAmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJZGV2X2luZm8oZGV2LSZndDttdDc2LmRldiwKJiM0MzsJCSAmIzM0O0FYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXG4mIzM0OywKJiM0MzsJCSAmYW1wO2Rldi0mZ3Q7Y2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LSZndDtjYWNoZWRfY2FsLnNpemUsCiYjNDM7CQkgZGV2LSZndDtjYWNoZWRfY2FsLnJldXNlZCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogewogCWludCBpOwpAQCAtNTgsNiAmIzQzOzExNSw5IEBAIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAogCW10NzkyNV90eF90b2tlbl9wdXQoZGV2KTsKIAlfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpOwomIzQzOwomIzQzOwltdDc5MjVfYXhpZG1hX2ZyZWUoZGV2KTsKJiM0MzsKIAltdDc5MnhfZG1hX2NsZWFudXAoZGV2KTsKIAltdDc5Mnhfd2ZzeXNfcmVzZXQoZGV2KTsKIAlza2JfcXVldWVfcHVyZ2UoJmFtcDtkZXYtJmd0O210NzYubWN1LnJlc19xKTsKQEAgLTU4Nyw3ICYjNDM7NjQ3LDcgQEAgc3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCWlzX210NzkyOF9odyA9IChwZGV2LSZndDtkZXZpY2UgPT0gMHg3OTI4IHx8IHBkZXYtJmd0O2RldmljZSA9PSAweDc5MzUpOwogCiAJaWYgKGlzX210NzkyOF9odykKLQkJcmV0ID0gZG1hX3NldF9tYXNrKCZhbXA7cGRldi0mZ3Q7ZGV2LCBETUFfQklUX01BU0soMzQpKTsKJiM0MzsJCXJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoJmFtcDtwZGV2LSZndDtkZXYsIERNQV9CSVRfTUFTSygzNCkpOwogCWVsc2UKIAkJcmV0ID0gZG1hX3NldF9tYXNrKCZhbXA7cGRldi0mZ3Q7ZGV2LCBETUFfQklUX01BU0soMzIpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jCmluZGV4IDg0NzdkMjFhYmM2NjAuLmM5MGYxMjliM2EzNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmMKQEAgLTEzNSw2ICYjNDM7MTM1LDggQEAgaW50IG10NzkyNWVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJaWYgKGVycikKIAkJZ290byBvdXQ7CiAKJiM0MzsJbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoZGV2KTsKJiM0MzsKIAllcnIgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYwppbmRleCA3MjcwN2VkZGMzZGI2Li4yNThmMzc1M2RiMWZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jCkBAIC00Niw2ICYjNDM7NDYsOCBAQCBpbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCW10NzZfcm13X2ZpZWxkKGRldiwgZGV2LSZndDtwY2llX3JlZy0mZ3Q7cG0sIE1UX1BDSUVfTUFDX1BNX0wwU19ESVMsIDEpOwogCiAJZXJyID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpOwomIzQzOwlpZiAoIWVycikKJiM0MzsJCW10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7CiAKIAltdDc2X3F1ZXVlX3R4X2NsZWFudXAoZGV2LCBkZXYtJmd0O210NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAppbmRleCA5ZWZjMjUxY2I3NDVmLi43NDBkNTE3ZWIzOGJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKQEAgLTMzLDYgJiM0MzszMyw3IEBACiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KQogI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfTUxPX0VOIEJJVCg4KQogI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfTUxPX0VNTF9FTiBCSVQoOSkKJiM0MzsjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KQogCiAvKiBOT1RFOiB1c2VkIHRvIG1hcCBtdDc2X3JhdGVzLiBpZHggbWF5IGNoYW5nZSBpZiBmaXJtd2FyZSBleHBhbmRzIHRhYmxlICovCiAjZGVmaW5lIE1UNzkyeF9CQVNJQ19SQVRFU19UQkwJMTQKQEAgLTM0Miw2ICYjNDM7MzQzLDEzIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqbmFuX3ZpZjsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uICppZmFjZV9jb21iaW5hdGlvbnM7CiAJaW50IG5faWZhY2VfY29tYmluYXRpb25zOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdm9pZCAqdmE7CiYjNDM7CQlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwkJdTMyIHNpemU7CiYjNDM7CQlib29sIHJldXNlZDsKJiM0MzsJfSBjYWNoZWRfY2FsOwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgbXQ3OTJ4X2Jzc19jb25mICoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDczCgkJCQkJCQlvdXRwdXQ6IDIyMwoJCQkJCQkJdGhvdWdodHM6IDE5NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQ2hlY2s6IE1UNzkyNSBGYWN0b3J5IENhbGlicmF0aW9uIERhdGEgQ2FjaGluZyB3aXRoIEFYSSBETUEqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZlYXR1cmUgZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCBhbGxvd2luZyBmb3IgY2FjaGluZyBvZiBmYWN0b3J5IGNhbGlicmF0aW9uIGRhdGEgdXNpbmcgQVhJIERNQS4gTXkgaW5pdGlhbCBmb2N1cywgYXMgYWx3YXlzLCBpcyBvbiBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGUgY29kZSBhbGxvY2F0ZXMgYSBETUEgYnVmZmVyIHVzaW5nIGBkbWFfYWxsb2NfY29oZXJlbnRgLCBzZW5kcyBpdHMgYWRkcmVzcyB0byB0aGUgTUNVLCBhbmQgYWxzbyBzZW5kcyBhIG1hcHBpbmcgdGFibGUuIE15IHByaW1hcnkgY29uY2VybiBpcyBpZiB0aGVyZSBhcmUgYW55IHVuaW5pdGlhbGl6ZWQgZmllbGRzIGJlaW5nIHNlbnQgdG8gdGhlIE1DVSwgb3IgZXZlbiB3b3JzZSwgdXNlciBzcGFjZS4KCkxldCBtZSBnbyB0aHJvdWdoIHRoZSBrZXkgYXJlYXMgc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIGV4YW1pbmVkIGBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9gLiBIZXJlLCBhIGByZXFgIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgLiBHb29kLCBga3phbGxvY2AgZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGlzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gVGhlIGNvZGUgdGhlbiBwb3B1bGF0ZXMgc29tZSBmaWVsZHMgcmVsYXRlZCB0byBETUEgcmVtYXBwaW5nIGFuZCBmYWN0b3J5IGNhbGlicmF0aW9uIGRhdGEuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCBga3phbGxvY2AgdGFrZXMgY2FyZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24uCgpOZXh0LCBgbXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsYCBpcyBleGFtaW5lZC4gVGhlIGNvZGUgaW5pdGlhbGl6ZXMgYHRibGAgc3RydWN0dXJlIGJ5IGNhbGxpbmcgYG1lbXNldGAsIHNvIGl0IGlzIGZ1bGx5IHplcm9lZC4KCkkgYWxzbyBjaGVja2VkIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldGAuIFRoZSBgcmVxYCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgIHRoZXJlIHRvbywgd2hpY2ggZW5zdXJlcyB0aGUgYnVmZmVyIGlzIHplcm9lZCwgYW5kIGFueSBkYXRhIGNvcGllZCBpbnRvIGByZXEtJmd0O3NldC5idWZfZGF0YWAgd2lsbCBiZSBwb3B1bGF0ZWQgZnJvbSBkYXRhIHBhc3NlZCBpbiB0aGUgZnVuY3Rpb24uCgpUaGVuLCB0aGVyZSYjMzk7cyBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYC4gVGhpcyBvbmUgaGFkIGEgYml0IG9mIGFuIGludGVyZXN0aW5nIHN0cnVjdHVyZSB3aXRoIGEgcmVzZXJ2ZWQgZmllbGQgYF9yc3ZgLiBCdXQsIHNpbmNlIHRoZSBzdHJ1Y3R1cmUgdXNlcyBhbiBpbml0aWFsaXplciwgdGhlIEMgc3RhbmRhcmQgZ3VhcmFudGVlcyB0aGF0IHRoZSB1bmluaXRpYWxpemVkIG1lbWJlcnMgd2lsbCBhbHNvIGJlIHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlZm9yZSwgYF9yc3ZgIHdpbGwgYWxzbyBiZSB6ZXJvLgoKTGV0JiMzOTtzIG5vdCBmb3JnZXQgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAgd2hpY2ggdXNlcyBgX19sZTMyIGNmZ1tdID0gezB9YC4gVGhlIGBjZmdgIHZhcmlhYmxlIGlzIGFsc28gZnVsbHkgemVyb2VkLgoKQXJlIHRoZXJlIGFueSBvdGhlciBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVT8gTm8sIGl0JiMzOTtzIGp1c3QgYHJlcWAgYW5kIGB0YmxgLiBJJiMzOTttIHN5c3RlbWF0aWNhbGx5IGdvaW5nIHRocm91Z2ggdGhlIGNvZGUuCgpUaGVuIEkgY29uc2lkZXJlZCB3aGV0aGVyIHRoZXJlIHdlcmUgYW55IHJlYWRzIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkuIEluIGBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdGAsIHRoZXJlJiMzOTtzIGEgcmVhZCBmcm9tIGBkZXYtJmd0O2NhY2hlZF9jYWwudmFgLiBBaCwgYnV0IHRoYXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBieSBgZG1hX2FsbG9jX2NvaGVyZW50YC4gVGhpcyBmdW5jdGlvbiB6ZXJvcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgcmVhZCBvcGVyYXRpb24gd29uJiMzOTt0IGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFNwZWNpZmljYWxseSwgSSBjb25maXJtZWQgdGhhdCBgZG1hX2FsbG9jX2NvaGVyZW50YCB6ZXJvLWluaXRpYWxpemVzIHRoZSBtZW1vcnkuCgpBcmUgdGhlcmUgYW55IHdyaXRlcyB0byB1c2VyIHNwYWNlPyBObywgdGhpcyBpcyBhbGwgaW50ZXJuYWwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBNQ1UuCgpHb2luZyBiYWNrIHRvIHRoZSBgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXRgLCBga3phbGxvY2AgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvIGhlcmUgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IGhhcHBlbnMuCgpJIGRpZCBhIGRvdWJsZSBjaGVjayBvZiB0aGUgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2Agc3RydWN0dXJlIGFnYWluLCB0byBtYWtlIHN1cmUgaXQgaXMgaW5kZWVkIHplcm8gaW5pdGlhbGl6ZWQuCgpGaW5hbGx5LCBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYCBpcyBhbHNvIGNoZWNrZWQgdG8gYmUgYWxsb2NhdGVkIHdpdGggYGt6YWxsb2NgLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgYWxsIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIGFuZCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHNlbnQgdG8gZWl0aGVyIHRoZSBNQ1Ugb3IsIHZpdGFsbHksIHVzZXIgc3BhY2UuIFRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBLQVNBTiBvciBLTVNBTiBpc3N1ZXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4gU3RhbmRhcmQgS0FTQU4gc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFkZHJlc3NpbmcgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzLCBhbmQgc28gSSB3aWxsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEwIDA2OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdXNpbmcgQVhJIERNQS4gQWxsIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVIChlLmcuLCBgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCB0aGUgYnlwYXNzIHJlcXVlc3QpIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIHVzaW5nIGBremFsbG9jYCwgYG1lbXNldGAsIG9yIEMgc3RydWN0IGluaXRpYWxpemVycy4gVGhlIERNQSBidWZmZXIgaXRzZWxmIGlzIGFsbG9jYXRlZCB3aXRoIGBkbWFfYWxsb2NfY29oZXJlbnRgLCB3aGljaCBndWFyYW50ZWVzIHplcm8taW5pdGlhbGl6YXRpb24uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkIHRvIHRoZSBNQ1Ugb3IgdXNlciBzcGFjZSwgbm9yIGlzIHRoZXJlIGFueSBjb250cm9sIGZsb3cgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMjozOC4xNTgyOTA3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODU3NTYwMzI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdFwiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9hbGxvY1wiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9mcmVlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9cIixcbiAgICBcIm10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibFwiLFxuICAgIFwibXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgcGF0aHMsIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTI6MzguMTU4Mjk4MTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTEyODQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDIxMWIxMGNhY2ZjMzJjMTY0ZjhlZGNlZjE1ZTc1MTdkMTAyMGJjNDJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcXG5pbmRleCAwZWRlZGE1NjllOWE1Li5lNDZjYjRhZTM3YTk4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oXFxuQEAgLTEzNTcsOSArMTM1NywxMSBAQCBlbnVtIHtcXG4gXFx0TUNVX1VOSV9DTURfQUxMX1NUQV9JTkZPID0gMHg2ZSxcXG4gXFx0TUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLFxcbiBcXHRNQ1VfVU5JX0NNRF9FWFRfRUVQUk9NX0NUUkwgPSAweDc0LFxcbitcXHRNQ1VfVU5JX0NNRF9GQUNUX0NBTCA9IDB4N2MsXFxuIFxcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXFxuIFxcdE1DVV9VTklfQ01EX01MRCA9IDB4ODIsXFxuIFxcdE1DVV9VTklfQ01EX1NETyA9IDB4ODgsXFxuK1xcdE1DVV9VTklfQ01EX0FYSURNQSA9IDB4YTIsXFxuIH07XFxuIFxcbiBlbnVtIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxcbmluZGV4IGY5ZGNjMGJiYTM5M2MuLjMzNTM5MTIxYTE1Y2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVxcbkBAIC02LDUgKzYsNSBAQCBvYmotJChDT05GSUdfTVQ3OTI1VSkgKz0gbXQ3OTI1dS5vXFxuIFxcbiBtdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuIG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbi1tdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbittdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3UubyBjYWNoZWRfY2FsLm9cXG4gbXQ3OTI1dS15IDo9IHVzYi5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMDNiZDY4MmYxMjI0Ylxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmNcXG5AQCAtMCwwICsxLDMwNCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuKy8qIENvcHlyaWdodCAoQykgMjAyNiBNZWRpYVRlayBJbmMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIi4uL210NzkyeC5oXFxcIlxcbisjaW5jbHVkZSBcXFwiY2FjaGVkX2NhbC5oXFxcIlxcbitcXG4rc3RhdGljIHZvaWQgbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgKmwpXFxuK3tcXG4rXFx0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcXG4rXFxuK1xcdGwtXFx1MDAzZWNvbW1vbl9zdHJpZGUgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007XFxuK1xcdGwtXFx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9HUlA7XFxuK1xcdGwtXFx1MDAzZWNoYW5uZWxfc3RyaWRlID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcXG4rXFxuK1xcdGwtXFx1MDAzZWNvbW1vbl9vZmYgID0gMDtcXG4rXFx0bC1cXHUwMDNlZ3JvdXBfb2ZmICAgPSBsLVxcdTAwM2Vjb21tb25fb2ZmICtcXG4rXFx0XFx0bC1cXHUwMDNlY29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07XFxuK1xcdGwtXFx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cXHUwMDNlZ3JvdXBfb2ZmICtcXG4rXFx0XFx0bC1cXHUwMDNlZ3JvdXBfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTtcXG4rXFx0bC1cXHUwMDNlbWFwcGluZ19vZmYgPSBsLVxcdTAwM2VjaGFubmVsX29mZiArXFxuK1xcdFxcdGwtXFx1MDAzZWNoYW5uZWxfc3RyaWRlICogTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7XFxuK1xcdGwtXFx1MDAzZXRvdGFsID0gbC1cXHUwMDNlbWFwcGluZ19vZmYgK1xcbitcXHRcXHRzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCk7XFxuK31cXG4rXFxuK3N0YXRpYyB1MzIgbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xcbitcXG4rXFx0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcXHUwMDI2bCk7XFxuK1xcbitcXHRyZXR1cm4gbC50b3RhbDtcXG4rfVxcbitcXG4raW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4re1xcbitcXHR1MzIgdG90YWxfc2l6ZTtcXG4rXFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcXG4rXFx0dm9pZCAqdmE7XFxuK1xcbitcXHRpZiAoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnZhKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHRvdGFsX3NpemUgPSBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplKCk7XFxuK1xcbitcXHR2YSA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYtXFx1MDAzZW10NzYuZGV2LCB0b3RhbF9zaXplLCBcXHUwMDI2ZG1hX2FkZHIsXFxuK1xcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXZhKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdGRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xcbitcXHRkZXYtXFx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjtcXG4rXFx0ZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuK3tcXG4rXFx0aWYgKCFkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGRtYV9mcmVlX2NvaGVyZW50KGRldi1cXHUwMDNlbXQ3Ni5kZXYsIGRldi1cXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxcbitcXHRcXHRcXHQgIGRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSwgZGV2LVxcdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyKTtcXG4rXFxuK1xcdG1lbXNldChcXHUwMDI2ZGV2LVxcdTAwM2VjYWNoZWRfY2FsLCAwLCBzaXplb2YoZGV2LVxcdTAwM2VjYWNoZWRfY2FsKSk7XFxuK31cXG4rXFxuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xcbitcXHR1MzIgcmVtYXBfYmFzZSwgcGFfb2Zmc2V0O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0aWYgKCFkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXJlcSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZW1hcF9iYXNlID0gKHUzMikoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyIFxcdTAwM2VcXHUwMDNlIDE2KTtcXG4rXFx0cGFfb2Zmc2V0ID0gKHUzMikoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyIFxcdTAwMjYgMHhGRkZGKTtcXG4rXFxuK1xcdHJlcS1cXHUwMDNlcmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApO1xcbitcXHRyZXEtXFx1MDAzZXJlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXFx1MDAzZXJlbWFwKSk7XFxuK1xcdHJlcS1cXHUwMDNlcmVtYXAucmVtYXBfYWRkciA9IGNwdV90b19sZTMyKHJlbWFwX2Jhc2UpO1xcbitcXG4rXFx0cmVxLVxcdTAwM2VmYWN0X2NhbC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCk7XFxuK1xcdHJlcS1cXHUwMDNlZmFjdF9jYWwubGVuID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS1cXHUwMDNlZmFjdF9jYWwpKTtcXG4rXFx0cmVxLVxcdTAwM2VmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTtcXG4rXFx0cmVxLVxcdTAwM2VmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUpO1xcbitcXHRyZXEtXFx1MDAzZWZhY3RfY2FsLmJvdW5kID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0ICsgZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUgLSAxKTtcXG4rXFxuK1xcdHJldCA9IG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKEFYSURNQSksXFxuK1xcdFxcdFxcdFxcdHJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTtcXG4rXFxuK1xcdGtmcmVlKHJlcSk7XFxuK1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWlsZWQgdG8gc2VuZCBBWEkgRE1BIGluZm86ICVkXFxcXG5cXFwiLCByZXQpO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgbXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lvbl9vZmYsXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1MzIgc3RyaWRlLCB1MzIgaWR4LFxcbitcXHRcXHRcXHRcXHQgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcXG4rXFx0dTMyIG9mZiA9IHJlZ2lvbl9vZmYgKyBzdHJpZGUgKiBpZHg7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSB8fCBvZmYgKyBzaXplb2YoKmJpKSBcXHUwMDNlIGRldi1cXHUwMDNlY2FjaGVkX2NhbC5zaXplKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRiaSA9IChjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICopXFxuK1xcdFxcdCgoY29uc3QgdTggKilkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xcbitcXHRpZiAoY2FsX3BhcmFtKVxcbitcXHRcXHQqY2FsX3BhcmFtID0gbGUzMl90b19jcHUoYmktXFx1MDAzZWNhbF9wYXJhbSk7XFxuK1xcdGlmICh0b3RhbF9idWZfbnVtKVxcbitcXHRcXHQqdG90YWxfYnVmX251bSA9IGxlMzJfdG9fY3B1KGJpLVxcdTAwM2V0b3RhbF9idWZfbnVtKTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsICp0YmwpXFxuK3tcXG4rXFx0ZG1hX2FkZHJfdCBjb21tb25fcGEsIGdyb3VwX3BhLCBjaGFubmVsX3BhLCBtYXBwaW5nX3BhO1xcbitcXHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xcbitcXHRkbWFfYWRkcl90IGJhc2UgPSBkZXYtXFx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHI7XFxuK1xcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xcbitcXG4rXFx0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcXHUwMDI2bCk7XFxuK1xcbitcXHRjb21tb25fcGEgID0gYmFzZSArIGwuY29tbW9uX29mZjtcXG4rXFx0Z3JvdXBfcGEgICA9IGJhc2UgKyBsLmdyb3VwX29mZjtcXG4rXFx0Y2hhbm5lbF9wYSA9IGJhc2UgKyBsLmNoYW5uZWxfb2ZmO1xcbitcXHRtYXBwaW5nX3BhID0gYmFzZSArIGwubWFwcGluZ19vZmY7XFxuK1xcbitcXHRtZW1zZXQodGJsLCAwLCBzaXplb2YoKnRibCkpO1xcbitcXG4rXFx0dGJsLVxcdTAwM2Vjb21tb24ucGh5X2FkZHJfaCA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoY29tbW9uX3BhKSk7XFxuK1xcdHRibC1cXHUwMDNlY29tbW9uLnBoeV9hZGRyX2wgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xcbitcXHR0YmwtXFx1MDAzZWNvbW1vbi5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jb21tb25fc3RyaWRlKTtcXG4rXFxuK1xcdHRibC1cXHUwMDNlZ3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XFxuK1xcdHRibC1cXHUwMDNlZ3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XFxuK1xcdHRibC1cXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XFxuK1xcbitcXHR0YmwtXFx1MDAzZWNoYW5uZWwucGh5X2FkZHJfaCA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoY2hhbm5lbF9wYSkpO1xcbitcXHR0YmwtXFx1MDAzZWNoYW5uZWwucGh5X2FkZHJfbCA9IGNwdV90b19sZTMyKGxvd2VyXzMyX2JpdHMoY2hhbm5lbF9wYSkpO1xcbitcXHR0YmwtXFx1MDAzZWNoYW5uZWwub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY2hhbm5lbF9zdHJpZGUpO1xcbitcXG4rXFx0aWYgKGRldi1cXHUwMDNlY2FjaGVkX2NhbC5yZXVzZWQpIHtcXG4rXFx0XFx0dTMyIGksIGNhbF9wYXJhbSwgdG90YWxfYnVmX251bTtcXG4rXFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfQ09NTU9OX0JBTkRfTlVNOyBpKyspXFxuK1xcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuY29tbW9uX29mZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZjYWxfcGFyYW0sIE5VTEwpKVxcbitcXHRcXHRcXHRcXHR0YmwtXFx1MDAzZWNvbW1vbi5iYW5kW2ldID0gY2FsX3BhcmFtIFxcdTAwMjYgMHhmZjtcXG4rXFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNOyBpKyspXFxuK1xcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbC5ncm91cF9zdHJpZGUsIGksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcXG4rXFx0XFx0XFx0XFx0dGJsLVxcdTAwM2Vncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSBcXHUwMDI2IDB4ZmY7XFxuK1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcXG4rXFx0XFx0XFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jaGFubmVsX29mZixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuY2hhbm5lbF9zdHJpZGUsIGksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y2FsX3BhcmFtLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnRvdGFsX2J1Zl9udW0pKSB7XFxuK1xcdFxcdFxcdFxcdHRibC1cXHUwMDNlY2hhbm5lbC5jYWxfcGFyYW1baV0gPVxcbitcXHRcXHRcXHRcXHRcXHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xcbitcXHRcXHRcXHRcXHR0YmwtXFx1MDAzZWNoYW5uZWwudG90YWxfYnVmX251bVtpXSA9XFxuK1xcdFxcdFxcdFxcdFxcdHRvdGFsX2J1Zl9udW0gXFx1MDAyNiAweGZmO1xcbitcXHRcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHRibC1cXHUwMDNlYnVmX2luZm9fc2l6ZSA9IGNwdV90b19sZTMyKGhkcik7XFxuK1xcdHRibC1cXHUwMDNlcGh5X2FkZHJfaCAgICA9IGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMobWFwcGluZ19wYSkpO1xcbitcXHR0YmwtXFx1MDAzZXBoeV9hZGRyX2wgICAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjYWxfdHlwZSxcXG4rXFx0XFx0XFx0XFx0XFx0IHUzMiBzZXFfbnVtLCBib29sIGRvbmUsXFxuK1xcdFxcdFxcdFxcdFxcdCBjb25zdCB2b2lkICpkYXRhLCB1MzIgZGF0YV9sZW4pXFxuK3tcXG4rXFx0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEgKnJlcTtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdGlmIChkYXRhX2xlbiBcXHUwMDNlIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmVxID0ga3phbGxvYyhzaXplb2YoKnJlcSksIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIXJlcSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRyZXEtXFx1MDAzZXNldC50YWcgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX1NFVCk7XFxuK1xcdHJlcS1cXHUwMDNlc2V0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXFx1MDAzZXNldCkpO1xcbitcXHRyZXEtXFx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XFxuK1xcdHJlcS1cXHUwMDNlc2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTtcXG4rXFx0cmVxLVxcdTAwM2VzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTtcXG4rXFx0cmVxLVxcdTAwM2VzZXQuZG9uZSA9IGRvbmU7XFxuK1xcdGlmIChkYXRhIFxcdTAwMjZcXHUwMDI2IGRhdGFfbGVuKVxcbitcXHRcXHRtZW1jcHkocmVxLVxcdTAwM2VzZXQuYnVmX2RhdGEsIGRhdGEsIGRhdGFfbGVuKTtcXG4rXFxuK1xcdC8qIFdhaXQgZm9yIHRoZSBBQ0sgb24gdGhlIGZpbmFsIGNodW5rIG9ubHk6IHRoZSBGVyBhcHBsaWVzIHRoZSB3aG9sZVxcbitcXHQgKiB0YWJsZSB0aGVyZSAoRE1BcyB0aGUgY2FjaGVkIGNvbW1vbiAvIHBvd2VyLW9uIGdyb3VwIGNhbCBkYXRhIGluIGFuZFxcbitcXHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXFxuK1xcdCAqIGRyYWlucyB0aGUgQUNLcyB0aGUgZWFybGllciBjaHVua3MgbGVmdCBpbiB0aGUgTUNVIHJlc3BvbnNlIHF1ZXVlLFxcbitcXHQgKiBzaW5jZSBVTkkgY29tbWFuZHMgYWx3YXlzIHJlcXVlc3Qgb25lLlxcbitcXHQgKi9cXG4rXFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxcbitcXHRcXHRcXHRcXHRyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7XFxuK1xcdGtmcmVlKHJlcSk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitpbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuK3tcXG4rXFx0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsO1xcbitcXHRfX2xlMzIgY2ZnW01UNzkyNV9GQUNUX0NBTF9CVUZfQ0ZHX0xFTiAvIHNpemVvZihfX2xlMzIpXSA9IHswfTtcXG4rXFx0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAoIWRldi1cXHUwMDNlY2FjaGVkX2NhbC52YSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XFxuK1xcdGlmICghdGJsKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChkZXYsIHRibCk7XFxuK1xcbitcXHRjZmdbMV0gPSBjcHVfdG9fbGUzMihzaXplb2YoKnRibCkpO1xcbitcXHRjZmdbMl0gPSBjcHVfdG9fbGUzMihNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWCk7XFxuK1xcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRzZXEsIHJldCk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbitcXHRsZWZ0ID0gc2l6ZW9mKCp0YmwpO1xcbitcXHR3aGlsZSAobGVmdCkge1xcbitcXHRcXHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xcbitcXG4rXFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICArK3NlcSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAodTggKil0YmwgKyBvZmYsIGNodW5rKTtcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcdFxcXCJmYWN0LWNhbCBtYXBwaW5nIHRibCBkYXRhIHNlbmQgZmFpbGVkIChzZXE9JXUsIG9mZj0ldSwgY2h1bms9JXUpOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0c2VxLCBvZmYsIGNodW5rLCByZXQpO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0b2ZmICArPSBjaHVuaztcXG4rXFx0XFx0bGVmdCAtPSBjaHVuaztcXG4rXFx0fVxcbitcXG4rXFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICsrc2VxLCB0cnVlLCBOVUxMLCAwKTtcXG4rXFx0aWYgKHJldCkge1xcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdFxcXCJmYWN0LWNhbCBtYXBwaW5nIHRibCBkb25lIHNlbmQgZmFpbGVkIChzZXE9JXUpOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0c2VxLCByZXQpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbitvdXQ6XFxuK1xcdGtmcmVlKHRibCk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxcbit7XFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHU4IF9yc3ZbNF07XFxuK1xcbitcXHRcXHRzdHJ1Y3Qge1xcbitcXHRcXHRcXHRfX2xlMTYgdGFnO1xcbitcXHRcXHRcXHRfX2xlMTYgbGVuO1xcbitcXHRcXHRcXHRfX2xlMzIgZGF0YTtcXG4rXFx0XFx0fSBfX3BhY2tlZCB1cGRhdGVfZmxhZztcXG4rXFx0fSByZXEgPSB7XFxuK1xcdFxcdC51cGRhdGVfZmxhZyA9IHtcXG4rXFx0XFx0XFx0LnRhZyAgPSBjcHVfdG9fbGUxNihNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHKSxcXG4rXFx0XFx0XFx0LmxlbiAgPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLnVwZGF0ZV9mbGFnKSksXFxuK1xcdFxcdFxcdC5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLFxcbitcXHRcXHR9LFxcbitcXHR9O1xcbitcXG4rXFx0cmV0dXJuIG10NzZfbWN1X3NlbmRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKEZBQ1RfQ0FMKSxcXG4rXFx0XFx0XFx0XFx0IFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCBmYWxzZSk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi42NTcyNTEzYjc2NDY2XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaFxcbkBAIC0wLDAgKzEsMTUxIEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cXG4rXFxuKyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcXG4rI2RlZmluZSBfX0NBQ0hFRF9DQUxfSFxcbitcXG4rZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcXG4rXFx0TVQ3OTI1X0FYSURNQV9UQUdfUkVNQVAgPSAwLFxcbitcXHRNVDc5MjVfQVhJRE1BX1RBR19GQUNUX0NBTCA9IDEsXFxuK1xcdE1UNzkyNV9BWElETUFfVEFHX05VTVxcbit9O1xcbitcXG4rZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19UUklHR0VSXFx0PSAyLFxcbitcXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1VQREFURV9GTEFHXFx0PSAzLFxcbitcXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1JBUElEX0dFVFxcdD0gNCxcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9TRVRcXHQ9IDUsXFxuK307XFxuK1xcbitlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHtcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ09NTU9OXFx0XFx0PSAwLFxcbitcXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFxcdFxcdD0gMSxcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfQ0hBTk5FTFxcdFxcdD0gMixcXG4rXFx0TVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkxcXHQ9IDQsXFxuK307XFxuK1xcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5cXHRcXHQxNDAwXFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXFx0XFx0XFx0MTZcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTlVNX01BWFxcdDRcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOXFx0XFx0NFxcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXFxcXG4rXFx0KE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYICogTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfVTMyX0xFTilcXG4rXFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVxcdFxcdDJcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXFx0XFx0MzVcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHXFx0XFx0MTRcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXFx0XFx0NjhcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHXFx0XFx0MTA5XFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEwgXFxcXFxcbitcXHQoTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV8yRyArIE1UNzkyNV9GQUNUX0NBTF9DSF9OVU1fNUcgKyBcXFxcXFxuK1xcdCBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHKVxcbitcXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0NPTVxcdFxcdFxcdDYwMFxcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fR1JQXFx0XFx0XFx0NDUwMFxcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0hcXHRcXHRcXHQyODAwXFxuK1xcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvIHtcXG4rXFx0X19sZTMyIGNhbF90eXBlO1xcbitcXHRfX2xlMzIgY2FsX3BhcmFtO1xcbitcXHRfX2xlMzIgYnVmX3NlcV9udW07XFxuK1xcdF9fbGUzMiB0b3RhbF9idWZfbnVtO1xcbitcXHRfX2xlMzIgYnVmX2RhdGFfbGVuO1xcbitcXHR1OCB2YWxpZDtcXG4rXFx0dTggZG9uZTtcXG4rXFx0dTggcnN2WzJdO1xcbitcXHRfX2xlMzIgYnVmX2NmZ19pbmZvW01UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOXTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pID09IDg4LFxcbitcXHQgICAgICBcXFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVxcXCIpO1xcbitcXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIHtcXG4rXFx0X19sZTMyIHBoeV9hZGRyX2g7XFxuK1xcdF9fbGUzMiBwaHlfYWRkcl9sO1xcbitcXHRfX2xlMzIgb2Zmc2V0O1xcbitcXHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xcbitcXHR1OCByc3ZbMl07XFxuK30gX19wYWNrZWQ7XFxuK1xcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2dyb3VwX21hcCB7XFxuK1xcdF9fbGUzMiBwaHlfYWRkcl9oO1xcbitcXHRfX2xlMzIgcGh5X2FkZHJfbDtcXG4rXFx0X19sZTMyIG9mZnNldDtcXG4rXFx0dTggZ3JvdXBbTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTV07XFxuK1xcdHU4IHJzdjtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xcbitcXHRfX2xlMzIgcGh5X2FkZHJfaDtcXG4rXFx0X19sZTMyIHBoeV9hZGRyX2w7XFxuK1xcdF9fbGUzMiBvZmZzZXQ7XFxuK1xcdF9fbGUzMiBjYWxfcGFyYW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdO1xcbitcXHR1OCB0b3RhbF9idWZfbnVtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTtcXG4rXFx0dTggcnN2O1xcbit9IF9fcGFja2VkO1xcbitcXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XFxuK1xcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247XFxuK1xcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIGdyb3VwO1xcbitcXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XFxuK1xcdF9fbGUzMiBidWZfaW5mb19zaXplO1xcbitcXHRfX2xlMzIgcGh5X2FkZHJfaDtcXG4rXFx0X19sZTMyIHBoeV9hZGRyX2w7XFxuK30gX19wYWNrZWQ7XFxuK1xcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxcbitcXHQgICAgICBcXFwibWFwcGluZyB0YWJsZSBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDEwNDQgYnl0ZXMpIG9yIHRoZSBGVyBwYXJzZSBjb3JydXB0c1xcXCIpO1xcbitcXG4rc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcXG4rXFx0dTMyIGNvbW1vbl9vZmYsIGdyb3VwX29mZiwgY2hhbm5lbF9vZmYsIG1hcHBpbmdfb2ZmO1xcbitcXHR1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTtcXG4rXFx0dTMyIHRvdGFsO1xcbit9O1xcbitcXG4rc3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEge1xcbitcXHR1OCBfcnN2WzRdO1xcbitcXG4rXFx0c3RydWN0IHtcXG4rXFx0XFx0X19sZTE2IHRhZztcXG4rXFx0XFx0X19sZTE2IGxlbjtcXG4rXFx0XFx0X19sZTMyIHJlbWFwX2FkZHI7XFxuK1xcdFxcdF9fbGUzMiByZXNlcnZlZDtcXG4rXFx0fSBfX3BhY2tlZCByZW1hcDtcXG4rXFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdF9fbGUxNiB0YWc7XFxuK1xcdFxcdF9fbGUxNiBsZW47XFxuK1xcdFxcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xcbitcXHRcXHRfX2xlMzIgc2l6ZTtcXG4rXFx0XFx0X19sZTMyIGJvdW5kO1xcbitcXHRcXHRfX2xlMzIgcmVzZXJ2ZWQ7XFxuK1xcdH0gX19wYWNrZWQgZmFjdF9jYWw7XFxuK30gX19wYWNrZWQ7XFxuK1xcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX3JlcSB7XFxuK1xcdHU4IF9yc3ZbNF07XFxuK1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHRfX2xlMTYgdGFnO1xcbitcXHRcXHRfX2xlMTYgbGVuO1xcbitcXHRcXHRfX2xlMzIgZGF0YTtcXG4rXFx0XFx0X19sZTMyIHNlcV9udW07XFxuK1xcdFxcdF9fbGUzMiBidWZfZGF0YV9sZW47XFxuK1xcdFxcdHU4IGNhbF90eXBlO1xcbitcXHRcXHR1OCBkb25lO1xcbitcXHRcXHR1OCByc3ZbMl07XFxuK1xcdFxcdHU4IGJ1Zl9kYXRhW01UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5dO1xcbitcXHR9IF9fcGFja2VkIHNldDtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuK2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbitcXG4rdm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuK1xcbitpbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbitcXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG4rXFxuK2ludCBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3Moc3RydWN0IG10NzkyeF9kZXYgKmRldiwgYm9vbCBlbmFibGUpO1xcbitcXG4rI2VuZGlmIC8qIF9fQ0FDSEVEX0NBTF9IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcXG5AQCAtMzUzLDYgKzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcXG4gXFxuIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG4gaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuK3ZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuIHZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpO1xcbiB2b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZXZ0KTtcXG4gdm9pZCBtdDc5MjVfc2V0X3J1bnRpbWVfcG0oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5pbmRleCAwMmVmMDlkZDc5N2RhLi43MjRhYmQyYmU1N2M1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5AQCAtOSw2ICs5LDcgQEBcXG4gI2luY2x1ZGUgXFxcIm1hYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwibWN1LmhcXFwiXFxuICNpbmNsdWRlIFxcXCJyZWdkLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJjYWNoZWRfY2FsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCIuLi9kbWEuaFxcXCJcXG4gXFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xcbkBAIC0zOCw2ICszOSw2MiBAQCBzdGF0aWMgaW50IG10NzkyNWVfaW5pdF9yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XFxuIH1cXG4gXFxuKy8qIFNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRldcXG4rICogcmVhY2hlcyB0aGUgYnVmZmVyIHRocm91Z2ggQVhJIERNQSwgc28gaXQgaGFzIG5vIG1lYW5pbmcgb24gb3RoZXIgYnVzZXMuXFxuKyAqIEV2ZXJ5IGZhaWx1cmUganVzdCBsZWF2ZXMgdGhlIGNhY2hlIG9mZiwgd2hpY2ggaXMgbm90IGZhdGFsLlxcbisgKi9cXG4rdm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbit7XFxuK1xcdGlmICghKGRldi1cXHUwMDNlcGh5LmNoaXBfY2FwIFxcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmIChkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEpIHtcXG4rXFx0XFx0LyogQ2FycmllZC1vdmVyIGJ1ZmZlciBzdGlsbCBob2xkcyBGVy13cml0dGVuIGNhbCBkYXRhLiAqL1xcbitcXHRcXHRkZXYtXFx1MDAzZWNhY2hlZF9jYWwucmV1c2VkID0gdHJ1ZTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKG10NzkyNV9heGlkbWFfYWxsb2MoZGV2KSkge1xcbitcXHRcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHRcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBidWZmZXIgYWxsb2MgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbitcXHRcXHR9XFxuK1xcdFxcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cXG4rXFx0XFx0ZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IGZhbHNlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHtcXG4rXFx0XFx0ZGV2X3dhcm4oZGV2LVxcdTAwM2VtdDc2LmRldixcXG4rXFx0XFx0XFx0IFxcXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogaW5mbyBjbWQgdG8gRlcgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHQvKiBFbmFibGUgdGhlIGJ5cGFzcy1jYWwgZmxvdyBzbyB0aGUgRlcgcmV1c2VzIGNhY2hlZCBjYWwgZGF0YVxcbitcXHQgKiAoY29tbW9uIC8gcG93ZXItb24gZ3JvdXApIGluc3RlYWQgb2YgcnVubmluZyBhIGZ1bGwgY2FsaWJyYXRpb247XFxuK1xcdCAqIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgbWFwcGluZyB0YWJsZSBpcyBzZW50LlxcbitcXHQgKi9cXG4rXFx0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIHRydWUpKSB7XFxuK1xcdFxcdGRldl93YXJuKGRldi1cXHUwMDNlbXQ3Ni5kZXYsXFxuK1xcdFxcdFxcdCBcXFwiQVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ5cGFzcyBmbGFnIHNldCBmYWlsZWRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmwoZGV2KSkge1xcbitcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBtYXBwaW5nIHRibCBzZW5kIGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIGZhbHNlKSkge1xcbitcXHRcXHRkZXZfd2FybihkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXFxcXG5cXFwiKTtcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRkZXZfaW5mbyhkZXYtXFx1MDAzZW10NzYuZGV2LFxcbitcXHRcXHQgXFxcIkFYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxcXG5cXFwiLFxcbitcXHRcXHQgXFx1MDAyNmRldi1cXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LVxcdTAwM2VjYWNoZWRfY2FsLnNpemUsXFxuK1xcdFxcdCBkZXYtXFx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiB7XFxuIFxcdGludCBpO1xcbkBAIC01OCw2ICsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcbiBcXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XFxuIFxcdF9fbXQ3OTJ4X21jdV9kcnZfcG1jdHJsKGRldik7XFxuK1xcbitcXHRtdDc5MjVfYXhpZG1hX2ZyZWUoZGV2KTtcXG4rXFxuIFxcdG10NzkyeF9kbWFfY2xlYW51cChkZXYpO1xcbiBcXHRtdDc5Mnhfd2ZzeXNfcmVzZXQoZGV2KTtcXG4gXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYubWN1LnJlc19xKTtcXG5AQCAtNTg3LDcgKzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0aXNfbXQ3OTI4X2h3ID0gKHBkZXYtXFx1MDAzZWRldmljZSA9PSAweDc5MjggfHwgcGRldi1cXHUwMDNlZGV2aWNlID09IDB4NzkzNSk7XFxuIFxcbiBcXHRpZiAoaXNfbXQ3OTI4X2h3KVxcbi1cXHRcXHRyZXQgPSBkbWFfc2V0X21hc2soXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XFxuK1xcdFxcdHJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXFxuaW5kZXggODQ3N2QyMWFiYzY2MC4uYzkwZjEyOWIzYTM0ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWFjLmNcXG5AQCAtMTM1LDYgKzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuK1xcdG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KGRldik7XFxuK1xcbiBcXHRlcnIgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBvdXQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xcbmluZGV4IDcyNzA3ZWRkYzNkYjYuLjI1OGYzNzUzZGIxZmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jXFxuQEAgLTQ2LDYgKzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gXFx0bXQ3Nl9ybXdfZmllbGQoZGV2LCBkZXYtXFx1MDAzZXBjaWVfcmVnLVxcdTAwM2VwbSwgTVRfUENJRV9NQUNfUE1fTDBTX0RJUywgMSk7XFxuIFxcbiBcXHRlcnIgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuK1xcdGlmICghZXJyKVxcbitcXHRcXHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xcbiBcXG4gXFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVxcdTAwM2VtdDc2LnFfbWN1W01UX01DVVFfRldETF0sIGZhbHNlKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuaW5kZXggOWVmYzI1MWNiNzQ1Zi4uNzQwZDUxN2ViMzhiYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxcbkBAIC0zMyw2ICszMyw3IEBAXFxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX1JFR0RfRU4gQklUKDUpXFxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcXG4gI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfTUxPX0VNTF9FTiBCSVQoOSlcXG4rI2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOIEJJVCgxNilcXG4gXFxuIC8qIE5PVEU6IHVzZWQgdG8gbWFwIG10NzZfcmF0ZXMuIGlkeCBtYXkgY2hhbmdlIGlmIGZpcm13YXJlIGV4cGFuZHMgdGFibGUgKi9cXG4gI2RlZmluZSBNVDc5MnhfQkFTSUNfUkFURVNfVEJMXFx0MTRcXG5AQCAtMzQyLDYgKzM0MywxMyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpuYW5fdmlmO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2lmYWNlX2NvbWJpbmF0aW9uICppZmFjZV9jb21iaW5hdGlvbnM7XFxuIFxcdGludCBuX2lmYWNlX2NvbWJpbmF0aW9ucztcXG4rXFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHZvaWQgKnZhO1xcbitcXHRcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbitcXHRcXHR1MzIgc2l6ZTtcXG4rXFx0XFx0Ym9vbCByZXVzZWQ7XFxuK1xcdH0gY2FjaGVkX2NhbDtcXG4gfTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEyOjM4Ljc1MDM0MTI4OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNzYwNTMxMzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVFXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdFwiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9hbGxvY1wiLFxuICAgIFwibXQ3OTI1X2F4aWRtYV9mcmVlXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm9cIixcbiAgICBcIm10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibFwiLFxuICAgIFwibXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBBWEkgRE1BIGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGUgZmVhdHVyZSBmb3IgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIFdpLUZpIGRyaXZlci4gSXQgYWRkcyBETUEgbWVtb3J5IGFsbG9jYXRpb24sIE1DVSBtZXNzYWdpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IHRvIGJ5cGFzcyBmdWxsIGNhbGlicmF0aW9uIGJ5IHJldXNpbmcgY2FjaGVkIGRhdGEuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocywgcmVhY2hhYmxlIHZpYSBQQ0kgZGV2aWNlIHByb2JpbmcgYW5kIE1NSU8vRE1BIGludGVyYWN0aW9ucywgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBzeXprYWxsZXIncyBQQ0kgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuaW5kZXggMGVkZWRhNTY5ZTlhNS4uZTQ2Y2I0YWUzN2E5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbkBAIC0xMzU3LDkgKzEzNTcsMTEgQEAgZW51bSB7XG4gXHRNQ1VfVU5JX0NNRF9BTExfU1RBX0lORk8gPSAweDZlLFxuIFx0TUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLFxuIFx0TUNVX1VOSV9DTURfRVhUX0VFUFJPTV9DVFJMID0gMHg3NCxcbitcdE1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YyxcbiBcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXG4gXHRNQ1VfVU5JX0NNRF9NTEQgPSAweDgyLFxuIFx0TUNVX1VOSV9DTURfU0RPID0gMHg4OCxcbitcdE1DVV9VTklfQ01EX0FYSURNQSA9IDB4YTIsXG4gfTtcbiBcbiBlbnVtIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5pbmRleCBmOWRjYzBiYmEzOTNjLi4zMzUzOTEyMWExNWNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5AQCAtNiw1ICs2LDUgQEAgb2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xuIFxuIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiBtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cbi1tdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuK210NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vIGNhY2hlZF9jYWwub1xuIG10NzkyNXUteSA6PSB1c2Iub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjAzYmQ2ODJmMTIyNGJcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xuQEAgLTAsMCArMSwzMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXCIuLi9tdDc5MnguaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuK1xuK3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuK3tcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXG4rXHRsLVx1MDAzZWNvbW1vbl9zdHJpZGUgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007XG4rXHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9HUlA7XG4rXHRsLVx1MDAzZWNoYW5uZWxfc3RyaWRlID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcbitcbitcdGwtXHUwMDNlY29tbW9uX29mZiAgPSAwO1xuK1x0bC1cdTAwM2Vncm91cF9vZmYgICA9IGwtXHUwMDNlY29tbW9uX29mZiArXG4rXHRcdGwtXHUwMDNlY29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07XG4rXHRsLVx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cdTAwM2Vncm91cF9vZmYgK1xuK1x0XHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07XG4rXHRsLVx1MDAzZW1hcHBpbmdfb2ZmID0gbC1cdTAwM2VjaGFubmVsX29mZiArXG4rXHRcdGwtXHUwMDNlY2hhbm5lbF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDtcbitcdGwtXHUwMDNldG90YWwgPSBsLVx1MDAzZW1hcHBpbmdfb2ZmICtcbitcdFx0c2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpO1xuK31cbitcbitzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDtcbitcbitcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXHUwMDI2bCk7XG4rXG4rXHRyZXR1cm4gbC50b3RhbDtcbit9XG4rXG4raW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHR1MzIgdG90YWxfc2l6ZTtcbitcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHR2b2lkICp2YTtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR0b3RhbF9zaXplID0gbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSgpO1xuK1xuK1x0dmEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCB0b3RhbF9zaXplLCBcdTAwMjZkbWFfYWRkcixcbitcdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0aWYgKCF2YSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xuK1x0ZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjtcbitcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuK1x0XHRcdCAgZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEsIGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyKTtcbitcbitcdG1lbXNldChcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbCwgMCwgc2l6ZW9mKGRldi1cdTAwM2VjYWNoZWRfY2FsKSk7XG4rfVxuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xuK1x0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoIWRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlbWFwX2Jhc2UgPSAodTMyKShkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciBcdTAwM2VcdTAwM2UgMTYpO1xuK1x0cGFfb2Zmc2V0ID0gKHUzMikoZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgXHUwMDI2IDB4RkZGRik7XG4rXG4rXHRyZXEtXHUwMDNlcmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApO1xuK1x0cmVxLVx1MDAzZXJlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlcmVtYXApKTtcbitcdHJlcS1cdTAwM2VyZW1hcC5yZW1hcF9hZGRyID0gY3B1X3RvX2xlMzIocmVtYXBfYmFzZSk7XG4rXG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwpO1xuK1x0cmVxLVx1MDAzZWZhY3RfY2FsLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlZmFjdF9jYWwpKTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSk7XG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgKyBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplIC0gMSk7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQVhJRE1BKSxcbitcdFx0XHRcdHJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTtcbitcbitcdGtmcmVlKHJlcSk7XG4rXG4rXHRpZiAocmV0KVxuK1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHRcImZhaWxlZCB0byBzZW5kIEFYSSBETUEgaW5mbzogJWRcXG5cIiwgcmV0KTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBib29sIG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpb25fb2ZmLFxuK1x0XHRcdFx0ICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsXG4rXHRcdFx0XHQgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSlcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbitcdHUzMiBvZmYgPSByZWdpb25fb2ZmICsgc3RyaWRlICogaWR4O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSB8fCBvZmYgKyBzaXplb2YoKmJpKSBcdTAwM2UgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0YmkgPSAoY29uc3Qgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyAqKVxuK1x0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xuK1x0aWYgKGNhbF9wYXJhbSlcbitcdFx0KmNhbF9wYXJhbSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZWNhbF9wYXJhbSk7XG4rXHRpZiAodG90YWxfYnVmX251bSlcbitcdFx0KnRvdGFsX2J1Zl9udW0gPSBsZTMyX3RvX2NwdShiaS1cdTAwM2V0b3RhbF9idWZfbnVtKTtcbitcdHJldHVybiB0cnVlO1xuK31cbitcbitzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKVxuK3tcbitcdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXHRkbWFfYWRkcl90IGJhc2UgPSBkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcjtcbitcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuK1xuK1x0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcdTAwMjZsKTtcbitcbitcdGNvbW1vbl9wYSAgPSBiYXNlICsgbC5jb21tb25fb2ZmO1xuK1x0Z3JvdXBfcGEgICA9IGJhc2UgKyBsLmdyb3VwX29mZjtcbitcdGNoYW5uZWxfcGEgPSBiYXNlICsgbC5jaGFubmVsX29mZjtcbitcdG1hcHBpbmdfcGEgPSBiYXNlICsgbC5tYXBwaW5nX29mZjtcbitcbitcdG1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7XG4rXG4rXHR0YmwtXHUwMDNlY29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xuK1x0dGJsLVx1MDAzZWNvbW1vbi5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjb21tb25fcGEpKTtcbitcdHRibC1cdTAwM2Vjb21tb24ub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY29tbW9uX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jaGFubmVsX3N0cmlkZSk7XG4rXG4rXHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKSB7XG4rXHRcdHUzMiBpLCBjYWxfcGFyYW0sIHRvdGFsX2J1Zl9udW07XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vjb21tb24uYmFuZFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsgaSsrKVxuK1x0XHRcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmdyb3VwX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNoYW5uZWxfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmNoYW5uZWxfc3RyaWRlLCBpLFxuK1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnRvdGFsX2J1Zl9udW0pKSB7XG4rXHRcdFx0XHR0YmwtXHUwMDNlY2hhbm5lbC5jYWxfcGFyYW1baV0gPVxuK1x0XHRcdFx0XHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xuK1x0XHRcdFx0dGJsLVx1MDAzZWNoYW5uZWwudG90YWxfYnVmX251bVtpXSA9XG4rXHRcdFx0XHRcdHRvdGFsX2J1Zl9udW0gXHUwMDI2IDB4ZmY7XG4rXHRcdFx0fVxuK1x0fVxuK1xuK1x0dGJsLVx1MDAzZWJ1Zl9pbmZvX3NpemUgPSBjcHVfdG9fbGUzMihoZHIpO1xuK1x0dGJsLVx1MDAzZXBoeV9hZGRyX2ggICAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcbitcdHRibC1cdTAwM2VwaHlfYWRkcl9sICAgID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY2FsX3R5cGUsXG4rXHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuK1x0XHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGRhdGFfbGVuKVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKGRhdGFfbGVuIFx1MDAzZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlcS1cdTAwM2VzZXQudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9TRVQpO1xuK1x0cmVxLVx1MDAzZXNldC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLVx1MDAzZXNldCkpO1xuK1x0cmVxLVx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XG4rXHRyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTtcbitcdHJlcS1cdTAwM2VzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTtcbitcdHJlcS1cdTAwM2VzZXQuZG9uZSA9IGRvbmU7XG4rXHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YV9sZW4pXG4rXHRcdG1lbWNweShyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhLCBkYXRhLCBkYXRhX2xlbik7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgQUNLIG9uIHRoZSBmaW5hbCBjaHVuayBvbmx5OiB0aGUgRlcgYXBwbGllcyB0aGUgd2hvbGVcbitcdCAqIHRhYmxlIHRoZXJlIChETUFzIHRoZSBjYWNoZWQgY29tbW9uIC8gcG93ZXItb24gZ3JvdXAgY2FsIGRhdGEgaW4gYW5kXG4rXHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXG4rXHQgKiBkcmFpbnMgdGhlIEFDS3MgdGhlIGVhcmxpZXIgY2h1bmtzIGxlZnQgaW4gdGhlIE1DVSByZXNwb25zZSBxdWV1ZSxcbitcdCAqIHNpbmNlIFVOSSBjb21tYW5kcyBhbHdheXMgcmVxdWVzdCBvbmUuXG4rXHQgKi9cbitcdHJldCA9IG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksXG4rXHRcdFx0XHRyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7XG4rXHRrZnJlZShyZXEpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDtcbitcdF9fbGUzMiBjZmdbTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOIC8gc2l6ZW9mKF9fbGUzMildID0gezB9O1xuK1x0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXRibClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmwoZGV2LCB0YmwpO1xuK1xuK1x0Y2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTtcbitcdGNmZ1syXSA9IGNwdV90b19sZTMyKE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYKTtcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XCJmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0c2VxLCByZXQpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGxlZnQgPSBzaXplb2YoKnRibCk7XG4rXHR3aGlsZSAobGVmdCkge1xuK1x0XHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xuK1xuK1x0XHRyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsXG4rXHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuK1x0XHRcdFx0XHRcdCAgICArK3NlcSwgZmFsc2UsXG4rXHRcdFx0XHRcdFx0ICAgICh1OCAqKXRibCArIG9mZiwgY2h1bmspO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XHRcImZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0XHRzZXEsIG9mZiwgY2h1bmssIHJldCk7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbitcbitcdFx0b2ZmICArPSBjaHVuaztcbitcdFx0bGVmdCAtPSBjaHVuaztcbitcdH1cbitcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICArK3NlcSwgdHJ1ZSwgTlVMTCwgMCk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFwiZmFjdC1jYWwgbWFwcGluZyB0YmwgZG9uZSBzZW5kIGZhaWxlZCAoc2VxPSV1KTogJWRcXG5cIixcbitcdFx0XHRzZXEsIHJldCk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK291dDpcbitcdGtmcmVlKHRibCk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuK3tcbitcdHN0cnVjdCB7XG4rXHRcdHU4IF9yc3ZbNF07XG4rXG4rXHRcdHN0cnVjdCB7XG4rXHRcdFx0X19sZTE2IHRhZztcbitcdFx0XHRfX2xlMTYgbGVuO1xuK1x0XHRcdF9fbGUzMiBkYXRhO1xuK1x0XHR9IF9fcGFja2VkIHVwZGF0ZV9mbGFnO1xuK1x0fSByZXEgPSB7XG4rXHRcdC51cGRhdGVfZmxhZyA9IHtcbitcdFx0XHQudGFnICA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcpLFxuK1x0XHRcdC5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLFxuK1x0XHRcdC5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLFxuK1x0XHR9LFxuK1x0fTtcbitcbitcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxuK1x0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjU3MjUxM2I3NjQ2NlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5AQCAtMCwwICsxLDE1MSBAQFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cbisvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqL1xuK1xuKyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcbisjZGVmaW5lIF9fQ0FDSEVEX0NBTF9IXG4rXG4rZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcbitcdE1UNzkyNV9BWElETUFfVEFHX1JFTUFQID0gMCxcbitcdE1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMID0gMSxcbitcdE1UNzkyNV9BWElETUFfVEFHX05VTVxuK307XG4rXG4rZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfVFJJR0dFUlx0PSAyLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19VUERBVEVfRkxBR1x0PSAzLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVRcdD0gNCxcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUXHQ9IDUsXG4rfTtcbitcbitlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX0NPTU1PTlx0XHQ9IDAsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFx0XHQ9IDEsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DSEFOTkVMXHRcdD0gMixcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMXHQ9IDQsXG4rfTtcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5cdFx0MTQwMFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXHRcdFx0MTZcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYXHQ0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOXHRcdDRcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXG4rXHQoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVggKiBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOKVxuK1xuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVx0XHQyXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXHRcdDM1XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHXHRcdDE0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXHRcdDY4XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHXHRcdDEwOVxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEwgXFxcbitcdChNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICsgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV81RyArIFxcXG4rXHQgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RylcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NXHRcdFx0NjAwXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUFx0XHRcdDQ1MDBcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0hcdFx0XHQyODAwXG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7XG4rXHRfX2xlMzIgY2FsX3R5cGU7XG4rXHRfX2xlMzIgY2FsX3BhcmFtO1xuK1x0X19sZTMyIGJ1Zl9zZXFfbnVtO1xuK1x0X19sZTMyIHRvdGFsX2J1Zl9udW07XG4rXHRfX2xlMzIgYnVmX2RhdGFfbGVuO1xuK1x0dTggdmFsaWQ7XG4rXHR1OCBkb25lO1xuK1x0dTggcnN2WzJdO1xuK1x0X19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCxcbitcdCAgICAgIFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVwiKTtcbitcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xuK1x0dTggcnN2WzJdO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBncm91cFtNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXTtcbitcdHU4IHJzdjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHRfX2xlMzIgY2FsX3BhcmFtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTtcbitcdHU4IHRvdGFsX2J1Zl9udW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdO1xuK1x0dTggcnN2O1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAgY29tbW9uO1xuK1x0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAgZ3JvdXA7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XG4rXHRfX2xlMzIgYnVmX2luZm9fc2l6ZTtcbitcdF9fbGUzMiBwaHlfYWRkcl9oO1xuK1x0X19sZTMyIHBoeV9hZGRyX2w7XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuK1x0ICAgICAgXCJtYXBwaW5nIHRhYmxlIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoMTA0NCBieXRlcykgb3IgdGhlIEZXIHBhcnNlIGNvcnJ1cHRzXCIpO1xuK1xuK3N0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCB7XG4rXHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4rXHR1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTtcbitcdHUzMiB0b3RhbDtcbit9O1xuK1xuK3N0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxIHtcbitcdHU4IF9yc3ZbNF07XG4rXG4rXHRzdHJ1Y3Qge1xuK1x0XHRfX2xlMTYgdGFnO1xuK1x0XHRfX2xlMTYgbGVuO1xuK1x0XHRfX2xlMzIgcmVtYXBfYWRkcjtcbitcdFx0X19sZTMyIHJlc2VydmVkO1xuK1x0fSBfX3BhY2tlZCByZW1hcDtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xuK1x0XHRfX2xlMzIgc2l6ZTtcbitcdFx0X19sZTMyIGJvdW5kO1xuK1x0XHRfX2xlMzIgcmVzZXJ2ZWQ7XG4rXHR9IF9fcGFja2VkIGZhY3RfY2FsO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEge1xuK1x0dTggX3Jzdls0XTtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBkYXRhO1xuK1x0XHRfX2xlMzIgc2VxX251bTtcbitcdFx0X19sZTMyIGJ1Zl9kYXRhX2xlbjtcbitcdFx0dTggY2FsX3R5cGU7XG4rXHRcdHU4IGRvbmU7XG4rXHRcdHU4IHJzdlsyXTtcbitcdFx0dTggYnVmX2RhdGFbTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTl07XG4rXHR9IF9fcGFja2VkIHNldDtcbit9IF9fcGFja2VkO1xuK1xuK2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKTtcbitcbisjZW5kaWYgLyogX19DQUNIRURfQ0FMX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzUzLDYgKzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbiBcbiBpbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4gaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rdm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbiB2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKTtcbiB2b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZXZ0KTtcbiB2b2lkIG10NzkyNV9zZXRfcnVudGltZV9wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5pbmRleCAwMmVmMDlkZDc5N2RhLi43MjRhYmQyYmU1N2M1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcIm1hYy5oXCJcbiAjaW5jbHVkZSBcIm1jdS5oXCJcbiAjaW5jbHVkZSBcInJlZ2QuaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuICNpbmNsdWRlIFwiLi4vZG1hLmhcIlxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xuQEAgLTM4LDYgKzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XG4gfVxuIFxuKy8qIFNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRldcbisgKiByZWFjaGVzIHRoZSBidWZmZXIgdGhyb3VnaCBBWEkgRE1BLCBzbyBpdCBoYXMgbm8gbWVhbmluZyBvbiBvdGhlciBidXNlcy5cbisgKiBFdmVyeSBmYWlsdXJlIGp1c3QgbGVhdmVzIHRoZSBjYWNoZSBvZmYsIHdoaWNoIGlzIG5vdCBmYXRhbC5cbisgKi9cbit2b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCEoZGV2LVx1MDAzZXBoeS5jaGlwX2NhcCBcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSkge1xuK1x0XHQvKiBDYXJyaWVkLW92ZXIgYnVmZmVyIHN0aWxsIGhvbGRzIEZXLXdyaXR0ZW4gY2FsIGRhdGEuICovXG4rXHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IHRydWU7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAobXQ3OTI1X2F4aWRtYV9hbGxvYyhkZXYpKSB7XG4rXHRcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFx0IFwiQVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ1ZmZlciBhbGxvYyBmYWlsZWRcXG5cIik7XG4rXHRcdFx0cmV0dXJuO1xuK1x0XHR9XG4rXHRcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cbitcdFx0ZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkID0gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBpbmZvIGNtZCB0byBGVyBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdC8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhXG4rXHQgKiAoY29tbW9uIC8gcG93ZXItb24gZ3JvdXApIGluc3RlYWQgb2YgcnVubmluZyBhIGZ1bGwgY2FsaWJyYXRpb247XG4rXHQgKiBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIG1hcHBpbmcgdGFibGUgaXMgc2VudC5cbitcdCAqL1xuK1x0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIHRydWUpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxcblwiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChkZXYpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCBmYWxzZSkpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRkZXZfaW5mbyhkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxuXCIsXG4rXHRcdCBcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSxcbitcdFx0IGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRpbnQgaTtcbkBAIC01OCw2ICsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXG4gXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XG4gXHRfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpO1xuK1xuK1x0bXQ3OTI1X2F4aWRtYV9mcmVlKGRldik7XG4rXG4gXHRtdDc5MnhfZG1hX2NsZWFudXAoZGV2KTtcbiBcdG10NzkyeF93ZnN5c19yZXNldChkZXYpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG5AQCAtNTg3LDcgKzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGlzX210NzkyOF9odyA9IChwZGV2LVx1MDAzZWRldmljZSA9PSAweDc5MjggfHwgcGRldi1cdTAwM2VkZXZpY2UgPT0gMHg3OTM1KTtcbiBcbiBcdGlmIChpc19tdDc5MjhfaHcpXG4tXHRcdHJldCA9IGRtYV9zZXRfbWFzayhcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XG4rXHRcdHJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzNCkpO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuaW5kZXggODQ3N2QyMWFiYzY2MC4uYzkwZjEyOWIzYTM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG5AQCAtMTM1LDYgKzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuK1xuIFx0ZXJyID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbmluZGV4IDcyNzA3ZWRkYzNkYjYuLjI1OGYzNzUzZGIxZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuQEAgLTQ2LDYgKzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdG10NzZfcm13X2ZpZWxkKGRldiwgZGV2LVx1MDAzZXBjaWVfcmVnLVx1MDAzZXBtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTtcbiBcbiBcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbitcdGlmICghZXJyKVxuK1x0XHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuIFxuIFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5pbmRleCA5ZWZjMjUxY2I3NDVmLi43NDBkNTE3ZWIzOGJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTMzLDYgKzMzLDcgQEBcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KVxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuKyNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTiBCSVQoMTYpXG4gXG4gLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYgZmlybXdhcmUgZXhwYW5kcyB0YWJsZSAqL1xuICNkZWZpbmUgTVQ3OTJ4X0JBU0lDX1JBVEVTX1RCTFx0MTRcbkBAIC0zNDIsNiArMzQzLDEzIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpuYW5fdmlmO1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zO1xuIFx0aW50IG5faWZhY2VfY29tYmluYXRpb25zO1xuK1xuK1x0c3RydWN0IHtcbitcdFx0dm9pZCAqdmE7XG4rXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHRcdHUzMiBzaXplO1xuK1x0XHRib29sIHJldXNlZDtcbitcdH0gY2FjaGVkX2NhbDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMjozOC43NTAzNDI3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDE3OTk2ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBNZWRpYVRlayBNVDc5MjUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBtdDc5MjVgIGRyaXZlciwgd2hpY2ggaXMgcGFydCBvZiB0aGUgTWVkaWFUZWsgTVQ3NiB3aXJlbGVzcyBkcml2ZXIgZmFtaWx5LiBJdCBpbnRyb2R1Y2VzIFwiQVhJIERNQSBjYWwgY2FjaGVcIiDigJMgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSDigJMgc3BlY2lmaWNhbGx5IGZvciBQQ0llIGRldmljZXMuIFRoZSBwYXRjaCBpbmNsdWRlcyBuZXcgZmlsZXMgKGBjYWNoZWRfY2FsLmNgLCBgY2FjaGVkX2NhbC5oYCkgYW5kIG1vZGlmaWVzIHNldmVyYWwgZXhpc3Rpbmcgb25lcyAoYHBjaS5jYCwgYHBjaV9tYWMuY2AsIGBwY2lfbWN1LmNgKS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGlzIGZ1enphYmxlLiBUaGUgcHJvbXB0IGdpdmVzIHNvbWUgZXhjbHVzaW9uIGNyaXRlcmlhLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY2hhbmdlcyBpbnZvbHZlIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIG9yIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIG5lZWRpbmcgcGh5c2ljYWwgaGFyZHdhcmUuIFJpZ2h0LCB0aGUgcXVlc3Rpb24gaXMsIGRvZXMgdGhpcyBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT9cblxuYG10NzkyNWAgaXMgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIuIFdoaWxlIFdpLUZpIGRyaXZlcnMgKmdlbmVyYWxseSogcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSwgc29tZXRpbWVzIHRoZXkgKmNhbiogYmUgZnV6emVkIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGEgc29mdHdhcmUgc2ltdWxhdG9yLiBIb3dldmVyLCB0aGlzIGlzIGZvciBhICpQQ0llKiBkZXZpY2UsIGFuZCBgbXQ3OTI1YCBpdHNlbGYgcmVxdWlyZXMgYSBwaHlzaWNhbCBNVDc5MjUgZGV2aWNlIChQQ0llIG9yIFVTQikuIFNvLCBgbWFjODAyMTFfaHdzaW1gIGlzbid0IHRoZSBzb2x1dGlvbiBoZXJlLlxuXG5Ib3dldmVyLCBJIHJlbWVtYmVyIFN5emthbGxlci4gSXQgZG9lcyBoYXZlIFBDSSBlbXVsYXRpb24gY2FwYWJpbGl0aWVzLiBJdCBoYXMgdmhjaSBmb3IgVVNCLCBidXQgZG9lcyBpdCBoYXZlIHNvbWV0aGluZyBzaW1pbGFyIGZvciBQQ0k/IEFjdHVhbGx5LCB5ZXMsIFN5emthbGxlciBkb2VzIGhhdmUgYSBQQ0kgZnV6emVyIHRoYXQgY2FuIGVtdWxhdGUgUENJIGRldmljZXMuIFRoZSBxdWVzdGlvbiBpczogZG9lcyBzdGFuZGFyZCBRRU1VIGVtdWxhdGUgdGhlIE1UNzkyNT8gTm8uIEJ1dCwgU3l6a2FsbGVyIGZ1enplcyBQQ0kgZGV2aWNlcyBieSBpbmplY3RpbmcgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuXG5cbkRvZXMgU3l6a2FsbGVyIGZ1enogYG10NzkyNWA/IExldCdzIGNoZWNrISBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBTeXprYWxsZXIgZGVzY3JpcHRpb25zIGZvciBpdC4gQW5kIHdhaXQsIGdvaW5nIGJhY2sgdG8gdGhlIHByb21wdCwgaXQgbGlzdHMgc3BlY2lmaWMgZXhjbHVzaW9uczogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIFdpLUZpIGRyaXZlcnMgYXJlbid0ICpleHBsaWNpdGx5KiBpbiB0aGF0IGxpc3QsIGJ1dCB0aGV5ICphcmUqIFBDSWUgZGV2aWNlcy5cblxuSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB3aGV0aGVyIFN5emthbGxlciBoYXMgc3VmZmljaWVudCBQQ0kgZnV6emluZyBzdXBwb3J0IGZvciB0aGUgYG10NzZgIGZhbWlseS4gVGhhdCB3aWxsIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaGVyZS4gSSBtdXN0IHJlc2VhcmNoIHRoZSBTeXprYWxsZXIgY292ZXJhZ2UgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ3NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEyOjQ4LjE2ODM0Mjc5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA5NDcyNjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0Mjk5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2JsdWV0b290aC9idG10ay5oLTktI2RlZmluZSBGSVJNV0FSRV9NVDc5NjFcXHRcXHRcXFwibWVkaWF0ZWsvQlRfUkFNX0NPREVfTVQ3OTYxXzFfMl9oZHIuYmluXFxcIlxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrLmg6MTA6I2RlZmluZSBGSVJNV0FSRV9NVDc5MjVcXHRcXHRcXFwibWVkaWF0ZWsvbXQ3OTI1L0JUX1JBTV9DT0RFX01UNzkyNV8xXzFfaGRyLmJpblxcXCJcXG5kcml2ZXJzL2JsdWV0b290aC9idG10ay5oLTExLSNkZWZpbmUgRklSTVdBUkVfTVQ3OTI3XFx0XFx0XFxcIm1lZGlhdGVrL210NzkyNy9CVF9SQU1fQ09ERV9NVDY2MzlfMl8xX2hkci5iaW5cXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NTA9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo1MTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlPTUxPW9iai0kKENPTkZJR19NVDc5OTZFKSArPSBtdDc5OTYvXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZTo1MjpvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1L1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oPTE4MD1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY29ubmFjMyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oOjE4NTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfbXQ3OTI1KHN0cnVjdCBtdDc2X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYz01ND1pbnQgbXQ3Nl9jb25uYWNfbWN1X2luaXRfZG93bmxvYWQoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBhZGRyLCB1MzIgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy02OS1cXHQgICAgKGlzX2Nvbm5hYzIoZGV2KSBcXHUwMDI2XFx1MDAyNiBhZGRyID09IDB4OTAwMDAwKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM6NzA6XFx0ICAgICgoaXNfbXQ3OTI1KGRldikgfHwgaXNfbXQ3OTI3KGRldikpIFxcdTAwMjZcXHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjgwMCkpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy03MS1cXHQgICAgKGlzX210NzkyOChkZXYpIFxcdTAwMjZcXHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjAwMCkpIHx8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS0yLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICs9IG10NzkyNS1jb21tb24ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyNUUpICs9IG10NzkyNWUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6ODptdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo5Om10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vIGNhY2hlZF9jYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjg6c3RhdGljIHZvaWQgbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgKmwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMDpcXHR1MzIgaGRyID0gc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yMy1cXHRsLVxcdTAwM2V0b3RhbCA9IGwtXFx1MDAzZW1hcHBpbmdfb2ZmICtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjQ6XFx0XFx0c2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNzpzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyOTpcXHRzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjMxOlxcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXFx1MDAyNmwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MzY6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzo0NTpcXHR0b3RhbF9zaXplID0gbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy01OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NTk6dm9pZCBtdDc5MjVfYXhpZG1hX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzo3MDppbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTcxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6NzI6XFx0c3RydWN0IG10NzkyNV9heGlkbWFfaW5mb19yZXEgKnJlcTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtNzMtXFx0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEwODpzdGF0aWMgYm9vbCBtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaW9uX29mZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTA5LVxcdFxcdFxcdFxcdCAgICAgICB1MzIgc3RyaWRlLCB1MzIgaWR4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTExMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjExMjpcXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTEzLVxcdHUzMiBvZmYgPSByZWdpb25fb2ZmICsgc3RyaWRlICogaWR4O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTE4OlxcdGJpID0gKGNvbnN0IHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8gKilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTE5LVxcdFxcdCgoY29uc3QgdTggKilkZXYtXFx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTI3OnN0YXRpYyB2b2lkIG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMjg6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMjkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMzAtXFx0ZG1hX2FkZHJfdCBjb21tb25fcGEsIGdyb3VwX3BhLCBjaGFubmVsX3BhLCBtYXBwaW5nX3BhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxMzE6XFx0dTMyIGhkciA9IHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTMyLVxcdGRtYV9hZGRyX3QgYmFzZSA9IGRldi1cXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTMzOlxcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjEzNTpcXHRtdDc5MjVfY2FsX2NhY2hlX2NhbGNfbGF5b3V0KFxcdTAwMjZsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE1OS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTTsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoxNjA6XFx0XFx0XFx0aWYgKG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KGRldiwgbC5jb21tb25fb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjUtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTY2OlxcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xNjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGwuZ3JvdXBfc3RyaWRlLCBpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE3MS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTcyOlxcdFxcdFxcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuY2hhbm5lbF9vZmYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE3My1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbC5jaGFubmVsX3N0cmlkZSwgaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjE4ODpzdGF0aWMgaW50IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGNhbF90eXBlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0xODktXFx0XFx0XFx0XFx0XFx0IHUzMiBzZXFfbnVtLCBib29sIGRvbmUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMTkxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MTkyOlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTE5My1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjI0OmludCBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjI2OlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjI3LVxcdF9fbGUzMiBjZmdbTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOIC8gc2l6ZW9mKF9fbGUzMildID0gezB9O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmM6MjM4OlxcdG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibChkZXYsIHRibCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTIzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNDEtXFx0Y2ZnWzJdID0gY3B1X3RvX2xlMzIoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNDI6XFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjQzLVxcdFxcdFxcdFxcdFxcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYy0yNTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jOjI1NTpcXHRcXHRyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5jLTI1Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyNzA6XFx0cmV0ID0gbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoZGV2LCBNVDc5MjVfRkFDVF9DQUxfVFlQRV9NQVBQSU5HX1RCTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjcxLVxcdFxcdFxcdFxcdFxcdCAgICArK3NlcSwgdHJ1ZSwgTlVMTCwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYzoyODQ6aW50IG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmMtMjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo3OmVudW0gbXQ3OTI1X2F4aWRtYV9pbmZvX3RhZyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTgtXFx0TVQ3OTI1X0FYSURNQV9UQUdfUkVNQVAgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxMzplbnVtIG10NzkyNV9mYWN0X2NhbF90YWcge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNC1cXHRNVDc5MjVfRkFDVF9DQUxfVEFHX1RSSUdHRVJcXHQ9IDIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjIwOmVudW0gbXQ3OTI1X2ZhY3RfY2FsX3R5cGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0yMS1cXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DT01NT05cXHRcXHQ9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjQ3OnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC00OC1cXHRfX2xlMzIgY2FsX3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjU5OnN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfYnVmX2luZm8pID09IDg4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02MC1cXHQgICAgICBcXFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC02MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6NjI6c3RydWN0IG10NzkyNV9mYWN0X2NhbF9jb21tb25fbWFwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNjMtXFx0X19sZTMyIHBoeV9hZGRyX2g7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjcwOnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNzEtXFx0X19sZTMyIHBoeV9hZGRyX2g7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjc4OnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC03OS1cXHRfX2xlMzIgcGh5X2FkZHJfaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC04Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6ODc6c3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjg4OlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY29tbW9uX21hcCBjb21tb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjg5OlxcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfZ3JvdXBfbWFwIGdyb3VwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5MDpcXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTkxLVxcdF9fbGUzMiBidWZfaW5mb19zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDo5NjpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05Ny1cXHQgICAgICBcXFwibWFwcGluZyB0YWJsZSBtdXN0IG1hdGNoIHRoZSBNVDc5MjggRlcgKDEwNDQgYnl0ZXMpIG9yIHRoZSBGVyBwYXJzZSBjb3JydXB0c1xcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC05OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6OTk6c3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTAwLVxcdHUzMiBjb21tb25fb2ZmLCBncm91cF9vZmYsIGNoYW5uZWxfb2ZmLCBtYXBwaW5nX29mZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjEwNTpzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEwNi1cXHR1OCBfcnN2WzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MTI1OnN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTI2LVxcdHU4IF9yc3ZbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaDoxNDE6aW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oLTE0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmg6MTQzOnZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0NTppbnQgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0NzppbnQgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuaC0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oOjE0OTppbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9jYWNoZWRfY2FsLmgtMTUwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz03PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cXHRkZXYtXFx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjQ6XFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy03MC1cXHRcXHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODQtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1OlxcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHRtYWMpXFxcIixcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVxcdFxcdFxcdCAgICAgIHR4cHdyLVxcdTAwM2VyYXRlLFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz05MT1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVxcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTg6bXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcXHRzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cXHR1OCBiYW5kX2lkeCA9IGRldi1cXHUwMDNlbXBoeS5iYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlxcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzOC1cXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTMtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3MzMlxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTc0OlxcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4MjptdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LVxcdHBtLVxcdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA2OlxcdG10NzkyNV9zZXRfcnVudGltZV9wbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBwbSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIxNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjc6bXQ3OTI1X2RlZXBfc2xlZXBfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQyLVxcdHBtLVxcdTAwM2Vkc19lbmFibGUgPSBlbmFibGUgXFx1MDAyNlxcdTAwMjYgIW1vbml0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI0MzpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgcG0tXFx1MDAzZWRzX2VuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0NC1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjUxOm10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XFx0XFx0XFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5OlxcdFxcdHJldCA9IG10NzkyNV9tY3VfY2hpcF9jb25maWcoZGV2LCBcXFwiYXNzZXJ0XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4MC1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNC1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInR4cG93ZXJfc2t1XFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XFx0XFx0XFx0XFx0ICAgIG10NzkyNV90eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eF9zdGF0c1xcXCIsIDA0MDAsIGRpciwgZGV2LCBcXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMC0jaW5jbHVkZSBcXFwicmVnZC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjVfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM3OnN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfUk8odGVtcDFfaW5wdXQsIG10NzkyNV90aGVybWFsX3RlbXAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyNV9od21vbl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00MC1cXHRcXHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjVfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NTQ6XFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTI1XyVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTUtXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkyNV9od21vbl9ncm91cHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02MS1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cXHRcXHQgICAgICAgRklFTERfUFJFUChNVF9UWF9SQVRFX0lEWCwgcmF0ZSBcXHUwMDI2IEdFTk1BU0soNywgMCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3NDpcXHRcXHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3ODppbnQgbXQ3OTI1X21hY19pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcXHRcXHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXFx0XFx0XFx0XFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjkyOlxcdG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDA6c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2OlxcdHJldCA9IG10NzkyNV9tYWNfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMjAtXFx0aWYgKGlzX210NzkyNyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZGJkYyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEzMzpzdGF0aWMgaW50IG10NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDU6XFx0XFx0cmV0ID0gX19tdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDYtXFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9uYW5fY2FwKHN0cnVjdCBtdDc2X2RldiAqbWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5MDpzdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcXHRyZXQgPSBtdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDAtXFx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcXHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDItXFx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA0OlxcdHJldCA9IG10NzkyNV9pbml0X21sb19jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XFx0ZGV2LVxcdTAwM2VtdDc2LmluaXRfd2lwaHkgPSBtdDc5MjVfaW5pdF9uYW5fY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XFx0cmV0ID0gbXQ3OTI1X2luaXRfZGVidWdmcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1OlxcdHJldCA9IG10NzkyNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzMTpcXHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MDpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVxcdTAwM2VwbS5kc19lbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MzppbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYxLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjYzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWNvcmVkdW1wLndvcmssIG10NzkyNV9jb3JlZHVtcF93b3JrKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTI6NTAuNzc3ODIxMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTkxMzI5MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgdGhlIE1UNzkyNSBXaS1GaSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtdDc5MjVgIGRyaXZlciwgd2hpY2ggaXMgYSBNZWRpYVRlayBXaS1GaSBkcml2ZXIsIHdpdGggYm90aCBQQ0kgYW5kIFVTQiB2YXJpYW50cy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgc3RhbmRhcmQgUUVNVSBlbXVsYXRpbmcgdGhpcyBzcGVjaWZpYyBkZXZpY2U/IE5vLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwOiBEb2VzIHN5emthbGxlciBldmVuIGZ1enogaXQ/IEkgbmVlZCB0byBjaGVjayBmb3Igc3l6a2FsbGVyIGRlc2NyaXB0aW9ucy4gQnV0IHdhaXQsIHRoaXMgcHJvbXB0IGdpdmVzIGEgY3J1Y2lhbCBsaW1pdGF0aW9uOiBJIGNhbid0IGRpcmVjdGx5IHNlYXJjaCBmb3IgYHN5emxhbmdgIGRlc2NyaXB0aW9ucyBvciBleHByZXNzaW9ucyBzdGFydGluZyB3aXRoIGBzeXpfYCwgYmVjYXVzZSB0aG9zZSBhcmUgcHNldWRvLXN5c2NhbGxzIHNwZWNpZmljIHRvIHN5emthbGxlciwgbm90IHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gSSBkb24ndCBoYXZlIHRoZSBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgdG9vbHMsIHNvIEknbSBhIGJpdCBzdHVjay5cblxuTGV0IG1lIHJlLXJlYWQgdGhlIHByb21wdC4gSXQgcG9pbnRzIG91dCB0aGF0IGNvZGUgaW4gc3BlY2lmaWMgZHJpdmVycyDigJMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMg4oCTIGlzIHByb2JsZW1hdGljIGJlY2F1c2UgdGhleSBuZWVkIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIHdoaWNoIGlzbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFN5emthbGxlciBnZW5lcmFsbHkgZnV6emVzIFdpLUZpIGRyaXZlcnMgdmlhIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCB0aGUgYG10NzkyNWAgaXMgYSBoYXJkd2FyZSBkcml2ZXIuIFRoYXQgbWFrZXMgbWUgdGhpbms6IFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGluamVjdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMuIEJ1dCBkb2VzIHRoYXQgYXBwbHkgaGVyZT8gVGhlIHByb21wdCBtZW50aW9ucyB0aG9zZSBwcm9ibGVtYXRpYyBkcml2ZXJzIGFnYWluLi4uIElzIGBtdDc5MjVgIGluIHRoYXQgY2F0ZWdvcnk/IEl0ICppcyogYSBXaS1GaSBkcml2ZXIsIHdoaWNoIG1pZ2h0IGJlIHZlbmRvci1zcGVjaWZpYy4uLlxuXG5BbHNvLCB0aGUgcHJvbXB0IG1lbnRpb25zIG90aGVyIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIGBtdDc5MjVgIHJlYWNoYWJsZSBpbiBRRU1VPyBJZiB0aGVyZSdzIG5vIFFFTVUgZW11bGF0aW9uIGZvciB0aGlzLCBhbmQgaXQgaXNuJ3QgYSBVU0IgZ2FkZ2V0IG9yIGBtYWM4MDIxMV9od3NpbWAsIGhvdyBjYW4gaXQgYmUgcmVhY2hlZD8gT2gsIHJpZ2h0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBVU0IgZnV6emVyICh1c2luZyBgdmhjaWApIHRoYXQgY2FuIGVtdWxhdGUgQU5ZIFVTQiBkZXZpY2UgdXNpbmcgZGVzY3JpcHRvcnMuIEhvd2V2ZXIsIHRoaXMgcGF0Y2ggSSdtIGxvb2tpbmcgYXQgbW9kaWZpZXMgYG10NzkyNS9wY2kuY2AsIGBwY2lfbWFjLmNgLCBgcGNpX21jdS5jYCwgYW5kIGFkZHMgYGNhY2hlZF9jYWwuY2AuIFRoZSBuZXcgZmVhdHVyZSBmb2N1c2VzIG9uIFBDSWUgc3BlY2lmaWNhbGx5OiBcIlNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRlcgcmVhY2hlcyB0aGUgYnVmZmVyIHRocm91Z2ggQVhJIERNQSwgc28gaXQgaGFzIG5vIG1lYW5pbmcgb24gb3RoZXIgYnVzZXMuXCJcblxuVGhlIGNvbW1lbnRzIHJlaW5mb3JjZSB0aGF0IHRoaXMgaXMgUENJZS1vbmx5LiBBbmQgdGhlIGZ1bmN0aW9uIGBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdGAgaXMgY2FsbGVkIGZyb20gYG10NzkyNWVfbWFjX3Jlc2V0YCBhbmQgYG10NzkyNWVfbWN1X2luaXRgLCB3aGljaCBhcmUgaW4gYHBjaV9tYWMuY2AgYW5kIGBwY2lfbWN1LmNgLiBUaGlzIFBDSWUgYXNwZWN0IGlzIHJlYWxseSBjcml0aWNhbC4gSWYgdGhlcmUncyBubyBRRU1VIGVtdWxhdGlvbiwgY2FuIGl0IGFjdHVhbGx5IGJlIHRlc3RlZD9cblxuSSdtIHJlbWVtYmVyaW5nIHRoYXQgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcyBieSBtYXRjaGluZyB0aGUgUENJIHZlbmRvci9kZXZpY2UgSUQgYW5kIGluamVjdGluZyBNTUlPLiBCdXQgZG9lcyBpdCBzdXBwb3J0IGBtdDc5MjVgIHNwZWNpZmljYWxseT8gVXN1YWxseSwgaXQncyBtb3JlIGdlbmVyaWMsIGFuZCB0aGUgZHJpdmVyJ3MgYHByb2JlYCBmdW5jdGlvbiBpcyB0aGVuIGNhbGxlZC4gVGhlIGRyaXZlciB0aGVuIHRyaWVzIHRvIHJlYWQgYW5kIHdyaXRlIE1NSU8sIGFuZCBzeXprYWxsZXIgcHJvdmlkZXMgcmFuZG9tIGRhdGEuIEJ1dCwgdGhhdCBwcm9tcHQga2VlcHMgZWNob2luZyBpbiBteSBtaW5kOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIElzIHRoaXMgV2ktRmkgZHJpdmVyIGNvbnNpZGVyZWQgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZVwiPyBJZiBzbywgdGhhdCBjb3VsZCBtZWFuIGl0J3MgKm5vdCogZnV6emVkIGluIHRoZSB1c3VhbCB3YXkuIEJ1dCB3YWl0ISBUaGUgY29tbWl0IGF1dGhvciBpcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLi4uIGJ1dCB0aGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiLiBTbywgdGhhdCBqdXN0IG1lYW5zIHN5emthbGxlciBhcHBsaWVkIHRoZSBwYXRjaCB0byB0ZXN0IGl0LlxuXG5BbHJpZ2h0LCBsZXQncyBmb2N1cyBvbiB0aGUgUENJZSBhc3BlY3QgYW5kIHNlZSBpZiBpdCdzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcuIElmIHRoZSBkcml2ZXIgZG9lcyBETUEgYWxsb2NhdGlvbiBhbmQgc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBNQ1UgKGZpcm13YXJlKSwgaXQgcmVsaWVzIG9uIHRoYXQgZmlybXdhcmUgYmVpbmcgbG9hZGVkIGFuZCBydW5uaW5nLCBvciBhdCBsZWFzdCBNTUlPIHJlYWRzIHJldHVybmluZyBzZW5zaWJsZSB2YWx1ZXMuIExvb2tpbmcgYXQgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YDpcblxuYGBgY1xuXHRpZiAoIShkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcblx0XHRyZXR1cm47XG5gYGBcblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgYGNoaXBfY2FwYCBpcyBzZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NzIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzowNi45NjkxNTIwMjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4OTIwMTg2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz00Nj12b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjQ4OlxcdGlmICghKGRldi1cXHUwMDNlcGh5LmNoaXBfY2FwIFxcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0zNS0jZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MzY6I2RlZmluZSBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOIEJJVCgxNilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTM3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzowOC43NTgzNjkwNjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjQ3NTk3MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgZGVsdmUgaW50byB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1pc3NpbmcgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gIERlZmluaXRpb24qKlxuXG5IbW0sIHRoaXMgaXMgY3VyaW91cy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUga2VybmVsIHNvdXJjZSB3b3VsZCBoYXZlIGRlZmluZWQgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gLCBlc3BlY2lhbGx5IGdpdmVuIGl0cyBjb250ZXh0LiBJIG5lZWQgdG8gYmUgc3VyZS4gTXkgaW5pdGlhbCBzY2FuIGRpZG4ndCByZXZlYWwgaXQsIHdoaWNoIHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgdmVyaWZ5IHRoYXQgaXQncyAqbm90KiBkZWZpbmVkIGFueXdoZXJlLCBlaXRoZXIgZGlyZWN0bHkgaW4gdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcyBvciBpbmRpcmVjdGx5IHRocm91Z2ggc29tZSBtYWNybyBtYWdpYy4gVGhlcmUncyBhbHdheXMgdGhlIGNoYW5jZSBJIG1pc3NlZCBzb21ldGhpbmcgaW4gbXkgaW5pdGlhbCBwZXJ1c2FsLiBUaGUgbmV4dCBzdGVwIGlzIGEgbW9yZSB0aG9yb3VnaCBzZWFyY2ggb2YgdGhlIHBhdGNoIGl0c2VsZi4gUGVyaGFwcyBpdCdzIGRlZmluZWQgd2l0aGluIHRoaXMgcGF0Y2ggYW5kIEkgb3Zlcmxvb2tlZCBpdCwgb3IgbWF5YmUgaXQncyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIHNvbWV3aGVyZS4gSWYgaXQncyAqbm90KiBwcmVzZW50IGhlcmUsIEknbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBob3cgdGhpcyBzeW1ib2wgaXMgdXNlZCBhbmQgaWYgdGhlcmUgaXMgYW5vdGhlciB3YXkgdG8gZGV0ZXJtaW5lIHRoZSB1c2Ugb2YgQVhJIERNQS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxNjUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzoxMy4wMDU5NzAxMjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1NDc4MDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBWElETUFfRU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQ2PXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XFx0aWYgKCEoZGV2LVxcdTAwM2VwaHkuY2hpcF9jYXAgXFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTM1LSNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTUxfRU4gQklUKDkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozNjojZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU4gQklUKDE2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTE2NTI9c3RhdGljIGludCBkbWFjX2Z1bmNfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy0xNjYzLVxcdFxcdFxcdCBCX0FYX1dEX1JMU19FTiB8IEJfQVhfTVBEVV9QUk9DX0VOIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjE2NjQ6XFx0XFx0XFx0IEJfQVhfRE1BQ19DUlBSVCB8IEJfQVhfSF9BWElETUFfRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtMTY2NS1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQyMDg9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2hjaV9mdW5jX2VuX2F4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNC1cXHRcXHR2YWwgPSBCX0FYX01BQ19GVU5DX0VOIHwgQl9BWF9ETUFDX0ZVTkNfRU4gfCBCX0FYX0RJU1BBVENIRVJfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM6NDIxNTpcXHRcXHQgICAgICBCX0FYX1BLVF9CVUZfRU4gfCBCX0FYX0hfQVhJRE1BX0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNDIxNi1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jPTQyMjI9c3RhdGljIHZvaWQgcnR3ODlfbWFjX2RtYWNfZnVuY19wcmVfZW5fYXgoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy00MjU0LVxcdHJ0dzg5X3dyaXRlMzJfY2xyKHJ0d2RldiwgUl9BWF9IQVhJX0RNQV9TVE9QMiwgQl9BWF9TVE9QX0NIMTAgfCBCX0FYX1NUT1BfQ0gxMSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYzo0MjU1OlxcdHJ0dzg5X3dyaXRlMzJfc2V0KHJ0d2RldiwgUl9BWF9QTEFURk9STV9FTkFCTEUsIEJfQVhfQVhJRE1BX0VOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTQyNTYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYz03Njg9c3RhdGljIGludCBkbWFjX2Z1bmNfZW5fYmUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy03ODItXFx0XFx0XFx0ICBCX0JFX0RJU1BBVENIRVJfRU4gfCBCX0JFX0JCUlBUX0VOIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hY19iZS5jOjc4MzpcXHRcXHRcXHQgIEJfQkVfTUFDX1NFQ19FTiB8IEJfQkVfSF9BWElETUFfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmMtNzg0LVxcdFxcdFxcdCAgQl9CRV9ETUFDX01MT19FTiB8IEJfQkVfUExSTFNfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjX2JlLmM6Nzg1OlxcdFxcdFxcdCAgQl9CRV9QX0FYSURNQV9FTiB8IEJfQkVfRExFX0RBVEFDUFVJT19FTik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWNfYmUuYy03ODYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oLTE0My0jZGVmaW5lIFJfQVhfUExBVEZPUk1fRU5BQkxFIDB4MDA4OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmg6MTQ0OiNkZWZpbmUgQl9BWF9BWElETUFfRU4gQklUKDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC0xNDUtI2RlZmluZSBCX0FYX0FQQl9XUkFQX0VOIEJJVCgyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC01NjktI2RlZmluZSBCX0FYX01BQ19VTl9FTiBCSVQoMTUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo1NzA6I2RlZmluZSBCX0FYX0hfQVhJRE1BX0VOIEJJVCgxNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oLTU3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcmVnLmgtNDg5MS0jZGVmaW5lIEJfQkVfRE1BQ1JFR19HQ0tFTiBCSVQoMTUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo0ODkyOiNkZWZpbmUgQl9CRV9IX0FYSURNQV9FTiBCSVQoMTQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODkzLSNkZWZpbmUgQl9CRV9ETUFDX01MT19FTiBCSVQoMTEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaC00ODk0LSNkZWZpbmUgQl9CRV9QTFJMU19FTiBCSVQoMTApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9yZWcuaDo0ODk1OiNkZWZpbmUgQl9CRV9QX0FYSURNQV9FTiBCSVQoOSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3JlZy5oLTQ4OTYtI2RlZmluZSBCX0JFX0RMRV9EQVRBQ1BVSU9fRU4gQklUKDgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM9MzI3PXN0YXRpYyBpbnQgcnR3ODg1MmNfcHdyX29uX2Z1bmMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTQzOC1cXHRcXHRcXHQgIEJfQVhfRElTUEFUQ0hFUl9FTiB8IEJfQVhfQkJSUFRfRU4gfCBCX0FYX01BQ19TRUNfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzo0Mzk6XFx0XFx0XFx0ICBCX0FYX01BQ19VTl9FTiB8IEJfQVhfSF9BWElETUFfRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy00NDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9NDc1PXN0YXRpYyBpbnQgcnR3ODkyMmFfcHdyX29uX2Z1bmMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTYxMC1cXHRcXHRCX0JFX0RJU1BBVENIRVJfRU4gfCBCX0JFX0JCUlBUX0VOIHwgQl9CRV9NQUNfU0VDX0VOIHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6NjExOlxcdFxcdEJfQkVfSF9BWElETUFfRU4gfCBCX0JFX0RNQUNfTUxPX0VOIHwgQl9CRV9QTFJMU19FTiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjYxMjpcXHRcXHRCX0JFX1BfQVhJRE1BX0VOIHwgQl9CRV9ETEVfREFUQUNQVUlPX0VOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy02MTMtXFx0aWYgKHJ0d2Rldi1cXHUwMDNlaGNpLnR5cGUgPT0gUlRXODlfSENJX1RZUEVfUENJRSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYz01MDE9c3RhdGljIGludCBydHc4OTIyZF9wd3Jfb25fZnVuYyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtNjI5LVxcdFxcdFxcdCAgQl9CRV9ESVNQQVRDSEVSX0VOIHwgQl9CRV9CQlJQVF9FTiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYzMDpcXHRcXHRcXHQgIEJfQkVfTUFDX1NFQ19FTiB8IEJfQkVfSF9BWElETUFfRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02MzEtXFx0XFx0XFx0ICBCX0JFX0RNQUNfTUxPX0VOIHwgQl9CRV9QTFJMU19FTiB8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjYzMjpcXHRcXHRcXHQgIEJfQkVfUF9BWElETUFfRU4gfCBCX0JFX0RMRV9EQVRBQ1BVSU9fRU4gfFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy02MzMtXFx0XFx0XFx0ICBCX0JFX0xUUl9DVExfRU4pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzoxNC42NjA3NTk1NDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5ODU5OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTVQ3OTJ4IEFYSURNQSBFbmFibGUgRmxhZyoqXG5cbkFscmlnaHQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEknbSBsb29raW5nIGF0IGBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOYCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIGlzc3VlLiBUaGlzIGRlZmluZSBpcyBvbmx5IGRlY2xhcmVkIGluIGBtdDc5MnguaGAgYW5kIHVzZWQgd2l0aGluIHRoZSBgcGNpLmNgIGZpbGUgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gVGhhdOKAmXMgYSByZWQgZmxhZy4gV2hlcmUgdGhlIGhlY2sgaXMgdGhpcyB0aGluZyBiZWluZyAqc2V0Kj8gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGZsYWcgaXMgZW5hYmxlZCBhcyB0aGUgcmVzdCBvZiB0aGUgY29kZSBpcyB3cml0dGVuIGluIGEgd2F5IHRoYXQgc3VnZ2VzdHMgaXQgKnNob3VsZCogYmUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIE1UNzkyNS1zcGVjaWZpYyBjb2RlLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgZnVuY3Rpb24gb2YgdGhlIGZsYWcgYW5kIGl0cyB1c2UgYXJlIGNsZWFyLiBJJ2xsIGNoZWNrIGBtdDc5MjUvcGNpLmNgLCBiZWNhdXNlIHRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBzZWUgUENJLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLCBidXQgSSdsbCBhbHNvIGdsYW5jZSBhdCBgbXQ3OTI1L2luaXQuY2AgYW5kIGBtdDc5MjUvbWFpbi5jYCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBydWxlIG91dCBhbnkgb3RoZXIgcG90ZW50aWFsIGluaXRpYWxpemF0aW9uIG9yIGNvbmRpdGlvbmFsIGVuYWJsaW5nIGxvZ2ljLiBUaGlzIG5lZWRzIHRvIGJlIHJlc29sdmVkIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0ODg0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTM6MjAuMDgwNjIxOTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIzODM4NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoaXBfY2FwLipBWElETUFfRU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQ2PXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NDg6XFx0aWYgKCEoZGV2LVxcdTAwM2VwaHkuY2hpcF9jYXAgXFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfQVhJRE1BX0VOKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy00OS1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjIyLjUwNDQ5NjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxNDE4MDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBNeXN0ZXJpb3VzIENvZGUgUGF0aCoqXG5cbk9rYXksIHRoaXMgaXMgc3RyYW5nZS4gSG93IGlzIHRoaXMgcGFydGljdWxhciBjb2RlIGV2ZW4gZXhlY3V0aW5nIGlmIGEgY3J1Y2lhbCBmbGFnIGlzbid0IGRlZmluZWQgYW55d2hlcmU/IEl0J3MgbWFraW5nIG1lIHNjcmF0Y2ggbXkgaGVhZCwgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gbWV0aWN1bG91c2x5IHRyYWNlIHdoZXJlIHRoaXMgZmxhZywgYE1UNzkyeF9DSElQX0NBUF9BWElETUFfRU5gLCAqbWlnaHQqIGJlIHNldC4gTGV0IG1lIHN0YXJ0IGJ5IHNjYW5uaW5nIHRoZSBsaWtlbHkgY2FuZGlkYXRlczogYG10NzkyNS9tYWluLmNgIGFuZCBgbXQ3OTI1L3BjaS5jYC4gQnV0IEkgbmVlZCB0byBicm9hZGVuIHRoZSBzZWFyY2gsIHRvby4gSSBuZWVkIHRvIGNvbnNpZGVyIHRoYXQgaXQgbWlnaHQgYmUgZGVmaW5lZCBpbiBhbiB1bmluY2x1ZGVkIHBhdGNoLCB0b28uIE5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBzb21ldGhpbmcgb2J2aW91cy5cblxuQWhhISBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBpZiBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAgcmVtYWlucyB1bmRlZmluZWQsIHRoZSBmdW5jdGlvbiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIHdpbGwgc2ltcGx5IHJldHVybiByaWdodCBhd2F5LCBzbyBJJ20gbm90IGxvb2tpbmcgYXQgYSBmdW5jdGlvbmFsIGJ1Zy4gU3RpbGwsIHRoaXMgaXMgdW5leHBlY3RlZCBiZWhhdmlvciBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gbWFrZSBzdXJlIGl0J3Mgbm90IGEgbGF0ZW50IGJ1Zy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgbXQ3OTI1L3BjaS5jYCBpcyB0aGUgcGxhY2UgdG8gZG8gc28sIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBpdCdzIHdoZXJlIHRoZSBpbml0aWFsIGNoaXAgY29uZmlndXJhdGlvbiBtaWdodCBoYXBwZW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDUyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjI4LjcxODY4MTExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTExOTA2ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hpcF9jYXAuKj1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MTA3MD1tdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTEyMy1cXHRcXHRjYXNlIE1UX05JQ19DQVBfQ0hJUF9DQVA6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTEyNDpcXHRcXHRcXHRkZXYtXFx1MDAzZXBoeS5jaGlwX2NhcCA9IGxlNjRfdG9fY3B1KCooX19sZTY0ICopdGx2LVxcdTAwM2VkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMTI1LVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzoyOC44Mjk4Nzc2MjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE4NTIzOTA5MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIFZ1bG5lcmFibGUgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIGl0IGxvb2tzIGxpa2UgYGRldi1cdTAwM2VwaHkuY2hpcF9jYXBgIGdldHMgaXRzIHZhbHVlIGZyb20gdGhlIGZpcm13YXJlIHRocm91Z2ggYE1UX05JQ19DQVBfQ0hJUF9DQVBgIHdpdGhpbiB0aGUgYG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5YCBmdW5jdGlvbi4gU28sIHRoZSBmaXJtd2FyZSdzIGVzc2VudGlhbGx5IHRlbGxpbmcgdGhlIGRyaXZlciB3aGV0aGVyIGl0J3MgZ290IEFYSURNQV9FTiBzdXBwb3J0LiBJZiB0aGF0IGZpcm13YXJlIHNldHMgdGhlIGJpdCwgdGhlIGNvZGUgaW4gcXVlc3Rpb24gaXMgcmVhY2hhYmxlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoZW4sIGlzIHdoZXRoZXIgYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIgY291bGQgaW5mbHVlbmNlIHRoaXMgcHJvY2Vzcz9cblxuU3l6a2FsbGVyLCBiZWluZyBhIFBDSSBmdXp6ZXIsIHdvcmtzIGJ5IGZ1enppbmcgdGhlIFBDSSBkZXZpY2UsIGJ1dCBpdCAqZG9lc24ndCogZW11bGF0ZSBmaXJtd2FyZS4gSXQgc2VlbXMgdG8gdGhyb3cgcmFuZG9tIGRhdGEgYXQgTU1JTyByZWFkcy4gQXQgZmlyc3QsIEkgd2FzIHdvcnJpZWQgdGhlIGRyaXZlciBtaWdodCBqdXN0IHJlYWQgYSByYW5kb20gY2FwYWJpbGl0eSB2YWx1ZSBpZiBzeXprYWxsZXIgbWVzc2VkIHdpdGggTU1JTy4gSG93ZXZlciwgaXQncyBub3QgYSBkaXJlY3QgcmVhZDogYG10NzkyNV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5YCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIE1DVSAoZmlybXdhcmUpIGFuZCB3YWl0cyBmb3IgYSByZXNwb25zZS5cblxuU28sIGlmIHN5emthbGxlciAqZG9lc24ndCogZW11bGF0ZSB0aGUgTUNVLCB3ZSdyZSBsaWtlbHkgbG9va2luZyBhdCBhIHRpbWVvdXQsIG9yIGEgY2FzZSB3aGVyZSBzeXprYWxsZXIgbWlnaHQgaW50ZXJjZXB0IHRoZSBNQ1UncyByZXNwb25zZSAobWF5YmUgdmlhIERNQSBvciBNTUlPKSBhbmQgcHJvdmlkZSBpdHMgb3duIHJhbmRvbSBkYXRhISBUaGUgY3JpdGljYWwgcG9pbnQgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIG1hbmlwdWxhdGUgdGhlIERNQSBvciBNTUlPIHBhdGhzLCBhbmQgaXQgY2FuISBUaGUgTUNVJ3MgcmVzcG9uc2VzIHRlbmQgdG8gbGFuZCBpbiBhIERNQSByaW5nIGJ1ZmZlci4gU3l6a2FsbGVyIGNhbiBpbmplY3QgcmFuZG9tIGRhdGEgdGhlcmUsIG1lYW5pbmcgdGhlIGRyaXZlciB3b3VsZCBwYXJzZSBhIGNvbXBsZXRlbHkgYXJiaXRyYXJ5IE1DVSByZXNwb25zZSBhbmQgcG90ZW50aWFsbHkgc2V0IGBjaGlwX2NhcGAgdG8gYSByYW5kb20gdmFsdWUsIHBvdGVudGlhbGx5IGluY2x1ZGluZyBgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTmAuIFRoaXMgbWVhbnMgdGhlIGNvZGUgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gYSBmdXp6ZWQgZW52aXJvbm1lbnQuXG5cbk5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG1lZXRzIHRoZSBjcml0ZXJpYSBmb3IgXCJXb3J0aEZ1enppbmdcIi4gVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggY29uY2VybnMgXCJ2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBJcyB0aGlzIG9uZSBvZiB0aG9zZT8gSXMgYG10NzkyNWAgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZT9cblxuTm8sIHRoaXMgaXMgYSBXaS1GaSBkcml2ZXIsIGFuZCBnZW5lcmFsbHksIFdpLUZpIGRyaXZlcnMgYXJlbid0IGluIHRoYXQgXCJub3Qgd29ydGggZnV6emluZ1wiIGNhdGVnb3J5LiBCdXQgaXMgaXQgc3VwcG9ydGVkIGJ5IHN5emthbGxlcj8gSXQgKmlzKiBhIFBDSWUgV2ktRmkgZHJpdmVyLiBEb2VzIHN5emthbGxlciBmdXp6IGl0P1xuXG5MZXQncyBzZWUuIEkgY2FuIGNoZWNrIGlmIGBDT05GSUdfTVQ3OTI1RWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXIuIEkgZG9uJ3QgaGF2ZSB0aGUgY29uZmlnIGZpbGUgaGFuZHksIGJ1dCBJIGtub3cgc3l6a2FsbGVyIGZ1enplciBXaS1GaSBkcml2ZXJzLCBidXQgaXQgdXN1YWxseSBkb2VzIHNvIHZpYSBgbWFjODAyMTFfaHdzaW1gLCB3aGljaCBpcyBhICpzb2Z0d2FyZSogc2ltdWxhdG9yLCBhbmQgZG9lc24ndCBhY3R1YWxseSB1c2UgYG10NzkyNWAuXG5cbkJ1dCB3YWl0LCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLiBEb2VzIHRoYXQgZnV6emVyIHRhcmdldCBgbXQ3OTI1YD8gWWVzLCB0aGUgUENJIGZ1enplciBnb2VzIGFmdGVyIGFsbCBQQ0kgZHJpdmVycywgYnkgbWF0Y2hpbmcgUENJIElEcy4gSSBzaG91bGQgZG91YmxlIGNoZWNrLCBsZXQncyBsb29rIGF0IGBtdDc5MjVfcGNpX2RldmljZV90YWJsZWAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEzMCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzo0MC42ODIyNzE0MzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODUzNzgxNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X3BjaV9kZXZpY2VfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjE1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTE2LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01FRElBVEVLLCAweDc5MjUpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9OTc0PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtdDc5MjVfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05NzUtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjk3NjpcXHQuaWRfdGFibGVcXHQ9IG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTk3Ny1cXHQucHJvYmVcXHRcXHQ9IG10NzkyNV9wY2lfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz05ODM9bW9kdWxlX3BjaV9kcml2ZXIobXQ3OTI1X3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTk4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo5ODU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG10NzkyNV9wY2lfZGV2aWNlX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy05ODYtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjQyLjY2NzY1NzE3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTU4MDQzMzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIHRoZSBNVDc5MjUgRHJpdmVyIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gdGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IFN5emthbGxlcidzIFBDSSBmdXp6ZXIgKmNhbiogZGVmaW5pdGVseSBpbnRlcmFjdCB3aXRoIHRoaXMgYG10NzkyNWAgZHJpdmVyIGFuZCB0cmlnZ2VyIHNvbWUgZnV6emluZy4gQnV0IGhhbmcgb24sIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSBsaWtlIFVTQiBnYWRnZXRzIG9yIGBtYWM4MDIxMV9od3NpbWAuIElmIHRoaXMgZHJpdmVyICpyZXF1aXJlcyogYSByZWFsIFBDSWUgY2FyZCB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlLCB0aGF0J3MgYSBwcm9ibGVtLCByaWdodD9cblxuQnV0IHdhaXQgYSBtaW51dGXigKYgU3l6a2FsbGVyJ3MgUENJIGZ1enplciAqaXMqIGVmZmVjdGl2ZWx5IHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlISBJdCBpbnRlcmNlcHRzIHRob3NlIFBDSSBjb25maWcgc3BhY2UgYW5kIE1NSU8gYWNjZXNzZXMuIFNvLCB3ZSdyZSBnb29kOyBpdCAqY2FuKiBiZSByZWFjaGVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgdXNpbmcgU3l6a2FsbGVyJ3MgUENJIGZ1enplci5cblxuT2theSwgbGV0J3Mgc3RlcCBiYWNrLCB0aGUgcHJvbXB0IGdpdmVzIGV4YW1wbGVzIG9mIHNwZWNpZmljIGRyaXZlcnMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IHNvbWV0aGluZyBsaWtlIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlciwgd2hpY2ggcmVsaWVzIG9uIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgUUVNVSBkb2Vzbid0IGVtdWxhdGU/IERyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgb3IgYGFtZGdwdWA/IElzIHRoZSBgbXQ3OTI1YCBkcml2ZXIgZXZlbiAqaW4qIHRoYXQgY2F0ZWdvcnk/IE5vLCBpdCdzIGEgV2ktRmkgZHJpdmVyLCBzbyB0aGF0IGRvZXNuJ3QgYXBwbHkuXG5cbkJ1dCBub3cgSSBoYXZlIHRvIGFzayBteXNlbGYsIGRvZXMgU3l6a2FsbGVyJ3MgUENJIGZ1enplciBhY3R1YWxseSBnZXQgKmRlZXAqIGludG8gdGhlIGRyaXZlcidzIGludGVybmFscz8gRG9lcyBpdCBoaXQgdGhlIGludGVyZXN0aW5nIGJpdHM/IFllcywgaXQgY2FuLlxuXG5MZXQncyByZXZpZXcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4gSXQgYWRkcyB0aGVzZSBuZXcgZnVuY3Rpb25zOiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgLCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMsIHdoaWNoIGludm9sdmVzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2Ugc2VuZGluZywgYW5kIG1hcHBpbmcgdGFibGUgc2V0dXAuIFRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYWRkZWQgYXJlOiBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgLCBhbmQgdGhhdCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi5cblxuTm93LCB3aGVyZSBhcmUgdGhlc2UgZnVuY3Rpb25zIGFjdHVhbGx5ICpjYWxsZWQqPyBMb29rcyBsaWtlIGBtdDc5MjVlX21hY19yZXNldGAgYW5kIGBtdDc5MjVlX21jdV9pbml0YC4gQ3J1Y2lhbGx5LCBgbXQ3OTI1ZV9tY3VfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgb3BlcmF0aW9uLiBTbywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggYG10NzkyNWVfbWN1X2luaXRgIGR1cmluZyBwcm9iZT8gSWYgd2UgY2FuIHJlYWNoIHByb2JlLCB3ZSBjYW4gcmVhY2ggdGhlc2UgZnVuY3Rpb25zLCBhbmQgdGhlbiB3ZSBoYXZlIGEgcG90ZW50aWFsIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODA3NiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxMzo1MS44MjU3MDI5OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MzMzMzgwNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1ZV9tY3VfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzU0PWludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNTU6aW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz01ODg9c3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNjEyLVxcdFxcdC5yZXNldCA9IG10NzkyNWVfbWFjX3Jlc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjYxMzpcXHRcXHQubWN1X2luaXQgPSBtdDc5MjVlX21jdV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTYxNC1cXHRcXHQuZHJ2X293biA9IG10NzkyeGVfbWN1X2Rydl9wbWN0cmwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM9OD1tdDc5MjVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjI3OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTM6NTMuNTU5MDQ2NTQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0OTQ4NzE5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXBseSBmYW1pbGlhciB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYW5kIGRyaXZlciBkZXZlbG9wbWVudDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgTUNVIEluaXRpYWxpemF0aW9uIGluIG10NzkyNWUqKlxuXG5SaWdodCwgc28gYG10NzkyNWVfbWN1X2luaXRgIGlzIGRlZmluaXRlbHkgYXNzaWduZWQgdG8gdGhlIGAubWN1X2luaXRgIGNhbGxiYWNrIHdpdGhpbiB0aGlzIGRyaXZlciwgYW5kIEkga25vdyB0aGF0IGAubWN1X2luaXRgIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgZGV2aWNlIHByb2JlIHNlcXVlbmNlLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCBwcmVjaXNlbHkgKndoZXJlKiB0aGF0IGAubWN1X2luaXRgIGZ1bmN0aW9uIGdldHMgaW52b2tlZCB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgcHJvYmUgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc3RhY2sgYXJvdW5kIGl0IGlzIGNydWNpYWwuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9yIHRpbWluZyBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHRoZSBNQ1UgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzgwLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTM6NTguMDUzOTIzMDg5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY0MzIyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY3VfaW5pdFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jPTI3OD1tdDc2MDNfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3NjAzX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvaW5pdC5jLTMwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmM6MzAzOlxcdHJldCA9IG10NzYwM19tY3VfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL2luaXQuYy0zMDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL21jdS5jPTExNj1zdGF0aWMgaW50IG10NzYwM19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYy0yMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbWN1LmM6MjE4OmludCBtdDc2MDNfbWN1X2luaXQoc3RydWN0IG10NzYwM19kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9tY3UuYy0yMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvbXQ3NjAzLmg9MTg3PXZvaWQgbXQ3NjAzX2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oOjE4ODppbnQgbXQ3NjAzX21jdV9pbml0KHN0cnVjdCBtdDc2MDNfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjAzL210NzYwMy5oLTE4OS12b2lkIG10NzYwM19pbml0X2RlYnVnZnMoc3RydWN0IG10NzYwM19kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MzM9bXQ3NjE1X3JhZGFyX3BhdHRlcm5fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjM4OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTM5LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTY2PW10NzYxNV9zY3Nfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjcxOlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTcyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jPTk2PW10NzYxNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jOjEwMjpcXHRpZiAoIW10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChkZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYy0xMDMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM9MTkyPW10NzYxNV9kYmRjX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MTk2OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTE5Ny1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yMjE9bXQ3NjE1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmM6MjI1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvZGVidWdmcy5jLTIyNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYz0yNTE9bXQ3NjE1X3Jlc2V0X3Rlc3Rfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2RlYnVnZnMuYzoyNTY6XFx0aWYgKCFtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9kZWJ1Z2ZzLmMtMjU3LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jPTE4PXN0YXRpYyBzc2l6ZV90IG10NzYxNV90aGVybWFsX3Nob3dfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmMtMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jOjI1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KG1kZXYpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYy0yNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L2luaXQuYz0xODg9bXQ3NjE1X2NoZWNrX29mZmxvYWRfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9pbml0LmM6MjIxOmJvb2wgbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvaW5pdC5jLTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM9Mjc9c3RhdGljIGludCBtdDc2MTVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmMtMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jOjM1OlxcdGlmICghbXQ3NjE1X3dhaXRfZm9yX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTM2LVxcdFxcdHJldHVybiAtRUlPO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWN1LmM9MTY4MT1zdGF0aWMgaW50IG10NzY2M19sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tY3UuYy0xNjk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jOjE2OTY6aW50IG10NzYxNV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21jdS5jLTE2OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9Mzk1PXZvaWQgbXQ3NjE1X2RtYV9jbGVhbnVwKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM5NjppbnQgbXQ3NjE1X21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjM5Nzpib29sIG10NzYxNV93YWl0X2Zvcl9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC0zOTgtdm9pZCBtdDc2MTVfbWFjX3NldF9yYXRlcyhzdHJ1Y3QgbXQ3NjE1X3BoeSAqcGh5LCBzdHJ1Y3QgbXQ3NjE1X3N0YSAqc3RhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1Lmg9NTUwPWludCBtdDc2NjNfdXNiX3NkaW9fcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L210NzYxNS5oOjU1MTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaC01NTItaW50IG10NzY2M3VfbWN1X3Bvd2VyX29uKHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTU0LS8qIHNkaW8gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tdDc2MTUuaDo1NTU6aW50IG10NzY2M3NfbWN1X2luaXQoc3RydWN0IG10NzYxNV9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbXQ3NjE1LmgtNTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYz0xNT1zdGF0aWMgdm9pZCBtdDc2MTVfcGNpX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MjE6XFx0cmV0ID0gbXQ3NjE1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yMi1cXHRmb3IgKGkgPSAwOyAocmV0ID09IC1FQUdBSU4pIFxcdTAwMjZcXHUwMDI2IChpIFxcdTAwM2MgMTApOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTIzLVxcdFxcdG1zbGVlcCgyMDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3BjaV9pbml0LmM6MjQ6XFx0XFx0cmV0ID0gbXQ3NjE1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0yNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jPTExMj12b2lkIG10NzYxNV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvcGNpX2luaXQuYzoxMTY6XFx0bWN1X3J1bm5pbmcgPSBtdDc2MTVfd2FpdF9mb3JfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9wY2lfaW5pdC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW8uYz00Mj1zdGF0aWMgdm9pZCBtdDc2NjNzX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9zZGlvLmMtNDYtXFx0ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBtdDc2MTVfZGV2LCBtY3Vfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jOjQ3OlxcdGlmIChtdDc2NjNzX21jdV9pbml0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpby5jLTQ4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW9fbWN1LmM9OTg9c3RhdGljIGludCBtdDc2NjNzX21jdV9md19wbWN0cmwoc3RydWN0IG10NzYxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW9fbWN1LmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3NkaW9fbWN1LmM6MTMzOmludCBtdDc2NjNzX21jdV9pbml0KHN0cnVjdCBtdDc2MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvc2Rpb19tY3UuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiLmM9MTAxPXN0YXRpYyB2b2lkIG10NzY2M3VfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYi5jLTEwNS1cXHRkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzYxNV9kZXYsIG1jdV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYzoxMDY6XFx0aWYgKG10NzY2M3VfbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS91c2IuYy0xMDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jPTQ1PWludCBtdDc2NjN1X21jdV9wb3dlcl9vbihzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvdXNiX21jdS5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYzo2NTppbnQgbXQ3NjYzdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NjE1X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L3VzYl9tY3UuYy02Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaD0yMj1lbnVtIG1jdV9jYWxpYnJhdGUge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1LmgtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvbWN1Lmg6Mzk6aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL21jdS5oOjQwOmludCBtdDc2eDB1X21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9tY3UuaC00MS1zdGF0aWMgaW5saW5lIGludCBtdDc2eDBfZmlybXdhcmVfcnVubmluZyhzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jPTk1PXN0YXRpYyBpbnQgbXQ3NngwZV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCBib29sIHJlc3VtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaS5jLTEwMy1cXHRtdDc2eDAyX2RtYV9kaXNhYmxlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpLmM6MTA0OlxcdGVyciA9IG10NzZ4MGVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2kuYy0xMDUtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmM9MTM9c3RhdGljIGludCBtdDc2eDBlX2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9wY2lfbWN1LmMtMTE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3BjaV9tY3UuYzoxMTY6aW50IG10NzZ4MGVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvcGNpX21jdS5jLTExNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYz0xNTE9c3RhdGljIGludCBtdDc2eDB1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYsIGJvb2wgcmVzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiLmM6MTYwOlxcdGVyciA9IG10NzZ4MHVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2IuYy0xNjEtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmM9ODU9c3RhdGljIGludCBtdDc2eDB1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC91c2JfbWN1LmMtMTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngwL3VzYl9tY3UuYzoxNjQ6aW50IG10NzZ4MHVfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDAvdXNiX21jdS5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9tdDc2eDIuaD01OD12b2lkIG10NzZ4Ml9waHlfc2V0X3R4cG93ZXIoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oLTU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oOjYwOmludCBtdDc2eDJfbWN1X2luaXQoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4Mi5oLTYxLWludCBtdDc2eDJfbWN1X3NldF9jaGFubmVsKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2LCB1OCBjaGFubmVsLCB1OCBidyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaD0zMz12b2lkIG10NzZ4MnVfbWN1X2NvbXBsZXRlX3VyYihzdHJ1Y3QgdXJiICp1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL210NzZ4MnUuaDozNDppbnQgbXQ3NngydV9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvbXQ3NngydS5oLTM1LWludCBtdDc2eDJ1X21jdV9md19pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmM9MjIwPWludCBtdDc2eDJfcmVzdW1lX2RldmljZShzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmMtMjMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9pbml0LmM6MjM0OlxcdHJldHVybiBtdDc2eDJfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jLTIzNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfaW5pdC5jPTIzNz1zdGF0aWMgaW50IG10NzZ4Ml9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYy0yNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYzoyNjI6XFx0cmV0ID0gbXQ3NngyX21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvcGNpX2luaXQuYy0yNjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9tY3UuYz0xNTg9bXQ3NnBjaV9tY3VfcmVzdGFydChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmMtMTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3BjaV9tY3UuYzoxNzc6aW50IG10NzZ4Ml9tY3VfaW5pdChzdHJ1Y3QgbXQ3NngwMl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9wY2lfbWN1LmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9pbml0LmM9MTI2PWludCBtdDc2eDJ1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzZ4MDJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jLTE1MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfaW5pdC5jOjE1MTpcXHRlcnIgPSBtdDc2eDJ1X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX2luaXQuYy0xNTItXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmM9MjM1PWludCBtdDc2eDJ1X21jdV9md19pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2eDIvdXNiX21jdS5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi91c2JfbWN1LmM6MjQ2OmludCBtdDc2eDJ1X21jdV9pbml0KHN0cnVjdCBtdDc2eDAyX2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL3VzYl9tY3UuYy0yNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jPTg1OD1tdDc5MTVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5MilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYy04NzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvaW5pdC5jOjg3MzpcXHRyZXQgPSBtdDc5MTVfbWN1X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9pbml0LmMtODc0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0yNDEwPWludCBtdDc5MTVfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10NzkxNV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI0NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjQ2NTppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjQ2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaD00NzM9aW50IG10NzkxNV9ydW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjQ3NDppbnQgbXQ3OTE1X21jdV9pbml0KHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTQ3NS1pbnQgbXQ3OTE1X21jdV9pbml0X2Zpcm13YXJlKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jPTg0PXN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTkxLVxcdG10NzZfd3IoZGV2LCBNVF9TV0RFRl9NT0RFLCBNVF9TV0RFRl9OT1JNQUxfTU9ERSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjkyOlxcdHJldCA9IG10NzkyeF9tY3VfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy05My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzA3PWludCBtdDc5MjFlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDozMDg6aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzA5LWludCBtdDc5MjFzX3dmc3lzX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MzExPWludCBtdDc5MjFzX2luaXRfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmgtMzEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjMxMzppbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0zMTQtaW50IG10NzkyMXNfbWN1X2Rydl9wbWN0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM9MjI9bXQ3OTIxX21jdV9zZW5kX21lc3NhZ2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21jdS5jLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYzo0MTppbnQgbXQ3OTIxZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy00Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jPTYxPXN0YXRpYyB1MzIgbXQ3OTIxc19jbGVhcl9ybTNyX2Rydl9vd24oc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYzo3NDppbnQgbXQ3OTIxc19tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtNzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MzY9bXQ3OTIxdV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjY1OnN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0xMDA9c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDQ6XFx0cmV0ID0gbXQ3OTJ4X21jdV9pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzU0PWludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNTU6aW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzU2LXZvaWQgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM9OD1tdDc5MjVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jOjI3OmludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3PW10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo1NjpzdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oPTI2Mz1zdHJ1Y3QgbXQ3OTJ4X2RtYV9sYXlvdXQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC0yNzYtI2RlZmluZSBtdDc5MnhfZGV2X3Jlc2V0KGRldilcXHRcXHQoKGRldiktXFx1MDAzZWhpZl9vcHMtXFx1MDAzZXJlc2V0KGRldikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDoyNzc6I2RlZmluZSBtdDc5MnhfbWN1X2luaXQoZGV2KVxcdFxcdCgoZGV2KS1cXHUwMDNlaGlmX29wcy1cXHUwMDNlbWN1X2luaXQoZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTI3OC0jZGVmaW5lIF9fbXQ3OTJ4X21jdV9kcnZfcG1jdHJsKGRldilcXHQoKGRldiktXFx1MDAzZWhpZl9vcHMtXFx1MDAzZWRydl9vd24oZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYz0xMjY0PXN0YXRpYyBpbnQgbXQ3OTk2X2luaXRfaGFyZHdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYzoxMjg5OlxcdHJldCA9IG10Nzk5Nl9tY3VfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2luaXQuYy0xMjkwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz0zNzEzPWludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTM3NTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6Mzc1OTppbnQgbXQ3OTk2X21jdV9pbml0KHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtMzc2MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaD03MDM9aW50IG10Nzk5Nl9ydW4oc3RydWN0IG10Nzk5Nl9waHkgKnBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6NzA0OmludCBtdDc5OTZfbWN1X2luaXQoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtNzA1LWludCBtdDc5OTZfbWN1X2luaXRfZmlybXdhcmUoc3RydWN0IG10Nzk5Nl9kZXYgKmRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjEzOjU4LjEwODU3MzE4NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI5MTkxNDE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIENvZGUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gdHJhY2luZyB0aGUgZXhlY3V0aW9uIHBhdGggb2YgYG10NzkyNWVfbWN1X2luaXRgLiBJdCBsb29rcyBsaWtlIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIHRocm91Z2ggYSBzZXJpZXMgb2YgbWFjcm9zIGFuZCBmdW5jdGlvbiBjYWxsczogYG10NzkyeF9tY3VfaW5pdGAsIHdoaWNoIGV4cGFuZHMgdG8gYChkZXYpLVx1MDAzZWhpZl9vcHMtXHUwMDNlbWN1X2luaXQoZGV2KWAsIHdoaWNoIHVsdGltYXRlbHkgbGVhZHMgdG8gYG10NzkyNWVfbWN1X2luaXRgLiBUaGlzIGBtdDc5MnhfbWN1X2luaXRgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoaW4gYF9fbXQ3OTI1X2luaXRfaGFyZHdhcmVgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBgbXQ3OTI1X2luaXRfaGFyZHdhcmVgLiBBbmQsIGNydWNpYWxseSwgYG10NzkyNV9pbml0X2hhcmR3YXJlYCBpcyBpbml0aWF0ZWQgdmlhIGBtdDc5MjVfaW5pdF93b3JrYCwgd2hpY2ggaXMgc2NoZWR1bGVkIGR1cmluZyB0aGUgZHJpdmVyIHByb2JlLiBFeGNlbGxlbnQsIHRoYXQgY29uZmlybXMgaXQ7IHRoaXMgY29kZSBpcyBkZWZpbml0ZWx5IGhpdCBkdXJpbmcgdGhlIGluaXRpYWwgcHJvYmUgc2VxdWVuY2UuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogSXMgdGhpcyBwYXRjaCBtZXJlbHkgY29zbWV0aWMsIG9yIGRvZXMgaXQgaW50cm9kdWNlIHN1YnN0YW50aWFsIGNoYW5nZXM/IEknbSBzZWVpbmcgdGhhdCBpdCdzIGludHJvZHVjaW5nIGEgY29tcGxldGVseSBuZXcgZmVhdHVyZSDigJMgQVhJIERNQSBjYWxpYnJhdGlvbiBjYWNoZSDigJMgd2l0aCBhbGxvY2F0aW9ucywgTUNVIG1lc3NhZ2luZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEl0J3Mgbm90IGp1c3QgYSBkb2N1bWVudGF0aW9uIHVwZGF0ZSBvciBhIGNoYW5nZSB0byBsb2dnaW5nLCBvciBjb25zdGFudHMuIE5vLCBpdCdzIG1vZGlmeWluZyBjb3JlIGRyaXZlciBsb2dpYy4gVGhlcmVmb3JlLCB0aGlzIHdhcnJhbnRzIGZ1enppbmc7IGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuTmV4dCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgbmVlZCB0aGUgbW9zdCBzY3J1dGlueS4gVGhlIG5ldyBmdW5jdGlvbmFsaXR5IGRpcmVjdGx5IHRvdWNoZXMgdGhlc2U6XG4qICAgYG10NzkyNV9heGlkbWFfYWxsb2NgXG4qICAgYG10NzkyNV9heGlkbWFfZnJlZWBcbiogICBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYFxuKiAgIGBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxgXG4qICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2BcbiogICBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgXG5cblRoZXNlIGFyZW4ndCBzdGF0aWM7IHRoZXkgYXJlIGV4cG9ydGVkIG9yIGhhdmUgZXh0ZXJuYWwgbGlua2FnZSB3aXRoaW4gdGhlIGRyaXZlci4gTGV0J3MgbWFrZSBzdXJlIEkndmUgZ290IHRoZSBzb3VyY2UgZmlsZXMgcmlnaHQuIEFoLCBgbXQ3OTI1X2F4aWRtYV9hbGxvY2AsIGBtdDc5MjVfYXhpZG1hX2ZyZWVgLCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYCwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYCBhcmUgaW4gYGNhY2hlZF9jYWwuY2AgYW5kIGV4cG9ydGVkIGluIGBjYWNoZWRfY2FsLmhgLiBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgIGlzIGluIGBwY2kuY2AgYW5kIGV4cG9ydGVkIGluIGBtdDc5MjUuaGAuXG5cbkxldCdzIGxpc3QgdGhvc2UgZnVuY3Rpb25zIGluIEZvY3VzU3ltYm9sczpcbiogICBgbXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRgXG4qICAgYG10NzkyNV9heGlkbWFfYWxsb2NgXG4qICAgYG10NzkyNV9heGlkbWFfZnJlZWBcbiogICBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYFxuKiAgIGBtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxgXG4qICAgYG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc2BcblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSB3aGF0LCBpZiBhbnksIHNwZWNpZmljIENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgdGVzdGVkLiBUaGUgZHJpdmVyIGlzIGBtdDc5MjVgLCBzbyBJJ2xsIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYC4gSSdsbCBzZWUgaWYgdGhlcmUgYXJlIGFueSB0aGF0IGFyZSByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwOTUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MTAuNDAwNDkwNTczWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDgxNDkxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyNV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyNUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjEwLjQ1MTMxMDA5N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDMxNTY4NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJZSBGYWN0b3J5IENhbGlicmF0aW9uIEZlYXR1cmUqKlxuXG5Pa2F5LCBzbyB0aGlzIGZlYXR1cmUgaXMgKmRlZmluaXRlbHkqIFBDSWUtc3BlY2lmaWMuIFRoZSBjb21tZW50IGlzIHByZXR0eSBjbGVhcjogaXQncyBhYm91dCBzZXR0aW5nIHVwIGEgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeSwgYW5kIGl0IGV4cGxpY2l0bHkgc2F5cyBcIlBDSWUgb25seS5cIiBUaGUgRmlybXdhcmUgaXMgYWNjZXNzaW5nIHRoaXMgY2FjaGUgdmlhIEFYSSBETUEsIHdoaWNoIHdvdWxkbid0IG1ha2Ugc2Vuc2Ugb24gYSBkaWZmZXJlbnQgYnVzIGFyY2hpdGVjdHVyZS4gUGx1cywgdGhlIGNvZGUgY2hhbmdlcyBjb25maXJtIHRoaXM7IGl0J3MgdG91Y2hpbmcgYG10NzkyNS9wY2kuY2AsIGBtdDc5MjUvcGNpX21hYy5jYCwgYW5kIGBtdDc5MjUvcGNpX21jdS5jYC4gVGhhdCBtZWFucyB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gaXMgdW5kZW5pYWJseSBgTVQ3OTI1RWAuIE5vdywgYmVmb3JlIEkgZGl2ZSBkZWVwZXIsIEknZCBiZXR0ZXIgY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc5MjVFYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBwcmUtcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgSSBzdGFydCBwaWNraW5nIHRoaXMgYXBhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMDI5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjE1Ljg4Mjg4MTUyN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODMwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc9Nz1jb25maWcgTVQ3OTI1RVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy05LVxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxMDpcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz0xOT1jb25maWcgTVQ3OTI1VVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMi1cXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjM6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTI1LVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MTUuOTI4OTY5MTIyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTEzMTk2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIE1UNzkyNUUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYE1UNzkyNUVgIGRyaXZlciwgYXMgSSBzZWUgaXQsIHJlbGllcyBmdW5kYW1lbnRhbGx5IG9uIGBNQUM4MDIxMWAgYW5kIGBQQ0lgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBOb3csIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCBtYWtlIGEgcXVpY2sgbm90ZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwYXJlbnQgY29uZmlndXJhdGlvbnMgSSdtIG1pc3NpbmcuIEFsd2F5cyBnb29kIHRvIGhhdmUgYSBjb21wbGV0ZSBwaWN0dXJlLlxuXG5Mb29raW5nIGEgYml0IGRlZXBlciwgSSBzZWUgdGhhdCBgTVQ3Nl9DT1JFYCBpcywgYXMgZXhwZWN0ZWQsIHNlbGVjdGVkIGJ5IGBNVDc5MjVfQ09NTU9OYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0ZXJtcyBvZiB0aGUgdXN1YWwgTWVkaWF0ZWsgZHJpdmVyIGFyY2hpdGVjdHVyZS5cblxuQW5kIGZpbmFsbHksIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgd2hldGhlciBvciBub3QgYFdMQU5gIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIGFyZSBuZWNlc3NhcnkuIExldCBtZSBwb3Agb3ZlciB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AgdG8gY29uZmlybSB0aG9zZSBzZWxlY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTczNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjIwLjIyMDI5MjcwMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzODg4NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MjAuMjY4Njg4Njk2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2Mjc0OTQ1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzYgS2NvbmZpZyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXJzLCBhbmQgbXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBwbGFjZSB0byBzdGFydCB3aGVuIEkgbmVlZCB0byBjb25maWd1cmUgb3IgdHJvdWJsZXNob290IGFueXRoaW5nIHdpdGhpbiBhIExpbnV4IGtlcm5lbCBtb2R1bGUuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgS2NvbmZpZyBmaWxlIHdpbGwgb3V0bGluZSBhbGwgdGhlIGJ1aWxkIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgTVQ3NiB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0aGlzIGtpbmQgb2Yga2VybmVsIGluZnJhc3RydWN0dXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnM6KiogV2hhdCBmZWF0dXJlcyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZD8gSXMgdGhlcmUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgY2hpcHNldHMsIGZyZXF1ZW5jeSBiYW5kcywgb3Igd2lyZWxlc3Mgc3RhbmRhcmRzIGxpa2UgODAyLjExYXg/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBkcml2ZXJzIGFyZSByZXF1aXJlZCBmb3IgdGhlIE1UNzYgZHJpdmVyIHRvIGZ1bmN0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgdGhpbmdzIGxpa2UgZmlybXdhcmUsIG90aGVyIG5ldHdvcmtpbmcgc3Vic3lzdGVtcywgb3IgZXZlbiBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLlxuKiAgICoqRGVmYXVsdCB2YWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGhpcyBjYW4gZ2l2ZSBtZSBhIHF1aWNrIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4cGVjdGVkIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIgb3V0LW9mLXRoZS1ib3guXG4qICAgKipIZWxwIHRleHQ6KiogSG9wZWZ1bGx5LCB0aGVyZSdzIHNvbWUgdXNlZnVsIGhlbHAgdGV4dCBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcHRpb24gZXhwbGFpbmluZyBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBUaGF0IHdpbGwgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lLlxuXG5Fc3NlbnRpYWxseSwgSSdtIGV4cGVjdGluZyB0aGlzIGZpbGUgdG8gZ2l2ZSBtZSBhIGhpZ2gtbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlIE1UNzYgZHJpdmVyJ3MgY29uZmlndXJhYmxlIGFzcGVjdHMgYW5kIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBzeXN0ZW0uIE5vdywgbGV0J3Mgb3BlbiBpdCBhbmQgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjE1NywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjI0Ljg5NjE4NzVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjI2MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc2X0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzoyOmNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxNDoyNC45NDE0MTg0MDVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMzM5MTMwNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyNUUgQVhJIERNQSBDYWxpYnJhdGlvbiBDYWNoZSBGZWF0dXJlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgZW5hYmxpbmcgdGhpcyBuZXcgQVhJIERNQSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBMZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlncyBhcmUgZW5hYmxlZC4gIGBNVDc5MjVFYCwgYE1BQzgwMjExYCwgYFdMQU5gLCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYCBhcmUgZGVmaW5pdGVseSBuZWNlc3NhcnkuIEknbSBub3RpbmcgdGhhdCBgUENJYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiB4ODYsIGFuZCBgTUFDODAyMTFgIGlzIHN0YW5kYXJkLCBzbyBJJ2xsIHRydXN0IHRob3NlIGFyZSBhbHJlYWR5IHRha2VuIGNhcmUgb2YuXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIEFQSSBlbnRyeXBvaW50cy4gIEkndmUgY2hlY2tlZCB0aGUgc3ltYm9sIGxpc3QsIGFuZCBpZGVudGlmaWVkOlxuXG4qICAgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YFxuKiAgIGBtdDc5MjVfYXhpZG1hX2FsbG9jYFxuKiAgIGBtdDc5MjVfYXhpZG1hX2ZyZWVgXG4qICAgYG10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mb2BcbiogICBgbXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsYFxuKiAgIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgXG5cbkkndmUgYWxzbyBzZWVuIGEgZmV3IHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zOiBgbXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dGAsIGBtdDc5MjVfY2FsX2NhY2hlX3JlZ2lvbl9zaXplYCwgYG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90YCwgYG10NzkyNV9mYWN0X2NhbF9idWlsZF9tYXBwaW5nX3RibGAsIGFuZCBgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXRgLiBIb3dldmVyLCBzaW5jZSB0aGUgZ29hbCBpcyB0byBmYXZvciBub24tc3RhdGljIEFQSSBlbnRyeXBvaW50cyB0byBhbGxvdyBmdXp6aW5nLCBhbmQgdGhlc2UgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIEknbSBleGNsdWRpbmcgdGhlIHN0YXRpYyBvbmVzLlxuXG5JJ3ZlIHZlcmlmaWVkIHRoYXQgYG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0YCBpcyBpbmRlZWQgbm9uLXN0YXRpYywgZGVmaW5lZCBpbiBgcGNpLmNgIGFuZCBleHBvcnRlZCBpbiBgbXQ3OTI1LmhgLCBhbmQgdGhlIG90aGVycyBhcmUgaW4gYGNhY2hlZF9jYWwuY2AgYW5kIGV4cG9ydGVkIGluIGBjYWNoZWRfY2FsLmhgLlxuXG5Fc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2luZyBETUEgbWVtb3J5IG1hbmFnZW1lbnQsIE1DVSBtZXNzYWdpbmcgYW5kIHN0YXRlIGNvbnRyb2wgdG8gcmVkdWNlIGNvbXBsZXRlIGNhbGlicmF0aW9uIGJ5IHJldXNpbmcgY2FjaGVkIGRhdGEuIFRoaXMgd2lsbCBhZmZlY3QgdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBwYXRocy4gRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIG1ha2luZyBpdCBhbiBleGNlbGxlbnQgdGFyZ2V0IGZvciBzeXprYWxsZXIncyBQQ0kgZnV6emVyLlxuXG5Pa2F5LCBJJ20gY29tZm9ydGFibGUgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBhbmQgdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjY2MCwiT3V0cHV0VG9rZW5zIjoyNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MzYuMjc1MzM0NzE1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzMTYyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNUVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0XCIsXG4gICAgXCJtdDc5MjVfYXhpZG1hX2FsbG9jXCIsXG4gICAgXCJtdDc5MjVfYXhpZG1hX2ZyZWVcIixcbiAgICBcIm10NzkyNV9tY3Vfc2VuZF9heGlkbWFfaW5mb1wiLFxuICAgIFwibXQ3OTI1X21jdV9zZW5kX2ZhY3RfY2FsX21hcHBpbmdfdGJsXCIsXG4gICAgXCJtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEFYSSBETUEgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoZSBmZWF0dXJlIGZvciB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgV2ktRmkgZHJpdmVyLiBJdCBhZGRzIERNQSBtZW1vcnkgYWxsb2NhdGlvbiwgTUNVIG1lc3NhZ2luZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQgdG8gYnlwYXNzIGZ1bGwgY2FsaWJyYXRpb24gYnkgcmV1c2luZyBjYWNoZWQgZGF0YS4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHBhdGhzLCByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmluZyBhbmQgTU1JTy9ETUEgaW50ZXJhY3Rpb25zLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IHN5emthbGxlcidzIFBDSSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1RVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1ZV9heGlkbWFfY2FsX2NhY2hlX2luaXRcIixcbiAgICBcIm10NzkyNV9heGlkbWFfYWxsb2NcIixcbiAgICBcIm10NzkyNV9heGlkbWFfZnJlZVwiLFxuICAgIFwibXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvXCIsXG4gICAgXCJtdDc5MjVfbWN1X3NlbmRfZmFjdF9jYWxfbWFwcGluZ190YmxcIixcbiAgICBcIm10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgQVhJIERNQSBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hlIGZlYXR1cmUgZm9yIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSBXaS1GaSBkcml2ZXIuIEl0IGFkZHMgRE1BIG1lbW9yeSBhbGxvY2F0aW9uLCBNQ1UgbWVzc2FnaW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudCB0byBieXBhc3MgZnVsbCBjYWxpYnJhdGlvbiBieSByZXVzaW5nIGNhY2hlZCBkYXRhLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgcmVzZXQgcGF0aHMsIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iaW5nIGFuZCBNTUlPL0RNQSBpbnRlcmFjdGlvbnMsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6MzYuMzU1NjU5MTg3WiIsIlNlcSI6MjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDM3ODIyMTkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEwVDA2OjE0OjM2LjM1NjMzMDIzN1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMDM3NzU0NjI5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmYWN0b3J5IGNhbGlicmF0aW9uIGNhY2hpbmcgbWVjaGFuaXNtIGZvciB0aGUgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB1c2luZyBBWEkgRE1BLiBBbGwgc3RydWN0dXJlcyBzZW50IHRvIHRoZSBNQ1UgKGUuZy4sIGBtdDc5MjVfYXhpZG1hX2luZm9fcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsYCwgYW5kIHRoZSBieXBhc3MgcmVxdWVzdCkgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgdXNpbmcgYGt6YWxsb2NgLCBgbWVtc2V0YCwgb3IgQyBzdHJ1Y3QgaW5pdGlhbGl6ZXJzLiBUaGUgRE1BIGJ1ZmZlciBpdHNlbGYgaXMgYWxsb2NhdGVkIHdpdGggYGRtYV9hbGxvY19jb2hlcmVudGAsIHdoaWNoIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbi4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBsZWFrZWQgdG8gdGhlIE1DVSBvciB1c2VyIHNwYWNlLCBub3IgaXMgdGhlcmUgYW55IGNvbnRyb2wgZmxvdyBkZXBlbmRlbnQgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIEFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24sIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzIGluIHRoaXMgY29kZSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMTFiMTBjYWNmYzMyYzE2NGY4ZWRjZWYxNWU3NTE3ZDEwMjBiYzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTAgMDY6MTI6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuaFxuaW5kZXggMGVkZWRhNTY5ZTlhNS4uZTQ2Y2I0YWUzN2E5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmhcbkBAIC0xMzU3LDkgKzEzNTcsMTEgQEAgZW51bSB7XG4gXHRNQ1VfVU5JX0NNRF9BTExfU1RBX0lORk8gPSAweDZlLFxuIFx0TUNVX1VOSV9DTURfQVNTRVJUX0RVTVAgPSAweDZmLFxuIFx0TUNVX1VOSV9DTURfRVhUX0VFUFJPTV9DVFJMID0gMHg3NCxcbitcdE1DVV9VTklfQ01EX0ZBQ1RfQ0FMID0gMHg3YyxcbiBcdE1DVV9VTklfQ01EX1JBRElPX1NUQVRVUyA9IDB4ODAsXG4gXHRNQ1VfVU5JX0NNRF9NTEQgPSAweDgyLFxuIFx0TUNVX1VOSV9DTURfU0RPID0gMHg4OCxcbitcdE1DVV9VTklfQ01EX0FYSURNQSA9IDB4YTIsXG4gfTtcbiBcbiBlbnVtIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5pbmRleCBmOWRjYzBiYmEzOTNjLi4zMzUzOTEyMWExNWNkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlXG5AQCAtNiw1ICs2LDUgQEAgb2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xuIFxuIG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiBtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cbi1tdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuK210NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vIGNhY2hlZF9jYWwub1xuIG10NzkyNXUteSA6PSB1c2Iub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjAzYmQ2ODJmMTIyNGJcbi0tLSAvZGV2L251bGxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2NhY2hlZF9jYWwuY1xuQEAgLTAsMCArMSwzMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2IE1lZGlhVGVrIEluYy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXCIuLi9tdDc5MnguaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuK1xuK3N0YXRpYyB2b2lkIG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoc3RydWN0IG10NzkyNV9jYWxfY2FjaGVfbGF5b3V0ICpsKVxuK3tcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXG4rXHRsLVx1MDAzZWNvbW1vbl9zdHJpZGUgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DT007XG4rXHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAgID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9HUlA7XG4rXHRsLVx1MDAzZWNoYW5uZWxfc3RyaWRlID0gaGRyICsgTVQ3OTI1X0ZBQ1RfQ0FMX0xFTl9DSDtcbitcbitcdGwtXHUwMDNlY29tbW9uX29mZiAgPSAwO1xuK1x0bC1cdTAwM2Vncm91cF9vZmYgICA9IGwtXHUwMDNlY29tbW9uX29mZiArXG4rXHRcdGwtXHUwMDNlY29tbW9uX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07XG4rXHRsLVx1MDAzZWNoYW5uZWxfb2ZmID0gbC1cdTAwM2Vncm91cF9vZmYgK1xuK1x0XHRsLVx1MDAzZWdyb3VwX3N0cmlkZSAqIE1UNzkyNV9GQUNUX0NBTF9HUk9VUF9OVU07XG4rXHRsLVx1MDAzZW1hcHBpbmdfb2ZmID0gbC1cdTAwM2VjaGFubmVsX29mZiArXG4rXHRcdGwtXHUwMDNlY2hhbm5lbF9zdHJpZGUgKiBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNX0FMTDtcbitcdGwtXHUwMDNldG90YWwgPSBsLVx1MDAzZW1hcHBpbmdfb2ZmICtcbitcdFx0c2l6ZW9mKHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwpO1xuK31cbitcbitzdGF0aWMgdTMyIG10NzkyNV9jYWxfY2FjaGVfcmVnaW9uX3NpemUodm9pZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2NhbF9jYWNoZV9sYXlvdXQgbDtcbitcbitcdG10NzkyNV9jYWxfY2FjaGVfY2FsY19sYXlvdXQoXHUwMDI2bCk7XG4rXG4rXHRyZXR1cm4gbC50b3RhbDtcbit9XG4rXG4raW50IG10NzkyNV9heGlkbWFfYWxsb2Moc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHR1MzIgdG90YWxfc2l6ZTtcbitcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHR2b2lkICp2YTtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR0b3RhbF9zaXplID0gbXQ3OTI1X2NhbF9jYWNoZV9yZWdpb25fc2l6ZSgpO1xuK1xuK1x0dmEgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCB0b3RhbF9zaXplLCBcdTAwMjZkbWFfYWRkcixcbitcdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0aWYgKCF2YSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSA9IHZhO1xuK1x0ZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgPSBkbWFfYWRkcjtcbitcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnNpemUgPSB0b3RhbF9zaXplO1xuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LVx1MDAzZW10NzYuZGV2LCBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplLFxuK1x0XHRcdCAgZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEsIGRldi1cdTAwM2VjYWNoZWRfY2FsLmRtYV9hZGRyKTtcbitcbitcdG1lbXNldChcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbCwgMCwgc2l6ZW9mKGRldi1cdTAwM2VjYWNoZWRfY2FsKSk7XG4rfVxuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcSAqcmVxO1xuK1x0dTMyIHJlbWFwX2Jhc2UsIHBhX29mZnNldDtcbitcdGludCByZXQ7XG4rXG4rXHRpZiAoIWRldi1cdTAwM2VjYWNoZWRfY2FsLnZhKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlbWFwX2Jhc2UgPSAodTMyKShkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciBcdTAwM2VcdTAwM2UgMTYpO1xuK1x0cGFfb2Zmc2V0ID0gKHUzMikoZGV2LVx1MDAzZWNhY2hlZF9jYWwuZG1hX2FkZHIgXHUwMDI2IDB4RkZGRik7XG4rXG4rXHRyZXEtXHUwMDNlcmVtYXAudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfUkVNQVApO1xuK1x0cmVxLVx1MDAzZXJlbWFwLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlcmVtYXApKTtcbitcdHJlcS1cdTAwM2VyZW1hcC5yZW1hcF9hZGRyID0gY3B1X3RvX2xlMzIocmVtYXBfYmFzZSk7XG4rXG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0FYSURNQV9UQUdfRkFDVF9DQUwpO1xuK1x0cmVxLVx1MDAzZWZhY3RfY2FsLmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEtXHUwMDNlZmFjdF9jYWwpKTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5ob3N0X2FkZHJfb2Zmc2V0ID0gY3B1X3RvX2xlMzIocGFfb2Zmc2V0KTtcbitcdHJlcS1cdTAwM2VmYWN0X2NhbC5zaXplID0gY3B1X3RvX2xlMzIoZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSk7XG4rXHRyZXEtXHUwMDNlZmFjdF9jYWwuYm91bmQgPSBjcHVfdG9fbGUzMihwYV9vZmZzZXQgKyBkZXYtXHUwMDNlY2FjaGVkX2NhbC5zaXplIC0gMSk7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQVhJRE1BKSxcbitcdFx0XHRcdHJlcSwgc2l6ZW9mKCpyZXEpLCB0cnVlKTtcbitcbitcdGtmcmVlKHJlcSk7XG4rXG4rXHRpZiAocmV0KVxuK1x0XHRkZXZfZXJyKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHRcImZhaWxlZCB0byBzZW5kIEFYSSBETUEgaW5mbzogJWRcXG5cIiwgcmV0KTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuK3N0YXRpYyBib29sIG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiByZWdpb25fb2ZmLFxuK1x0XHRcdFx0ICAgICAgIHUzMiBzdHJpZGUsIHUzMiBpZHgsXG4rXHRcdFx0XHQgICAgICAgdTMyICpjYWxfcGFyYW0sIHUzMiAqdG90YWxfYnVmX251bSlcbit7XG4rXHRjb25zdCBzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvICpiaTtcbitcdHUzMiBvZmYgPSByZWdpb25fb2ZmICsgc3RyaWRlICogaWR4O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSB8fCBvZmYgKyBzaXplb2YoKmJpKSBcdTAwM2UgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0YmkgPSAoY29uc3Qgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyAqKVxuK1x0XHQoKGNvbnN0IHU4ICopZGV2LVx1MDAzZWNhY2hlZF9jYWwudmEgKyBvZmYpO1xuK1x0aWYgKGNhbF9wYXJhbSlcbitcdFx0KmNhbF9wYXJhbSA9IGxlMzJfdG9fY3B1KGJpLVx1MDAzZWNhbF9wYXJhbSk7XG4rXHRpZiAodG90YWxfYnVmX251bSlcbitcdFx0KnRvdGFsX2J1Zl9udW0gPSBsZTMyX3RvX2NwdShiaS1cdTAwM2V0b3RhbF9idWZfbnVtKTtcbitcdHJldHVybiB0cnVlO1xuK31cbitcbitzdGF0aWMgdm9pZCBtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190Ymwoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbitcdFx0XHRcdFx0ICAgICAgc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCAqdGJsKVxuK3tcbitcdGRtYV9hZGRyX3QgY29tbW9uX3BhLCBncm91cF9wYSwgY2hhbm5lbF9wYSwgbWFwcGluZ19wYTtcbitcdHUzMiBoZHIgPSBzaXplb2Yoc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyk7XG4rXHRkbWFfYWRkcl90IGJhc2UgPSBkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkcjtcbitcdHN0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCBsO1xuK1xuK1x0bXQ3OTI1X2NhbF9jYWNoZV9jYWxjX2xheW91dChcdTAwMjZsKTtcbitcbitcdGNvbW1vbl9wYSAgPSBiYXNlICsgbC5jb21tb25fb2ZmO1xuK1x0Z3JvdXBfcGEgICA9IGJhc2UgKyBsLmdyb3VwX29mZjtcbitcdGNoYW5uZWxfcGEgPSBiYXNlICsgbC5jaGFubmVsX29mZjtcbitcdG1hcHBpbmdfcGEgPSBiYXNlICsgbC5tYXBwaW5nX29mZjtcbitcbitcdG1lbXNldCh0YmwsIDAsIHNpemVvZigqdGJsKSk7XG4rXG4rXHR0YmwtXHUwMDNlY29tbW9uLnBoeV9hZGRyX2ggPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGNvbW1vbl9wYSkpO1xuK1x0dGJsLVx1MDAzZWNvbW1vbi5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjb21tb25fcGEpKTtcbitcdHRibC1cdTAwM2Vjb21tb24ub2Zmc2V0ICAgICA9IGNwdV90b19sZTMyKGwuY29tbW9uX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfaCAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAucGh5X2FkZHJfbCAgPSBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGdyb3VwX3BhKSk7XG4rXHR0YmwtXHUwMDNlZ3JvdXAub2Zmc2V0ICAgICAgPSBjcHVfdG9fbGUzMihsLmdyb3VwX3N0cmlkZSk7XG4rXG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9oID0gY3B1X3RvX2xlMzIodXBwZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5waHlfYWRkcl9sID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhjaGFubmVsX3BhKSk7XG4rXHR0YmwtXHUwMDNlY2hhbm5lbC5vZmZzZXQgICAgID0gY3B1X3RvX2xlMzIobC5jaGFubmVsX3N0cmlkZSk7XG4rXG4rXHRpZiAoZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkKSB7XG4rXHRcdHUzMiBpLCBjYWxfcGFyYW0sIHRvdGFsX2J1Zl9udW07XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU07IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNvbW1vbl9vZmYsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGwuY29tbW9uX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vjb21tb24uYmFuZFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0dST1VQX05VTTsgaSsrKVxuK1x0XHRcdGlmIChtdDc5MjVfY2FsX2NhY2hlX3JlYWRfc2xvdChkZXYsIGwuZ3JvdXBfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmdyb3VwX3N0cmlkZSwgaSxcbitcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2Y2FsX3BhcmFtLCBOVUxMKSlcbitcdFx0XHRcdHRibC1cdTAwM2Vncm91cC5ncm91cFtpXSA9IGNhbF9wYXJhbSBcdTAwMjYgMHhmZjtcbitcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEw7IGkrKylcbitcdFx0XHRpZiAobXQ3OTI1X2NhbF9jYWNoZV9yZWFkX3Nsb3QoZGV2LCBsLmNoYW5uZWxfb2ZmLFxuK1x0XHRcdFx0XHRcdCAgICAgICBsLmNoYW5uZWxfc3RyaWRlLCBpLFxuK1x0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZjYWxfcGFyYW0sXG4rXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNnRvdGFsX2J1Zl9udW0pKSB7XG4rXHRcdFx0XHR0YmwtXHUwMDNlY2hhbm5lbC5jYWxfcGFyYW1baV0gPVxuK1x0XHRcdFx0XHRjcHVfdG9fbGUzMihjYWxfcGFyYW0pO1xuK1x0XHRcdFx0dGJsLVx1MDAzZWNoYW5uZWwudG90YWxfYnVmX251bVtpXSA9XG4rXHRcdFx0XHRcdHRvdGFsX2J1Zl9udW0gXHUwMDI2IDB4ZmY7XG4rXHRcdFx0fVxuK1x0fVxuK1xuK1x0dGJsLVx1MDAzZWJ1Zl9pbmZvX3NpemUgPSBjcHVfdG9fbGUzMihoZHIpO1xuK1x0dGJsLVx1MDAzZXBoeV9hZGRyX2ggICAgPSBjcHVfdG9fbGUzMih1cHBlcl8zMl9iaXRzKG1hcHBpbmdfcGEpKTtcbitcdHRibC1cdTAwM2VwaHlfYWRkcl9sICAgID0gY3B1X3RvX2xlMzIobG93ZXJfMzJfYml0cyhtYXBwaW5nX3BhKSk7XG4rfVxuK1xuK3N0YXRpYyBpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY2FsX3R5cGUsXG4rXHRcdFx0XHRcdCB1MzIgc2VxX251bSwgYm9vbCBkb25lLFxuK1x0XHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgdTMyIGRhdGFfbGVuKVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfcmVxICpyZXE7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKGRhdGFfbGVuIFx1MDAzZSBNVDc5MjVfRkFDVF9DQUxfREFUQV9CVUZfTEVOKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJlcSA9IGt6YWxsb2Moc2l6ZW9mKCpyZXEpLCBHRlBfS0VSTkVMKTtcbitcdGlmICghcmVxKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdHJlcS1cdTAwM2VzZXQudGFnID0gY3B1X3RvX2xlMTYoTVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9TRVQpO1xuK1x0cmVxLVx1MDAzZXNldC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxLVx1MDAzZXNldCkpO1xuK1x0cmVxLVx1MDAzZXNldC5zZXFfbnVtID0gY3B1X3RvX2xlMzIoc2VxX251bSk7XG4rXHRyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhX2xlbiA9IGNwdV90b19sZTMyKGRhdGFfbGVuKTtcbitcdHJlcS1cdTAwM2VzZXQuY2FsX3R5cGUgPSBjYWxfdHlwZTtcbitcdHJlcS1cdTAwM2VzZXQuZG9uZSA9IGRvbmU7XG4rXHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YV9sZW4pXG4rXHRcdG1lbWNweShyZXEtXHUwMDNlc2V0LmJ1Zl9kYXRhLCBkYXRhLCBkYXRhX2xlbik7XG4rXG4rXHQvKiBXYWl0IGZvciB0aGUgQUNLIG9uIHRoZSBmaW5hbCBjaHVuayBvbmx5OiB0aGUgRlcgYXBwbGllcyB0aGUgd2hvbGVcbitcdCAqIHRhYmxlIHRoZXJlIChETUFzIHRoZSBjYWNoZWQgY29tbW9uIC8gcG93ZXItb24gZ3JvdXAgY2FsIGRhdGEgaW4gYW5kXG4rXHQgKiBwcm9ncmFtcyB0aGUgUEhZKSwgc28gaXRzIEFDSyBpcyB0aGUgY29tcGxldGlvbiBwb2ludC4gV2FpdGluZyBhbHNvXG4rXHQgKiBkcmFpbnMgdGhlIEFDS3MgdGhlIGVhcmxpZXIgY2h1bmtzIGxlZnQgaW4gdGhlIE1DVSByZXNwb25zZSBxdWV1ZSxcbitcdCAqIHNpbmNlIFVOSSBjb21tYW5kcyBhbHdheXMgcmVxdWVzdCBvbmUuXG4rXHQgKi9cbitcdHJldCA9IG10NzZfbWN1X3NlbmRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChGQUNUX0NBTCksXG4rXHRcdFx0XHRyZXEsIHNpemVvZigqcmVxKSwgZG9uZSk7XG4rXHRrZnJlZShyZXEpO1xuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuK3tcbitcdHN0cnVjdCBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmwgKnRibDtcbitcdF9fbGUzMiBjZmdbTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOIC8gc2l6ZW9mKF9fbGUzMildID0gezB9O1xuK1x0dTMyIHNlcSA9IDAsIG9mZiA9IDAsIGxlZnQ7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKCFkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHR0YmwgPSBremFsbG9jKHNpemVvZigqdGJsKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIXRibClcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRtdDc5MjVfZmFjdF9jYWxfYnVpbGRfbWFwcGluZ190YmwoZGV2LCB0YmwpO1xuK1xuK1x0Y2ZnWzFdID0gY3B1X3RvX2xlMzIoc2l6ZW9mKCp0YmwpKTtcbitcdGNmZ1syXSA9IGNwdV90b19sZTMyKE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYKTtcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICBzZXEsIGZhbHNlLCBjZmcsIHNpemVvZihjZmcpKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XCJmYWN0LWNhbCBtYXBwaW5nIHRibCBoZWFkZXIgc2VuZCBmYWlsZWQgKHNlcT0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0c2VxLCByZXQpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbitcbitcdGxlZnQgPSBzaXplb2YoKnRibCk7XG4rXHR3aGlsZSAobGVmdCkge1xuK1x0XHR1MzIgY2h1bmsgPSBtaW5fdCh1MzIsIGxlZnQsIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU4pO1xuK1xuK1x0XHRyZXQgPSBtdDc5MjVfbWN1X2ZhY3RfY2FsX3JhcGlkX3NldChkZXYsXG4rXHRcdFx0XHRcdFx0ICAgIE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMLFxuK1x0XHRcdFx0XHRcdCAgICArK3NlcSwgZmFsc2UsXG4rXHRcdFx0XHRcdFx0ICAgICh1OCAqKXRibCArIG9mZiwgY2h1bmspO1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0ZGV2X2VycihkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdFx0XHRcImZhY3QtY2FsIG1hcHBpbmcgdGJsIGRhdGEgc2VuZCBmYWlsZWQgKHNlcT0ldSwgb2ZmPSV1LCBjaHVuaz0ldSk6ICVkXFxuXCIsXG4rXHRcdFx0XHRzZXEsIG9mZiwgY2h1bmssIHJldCk7XG4rXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbitcbitcdFx0b2ZmICArPSBjaHVuaztcbitcdFx0bGVmdCAtPSBjaHVuaztcbitcdH1cbitcbitcdHJldCA9IG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0KGRldiwgTVQ3OTI1X0ZBQ1RfQ0FMX1RZUEVfTUFQUElOR19UQkwsXG4rXHRcdFx0XHRcdCAgICArK3NlcSwgdHJ1ZSwgTlVMTCwgMCk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFwiZmFjdC1jYWwgbWFwcGluZyB0YmwgZG9uZSBzZW5kIGZhaWxlZCAoc2VxPSV1KTogJWRcXG5cIixcbitcdFx0XHRzZXEsIHJldCk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuK291dDpcbitcdGtmcmVlKHRibCk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxuK3tcbitcdHN0cnVjdCB7XG4rXHRcdHU4IF9yc3ZbNF07XG4rXG4rXHRcdHN0cnVjdCB7XG4rXHRcdFx0X19sZTE2IHRhZztcbitcdFx0XHRfX2xlMTYgbGVuO1xuK1x0XHRcdF9fbGUzMiBkYXRhO1xuK1x0XHR9IF9fcGFja2VkIHVwZGF0ZV9mbGFnO1xuK1x0fSByZXEgPSB7XG4rXHRcdC51cGRhdGVfZmxhZyA9IHtcbitcdFx0XHQudGFnICA9IGNwdV90b19sZTE2KE1UNzkyNV9GQUNUX0NBTF9UQUdfVVBEQVRFX0ZMQUcpLFxuK1x0XHRcdC5sZW4gID0gY3B1X3RvX2xlMTYoc2l6ZW9mKHJlcS51cGRhdGVfZmxhZykpLFxuK1x0XHRcdC5kYXRhID0gY3B1X3RvX2xlMzIoZW5hYmxlID8gMSA6IDApLFxuK1x0XHR9LFxuK1x0fTtcbitcbitcdHJldHVybiBtdDc2X21jdV9zZW5kX21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoRkFDVF9DQUwpLFxuK1x0XHRcdFx0IFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIGZhbHNlKTtcbit9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNjU3MjUxM2I3NjQ2NlxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvY2FjaGVkX2NhbC5oXG5AQCAtMCwwICsxLDE1MSBAQFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cbisvKiBDb3B5cmlnaHQgKEMpIDIwMjYgTWVkaWFUZWsgSW5jLiAqL1xuK1xuKyNpZm5kZWYgX19DQUNIRURfQ0FMX0hcbisjZGVmaW5lIF9fQ0FDSEVEX0NBTF9IXG4rXG4rZW51bSBtdDc5MjVfYXhpZG1hX2luZm9fdGFnIHtcbitcdE1UNzkyNV9BWElETUFfVEFHX1JFTUFQID0gMCxcbitcdE1UNzkyNV9BWElETUFfVEFHX0ZBQ1RfQ0FMID0gMSxcbitcdE1UNzkyNV9BWElETUFfVEFHX05VTVxuK307XG4rXG4rZW51bSBtdDc5MjVfZmFjdF9jYWxfdGFnIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfVFJJR0dFUlx0PSAyLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19VUERBVEVfRkxBR1x0PSAzLFxuK1x0TVQ3OTI1X0ZBQ1RfQ0FMX1RBR19SQVBJRF9HRVRcdD0gNCxcbitcdE1UNzkyNV9GQUNUX0NBTF9UQUdfUkFQSURfU0VUXHQ9IDUsXG4rfTtcbitcbitlbnVtIG10NzkyNV9mYWN0X2NhbF90eXBlIHtcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX0NPTU1PTlx0XHQ9IDAsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9HUk9VUFx0XHQ9IDEsXG4rXHRNVDc5MjVfRkFDVF9DQUxfVFlQRV9DSEFOTkVMXHRcdD0gMixcbitcdE1UNzkyNV9GQUNUX0NBTF9UWVBFX01BUFBJTkdfVEJMXHQ9IDQsXG4rfTtcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9MRU5cdFx0MTQwMFxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0JVRl9DRkdfTEVOXHRcdFx0MTZcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX0JVRl9OVU1fTUFYXHQ0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOXHRcdDRcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9EQVRBX01BWF9CVUZfTEVOIFxcXG4rXHQoTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX05VTV9NQVggKiBNVDc5MjVfRkFDVF9DQUxfQlVGX0NGR19VMzJfTEVOKVxuK1xuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NPTU1PTl9CQU5EX05VTVx0XHQyXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXHRcdDM1XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHXHRcdDE0XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzVHXHRcdDY4XG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzZHXHRcdDEwOVxuKyNkZWZpbmUgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTEwgXFxcbitcdChNVDc5MjVfRkFDVF9DQUxfQ0hfTlVNXzJHICsgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV81RyArIFxcXG4rXHQgTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV82RylcbitcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ09NXHRcdFx0NjAwXG4rI2RlZmluZSBNVDc5MjVfRkFDVF9DQUxfTEVOX0dSUFx0XHRcdDQ1MDBcbisjZGVmaW5lIE1UNzkyNV9GQUNUX0NBTF9MRU5fQ0hcdFx0XHQyODAwXG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9idWZfaW5mbyB7XG4rXHRfX2xlMzIgY2FsX3R5cGU7XG4rXHRfX2xlMzIgY2FsX3BhcmFtO1xuK1x0X19sZTMyIGJ1Zl9zZXFfbnVtO1xuK1x0X19sZTMyIHRvdGFsX2J1Zl9udW07XG4rXHRfX2xlMzIgYnVmX2RhdGFfbGVuO1xuK1x0dTggdmFsaWQ7XG4rXHR1OCBkb25lO1xuK1x0dTggcnN2WzJdO1xuK1x0X19sZTMyIGJ1Zl9jZmdfaW5mb1tNVDc5MjVfRkFDVF9DQUxfREFUQV9NQVhfQlVGX0xFTl07XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2J1Zl9pbmZvKSA9PSA4OCxcbitcdCAgICAgIFwiYnVmX2luZm8gbXVzdCBtYXRjaCB0aGUgTVQ3OTI4IEZXICg4OCBieXRlcykgb3IgaXQgcmVqZWN0cyB0aGUgbWFwcGluZyB0YWJsZVwiKTtcbitcbitzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBiYW5kW01UNzkyNV9GQUNUX0NBTF9DT01NT05fQkFORF9OVU1dO1xuK1x0dTggcnN2WzJdO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHR1OCBncm91cFtNVDc5MjVfRkFDVF9DQUxfR1JPVVBfTlVNXTtcbitcdHU4IHJzdjtcbit9IF9fcGFja2VkO1xuK1xuK3N0cnVjdCBtdDc5MjVfZmFjdF9jYWxfY2hhbm5lbF9tYXAge1xuK1x0X19sZTMyIHBoeV9hZGRyX2g7XG4rXHRfX2xlMzIgcGh5X2FkZHJfbDtcbitcdF9fbGUzMiBvZmZzZXQ7XG4rXHRfX2xlMzIgY2FsX3BhcmFtW01UNzkyNV9GQUNUX0NBTF9DSF9OVU1fQUxMXTtcbitcdHU4IHRvdGFsX2J1Zl9udW1bTVQ3OTI1X0ZBQ1RfQ0FMX0NIX05VTV9BTExdO1xuK1x0dTggcnN2O1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibCB7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NvbW1vbl9tYXAgY29tbW9uO1xuK1x0c3RydWN0IG10NzkyNV9mYWN0X2NhbF9ncm91cF9tYXAgZ3JvdXA7XG4rXHRzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX2NoYW5uZWxfbWFwIGNoYW5uZWw7XG4rXHRfX2xlMzIgYnVmX2luZm9fc2l6ZTtcbitcdF9fbGUzMiBwaHlfYWRkcl9oO1xuK1x0X19sZTMyIHBoeV9hZGRyX2w7XG4rfSBfX3BhY2tlZDtcbitcbitzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgbXQ3OTI1X2ZhY3RfY2FsX21hcHBpbmdfdGJsKSA9PSAxMDQ0LFxuK1x0ICAgICAgXCJtYXBwaW5nIHRhYmxlIG11c3QgbWF0Y2ggdGhlIE1UNzkyOCBGVyAoMTA0NCBieXRlcykgb3IgdGhlIEZXIHBhcnNlIGNvcnJ1cHRzXCIpO1xuK1xuK3N0cnVjdCBtdDc5MjVfY2FsX2NhY2hlX2xheW91dCB7XG4rXHR1MzIgY29tbW9uX29mZiwgZ3JvdXBfb2ZmLCBjaGFubmVsX29mZiwgbWFwcGluZ19vZmY7XG4rXHR1MzIgY29tbW9uX3N0cmlkZSwgZ3JvdXBfc3RyaWRlLCBjaGFubmVsX3N0cmlkZTtcbitcdHUzMiB0b3RhbDtcbit9O1xuK1xuK3N0cnVjdCBtdDc5MjVfYXhpZG1hX2luZm9fcmVxIHtcbitcdHU4IF9yc3ZbNF07XG4rXG4rXHRzdHJ1Y3Qge1xuK1x0XHRfX2xlMTYgdGFnO1xuK1x0XHRfX2xlMTYgbGVuO1xuK1x0XHRfX2xlMzIgcmVtYXBfYWRkcjtcbitcdFx0X19sZTMyIHJlc2VydmVkO1xuK1x0fSBfX3BhY2tlZCByZW1hcDtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBob3N0X2FkZHJfb2Zmc2V0O1xuK1x0XHRfX2xlMzIgc2l6ZTtcbitcdFx0X19sZTMyIGJvdW5kO1xuK1x0XHRfX2xlMzIgcmVzZXJ2ZWQ7XG4rXHR9IF9fcGFja2VkIGZhY3RfY2FsO1xuK30gX19wYWNrZWQ7XG4rXG4rc3RydWN0IG10NzkyNV9mYWN0X2NhbF9yZXEge1xuK1x0dTggX3Jzdls0XTtcbitcbitcdHN0cnVjdCB7XG4rXHRcdF9fbGUxNiB0YWc7XG4rXHRcdF9fbGUxNiBsZW47XG4rXHRcdF9fbGUzMiBkYXRhO1xuK1x0XHRfX2xlMzIgc2VxX251bTtcbitcdFx0X19sZTMyIGJ1Zl9kYXRhX2xlbjtcbitcdFx0dTggY2FsX3R5cGU7XG4rXHRcdHU4IGRvbmU7XG4rXHRcdHU4IHJzdlsyXTtcbitcdFx0dTggYnVmX2RhdGFbTVQ3OTI1X0ZBQ1RfQ0FMX0RBVEFfQlVGX0xFTl07XG4rXHR9IF9fcGFja2VkIHNldDtcbit9IF9fcGFja2VkO1xuK1xuK2ludCBtdDc5MjVfYXhpZG1hX2FsbG9jKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK3ZvaWQgbXQ3OTI1X2F4aWRtYV9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xuK1xuK2ludCBtdDc5MjVfbWN1X3NlbmRfYXhpZG1hX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rXG4raW50IG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbitcbitpbnQgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGJvb2wgZW5hYmxlKTtcbitcbisjZW5kaWYgLyogX19DQUNIRURfQ0FMX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5pbmRleCAzMjFlNzMyMzQ3ZjJmLi40ZDc5YzFlNjZlNjZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMzUzLDYgKzM1Myw3IEBAIGludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbiBcbiBpbnQgbXQ3OTI1ZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4gaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG4rdm9pZCBtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbiB2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKTtcbiB2b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZXZ0KTtcbiB2b2lkIG10NzkyNV9zZXRfcnVudGltZV9wbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5pbmRleCAwMmVmMDlkZDc5N2RhLi43MjRhYmQyYmU1N2M1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcIm1hYy5oXCJcbiAjaW5jbHVkZSBcIm1jdS5oXCJcbiAjaW5jbHVkZSBcInJlZ2QuaFwiXG4rI2luY2x1ZGUgXCJjYWNoZWRfY2FsLmhcIlxuICNpbmNsdWRlIFwiLi4vZG1hLmhcIlxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtdDc5MjVfcGNpX2RldmljZV90YWJsZVtdID0ge1xuQEAgLTM4LDYgKzM5LDYyIEBAIHN0YXRpYyBpbnQgbXQ3OTI1ZV9pbml0X3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gbXQ3OTJ4X3dwZG1hX3Jlc2V0KGRldiwgdHJ1ZSk7XG4gfVxuIFxuKy8qIFNldCB1cCB0aGUgZmFjdG9yeS1jYWxpYnJhdGlvbiBjYWNoZSBpbiBob3N0IG1lbW9yeS4gUENJZSBvbmx5OiB0aGUgRldcbisgKiByZWFjaGVzIHRoZSBidWZmZXIgdGhyb3VnaCBBWEkgRE1BLCBzbyBpdCBoYXMgbm8gbWVhbmluZyBvbiBvdGhlciBidXNlcy5cbisgKiBFdmVyeSBmYWlsdXJlIGp1c3QgbGVhdmVzIHRoZSBjYWNoZSBvZmYsIHdoaWNoIGlzIG5vdCBmYXRhbC5cbisgKi9cbit2b2lkIG10NzkyNWVfYXhpZG1hX2NhbF9jYWNoZV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4re1xuK1x0aWYgKCEoZGV2LVx1MDAzZXBoeS5jaGlwX2NhcCBcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTikpXG4rXHRcdHJldHVybjtcbitcbitcdGlmIChkZXYtXHUwMDNlY2FjaGVkX2NhbC52YSkge1xuK1x0XHQvKiBDYXJyaWVkLW92ZXIgYnVmZmVyIHN0aWxsIGhvbGRzIEZXLXdyaXR0ZW4gY2FsIGRhdGEuICovXG4rXHRcdGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCA9IHRydWU7XG4rXHR9IGVsc2Uge1xuK1x0XHRpZiAobXQ3OTI1X2F4aWRtYV9hbGxvYyhkZXYpKSB7XG4rXHRcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdFx0IFwiQVhJIERNQSBjYWwgY2FjaGUgZGlzYWJsZWQ6IGJ1ZmZlciBhbGxvYyBmYWlsZWRcXG5cIik7XG4rXHRcdFx0cmV0dXJuO1xuK1x0XHR9XG4rXHRcdC8qIEZyZXNobHkgYWxsb2NhdGVkIGJ1ZmZlciBpcyB6ZXJvZWQ6IG5vIGNhbCBkYXRhIHlldC4gKi9cbitcdFx0ZGV2LVx1MDAzZWNhY2hlZF9jYWwucmV1c2VkID0gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZiAobXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvKGRldikpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBpbmZvIGNtZCB0byBGVyBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdC8qIEVuYWJsZSB0aGUgYnlwYXNzLWNhbCBmbG93IHNvIHRoZSBGVyByZXVzZXMgY2FjaGVkIGNhbCBkYXRhXG4rXHQgKiAoY29tbW9uIC8gcG93ZXItb24gZ3JvdXApIGluc3RlYWQgb2YgcnVubmluZyBhIGZ1bGwgY2FsaWJyYXRpb247XG4rXHQgKiBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIG1hcHBpbmcgdGFibGUgaXMgc2VudC5cbitcdCAqL1xuK1x0aWYgKG10NzkyNV9tY3VfZmFjdF9jYWxfc2V0X2J5cGFzcyhkZXYsIHRydWUpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogYnlwYXNzIGZsYWcgc2V0IGZhaWxlZFxcblwiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0aWYgKG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibChkZXYpKSB7XG4rXHRcdGRldl93YXJuKGRldi1cdTAwM2VtdDc2LmRldixcbitcdFx0XHQgXCJBWEkgRE1BIGNhbCBjYWNoZSBkaXNhYmxlZDogbWFwcGluZyB0Ymwgc2VuZCBmYWlsZWRcXG5cIik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbitcdGlmIChtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3MoZGV2LCBmYWxzZSkpIHtcbitcdFx0ZGV2X3dhcm4oZGV2LVx1MDAzZW10NzYuZGV2LFxuK1x0XHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGRpc2FibGVkOiBieXBhc3MgZmxhZyBzZXQgZmFpbGVkXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRkZXZfaW5mbyhkZXYtXHUwMDNlbXQ3Ni5kZXYsXG4rXHRcdCBcIkFYSSBETUEgY2FsIGNhY2hlIGVuYWJsZWQgKERNQT0lcGFkLCBzaXplPSV1LCByZXVzZWQ9JWQpXFxuXCIsXG4rXHRcdCBcdTAwMjZkZXYtXHUwMDNlY2FjaGVkX2NhbC5kbWFfYWRkciwgZGV2LVx1MDAzZWNhY2hlZF9jYWwuc2l6ZSxcbitcdFx0IGRldi1cdTAwM2VjYWNoZWRfY2FsLnJldXNlZCk7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiB7XG4gXHRpbnQgaTtcbkBAIC01OCw2ICsxMTUsOSBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXG4gXHRtdDc5MjVfdHhfdG9rZW5fcHV0KGRldik7XG4gXHRfX210NzkyeF9tY3VfZHJ2X3BtY3RybChkZXYpO1xuK1xuK1x0bXQ3OTI1X2F4aWRtYV9mcmVlKGRldik7XG4rXG4gXHRtdDc5MnhfZG1hX2NsZWFudXAoZGV2KTtcbiBcdG10NzkyeF93ZnN5c19yZXNldChkZXYpO1xuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS5yZXNfcSk7XG5AQCAtNTg3LDcgKzY0Nyw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGlzX210NzkyOF9odyA9IChwZGV2LVx1MDAzZWRldmljZSA9PSAweDc5MjggfHwgcGRldi1cdTAwM2VkZXZpY2UgPT0gMHg3OTM1KTtcbiBcbiBcdGlmIChpc19tdDc5MjhfaHcpXG4tXHRcdHJldCA9IGRtYV9zZXRfbWFzayhcdTAwMjZwZGV2LVx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDM0KSk7XG4rXHRcdHJldCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzNCkpO1xuIFx0ZWxzZVxuIFx0XHRyZXQgPSBkbWFfc2V0X21hc2soXHUwMDI2cGRldi1cdTAwM2VkZXYsIERNQV9CSVRfTUFTSygzMikpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuaW5kZXggODQ3N2QyMWFiYzY2MC4uYzkwZjEyOWIzYTM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21hYy5jXG5AQCAtMTM1LDYgKzEzNSw4IEBAIGludCBtdDc5MjVlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGVycilcbiBcdFx0Z290byBvdXQ7XG4gXG4rXHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuK1xuIFx0ZXJyID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIG91dDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbmluZGV4IDcyNzA3ZWRkYzNkYjYuLjI1OGYzNzUzZGIxZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuY1xuQEAgLTQ2LDYgKzQ2LDggQEAgaW50IG10NzkyNWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdG10NzZfcm13X2ZpZWxkKGRldiwgZGV2LVx1MDAzZXBjaWVfcmVnLVx1MDAzZXBtLCBNVF9QQ0lFX01BQ19QTV9MMFNfRElTLCAxKTtcbiBcbiBcdGVyciA9IG10NzkyNV9ydW5fZmlybXdhcmUoZGV2KTtcbitcdGlmICghZXJyKVxuK1x0XHRtdDc5MjVlX2F4aWRtYV9jYWxfY2FjaGVfaW5pdChkZXYpO1xuIFxuIFx0bXQ3Nl9xdWV1ZV90eF9jbGVhbnVwKGRldiwgZGV2LVx1MDAzZW10NzYucV9tY3VbTVRfTUNVUV9GV0RMXSwgZmFsc2UpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oXG5pbmRleCA5ZWZjMjUxY2I3NDVmLi43NDBkNTE3ZWIzOGJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTMzLDYgKzMzLDcgQEBcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9SRUdEX0VOIEJJVCg1KVxuICNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX01MT19FTiBCSVQoOClcbiAjZGVmaW5lIE1UNzkyeF9DSElQX0NBUF9NTE9fRU1MX0VOIEJJVCg5KVxuKyNkZWZpbmUgTVQ3OTJ4X0NISVBfQ0FQX0FYSURNQV9FTiBCSVQoMTYpXG4gXG4gLyogTk9URTogdXNlZCB0byBtYXAgbXQ3Nl9yYXRlcy4gaWR4IG1heSBjaGFuZ2UgaWYgZmlybXdhcmUgZXhwYW5kcyB0YWJsZSAqL1xuICNkZWZpbmUgTVQ3OTJ4X0JBU0lDX1JBVEVTX1RCTFx0MTRcbkBAIC0zNDIsNiArMzQzLDEzIEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpuYW5fdmlmO1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5hdGlvbiAqaWZhY2VfY29tYmluYXRpb25zO1xuIFx0aW50IG5faWZhY2VfY29tYmluYXRpb25zO1xuK1xuK1x0c3RydWN0IHtcbitcdFx0dm9pZCAqdmE7XG4rXHRcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHRcdHUzMiBzaXplO1xuK1x0XHRib29sIHJldXNlZDtcbitcdH0gY2FjaGVkX2NhbDtcbiB9O1xuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IG10NzkyeF9ic3NfY29uZiAqXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMFQwNjoxNDozNi4zNTYzMzExMDdaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAzNzc1MjI4NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQ2hlY2s6IE1UNzkyNSBGYWN0b3J5IENhbGlicmF0aW9uIERhdGEgQ2FjaGluZyB3aXRoIEFYSSBETUEqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmVhdHVyZSBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIsIGFsbG93aW5nIGZvciBjYWNoaW5nIG9mIGZhY3RvcnkgY2FsaWJyYXRpb24gZGF0YSB1c2luZyBBWEkgRE1BLiBNeSBpbml0aWFsIGZvY3VzLCBhcyBhbHdheXMsIGlzIG9uIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoZSBjb2RlIGFsbG9jYXRlcyBhIERNQSBidWZmZXIgdXNpbmcgYGRtYV9hbGxvY19jb2hlcmVudGAsIHNlbmRzIGl0cyBhZGRyZXNzIHRvIHRoZSBNQ1UsIGFuZCBhbHNvIHNlbmRzIGEgbWFwcGluZyB0YWJsZS4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGlmIHRoZXJlIGFyZSBhbnkgdW5pbml0aWFsaXplZCBmaWVsZHMgYmVpbmcgc2VudCB0byB0aGUgTUNVLCBvciBldmVuIHdvcnNlLCB1c2VyIHNwYWNlLlxuXG5MZXQgbWUgZ28gdGhyb3VnaCB0aGUga2V5IGFyZWFzIHN5c3RlbWF0aWNhbGx5LiBGaXJzdCwgSSBleGFtaW5lZCBgbXQ3OTI1X21jdV9zZW5kX2F4aWRtYV9pbmZvYC4gSGVyZSwgYSBgcmVxYCBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYC4gR29vZCwgYGt6YWxsb2NgIGd1YXJhbnRlZXMgemVyby1pbml0aWFsaXphdGlvbi4gVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuIFRoZSBjb2RlIHRoZW4gcG9wdWxhdGVzIHNvbWUgZmllbGRzIHJlbGF0ZWQgdG8gRE1BIHJlbWFwcGluZyBhbmQgZmFjdG9yeSBjYWxpYnJhdGlvbiBkYXRhLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoYXQgYGt6YWxsb2NgIHRha2VzIGNhcmUgb2YgdGhlIGluaXRpYWxpemF0aW9uLlxuXG5OZXh0LCBgbXQ3OTI1X2ZhY3RfY2FsX2J1aWxkX21hcHBpbmdfdGJsYCBpcyBleGFtaW5lZC4gVGhlIGNvZGUgaW5pdGlhbGl6ZXMgYHRibGAgc3RydWN0dXJlIGJ5IGNhbGxpbmcgYG1lbXNldGAsIHNvIGl0IGlzIGZ1bGx5IHplcm9lZC5cblxuSSBhbHNvIGNoZWNrZWQgYG10NzkyNV9tY3VfZmFjdF9jYWxfcmFwaWRfc2V0YC4gVGhlIGByZXFgIGlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgdGhlcmUgdG9vLCB3aGljaCBlbnN1cmVzIHRoZSBidWZmZXIgaXMgemVyb2VkLCBhbmQgYW55IGRhdGEgY29waWVkIGludG8gYHJlcS1cdTAwM2VzZXQuYnVmX2RhdGFgIHdpbGwgYmUgcG9wdWxhdGVkIGZyb20gZGF0YSBwYXNzZWQgaW4gdGhlIGZ1bmN0aW9uLlxuXG5UaGVuLCB0aGVyZSdzIGBtdDc5MjVfbWN1X2ZhY3RfY2FsX3NldF9ieXBhc3NgLiBUaGlzIG9uZSBoYWQgYSBiaXQgb2YgYW4gaW50ZXJlc3Rpbmcgc3RydWN0dXJlIHdpdGggYSByZXNlcnZlZCBmaWVsZCBgX3JzdmAuIEJ1dCwgc2luY2UgdGhlIHN0cnVjdHVyZSB1c2VzIGFuIGluaXRpYWxpemVyLCB0aGUgQyBzdGFuZGFyZCBndWFyYW50ZWVzIHRoYXQgdGhlIHVuaW5pdGlhbGl6ZWQgbWVtYmVycyB3aWxsIGFsc28gYmUgemVyby1pbml0aWFsaXplZC4gVGhlcmVmb3JlLCBgX3JzdmAgd2lsbCBhbHNvIGJlIHplcm8uXG5cbkxldCdzIG5vdCBmb3JnZXQgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAgd2hpY2ggdXNlcyBgX19sZTMyIGNmZ1tdID0gezB9YC4gVGhlIGBjZmdgIHZhcmlhYmxlIGlzIGFsc28gZnVsbHkgemVyb2VkLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVPyBObywgaXQncyBqdXN0IGByZXFgIGFuZCBgdGJsYC4gSSdtIHN5c3RlbWF0aWNhbGx5IGdvaW5nIHRocm91Z2ggdGhlIGNvZGUuXG5cblRoZW4gSSBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUgd2VyZSBhbnkgcmVhZHMgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeS4gSW4gYG10NzkyNV9jYWxfY2FjaGVfcmVhZF9zbG90YCwgdGhlcmUncyBhIHJlYWQgZnJvbSBgZGV2LVx1MDAzZWNhY2hlZF9jYWwudmFgLiBBaCwgYnV0IHRoYXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBieSBgZG1hX2FsbG9jX2NvaGVyZW50YC4gVGhpcyBmdW5jdGlvbiB6ZXJvcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgZW5zdXJpbmcgdGhhdCB0aGUgcmVhZCBvcGVyYXRpb24gd29uJ3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgZGF0YS4gU3BlY2lmaWNhbGx5LCBJIGNvbmZpcm1lZCB0aGF0IGBkbWFfYWxsb2NfY29oZXJlbnRgIHplcm8taW5pdGlhbGl6ZXMgdGhlIG1lbW9yeS5cblxuQXJlIHRoZXJlIGFueSB3cml0ZXMgdG8gdXNlciBzcGFjZT8gTm8sIHRoaXMgaXMgYWxsIGludGVybmFsIGNvbW11bmljYXRpb24gd2l0aCB0aGUgTUNVLlxuXG5Hb2luZyBiYWNrIHRvIHRoZSBgbXQ3OTI1X21jdV9mYWN0X2NhbF9yYXBpZF9zZXRgLCBga3phbGxvY2AgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvIGhlcmUgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IGhhcHBlbnMuXG5cbkkgZGlkIGEgZG91YmxlIGNoZWNrIG9mIHRoZSBgbXQ3OTI1X21jdV9mYWN0X2NhbF9zZXRfYnlwYXNzYCBzdHJ1Y3R1cmUgYWdhaW4sIHRvIG1ha2Ugc3VyZSBpdCBpcyBpbmRlZWQgemVybyBpbml0aWFsaXplZC5cblxuRmluYWxseSwgYG10NzkyNV9tY3Vfc2VuZF9mYWN0X2NhbF9tYXBwaW5nX3RibGAgaXMgYWxzbyBjaGVja2VkIHRvIGJlIGFsbG9jYXRlZCB3aXRoIGBremFsbG9jYC5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBjb25maWRlbnQgdGhhdCBhbGwgc3RydWN0dXJlcyBzZW50IHRvIHRoZSBNQ1UgYXJlIGZ1bGx5IHplcm8taW5pdGlhbGl6ZWQgYW5kIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgc2VudCB0byBlaXRoZXIgdGhlIE1DVSBvciwgdml0YWxseSwgdXNlciBzcGFjZS4gVGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgS0FTQU4gb3IgS01TQU4gaXNzdWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuIFN0YW5kYXJkIEtBU0FOIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhZGRyZXNzaW5nIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcywgYW5kIHNvIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQ3MywiT3V0cHV0VG9rZW5zIjoyMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTBUMDY6MTQ6NTYuNzMzODU2ODQ3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZhY3RvcnkgY2FsaWJyYXRpb24gY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZSBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHVzaW5nIEFYSSBETUEuIEFsbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdGhlIE1DVSAoZS5nLiwgYG10NzkyNV9heGlkbWFfaW5mb19yZXFgLCBgbXQ3OTI1X2ZhY3RfY2FsX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfbWFwcGluZ190YmxgLCBhbmQgdGhlIGJ5cGFzcyByZXF1ZXN0KSBhcmUgZnVsbHkgemVyby1pbml0aWFsaXplZCB1c2luZyBga3phbGxvY2AsIGBtZW1zZXRgLCBvciBDIHN0cnVjdCBpbml0aWFsaXplcnMuIFRoZSBETUEgYnVmZmVyIGl0c2VsZiBpcyBhbGxvY2F0ZWQgd2l0aCBgZG1hX2FsbG9jX2NvaGVyZW50YCwgd2hpY2ggZ3VhcmFudGVlcyB6ZXJvLWluaXRpYWxpemF0aW9uLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIGxlYWtlZCB0byB0aGUgTUNVIG9yIHVzZXIgc3BhY2UsIG5vciBpcyB0aGVyZSBhbnkgY29udHJvbCBmbG93IGRlcGVuZGVudCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gQW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhpcyBjb2RlIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmFjdG9yeSBjYWxpYnJhdGlvbiBjYWNoaW5nIG1lY2hhbmlzbSBmb3IgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdXNpbmcgQVhJIERNQS4gQWxsIHN0cnVjdHVyZXMgc2VudCB0byB0aGUgTUNVIChlLmcuLCBgbXQ3OTI1X2F4aWRtYV9pbmZvX3JlcWAsIGBtdDc5MjVfZmFjdF9jYWxfcmVxYCwgYG10NzkyNV9mYWN0X2NhbF9tYXBwaW5nX3RibGAsIGFuZCB0aGUgYnlwYXNzIHJlcXVlc3QpIGFyZSBmdWxseSB6ZXJvLWluaXRpYWxpemVkIHVzaW5nIGBremFsbG9jYCwgYG1lbXNldGAsIG9yIEMgc3RydWN0IGluaXRpYWxpemVycy4gVGhlIERNQSBidWZmZXIgaXRzZWxmIGlzIGFsbG9jYXRlZCB3aXRoIGBkbWFfYWxsb2NfY29oZXJlbnRgLCB3aGljaCBndWFyYW50ZWVzIHplcm8taW5pdGlhbGl6YXRpb24uIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgbGVha2VkIHRvIHRoZSBNQ1Ugb3IgdXNlciBzcGFjZSwgbm9yIGlzIHRoZXJlIGFueSBjb250cm9sIGZsb3cgZGVwZW5kZW50IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLCBvdXQtb2YtYm91bmRzIGFjY2Vzcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyBpbiB0aGlzIGNvZGUgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgqg87[1] Phase: Succeeded StartedAt: 2026-08-10 06:15:26 +0000 UTC FinishedAt: 2026-08-10 06:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-10 06:15:26 +0000 UTC FinishedAt: 2026-08-10 06:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[2] Phase: Running StartedAt: 2026-08-10 06:15:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-08-10 06:15:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgqg87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-10 06:15:26 +0000 UTC FinishedAt: 2026-08-10 06:16:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-10 06:15:26 +0000 UTC FinishedAt: 2026-08-10 06:15:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgqg87/series-workflowgqg87-convert-artifact-411466340/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgqg87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Running StartedAt: 2026-08-10 06:16:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgqg87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Running StartedAt: 2026-08-10 06:16:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*ed3db7cc-93b8-431a-9271-58ee64595c49,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-workflowgqg87/series-workflowgqg87-convert-artifact-411466340/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgqg87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925e_axidma_cal_cache_init","mt7925_axidma_alloc","mt7925_axidma_free","mt7925_mcu_send_axidma_info","mt7925_mcu_send_fact_cal_mapping_tbl","mt7925_mcu_fact_cal_set_bypass"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4df22710a77d2365e56d720bc4106e54c1dfa2ff","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925E","MAC80211","WLAN","WLAN_VENDOR_MEDIATEK"],"series_id":"9f4b1f23-bebd-42b7-be0d-58ad19686601","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Running StartedAt: 2026-08-10 06:16:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*ed3db7cc-93b8-431a-9271-58ee64595c49,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-workflowgqg87/series-workflowgqg87-convert-artifact-411466340/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,}