Name: series-workflowjfkfm Phase: Failed StartedAt: 2026-09-02 21:42:55 +0000 UTC FinishedAt: 2026-09-02 21:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfkfm[0] Phase: Succeeded StartedAt: 2026-09-02 21:42:55 +0000 UTC FinishedAt: 2026-09-02 21:58:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfkfm[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 21:42:55 +0000 UTC FinishedAt: 2026-09-02 21:58:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZL0xQSSBjYXBhYmlsaXR5IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBNVDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykgYW5kIHRoZSBNZWRpYVRlayBTb0MgRXRoZXJuZXQgTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvcGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMzYzNmE3ZjkyYThmMjk0NGUzMWQwNTg4ZjM1MDRhZWE4NjlhY2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbmluZGV4IDJiN2JlMDkxYzA1NmUuLmExODhhMzkxYjY1MDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuQEAgLTMxNzIsMjMgJiM0MzszMTcyLDM4IEBAIHN0YXRpYyB2b2lkIG10NzUzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4mIzQzO1xuIFx0LyogVGhlIEVONzUyOCBHUEhZcyByZXBvcnQgRUVFIGNhcGFiaWxpdHksIGJ1dCBuZWdvdGlhdGluZyBFRUUgd2l0aFxuIFx0ICogY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhbiB1bnN0YWJsZVxuIFx0ICogbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBMZWF2ZSB0aGUgTFBJIGNhcGFiaWxpdGllcyBlbXB0eSBzbyB0aGF0XG4gXHQgKiBwaHlsaW5rIGRpc2FibGVzIEVFRSBvbiB0aGVzZSBQSFlzIGFuZCByZWZ1c2VzIHRvIGVuYWJsZSBpdCBmcm9tXG4tXHQgKiB1c2Vyc3BhY2UuXG4mIzQzO1x0ICogdXNlcnNwYWNlLiBQb3J0cyB0aGF0IHJ1biBhdCBuZWl0aGVyIDEwMCBNYnBzIG5vciAxIEdicHMgYXJlIGxlZnRcbiYjNDM7XHQgKiBlbXB0eSB0b28sIHNpbmNlIExQSSBhYm92ZSAxIEdicHMgaXMgdW52YWxpZGF0ZWQuXG4gXHQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWlkICE9IElEX0VONzUyOCkge1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWlkICE9IElEX0VONzUyOCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkge1xuIFx0XHR1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTtcbiBcbi1cdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbiYjNDM7XHRcdC8qIFBNQ1IgZm9sZHMgU1BFRURfMjUwMCBhbmQgU1BFRURfMTAwMDAgb250b1xuJiM0MztcdFx0ICogUE1DUl9GT1JDRV9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmUgMSBHYnBzIHdvdWxkIGJlXG4mIzQzO1x0XHQgKiBnb3Zlcm5lZCBieSBQTUNSX0ZPUkNFX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZCByYXRoZXIgdGhhblxuJiM0MztcdFx0ICogdW5zdXBwb3J0ZWQuIExlYXZlIGl0IG91dCBvZiBib3RoIGJpdG1hcHM6IGxwaV9jYXBhYmlsaXRpZXNcbiYjNDM7XHRcdCAqIGdhdGVzIG9uIHRoZSBtZWRpYSBzcGVlZCBhIHJhdGUgbWF0Y2hpbmcgUEhZIHJlcG9ydHMsIG5vdFxuJiM0MztcdFx0ICogb24gdGhlIHNwZWVkIHRoZSBNQUMgcnVucyBhdC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcdTAwMjZcbiYjNDM7XHRcdFx0XHRcdCAgIChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKTtcbiYjNDM7XHRcdHBoeV9pbnRlcmZhY2VfY29weShjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMsXG4mIzQzO1x0XHRcdFx0ICAgY29uZmlnLVx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4mIzQzO1x0XHRcdCAgICBjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xuJiM0MztcbiBcdFx0LyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvclxuIFx0XHQgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC5cbiBcdFx0ICovXG4gXHRcdGNvbmZpZy1cdTAwM2VscGlfdGltZXJfZGVmYXVsdCA9IEZJRUxEX0dFVChMUElfVEhSRVNIX01BU0ssIGVlZWNyKTtcbiBcdH1cbi1cbi1cdHByaXYtXHUwMDNlaW5mby1cdTAwM2VtYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcbiB9XG4gXG4gc3RhdGljIGludCBtdDc1M3hfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5pbmRleCBiZTNiZDAyNWM0MWExLi4wOWY1Mzg3NWQxMDBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuQEAgLTQ4MjgsNyAmIzQzOzQ4MjgsNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbiBcdHN0cnVjdCBtdGtfbWFjICptYWM7XG4tXHRpbnQgaWQsIGVycjtcbiYjNDM7XHRpbnQgaWQsIGVyciwgaTtcbiBcdGludCB0eHFzID0gMTtcbiBcdHUzMiB2YWw7XG4gXG5AQCAtNDkwNyw4ICYjNDM7NDkwNywxMSBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0UgfFxuIFx0XHRNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDAgfCBNQUNfMjUwMEZEO1xuLVx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHxcbi1cdFx0TUFDXzI1MDBGRDtcbiYjNDM7XHQvKiBNQUNfTUNSIGZvbGRzIFNQRUVEXzI1MDAgb250byBNQUNfTUNSX1NQRUVEXzEwMDAsIHNvIExQSSBhYm92ZVxuJiM0MztcdCAqIDEgR2JwcyB3b3VsZCBiZSBnb3Zlcm5lZCBieSBNQUNfTUNSX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZFxuJiM0MztcdCAqIHJhdGhlciB0aGFuIHVuc3VwcG9ydGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7XG4gXG4gXHQvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uXG5AQCAtNDk2Niw2ICYjNDM7NDk2OSwyNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4gXHRcdFx0ICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFxuJiM0MztcdC8qIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHByb2dyYW1zIHdha2UtdXAgdGltZXMgYm9ycm93ZWQgZnJvbVxuJiM0MztcdCAqIE1UNzUzMTsgb25seSBTb0NzIHdoZXJlIHRob3NlIGhhdmUgYmVlbiBzZWVuIHRvIGV4aXQgTFBJIGNsZWFubHlcbiYjNDM7XHQgKiBnZXQgTFBJIGludGVyZmFjZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKE1US19IQVNfQ0FQUyhldGgtXHUwMDNlc29jLVx1MDAzZWNhcHMsIE1US19HTUFDX0VFRSkpIHtcbiYjNDM7XHRcdHBoeV9pbnRlcmZhY2VfY29weShtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsXG4mIzQzO1x0XHRcdFx0ICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgTUFDIHNpZGUgb2YgMjUwMEJBU0UtWCBpcyBuZXZlciBiZWxvdyAyLjUgR2Jwcywgbm90XG4mIzQzO1x0XHQgKiBldmVuIHdoZW4gYSByYXRlIG1hdGNoaW5nIFBIWSBkcm9wcyB0aGUgbWVkaWEgdG8gMSBHYnBzLFxuJiM0MztcdFx0ICogYW5kIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHJlZnVzZXMgdGhlIHhHTUlJIG1vZGVzXG4mIzQzO1x0XHQgKiBvdXRyaWdodC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbiYjNDM7XHRcdFx0ICAgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQSFlfSU5URVJGQUNFX01PREVfTUFYOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10a19pbnRlcmZhY2VfbW9kZV9pc194Z21paShldGgsIGkpKVxuJiM0MztcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4mIzQzO1x0XHRcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgJiM0Mzs5OTQsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiBcdE1US19VM19DT1BIWV9WMl9CSVQsXG4gXHRNVEtfU1JBTV9CSVQsXG4gXHRNVEtfMzZCSVRfRE1BX0JJVCxcbiYjNDM7XHRNVEtfR01BQ19FRUVfQklULFxuIFxuIFx0LyogTVVYIEJJVFMqL1xuIFx0TVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklULFxuQEAgLTEwMzQsNiAmIzQzOzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4mIzQzOyNkZWZpbmUgTVRLX0dNQUNfRUVFXHRcdEJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVClcbiBcbiAjZGVmaW5lIE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXXHRcdFxcXG4gXHRCSVRfVUxMKE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVClcbkBAIC0xMTE3LDcgJiM0MzsxMTE5LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XG4gI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX1UzX0dNQUMyX1RPX1FQSFkgfCBNVEtfVTNfQ09QSFlfVjIgfCBcXFxuLVx0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pXG4mIzQzO1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjM2MzZhN2Y5MmE4ZjI5NDRlMzFkMDU4OGYzNTA0YWVhODY5YWNlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMjE6NTc6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKaW5kZXggMmI3YmUwOTFjMDU2ZS4uYTE4OGEzOTFiNjUwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMzE3MiwyMyAmIzQzOzMxNzIsMzggQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAogCWNvbmZpZy0mZ3Q7bWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTsKIAomIzQzOwlwcml2LSZndDtpbmZvLSZndDttYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTsKJiM0MzsKIAkvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoCiAJICogY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhbiB1bnN0YWJsZQogCSAqIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gTGVhdmUgdGhlIExQSSBjYXBhYmlsaXRpZXMgZW1wdHkgc28gdGhhdAogCSAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb20KLQkgKiB1c2Vyc3BhY2UuCiYjNDM7CSAqIHVzZXJzcGFjZS4gUG9ydHMgdGhhdCBydW4gYXQgbmVpdGhlciAxMDAgTWJwcyBub3IgMSBHYnBzIGFyZSBsZWZ0CiYjNDM7CSAqIGVtcHR5IHRvbywgc2luY2UgTFBJIGFib3ZlIDEgR2JwcyBpcyB1bnZhbGlkYXRlZC4KIAkgKi8KLQlpZiAocHJpdi0mZ3Q7aWQgIT0gSURfRU43NTI4KSB7CiYjNDM7CWlmIChwcml2LSZndDtpZCAhPSBJRF9FTjc1MjggJmFtcDsmYW1wOwomIzQzOwkgICAgY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkgewogCQl1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTsKIAotCQljb25maWctJmd0O2xwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDsKJiM0MzsJCS8qIFBNQ1IgZm9sZHMgU1BFRURfMjUwMCBhbmQgU1BFRURfMTAwMDAgb250bwomIzQzOwkJICogUE1DUl9GT1JDRV9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmUgMSBHYnBzIHdvdWxkIGJlCiYjNDM7CQkgKiBnb3Zlcm5lZCBieSBQTUNSX0ZPUkNFX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZCByYXRoZXIgdGhhbgomIzQzOwkJICogdW5zdXBwb3J0ZWQuIExlYXZlIGl0IG91dCBvZiBib3RoIGJpdG1hcHM6IGxwaV9jYXBhYmlsaXRpZXMKJiM0MzsJCSAqIGdhdGVzIG9uIHRoZSBtZWRpYSBzcGVlZCBhIHJhdGUgbWF0Y2hpbmcgUEhZIHJlcG9ydHMsIG5vdAomIzQzOwkJICogb24gdGhlIHNwZWVkIHRoZSBNQUMgcnVucyBhdC4KJiM0MzsJCSAqLwomIzQzOwkJY29uZmlnLSZndDtscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7CiYjNDM7CQkJCQkgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7CiYjNDM7CQlwaHlfaW50ZXJmYWNlX2NvcHkoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcywKJiM0MzsJCQkJICAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CQlfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLAomIzQzOwkJCSAgICBjb25maWctJmd0O2xwaV9pbnRlcmZhY2VzKTsKJiM0MzsKIAkJLyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvcgogCQkgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC4KIAkJICovCiAJCWNvbmZpZy0mZ3Q7bHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7CiAJfQotCi0JcHJpdi0mZ3Q7aW5mby0mZ3Q7bWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7CiB9CiAKIHN0YXRpYyBpbnQgbXQ3NTN4X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jCmluZGV4IGJlM2JkMDI1YzQxYTEuLjA5ZjUzODc1ZDEwMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwpAQCAtNDgyOCw3ICYjNDM7NDgyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAlwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7CiAJc3RydWN0IHBoeWxpbmsgKnBoeWxpbms7CiAJc3RydWN0IG10a19tYWMgKm1hYzsKLQlpbnQgaWQsIGVycjsKJiM0MzsJaW50IGlkLCBlcnIsIGk7CiAJaW50IHR4cXMgPSAxOwogCXUzMiB2YWw7CiAKQEAgLTQ5MDcsOCAmIzQzOzQ5MDcsMTEgQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogCW1hYy0mZ3Q7cGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWOwogCW1hYy0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8CiAJCU1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7Ci0JbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8Ci0JCU1BQ18yNTAwRkQ7CiYjNDM7CS8qIE1BQ19NQ1IgZm9sZHMgU1BFRURfMjUwMCBvbnRvIE1BQ19NQ1JfU1BFRURfMTAwMCwgc28gTFBJIGFib3ZlCiYjNDM7CSAqIDEgR2JwcyB3b3VsZCBiZSBnb3Zlcm5lZCBieSBNQUNfTUNSX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZAomIzQzOwkgKiByYXRoZXIgdGhhbiB1bnN1cHBvcnRlZC4KJiM0MzsJICovCiYjNDM7CW1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7CiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7CiAKIAkvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uCkBAIC00OTY2LDYgJiM0Mzs0OTY5LDI3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCwKIAkJCSAgbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiAKJiM0MzsJLyogbXRrX21hY19lbmFibGVfdHhfbHBpKCkgcHJvZ3JhbXMgd2FrZS11cCB0aW1lcyBib3Jyb3dlZCBmcm9tCiYjNDM7CSAqIE1UNzUzMTsgb25seSBTb0NzIHdoZXJlIHRob3NlIGhhdmUgYmVlbiBzZWVuIHRvIGV4aXQgTFBJIGNsZWFubHkKJiM0MzsJICogZ2V0IExQSSBpbnRlcmZhY2VzLgomIzQzOwkgKi8KJiM0MzsJaWYgKE1US19IQVNfQ0FQUyhldGgtJmd0O3NvYy0mZ3Q7Y2FwcywgTVRLX0dNQUNfRUVFKSkgewomIzQzOwkJcGh5X2ludGVyZmFjZV9jb3B5KG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsCiYjNDM7CQkJCSAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwomIzQzOwkJLyogVGhlIE1BQyBzaWRlIG9mIDI1MDBCQVNFLVggaXMgbmV2ZXIgYmVsb3cgMi41IEdicHMsIG5vdAomIzQzOwkJICogZXZlbiB3aGVuIGEgcmF0ZSBtYXRjaGluZyBQSFkgZHJvcHMgdGhlIG1lZGlhIHRvIDEgR2JwcywKJiM0MzsJCSAqIGFuZCBtdGtfbWFjX2VuYWJsZV90eF9scGkoKSByZWZ1c2VzIHRoZSB4R01JSSBtb2RlcwomIzQzOwkJICogb3V0cmlnaHQuCiYjNDM7CQkgKi8KJiM0MzsJCV9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsCiYjNDM7CQkJICAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IFBIWV9JTlRFUkZBQ0VfTU9ERV9NQVg7IGkmIzQzOyYjNDM7KQomIzQzOwkJCWlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSkKJiM0MzsJCQkJX19jbGVhcl9iaXQoaSwKJiM0MzsJCQkJCSAgICBtYWMtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTsKJiM0MzsJfQomIzQzOwogCXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZSgmYW1wO21hYy0mZ3Q7cGh5bGlua19jb25maWcsCiAJCQkJIG9mX2Z3bm9kZV9oYW5kbGUobWFjLSZndDtvZl9ub2RlKSwKIAkJCQkgcGh5X21vZGUsIG1hY19vcHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgKaW5kZXggMDE2OGUyZmJjNjE5Ny4uODhhOWIzYjIzYmVhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oCkBAIC05OTQsNiAmIzQzOzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMgewogCU1US19VM19DT1BIWV9WMl9CSVQsCiAJTVRLX1NSQU1fQklULAogCU1US18zNkJJVF9ETUFfQklULAomIzQzOwlNVEtfR01BQ19FRUVfQklULAogCiAJLyogTVVYIEJJVFMqLwogCU1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCwKQEAgLTEwMzQsNiAmIzQzOzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHsKICNkZWZpbmUgTVRLX1UzX0NPUEhZX1YyCQlCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpCiAjZGVmaW5lIE1US19TUkFNCQlCSVRfVUxMKE1US19TUkFNX0JJVCkKICNkZWZpbmUgTVRLXzM2QklUX0RNQQlCSVRfVUxMKE1US18zNkJJVF9ETUFfQklUKQomIzQzOyNkZWZpbmUgTVRLX0dNQUNfRUVFCQlCSVRfVUxMKE1US19HTUFDX0VFRV9CSVQpCiAKICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1cJCVwKIAlCSVRfVUxMKE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCkKQEAgLTExMTcsNyAmIzQzOzExMTksNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHsKICNkZWZpbmUgTVQ3OTgxX0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBNVEtfR01BQzJfR0VQSFkgfCBcCiAJCSAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcCiAJCSAgICAgIE1US19NVVhfVTNfR01BQzJfVE9fUVBIWSB8IE1US19VM19DT1BIWV9WMiB8IFwKLQkJICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNKQomIzQzOwkJICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNIHwgTVRLX0dNQUNfRUVFKQogCiAjZGVmaW5lIE1UNzk4Nl9DQVBTICAoTVRLX0dNQUMxX1NHTUlJIHwgTVRLX0dNQUMyX1NHTUlJIHwgXAogCQkgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzEzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGZ1enppbmcgaXMgYSB2aWFibGUgYXBwcm9hY2guIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGludm9sdmVzIGEgZmV3IGtleSBzdGVwcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9uLiBTcGVjaWZpY2FsbHksIEkgc2VlIGNoYW5nZXMgaW1wYWN0aW5nIHRocmVlIGZpbGVzOiBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhgLiBUaGF0JiMzOTtzIHRoZSBNZWRpYXRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKERTQSBzd2l0Y2ggZHJpdmVyKSBhbmQgYSBNZWRpYXRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBNQUMgZHJpdmVyLCByZXNwZWN0aXZlbHkuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpbnZvbHZlcyBoYXJkd2FyZS1sZXZlbCBpbnRlcmFjdGlvbi4gSXMgdGhlIE1lZGlhdGVrIEV0aGVybmV0IFNvQyBhbmQgTVQ3NTMwIERTQSBzd2l0Y2ggYSBwaHlzaWNhbCBTb0MgcGxhdGZvcm0gZHJpdmVyPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQmIzM5O3MgdGhlIGNydWNpYWwgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgcGF0Y2ggdG91Y2hlcyBsb3ctbGV2ZWwgaGFyZHdhcmUgY29tbXVuaWNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIE15IG5leHQgbW92ZSBpcyB0byBjbG9zZWx5IGV4YW1pbmUgdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBtZW50aW9uZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgpJIHRoaW5rIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgb3IganVzdCByZWFkIHRocm91Z2ggdGhlIGZpbGVzIGRpcmVjdGx5IHRvIGRldGVybWluZSB3aGF0IHdlJiMzOTtyZSBhY3R1YWxseSBtb2RpZnlpbmcuIE9uY2UgSSBoYXZlIGEgaGFuZGxlIG9uIHRoZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiwgSSBjYW4gdGhlbiBjb25zaWRlciBob3cgZnV6emluZyB3b3VsZCBmaXQgaW50byB0aGUgdGVzdGluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX01UNzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM0LVx0c2VsZWN0IFJFR01BUF9JUlFcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM1Olx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQ1Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDYtXHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NjpcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXHQmIzQzOz0gbXQ3NTMwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NRElPKSAmIzQzOz0gbXQ3NTMwLW1kaW8ub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01NSU8pICYjNDM7PSBtdDc1MzAtbW1pby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTkVUX0RTQV9NVDc2MjgpICYjNDM7PSBtdDc2Mjgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NDUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIE1lZGlhdGVrIEV0aGVybmV0IEtjb25maWcgRmlsZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGRyaXZlciDigJMgdGhpbmdzIGxpa2UgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBkcml2ZXIsIHNlbGVjdGluZyBzcGVjaWZpYyBNZWRpYXRlayBFdGhlcm5ldCBjb250cm9sbGVyIG1vZGVscywgcG90ZW50aWFsbHkgb3B0aW9ucyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgb3IgdmFyaWF0aW9ucywgYW5kIHByb2JhYmx5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBoZXJlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgcG9zc2libHkgdHJvdWJsZXNob290IGFueXRoaW5nIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlcnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMsIGFuZCBwYXJ0aWN1bGFybHkgYW55IHRyaWNreSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBuZXR3b3JraW5nIG9yIGhhcmR3YXJlIHN1YnN5c3RlbXMuIEhvcGVmdWxseSwgaXTigJlzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQsIGJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhIGJpdCBvZiBhIGRlZXAgZGl2ZSBpZiBuZWNlc3NhcnkuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX01FRElBVEVLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz04PWlmIE5FVF9WRU5ET1JfTUVESUFURUtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTA6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTExLVx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMjpcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6Mjk6Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBTVEFSIEV0aGVybmV0IE1BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0MpICYjNDM7PSBtdGtfZXRoLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTctbXRrX2V0aC15IDo9IG10a19ldGhfc29jLm8gbXRrX2V0aF9wYXRoLm8gbXRrX3BwZS5vIG10a19wcGVfZGVidWdmcy5vIG10a19wcGVfb2ZmbG9hZC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo4Om10a19ldGgtJChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpICYjNDM7PSBtdGtfd2VkLm8gbXRrX3dlZF9tY3UubyBtdGtfd2VkX3dvLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTktaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMDptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSAmIzQzOz0gbXRrX3dlZF9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTExLWVuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpICYjNDM7PSBtdGtfd2VkX29wcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NUQVJfRU1BQykgJiM0Mzs9IG10a19zdGFyX2VtYWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jPTkyPW10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jOjEwNDpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMtMTA1LVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oPTU2PXN0cnVjdCBtdGtfd2RtYV9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmgtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmg6NjQ6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTY1LXN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2lzX3YxKHN0cnVjdCBtdGtfd2VkX2h3ICpodylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzIzCgkJCQkJCQlvdXRwdXQ6IDU3CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgc29tZXRoaW5nIGhlcmUuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZSBjb2RlIHdpdGhpbiBgbXRrX2V0aF9zb2MuY2AgYW5kIGBtdDc1MzAuY2AgaXMgYWN0dWFsbHkgYWNjZXNzaWJsZSBpbiB0eXBpY2FsIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCBvciBpZiBpdCYjMzk7cyBzdHJpY3RseSB0aWVkIHRvIE1lZGlhVGVrIFNvQyBoYXJkd2FyZSDigJMgc3BlY2lmaWNhbGx5IHRob3NlIEFSTSBvciBNSVBTIE1lZGlhVGVrIHJvdXRlciBTb0NzLCBsaWtlIHRoZSBNVDc2MjEsIE1UNzYyMiwgTVQ3NjIzLCBNVDc5ODEsIG9yIE1UNzk4Niwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGguIFRoZSBrZXkgaGVyZSBpcyBkZXRlcm1pbmluZyB0aGUgZGVwZW5kZW5jaWVzLgoKVG8gZG8gdGhhdCwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgZm9jdXMgb24gdGhlIHByb2JlIGZ1bmN0aW9ucyBhbmQgZHJpdmVyIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZXMgd2l0aGluIGJvdGggZmlsZXMuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCBpbiBhIHdheSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB2aXJ0dWFsaXphdGlvbiwgb3IgaWYgaXQgaGFzIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgY2hlY2tzIHRoYXQgd291bGQgcHJldmVudCBpdCBmcm9tIHJ1bm5pbmcgb3V0c2lkZSBvZiB0aGUgYWN0dWFsIE1lZGlhVGVrIHNpbGljb24uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxtb2R1bGVfbWRpb19kcml2ZXJ8cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBNVDc1MzAgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NTMwIHN3aXRjaCBpcyBiZWluZyBpbnRlcmZhY2VkLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGRyaXZlciBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHJldmlld2luZyB0aGUgaW1wbGVtZW50YXRpb25zIGluIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY2AuIEkgbmVlZCB0byBzZWUgaG93IHRoZSByZWdpc3RlciBhY2Nlc3MgYW5kIGNvbW11bmljYXRpb24gYXJlIGhhbmRsZWQgdXNpbmcgYm90aCBNRElPIGFuZCBNTUlPLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdyZWF0IG92ZXJ2aWV3IG9mIHRoZSBkaWZmZXJlbnQgYWNjZXNzIG1ldGhvZHMgYXZhaWxhYmxlLiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgaG93IHRoaXMgYWxsIHRpZXMgaW50byB0aGUgTWVkaWFUZWsgRXRoZXJuZXQgU29DIGdlbmVyYWxseS4gSSB3aWxsIHRoZXJlZm9yZSBjaGVjayBgbXRrX2V0aF9zb2MuY2AgdG8gc2VlIGhvdyB0aGUgc3dpdGNoIGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlIG9mIHRoZSBTb0MmIzM5O3MgRXRoZXJuZXQgc3Vic3lzdGVtLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRFNBIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjaywgYW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIHByb2JsZW0sIHRoZSBsaWtlbHkgY3VscHJpdCBpcyByZWxhdGVkIHRvIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkuIFRoZXJlZm9yZSwgbXkgZmlyc3QgbW92ZSBpcyB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZHJpdmVyIGNvZGUgYW5kIHJlbGV2YW50IHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgc3RhbmRhcmQgRFNBIGNvcmUgZmlsZXMsIHN3aXRjaCBkcml2ZXJzIGZvciB2YXJpb3VzIGNoaXBzZXRzLCBhbmQgcGVyaGFwcyBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGdsdWUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIGFueSBjbHVlcyB0aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5OTEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMClcdCYjNDM7PSBtdDc1MzAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICYjNDM7PSBtdDc1MzAtbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgJiM0Mzs9IG10NzUzMC1tbWlvLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgJiM0Mzs9IG10NzYyOC5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxOTptdDc1MzBfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMi1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NDptdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NzQ6bXQ3NTMwX21kaW9fcmVnbWFwX2xvY2sodm9pZCAqbWRpb19sb2NrKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTc5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4MDptdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04NC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg2Olx0LnJlZ193cml0ZSA9IG10NzUzMF9yZWdtYXBfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NzpcdC5yZWdfcmVhZCA9IG10NzUzMF9yZWdtYXBfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg4LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9OTA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6OTE6bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy05Mi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTEyLVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2VtYXhfcmVnaXN0ZXIgPSAweDE3YztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMzpcdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTE0Olx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2V1bmxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTE1LVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2Vsb2NrX2FyZyA9IFx1MDAyNnByaXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExNzpcdFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTgtXHRcdFx0XHRcdCAgbXQ3NTMxX3Bjc19jb25maWdbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzODpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc1MzBfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc2MjFcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNDA6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3NTMwXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQxLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzUzMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NTMxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDMtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTgtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE3MTpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxMDpcdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTEtXHRcdFx0XHRcdFx1MDAyNnJlZ21hcF9jb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjIyOm10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjIzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjUtXHRpbnQgcmV0ID0gMCwgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDA6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDY6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Ny17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1ODpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1OTpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjA6XHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Mi1cdC5tZGlvZHJ2LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MzpcdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbWRpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjg6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjEwOiNpbmNsdWRlIFwmIzM0O210NzUzMC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0xMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMD1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMxLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjMyOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzMtXHR2b2lkIF9faW9tZW0gKmJhc2VfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz02Nz1zdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02OC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo2OTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03MS1cdGlmIChwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzI6XHRcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc1PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6Nzc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTg3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTEtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6OTI6XHRcdC5uYW1lID0gXCYjMzQ7bXQ3NTMwLW1taW9cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05My1cdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3OTg4X29mX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNi0vKiBTdHJpbmcsIG9mZnNldCwgYW5kIHJlZ2lzdGVyIHNpemUgaW4gYnl0ZXMgaWYgZGlmZmVyZW50IGZyb20gNCBieXRlcyAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOC1cdE1JQl9ERVNDKDEsIE1UNzUzMF9QT1JUX01JQl9UWF9EUk9QLCBcJiMzNDtUeERyb3BcJiMzNDspLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwOm10NzUzMF9tdXRleF9sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTc6bXQ3NTMwX211dGV4X3VubG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njk6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk3LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9OTk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMDA6Y29yZV9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHNldClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQyOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDY6Y29yZV9zZXQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE0Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1Mjpjb3JlX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1ODptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjUtXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY2Olx0XHRcdFwmIzM0O2ZhaWxlZCB0byB3cml0ZSBtdDc1MzAgcmVnaXN0ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTcxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODAtXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTgxOlx0XHRcdFwmIzM0O2ZhaWxlZCB0byByZWFkIG10NzUzMCByZWdpc3RlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTgyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTg4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkzOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NTpcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTc6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjAyPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDM6X210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA3Olx0bXQ3NTMwX211dGV4X2xvY2socC1cdTAwM2Vwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA5Olx0dmFsID0gbXQ3NTMwX21paV9yZWFkKHAtXHUwMDNlcHJpdiwgcC1cdTAwM2VyZWcpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHAtXHUwMDNlcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMTY9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxNzptdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTk6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIxLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyMjpcdHJldHVybiBfbXQ3NTMwX3JlYWQoXHUwMDI2cCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjI1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI2Om10NzUzMF9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNy1cdCAgIHUzMiBtYXNrLCB1MzIgc2V0KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMzOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzQtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzc6bXQ3NTMwX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk6XHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MzptdDc1MzBfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ1Olx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ2LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQ4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDk6bXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU1LVx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1NjpcdHJldCA9IG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjA6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjc6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mjg2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg3Om10NzUzMF9mZGJfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHN0cnVjdCBtdDc1MzBfZmRiICpmZGIpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyOTQ6XHRcdHJlZ1tpXSA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9UU1JBMSAmIzQzOyAoaSAqIDQpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxMj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxMzptdDc1MzBfZmRiX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTE2IHZpZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTQtXHRcdCB1OCBwb3J0X21hc2ssIGNvbnN0IHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzOTpcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEExICYjNDM7IChpICogNCksIHJlZ1tpXSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQwLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQyLS8qIFNldCB1cCBzd2l0Y2ggY29yZSBjbG9jayBmb3IgTVQ3NTMwICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQzOnN0YXRpYyB2b2lkIG10NzUzMF9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM4Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NDptdDc1MzBfc2V0dXBfcG9ydDYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg2Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODctXHR1MzIgbmNwbzEsIHNzY19kZWx0YSwgeHRhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkyLVx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTM6XHRcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTQtXHRcdFx0ICAgUDZfSU5URl9NT0RFKDApKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5ODpcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSywgUDZfSU5URl9NT0RFKDEpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDAwOlx0eHRhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9NVFJBUCkgXHUwMDI2IE1UNzUzMF9YVEFMX01BU0s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00MzY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Mzc6bXQ3NTMxX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDM4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DUkVWKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDU6XHR0b3Bfc2lnID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1RPUF9TSUdfU1IpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NjpcdGh3c3RyYXAgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfVFJBUCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ3LVx0aWYgKCh2YWwgXHUwMDI2IENISVBfUkVWX00pIFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTQtXHQvKiBTdGVwIDEgOiBEaXNhYmxlIE1UNzUzMSBDT1JFUExMICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU1Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTYtXHR2YWwgXHUwMDI2PSB+RU5fQ09SRVBMTDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTc6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXHQvKiBTdGVwIDI6IHN3aXRjaCB0byBYVEFMIG91dHB1dCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYxLVx0dmFsIHw9IFNXX0NMS1NXO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NS1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX0VOO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjgtXHQvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5kIGVuYWJsZSBwcm9ncmFtIFBMTEdQICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzAtXHR2YWwgfD0gU1dfUExMR1A7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDcxOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDczLVx0LyogU3RlcCA0OiBwcm9ncmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9QT1NESVZfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXHR2YWwgfD0gMiBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9QT1NESVZfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzI1TUhaOlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MjpcdFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgzLVx0XHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVx0XHR2YWwgfD0gMHgxNDAwMDAgXHUwMDNjXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4NTpcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODctXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfNDBNSFo6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg4Olx0XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODktXHRcdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTAtXHRcdHZhbCB8PSAweDE5MDAwMCBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkxOlx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTUtXHQvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5NjpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5Ny1cdHZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5ODpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cdC8qIFdhaXQgZm9yIGF0IGxlYXN0IDE2IFhUQUwgY2xvY2tzICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cdC8qIFN0ZXAgNTogc2V0IGZlZWRiYWNrIGRpdmlkZSByYXRpbyB1cGRhdGUgc2lnbmFsIHRvIGxvdyAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNC1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwNTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDctXHQvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDg6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjUsIDB4YWQwMDAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEwLVx0LyogRW5hYmxlIDI1MFNTQyBjbG9jayBmb3IgUkdNSUkgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTE6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEyLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMy1cdC8qIFN0ZXAgNjogRW5hYmxlIE1UNzUzMSBQTEwgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTQ6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTUtXHR2YWwgfD0gUkdfQ09SRVBMTF9FTjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTY6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE4Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTktXHR2YWwgfD0gRU5fQ09SRVBMTDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjA6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMS1cdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MjQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjU6bXQ3NTMwX21pYl9yZXNldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyOC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjk6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfRkxVU0gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9BQ1RJVkFURSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMxLX1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMzOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mzg6c3RhdGljIGludCBtdDc1MzBfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzOS1cdFx0XHRcdHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDQ6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQ1LVx0XHRcdCAgICAgICBpbnQgZGV2YWQsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTA6c3RhdGljIGludCBtdDc1MzBfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLVx0XHRcdFx0aW50IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTU2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTc6bXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1OC1cdFx0XHRpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTYzOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzMtXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTc0Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3NS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4Ni1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODc6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDA6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjA1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDctXHRcdFx0IGludCByZWdudW0sIHUxNiBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjEyOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjEzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjItXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjIzOlx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNS1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM2Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0Ny1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ4Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY1Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU0Om10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1OTpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjcwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3MTpcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHZhbCB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODMtb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY4NDpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjg1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02ODk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5MDptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTEtXHRcdFx0IHUxNiBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njk2Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjk3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MDctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzA4Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcxOS1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzIwOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTcyNj1tdDc1M3hfcGh5X3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyNy17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzI4Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03MzQ9bXQ3NTN4X3BoeV9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTczNS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzM2Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NDI9bXQ3NTN4X3BoeV93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzQzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NDQ6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc1MD1tdDc1M3hfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NTIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc1MzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1NC1cbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MzUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE1lZGlhVGVrIEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBGaXJzdCwgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgZXhhY3RseSBNVDc1MzAgYW5kIG10a19ldGhfc29jIGFyZS4gUmlnaHQsIE1UNzUzMCBpcyB0aGF0IHN3aXRjaCBJQywgdHlwaWNhbGx5IGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIHdoZW4gcGFpcmVkIHdpdGggTWVkaWFUZWsgU29DcyBsaWtlIHRoZSBNVDc5ODguIEdvdCBpdC4gQW5kIGBtdGtfZXRoX3NvY2A/IFRoYXQmIzM5O3MgdGhlIEV0aGVybmV0IE1BQyBkcml2ZXIgdGFpbG9yZWQgZm9yIE1lZGlhVGVrIHJvdXRlciBTb0NzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBNVDc2MjAsIE1UNzYyMSwgYW5kIHNvIG9uLCBhbGwgdGhlIHdheSB1cCB0byB0aGUgTVQ3OTg4LgoKU28sIGFyZSB0aGVzZSBlc3NlbnRpYWxseSBwbGF0Zm9ybSBhbmQvb3IgTURJTyBkcml2ZXJzIGZvciBNZWRpYVRlayBoYXJkd2FyZT8gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdC4gQWgsIHllcywgYG10a19ldGhfc29jLmNgIGlzIGRlZmluaXRlbHkgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlci4gSSBzZWUgdGhlIHRlbGx0YWxlIHNpZ25zOiBgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHsgLi4uIC5kcml2ZXIgPSB7IC5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihvZl9tdGtfbWF0Y2gpLCAuLi4gfSB9O2AgYW5kIHRoZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfZHJpdmVyKTtgLiBUaGF0IGNsZWFybHkgaW5kaWNhdGVzIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIG1hdGNoaW5nIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZSwgYXMgZXhwZWN0ZWQuIE5vdywgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgZHJpdmVyLiBMZXQgbWUgY2hlY2sgYG10a19ldGhfc29jLmNgIGRpcmVjdGx5Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTU2OTA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2OTk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTcwMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTc0OT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3Rhcl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNzU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXRrX3N0YXJfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc4MwoJCQkJCQkJb3V0cHV0OiAxNDIKCQkJCQkJCXRob3VnaHRzOiA3ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgdGhpcyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIHJ1bGVzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNoYW5nZXMgdGhhdCBjYW4gYmUgbWVhbmluZ2Z1bGx5IGZ1enplZCBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50LiBMZXQmIzM5O3Mgc2VlOiBtb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG51bWVyaWMgY29uc3RhbnQgY2hhbmdlcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBhcmUgYWxsIG5vLWdvcyBmb3IgZnV6emluZy4KCk5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiBUaGlzIHBhdGNoIHRvdWNoZXMgcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgU29Dcy4gQXJlIHRob3NlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgb3IgR0NFIHNldHVwPyBNeSBleHBlcmllbmNlIHNheXMgbm8sIGJ1dCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBTdGFuZGFyZCBmdXp6aW5nIHJlbGllcyBvbiB4ODZfNjQgb3IgYXJtNjQgUUVNVS9HQ0UsIGFuZCB0aGVzZSBkb24mIzM5O3QgdHlwaWNhbGx5IGluY2x1ZGUgZW11bGF0ZWQgTWVkaWFUZWsgU29DIGRldmljZXMgb3IgdGhlaXIgYXNzb2NpYXRlZCBkZXZpY2UgdHJlZXMuIFFFTVUgZ2VuZXJhbGx5IHByZXNlbnRzIHZpcnRpbywgUEwwMTEsIGFuZCBzaW1pbGFyIHZpcnR1YWwgaGFyZHdhcmUgaW4gaXRzIGRldmljZSB0cmVlLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNgIHdoaWNoIGhhbmRsZXMgTWVkaWFUZWsgRXRoZXJuZXQuIFRoZSBkcml2ZXIgcmVsaWVzIG9uIE9wZW5GaXJtd2FyZSAoT0YpIGNvbXBhdGlibGUgc3RyaW5ncyBsaWtlIGBtZWRpYXRlayxtdDI3MDEtZXRoYCwgYG1lZGlhdGVrLG10NzYyMi1ldGhgLCBldGMuIFRoZXJlJiMzOTtzIGFsc28gdGhlIE1UNzUzMCBEU0Egc3dpdGNoLCB3aGljaCBsb29rcyBmb3Igc3RyaW5ncyBsaWtlIGBtZWRpYXRlayxtdDc2MjFgLCBgbWVkaWF0ZWssbXQ3NTMwYC4KClRoZSBwcm9ibGVtIGlzIHRoZXNlIGRldmljZXMg4oCTIHRoZSBFdGhlcm5ldCBNQUMgYW5kIHRoZSBEU0Egc3dpdGNoIGNvbnRyb2xsZXIg4oCTICpyZXF1aXJlKiB0aGUgdW5kZXJseWluZyBNZWRpYVRlayBTb0MgaGFyZHdhcmUsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhICpzcGVjaWZpYyogU29DIERUQi4gIFN0YW5kYXJkIFFFTVUvR0NFIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UuIFNvLCBuZWl0aGVyIGRyaXZlciB3aWxsIHByb2JlLCBhbmQgdGhlaXIgcnVudGltZSBjb2RlIHdpbGwgYmUgY29tcGxldGVseSBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIGNvbmZpcm06IGlzIHRoZXJlICphbnkqIHZpcnR1YWwgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGVzZSBNZWRpYVRlayBFdGhlcm5ldCBvciBEU0Egc3dpdGNoIGNvbXBvbmVudHM/IE5vLCBhIHF1aWNrIHNlYXJjaCBjb25maXJtcyB0aGF0IHRob3NlIGRyaXZlcnMgcmVxdWlyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSBkZXZpY2Ugb3IgdGhlIE1ESU8gYnVzIHRvIGV2ZW4gcHJvYmUgYW5kIGluc3RhbnRpYXRlIHRoZWlyIG5ldHdvcmsgZGV2aWNlcy4KClRoZXJlZm9yZSwgc2luY2UgdGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIHdpdGhpbiBkcml2ZXJzIHRoYXQgYXJlIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBpdCYjMzk7cyBhIGNsZWFyIGNhc2UuIFRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6ei4KClRpbWUgZm9yIGEgZmluYWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBvdXRwdXQgSSYjMzk7bSBhYm91dCB0byBzdWJtaXQ6CiogICBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBgZmFsc2VgLgoqICAgYEVuYWJsZUNvbmZpZ3NgIHdvbiYjMzk7dCBiZSBuZWNlc3Nhcnk7IHdlJiMzOTtyZSBub3QgZW5hYmxpbmcgYW55dGhpbmcgaGVyZS4KKiAgIGBGb2N1c1N5bWJvbHNgIGlzIGVtcHR5LgoqICAgVGhlIGBSZWFzb25pbmdgIG5lZWRzIHRvIGJlIGNyeXN0YWwgY2xlYXI6IHRoaXMgcGF0Y2ggaW52b2x2ZXMgTWVkaWFUZWsgU29DIEV0aGVybmV0IGFuZCBEU0Egc3dpdGNoIGRyaXZlcnMgKG10a19ldGhfc29jIGFuZCBtdDc1MzApLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL2RldmljZSB0cmVlIG5vZGVzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgd2hpY2ggbWFrZXMgdGhlbSB1bmZ1enphYmxlIGluIHN1Y2ggY29udGV4dHMuCgpPa2F5LCB0aGF0IGFsbCBsb29rcyBzb2xpZC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZL0xQSSBjYXBhYmlsaXR5IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBNVDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykgYW5kIHRoZSBNZWRpYVRlayBTb0MgRXRoZXJuZXQgTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvcGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MjUuMTA2MDUxMTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcyMjM2NDg2MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQSFkvTFBJIGNhcGFiaWxpdHkgaGFuZGxpbmcgaW4gdGhlIE1lZGlhVGVrIE1UNzUzMCBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKSBhbmQgdGhlIE1lZGlhVGVrIFNvQyBFdGhlcm5ldCBNQUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIE1lZGlhVGVrIFNvQyBoYXJkd2FyZS9wbGF0Zm9ybSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MjUuMTA2MDU2NDgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA0NTYwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMzYzNmE3ZjkyYThmMjk0NGUzMWQwNTg4ZjM1MDRhZWE4NjlhY2UxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMjE6NTc6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuaW5kZXggMmI3YmUwOTFjMDU2ZS4uYTE4OGEzOTFiNjUwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5AQCAtMzE3MiwyMyArMzE3MiwzOCBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XFxuK1xcbiBcXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXFxuIFxcdCAqIGNvbW1vbiBsaW5rIHBhcnRuZXJzIChlLmcuIFJlYWx0ZWsgR2JFIE5JQ3MpIHJlc3VsdHMgaW4gYW4gdW5zdGFibGVcXG4gXFx0ICogbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBMZWF2ZSB0aGUgTFBJIGNhcGFiaWxpdGllcyBlbXB0eSBzbyB0aGF0XFxuIFxcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cXG4tXFx0ICogdXNlcnNwYWNlLlxcbitcXHQgKiB1c2Vyc3BhY2UuIFBvcnRzIHRoYXQgcnVuIGF0IG5laXRoZXIgMTAwIE1icHMgbm9yIDEgR2JwcyBhcmUgbGVmdFxcbitcXHQgKiBlbXB0eSB0b28sIHNpbmNlIExQSSBhYm92ZSAxIEdicHMgaXMgdW52YWxpZGF0ZWQuXFxuIFxcdCAqL1xcbi1cXHRpZiAocHJpdi1cXHUwMDNlaWQgIT0gSURfRU43NTI4KSB7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VpZCAhPSBJRF9FTjc1MjggXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcXHUwMDI2IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkge1xcbiBcXHRcXHR1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTtcXG4gXFxuLVxcdFxcdGNvbmZpZy1cXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xcbitcXHRcXHQvKiBQTUNSIGZvbGRzIFNQRUVEXzI1MDAgYW5kIFNQRUVEXzEwMDAwIG9udG9cXG4rXFx0XFx0ICogUE1DUl9GT1JDRV9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmUgMSBHYnBzIHdvdWxkIGJlXFxuK1xcdFxcdCAqIGdvdmVybmVkIGJ5IFBNQ1JfRk9SQ0VfRUVFMUcgYW5kIGlzIHVudmFsaWRhdGVkIHJhdGhlciB0aGFuXFxuK1xcdFxcdCAqIHVuc3VwcG9ydGVkLiBMZWF2ZSBpdCBvdXQgb2YgYm90aCBiaXRtYXBzOiBscGlfY2FwYWJpbGl0aWVzXFxuK1xcdFxcdCAqIGdhdGVzIG9uIHRoZSBtZWRpYSBzcGVlZCBhIHJhdGUgbWF0Y2hpbmcgUEhZIHJlcG9ydHMsIG5vdFxcbitcXHRcXHQgKiBvbiB0aGUgc3BlZWQgdGhlIE1BQyBydW5zIGF0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0Y29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0XFx0ICAgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpO1xcbitcXHRcXHRwaHlfaW50ZXJmYWNlX2NvcHkoY29uZmlnLVxcdTAwM2VscGlfaW50ZXJmYWNlcyxcXG4rXFx0XFx0XFx0XFx0ICAgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXFxuK1xcdFxcdFxcdCAgICBjb25maWctXFx1MDAzZWxwaV9pbnRlcmZhY2VzKTtcXG4rXFxuIFxcdFxcdC8qIHR4X2xwaV90aW1lciBzaG91bGQgYmUgaW4gbWljcm9zZWNvbmRzLiBUaGUgdGltZSB1bml0cyBmb3JcXG4gXFx0XFx0ICogTFBJIHRocmVzaG9sZCBhcmUgdW5zcGVjaWZpZWQuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRjb25maWctXFx1MDAzZWxwaV90aW1lcl9kZWZhdWx0ID0gRklFTERfR0VUKExQSV9USFJFU0hfTUFTSywgZWVlY3IpO1xcbiBcXHR9XFxuLVxcbi1cXHRwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VtYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdDc1M3hfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbmluZGV4IGJlM2JkMDI1YzQxYTEuLjA5ZjUzODc1ZDEwMGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcXG5AQCAtNDgyOCw3ICs0ODI4LDcgQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbiBcXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XFxuIFxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbiBcXHRzdHJ1Y3QgbXRrX21hYyAqbWFjO1xcbi1cXHRpbnQgaWQsIGVycjtcXG4rXFx0aW50IGlkLCBlcnIsIGk7XFxuIFxcdGludCB0eHFzID0gMTtcXG4gXFx0dTMyIHZhbDtcXG4gXFxuQEAgLTQ5MDcsOCArNDkwNywxMSBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuIFxcdG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xcbiBcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0UgfFxcbiBcXHRcXHRNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDAgfCBNQUNfMjUwMEZEO1xcbi1cXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHxcXG4tXFx0XFx0TUFDXzI1MDBGRDtcXG4rXFx0LyogTUFDX01DUiBmb2xkcyBTUEVFRF8yNTAwIG9udG8gTUFDX01DUl9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmVcXG4rXFx0ICogMSBHYnBzIHdvdWxkIGJlIGdvdmVybmVkIGJ5IE1BQ19NQ1JfRUVFMUcgYW5kIGlzIHVudmFsaWRhdGVkXFxuK1xcdCAqIHJhdGhlciB0aGFuIHVuc3VwcG9ydGVkLlxcbitcXHQgKi9cXG4rXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcXG4gXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7XFxuIFxcbiBcXHQvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uXFxuQEAgLTQ5NjYsNiArNDk2OSwyNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuIFxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuIFxcdFxcdFxcdCAgbWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuIFxcbitcXHQvKiBtdGtfbWFjX2VuYWJsZV90eF9scGkoKSBwcm9ncmFtcyB3YWtlLXVwIHRpbWVzIGJvcnJvd2VkIGZyb21cXG4rXFx0ICogTVQ3NTMxOyBvbmx5IFNvQ3Mgd2hlcmUgdGhvc2UgaGF2ZSBiZWVuIHNlZW4gdG8gZXhpdCBMUEkgY2xlYW5seVxcbitcXHQgKiBnZXQgTFBJIGludGVyZmFjZXMuXFxuK1xcdCAqL1xcbitcXHRpZiAoTVRLX0hBU19DQVBTKGV0aC1cXHUwMDNlc29jLVxcdTAwM2VjYXBzLCBNVEtfR01BQ19FRUUpKSB7XFxuK1xcdFxcdHBoeV9pbnRlcmZhY2VfY29weShtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzLFxcbitcXHRcXHRcXHRcXHQgICBtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFxuK1xcdFxcdC8qIFRoZSBNQUMgc2lkZSBvZiAyNTAwQkFTRS1YIGlzIG5ldmVyIGJlbG93IDIuNSBHYnBzLCBub3RcXG4rXFx0XFx0ICogZXZlbiB3aGVuIGEgcmF0ZSBtYXRjaGluZyBQSFkgZHJvcHMgdGhlIG1lZGlhIHRvIDEgR2JwcyxcXG4rXFx0XFx0ICogYW5kIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHJlZnVzZXMgdGhlIHhHTUlJIG1vZGVzXFxuK1xcdFxcdCAqIG91dHJpZ2h0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcXG4rXFx0XFx0XFx0ICAgIG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSsrKVxcbitcXHRcXHRcXHRpZiAobXRrX2ludGVyZmFjZV9tb2RlX2lzX3hnbWlpKGV0aCwgaSkpXFxuK1xcdFxcdFxcdFxcdF9fY2xlYXJfYml0KGksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcXG4rXFx0fVxcbitcXG4gXFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbiBcXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbiBcXHRcXHRcXHRcXHQgcGh5X21vZGUsIG1hY19vcHMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaFxcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcXG5AQCAtOTk0LDYgKzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xcbiBcXHRNVEtfVTNfQ09QSFlfVjJfQklULFxcbiBcXHRNVEtfU1JBTV9CSVQsXFxuIFxcdE1US18zNkJJVF9ETUFfQklULFxcbitcXHRNVEtfR01BQ19FRUVfQklULFxcbiBcXG4gXFx0LyogTVVYIEJJVFMqL1xcbiBcXHRNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTV19CSVQsXFxuQEAgLTEwMzQsNiArMTAzNSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlxcdFxcdEJJVF9VTEwoTVRLX1UzX0NPUEhZX1YyX0JJVClcXG4gI2RlZmluZSBNVEtfU1JBTVxcdFxcdEJJVF9VTEwoTVRLX1NSQU1fQklUKVxcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcXHRCSVRfVUxMKE1US18zNkJJVF9ETUFfQklUKVxcbisjZGVmaW5lIE1US19HTUFDX0VFRVxcdFxcdEJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVClcXG4gXFxuICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dcXHRcXHRcXFxcXFxuIFxcdEJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKVxcbkBAIC0xMTE3LDcgKzExMTksNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcXG4gI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFxcXFxcXG4gXFx0XFx0ICAgICAgTVRLX01VWF9HTUFDMTJfVE9fR0VQSFlfU0dNSUkgfCBNVEtfUURNQSB8IFxcXFxcXG4gXFx0XFx0ICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXFxcXFxcbi1cXHRcXHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pXFxuK1xcdFxcdCAgICAgIE1US19SU1RDVFJMX1BQRTEgfCBNVEtfU1JBTSB8IE1US19HTUFDX0VFRSlcXG4gXFxuICNkZWZpbmUgTVQ3OTg2X0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBcXFxcXFxuIFxcdFxcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjI1LjU2NzU2NjE5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjY3NjIxMTg1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMzYzNmE3ZjkyYThmMjk0NGUzMWQwNTg4ZjM1MDRhZWE4NjlhY2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggMmI3YmUwOTFjMDU2ZS4uYTE4OGEzOTFiNjUwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzE3MiwyMyArMzE3MiwzOCBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFxuIFx0Y29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4gXG4rXHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4rXG4gXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXG4gXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXG4gXHQgKiBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIExlYXZlIHRoZSBMUEkgY2FwYWJpbGl0aWVzIGVtcHR5IHNvIHRoYXRcbiBcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cbi1cdCAqIHVzZXJzcGFjZS5cbitcdCAqIHVzZXJzcGFjZS4gUG9ydHMgdGhhdCBydW4gYXQgbmVpdGhlciAxMDAgTWJwcyBub3IgMSBHYnBzIGFyZSBsZWZ0XG4rXHQgKiBlbXB0eSB0b28sIHNpbmNlIExQSSBhYm92ZSAxIEdicHMgaXMgdW52YWxpZGF0ZWQuXG4gXHQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWlkICE9IElEX0VONzUyOCkge1xuK1x0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4IFx1MDAyNlx1MDAyNlxuK1x0ICAgIGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFx1MDAyNiAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCkpIHtcbiBcdFx0dTMyIGVlZWNyID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1BNRUVFQ1JfUChwb3J0KSk7XG4gXG4tXHRcdGNvbmZpZy1cdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4rXHRcdC8qIFBNQ1IgZm9sZHMgU1BFRURfMjUwMCBhbmQgU1BFRURfMTAwMDAgb250b1xuK1x0XHQgKiBQTUNSX0ZPUkNFX1NQRUVEXzEwMDAsIHNvIExQSSBhYm92ZSAxIEdicHMgd291bGQgYmVcbitcdFx0ICogZ292ZXJuZWQgYnkgUE1DUl9GT1JDRV9FRUUxRyBhbmQgaXMgdW52YWxpZGF0ZWQgcmF0aGVyIHRoYW5cbitcdFx0ICogdW5zdXBwb3J0ZWQuIExlYXZlIGl0IG91dCBvZiBib3RoIGJpdG1hcHM6IGxwaV9jYXBhYmlsaXRpZXNcbitcdFx0ICogZ2F0ZXMgb24gdGhlIG1lZGlhIHNwZWVkIGEgcmF0ZSBtYXRjaGluZyBQSFkgcmVwb3J0cywgbm90XG4rXHRcdCAqIG9uIHRoZSBzcGVlZCB0aGUgTUFDIHJ1bnMgYXQuXG4rXHRcdCAqL1xuK1x0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFx1MDAyNlxuK1x0XHRcdFx0XHQgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7XG4rXHRcdHBoeV9pbnRlcmZhY2VfY29weShjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMsXG4rXHRcdFx0XHQgICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0XHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuK1x0XHRcdCAgICBjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xuK1xuIFx0XHQvKiB0eF9scGlfdGltZXIgc2hvdWxkIGJlIGluIG1pY3Jvc2Vjb25kcy4gVGhlIHRpbWUgdW5pdHMgZm9yXG4gXHRcdCAqIExQSSB0aHJlc2hvbGQgYXJlIHVuc3BlY2lmaWVkLlxuIFx0XHQgKi9cbiBcdFx0Y29uZmlnLVx1MDAzZWxwaV90aW1lcl9kZWZhdWx0ID0gRklFTERfR0VUKExQSV9USFJFU0hfTUFTSywgZWVlY3IpO1xuIFx0fVxuLVxuLVx0cHJpdi1cdTAwM2VpbmZvLVx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG10NzUzeF9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbmluZGV4IGJlM2JkMDI1YzQxYTEuLjA5ZjUzODc1ZDEwMGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5AQCAtNDgyOCw3ICs0ODI4LDcgQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuIFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuIFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XG4gXHRzdHJ1Y3QgbXRrX21hYyAqbWFjO1xuLVx0aW50IGlkLCBlcnI7XG4rXHRpbnQgaWQsIGVyciwgaTtcbiBcdGludCB0eHFzID0gMTtcbiBcdHUzMiB2YWw7XG4gXG5AQCAtNDkwNyw4ICs0OTA3LDExIEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4gXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8XG4gXHRcdE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7XG4tXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfFxuLVx0XHRNQUNfMjUwMEZEO1xuK1x0LyogTUFDX01DUiBmb2xkcyBTUEVFRF8yNTAwIG9udG8gTUFDX01DUl9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmVcbitcdCAqIDEgR2JwcyB3b3VsZCBiZSBnb3Zlcm5lZCBieSBNQUNfTUNSX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZFxuK1x0ICogcmF0aGVyIHRoYW4gdW5zdXBwb3J0ZWQuXG4rXHQgKi9cbitcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7XG4gXG4gXHQvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uXG5AQCAtNDk2Niw2ICs0OTY5LDI3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiBcdFx0XHQgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXG4rXHQvKiBtdGtfbWFjX2VuYWJsZV90eF9scGkoKSBwcm9ncmFtcyB3YWtlLXVwIHRpbWVzIGJvcnJvd2VkIGZyb21cbitcdCAqIE1UNzUzMTsgb25seSBTb0NzIHdoZXJlIHRob3NlIGhhdmUgYmVlbiBzZWVuIHRvIGV4aXQgTFBJIGNsZWFubHlcbitcdCAqIGdldCBMUEkgaW50ZXJmYWNlcy5cbitcdCAqL1xuK1x0aWYgKE1US19IQVNfQ0FQUyhldGgtXHUwMDNlc29jLVx1MDAzZWNhcHMsIE1US19HTUFDX0VFRSkpIHtcbitcdFx0cGh5X2ludGVyZmFjZV9jb3B5KG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyxcbitcdFx0XHRcdCAgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXG4rXHRcdC8qIFRoZSBNQUMgc2lkZSBvZiAyNTAwQkFTRS1YIGlzIG5ldmVyIGJlbG93IDIuNSBHYnBzLCBub3RcbitcdFx0ICogZXZlbiB3aGVuIGEgcmF0ZSBtYXRjaGluZyBQSFkgZHJvcHMgdGhlIG1lZGlhIHRvIDEgR2JwcyxcbitcdFx0ICogYW5kIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHJlZnVzZXMgdGhlIHhHTUlJIG1vZGVzXG4rXHRcdCAqIG91dHJpZ2h0LlxuK1x0XHQgKi9cbitcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbitcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSsrKVxuK1x0XHRcdGlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSlcbitcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4rXHRcdFx0XHRcdCAgICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xuK1x0fVxuK1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgKzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuIFx0TVRLX1UzX0NPUEhZX1YyX0JJVCxcbiBcdE1US19TUkFNX0JJVCxcbiBcdE1US18zNkJJVF9ETUFfQklULFxuK1x0TVRLX0dNQUNfRUVFX0JJVCxcbiBcbiBcdC8qIE1VWCBCSVRTKi9cbiBcdE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCxcbkBAIC0xMDM0LDYgKzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4rI2RlZmluZSBNVEtfR01BQ19FRUVcdFx0QklUX1VMTChNVEtfR01BQ19FRUVfQklUKVxuIFxuICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dcdFx0XFxcbiBcdEJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKVxuQEAgLTExMTcsNyArMTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuICNkZWZpbmUgTVQ3OTgxX0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBNVEtfR01BQzJfR0VQSFkgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXFxcbiBcdFx0ICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXFxcbi1cdFx0ICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNKVxuK1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MjUuNTY3NTY4MjgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDUzMDIzMTE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgZnV6emluZyBpcyBhIHZpYWJsZSBhcHByb2FjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaW52b2x2ZXMgYSBmZXcga2V5IHN0ZXBzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb24uIFNwZWNpZmljYWxseSwgSSBzZWUgY2hhbmdlcyBpbXBhY3RpbmcgdGhyZWUgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaGAuIFRoYXQncyB0aGUgTWVkaWF0ZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChEU0Egc3dpdGNoIGRyaXZlcikgYW5kIGEgTWVkaWF0ZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgTUFDIGRyaXZlciwgcmVzcGVjdGl2ZWx5LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpbnZvbHZlcyBoYXJkd2FyZS1sZXZlbCBpbnRlcmFjdGlvbi4gSXMgdGhlIE1lZGlhdGVrIEV0aGVybmV0IFNvQyBhbmQgTVQ3NTMwIERTQSBzd2l0Y2ggYSBwaHlzaWNhbCBTb0MgcGxhdGZvcm0gZHJpdmVyPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQncyB0aGUgY3J1Y2lhbCBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBwYXRjaCB0b3VjaGVzIGxvdy1sZXZlbCBoYXJkd2FyZSBjb21tdW5pY2F0aW9uLiBJJ2xsIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBNeSBuZXh0IG1vdmUgaXMgdG8gY2xvc2VseSBleGFtaW5lIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgbWVudGlvbmVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9gIGFuZCBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB3ZSdyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUgaW50ZXJhY3Rpb24uXG5cbkkgdGhpbmsgSSdsbCB1c2UgYGdyZXBwZXJgIG9yIGp1c3QgcmVhZCB0aHJvdWdoIHRoZSBmaWxlcyBkaXJlY3RseSB0byBkZXRlcm1pbmUgd2hhdCB3ZSdyZSBhY3R1YWxseSBtb2RpZnlpbmcuIE9uY2UgSSBoYXZlIGEgaGFuZGxlIG9uIHRoZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiwgSSBjYW4gdGhlbiBjb25zaWRlciBob3cgZnV6emluZyB3b3VsZCBmaXQgaW50byB0aGUgdGVzdGluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjMwLjA5NzgwMTk1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1NjgzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfRFNBX01UNzUzMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXFx0c2VsZWN0IFJFR01BUF9JUlFcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNTpcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ2LVxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTY6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgKz0gbXQ3NjI4Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MzAuMTQ2ODYzNjYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5NjM4MjQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQncyBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnYC4gSSdtIGd1ZXNzaW5nIHRoaXMgZmlsZSB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBkcml2ZXIg4oCTIHRoaW5ncyBsaWtlIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgZHJpdmVyLCBzZWxlY3Rpbmcgc3BlY2lmaWMgTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlciBtb2RlbHMsIHBvdGVudGlhbGx5IG9wdGlvbnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIHZhcmlhdGlvbnMsIGFuZCBwcm9iYWJseSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBoZXJlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgcG9zc2libHkgdHJvdWJsZXNob290IGFueXRoaW5nIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlcnMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGRlZmF1bHQgc2V0dGluZ3MsIGFueSBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucywgYW5kIHBhcnRpY3VsYXJseSBhbnkgdHJpY2t5IGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmtpbmcgb3IgaGFyZHdhcmUgc3Vic3lzdGVtcy4gSG9wZWZ1bGx5LCBpdOKAmXMgd2VsbC1vcmdhbml6ZWQgYW5kIGNsZWFybHkgZG9jdW1lbnRlZCwgYnV0IEknbSBwcmVwYXJlZCBmb3IgYSBiaXQgb2YgYSBkZWVwIGRpdmUgaWYgbmVjZXNzYXJ5LiBJdCdzIHRpbWUgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozMi41NDMyNDkwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE2NDMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfTUVESUFURUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz04PWlmIE5FVF9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMDpjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEyOlxcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxNDpjb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6Mjk6Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBTVEFSIEV0aGVybmV0IE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS03LW10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlOjg6bXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgKz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtOS1pZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMDptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTExLWVuZGlmXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX29wcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TVEFSX0VNQUMpICs9IG10a19zdGFyX2VtYWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM9OTI9bXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTA0OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwNS1cXHRcXHRyZXR1cm4gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmg9NTY9c3RydWN0IG10a193ZG1hX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaDo2NDojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTY1LXN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2lzX3YxKHN0cnVjdCBtdGtfd2VkX2h3ICpodylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MzIuNTk3NDE3NjU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM3NDI3MDc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERyaXZlciBSZWFjaGFiaWxpdHkgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgc29tZXRoaW5nIGhlcmUuIEknbSB3b25kZXJpbmcgaWYgdGhlIGNvZGUgd2l0aGluIGBtdGtfZXRoX3NvYy5jYCBhbmQgYG10NzUzMC5jYCBpcyBhY3R1YWxseSBhY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIG9yIGlmIGl0J3Mgc3RyaWN0bHkgdGllZCB0byBNZWRpYVRlayBTb0MgaGFyZHdhcmUg4oCTIHNwZWNpZmljYWxseSB0aG9zZSBBUk0gb3IgTUlQUyBNZWRpYVRlayByb3V0ZXIgU29DcywgbGlrZSB0aGUgTVQ3NjIxLCBNVDc2MjIsIE1UNzYyMywgTVQ3OTgxLCBvciBNVDc5ODYsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGguIFRoZSBrZXkgaGVyZSBpcyBkZXRlcm1pbmluZyB0aGUgZGVwZW5kZW5jaWVzLlxuXG5UbyBkbyB0aGF0LCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIGZvY3VzIG9uIHRoZSBwcm9iZSBmdW5jdGlvbnMgYW5kIGRyaXZlciByZWdpc3RyYXRpb24gc2VxdWVuY2VzIHdpdGhpbiBib3RoIGZpbGVzLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gYSB3YXkgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdmlydHVhbGl6YXRpb24sIG9yIGlmIGl0IGhhcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGNoZWNrcyB0aGF0IHdvdWxkIHByZXZlbnQgaXQgZnJvbSBydW5uaW5nIG91dHNpZGUgb2YgdGhlIGFjdHVhbCBNZWRpYVRlayBzaWxpY29uLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcyMywiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozNS45NzE2OTEzMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MTI5MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8bW9kdWxlX21kaW9fZHJpdmVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcnxtZGlvX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozNi4wMjA0MTQxMDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTQwNzU5ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgTVQ3NTMwIERyaXZlciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NTMwIHN3aXRjaCBpcyBiZWluZyBpbnRlcmZhY2VkLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGRyaXZlciBjb2RlLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgcmV2aWV3aW5nIHRoZSBpbXBsZW1lbnRhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jYC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHJlZ2lzdGVyIGFjY2VzcyBhbmQgY29tbXVuaWNhdGlvbiBhcmUgaGFuZGxlZCB1c2luZyBib3RoIE1ESU8gYW5kIE1NSU8uIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ3JlYXQgb3ZlcnZpZXcgb2YgdGhlIGRpZmZlcmVudCBhY2Nlc3MgbWV0aG9kcyBhdmFpbGFibGUuIFRoZW4sIEknbGwgbmVlZCB0byBsb29rIGF0IGhvdyB0aGlzIGFsbCB0aWVzIGludG8gdGhlIE1lZGlhVGVrIEV0aGVybmV0IFNvQyBnZW5lcmFsbHkuIEkgd2lsbCB0aGVyZWZvcmUgY2hlY2sgYG10a19ldGhfc29jLmNgIHRvIHNlZSBob3cgdGhlIHN3aXRjaCBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB0aGUgU29DJ3MgRXRoZXJuZXQgc3Vic3lzdGVtLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBkYXRhIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozOC45NjExNzc2NDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTA5MTg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM5LjAxNDEwMDg5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTMxMTM5MDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERTQSBOZXR3b3JrIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBhbmQgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSwgdGhlIGxpa2VseSBjdWxwcml0IGlzIHJlbGF0ZWQgdG8gRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKS4gVGhlcmVmb3JlLCBteSBmaXJzdCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGRyaXZlciBjb2RlIGFuZCByZWxldmFudCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgc3RhbmRhcmQgRFNBIGNvcmUgZmlsZXMsIHN3aXRjaCBkcml2ZXJzIGZvciB2YXJpb3VzIGNoaXBzZXRzLCBhbmQgcGVyaGFwcyBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGdsdWUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIGFueSBjbHVlcyB0aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo0MS4xNDUyNDMxMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4MTc0OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTMwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTkxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgKz0gbXQ3NjI4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2OiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc0Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NjpcXHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NzpcXHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTkwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo5MTptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTItXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMzpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExNDpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTUtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZWxvY2tfYXJnID0gXFx1MDAyNnByaXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTc6XFx0XFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTgtXFx0XFx0XFx0XFx0XFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0MDpcXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMFxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE0MS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQzLX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1NzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjEwOlxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjExLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZWdtYXBfY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyMjptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjI1LVxcdGludCByZXQgPSAwLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI0MDpcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQ2OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTg6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5OlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYwOlxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcXHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjM6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1kaW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc1MzBfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MTA6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzA9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzEte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjMyOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zMy1cXHR2b2lkIF9faW9tZW0gKmJhc2VfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTY3PXN0YXRpYyB2b2lkIG10Nzk4OF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02OC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6Njk6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXFx0aWYgKHByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzI6XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzU9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc3OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9ODc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkxLVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6OTI6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1taW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkzLVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4OF9vZl9tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXFx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFxcXCJUeERyb3BcXFwiKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDI6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ2OmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTUyOmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1ODptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjUtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2NjpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHdyaXRlIG10NzUzMCByZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNzE9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODAtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4MTpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHJlYWQgbXQ3NTMwIHJlZ2lzdGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTgyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE4OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTptdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkzOlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NTpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTc6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIwMj1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMzpfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA3OlxcdG10NzUzMF9tdXRleF9sb2NrKHAtXFx1MDAzZXByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwOTpcXHR2YWwgPSBtdDc1MzBfbWlpX3JlYWQocC1cXHUwMDNlcHJpdiwgcC1cXHUwMDNlcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTE6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwLVxcdTAwM2Vwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIxNj1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxNzptdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxOTpcXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjEtXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIyOlxcdHJldHVybiBfbXQ3NTMwX3JlYWQoXFx1MDAyNnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyNT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjY6bXQ3NTMwX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNy1cXHQgICB1MzIgbWFzaywgdTMyIHNldClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzM6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3Om10NzUzMF9zZXQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk6XFx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQzOm10NzUzMF9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0NTpcXHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDk6bXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU1LVxcdHZhbCA9IEFUQ19CVVNZIHwgQVRDX01BVCgwKSB8IGNtZDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU2OlxcdHJldCA9IG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2MDpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY3OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yODY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg3Om10NzUzMF9mZGJfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHN0cnVjdCBtdDc1MzBfZmRiICpmZGIpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjk0OlxcdFxcdHJlZ1tpXSA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9UU1JBMSArIChpICogNCkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzEyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxMzptdDc1MzBfZmRiX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTE2IHZpZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzE0LVxcdFxcdCB1OCBwb3J0X21hc2ssIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzOTpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgKyAoaSAqIDQpLCByZWdbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0Mi0vKiBTZXQgdXAgc3dpdGNoIGNvcmUgY2xvY2sgZm9yIE1UNzUzMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDM6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzgzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NDptdDc1MzBfc2V0dXBfcG9ydDYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozODY6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ny1cXHR1MzIgbmNwbzEsIHNzY19kZWx0YSwgeHRhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTItXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzkzOlxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk0LVxcdFxcdFxcdCAgIFA2X0lOVEZfTU9ERSgwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTg6XFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQwMDpcXHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcXHUwMDI2IE1UNzUzMF9YVEFMX01BU0s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00MzY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM3Om10NzUzMV9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DUkVWKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ1OlxcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NjpcXHRod3N0cmFwID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1RSQVApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDctXFx0aWYgKCh2YWwgXFx1MDAyNiBDSElQX1JFVl9NKSBcXHUwMDNlIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU0LVxcdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU1OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1Ni1cXHR2YWwgXFx1MDAyNj0gfkVOX0NPUkVQTEw7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NzpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OS1cXHQvKiBTdGVwIDI6IHN3aXRjaCB0byBYVEFMIG91dHB1dCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjA6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYxLVxcdHZhbCB8PSBTV19DTEtTVztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYyOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjUtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjY6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY4LVxcdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cXHR2YWwgfD0gU1dfUExMR1A7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ3MTpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3My1cXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfUE9TRElWX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Ni1cXHR2YWwgfD0gMiBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODEtXFx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzI1TUhaOlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODI6XFx0XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4My1cXHRcXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODQtXFx0XFx0dmFsIHw9IDB4MTQwMDAwIFxcdTAwM2NcXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODU6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ni1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg3LVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg4OlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODktXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDkwLVxcdFxcdHZhbCB8PSAweDE5MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkxOlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk1LVxcdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5NjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk3LVxcdHZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cXHQvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBYVEFMIGNsb2NrcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cXHQvKiBTdGVwIDU6IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAzOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDQtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDU6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA3LVxcdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEwLVxcdC8qIEVuYWJsZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMTpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVxcdC8qIFN0ZXAgNjogRW5hYmxlIE1UNzUzMSBQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTUtXFx0dmFsIHw9IFJHX0NPUkVQTExfRU47XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNjpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTg6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTE5LVxcdHZhbCB8PSBFTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjA6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIxLVxcdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUyND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjU6bXQ3NTMwX21pYl9yZXNldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjk6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0ZMVVNIKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9BQ1RJVkFURSk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMS19XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMzOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM4OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM5LVxcdFxcdFxcdFxcdHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDQ6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0NS1cXHRcXHRcXHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0OS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTUwOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTEtXFx0XFx0XFx0XFx0aW50IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTc6bXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTgtXFx0XFx0XFx0aW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU2MzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3My1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3NDpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3NS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODYtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODc6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjAwOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02MDU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjA3LVxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxMjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMi1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYyMzpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzUtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM2OlxcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0Ny1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0ODpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU0Om10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTk6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3MTpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODMtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2ODQ6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjg1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5MDptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjkxLVxcdFxcdFxcdCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5NjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjk3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzA4OlxcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzA5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcxOS1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjcyMDpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzI2PW10NzUzeF9waHlfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyNy17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjcyODpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03MzQ9bXQ3NTN4X3BoeV9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MzUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MzY6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MzctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzQyPW10NzUzeF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NDQ6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzUwPW10NzUzeF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2YWQsIGludCByZWdudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzUyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzUzOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzU0LVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjQxLjIwMjA2OTE3OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTgxNTc2MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBNZWRpYVRlayBFdGhlcm5ldCBEcml2ZXJzKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEZpcnN0LCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBleGFjdGx5IE1UNzUzMCBhbmQgbXRrX2V0aF9zb2MgYXJlLiBSaWdodCwgTVQ3NTMwIGlzIHRoYXQgc3dpdGNoIElDLCB0eXBpY2FsbHkgY29ubmVjdGVkIHZpYSBNRElPIG9yIE1NSU8gd2hlbiBwYWlyZWQgd2l0aCBNZWRpYVRlayBTb0NzIGxpa2UgdGhlIE1UNzk4OC4gR290IGl0LiBBbmQgYG10a19ldGhfc29jYD8gVGhhdCdzIHRoZSBFdGhlcm5ldCBNQUMgZHJpdmVyIHRhaWxvcmVkIGZvciBNZWRpYVRlayByb3V0ZXIgU29DcyDigJMgdGhlIHVzdWFsIHN1c3BlY3RzIGxpa2UgTVQ3NjIwLCBNVDc2MjEsIGFuZCBzbyBvbiwgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIE1UNzk4OC5cblxuU28sIGFyZSB0aGVzZSBlc3NlbnRpYWxseSBwbGF0Zm9ybSBhbmQvb3IgTURJTyBkcml2ZXJzIGZvciBNZWRpYVRlayBoYXJkd2FyZT8gTGV0J3MgY29uZmlybSB0aGF0LiBBaCwgeWVzLCBgbXRrX2V0aF9zb2MuY2AgaXMgZGVmaW5pdGVseSByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLiBJIHNlZSB0aGUgdGVsbHRhbGUgc2lnbnM6IGBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0geyAuLi4gLmRyaXZlciA9IHsgLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKG9mX210a19tYXRjaCksIC4uLiB9IH07YCBhbmQgdGhlIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO2AuIFRoYXQgY2xlYXJseSBpbmRpY2F0ZXMgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciwgbWF0Y2hpbmcgYmFzZWQgb24gdGhlIGRldmljZSB0cmVlLCBhcyBleHBlY3RlZC4gTm93LCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBkcml2ZXIuIExldCBtZSBjaGVjayBgbXRrX2V0aF9zb2MuY2AgZGlyZWN0bHkuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6NDQuMzgzNjQ4NTQ1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQwMjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY5MD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY5OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTcwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNzQ5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19zdGFyX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE3NTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfc3Rhcl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo0NC40MjkwNTY2MjNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzkwMDU4MTczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGlzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIHJ1bGVzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNoYW5nZXMgdGhhdCBjYW4gYmUgbWVhbmluZ2Z1bGx5IGZ1enplZCBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50LiBMZXQncyBzZWU6IG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcywgbnVtZXJpYyBjb25zdGFudCBjaGFuZ2VzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIGFyZSBhbGwgbm8tZ29zIGZvciBmdXp6aW5nLlxuXG5Ob3csIGhvbGQgb24gYSBzZWNvbmQuLi4gVGhpcyBwYXRjaCB0b3VjaGVzIHBsYXRmb3JtIGRyaXZlcnMgZm9yIE1lZGlhVGVrIFNvQ3MuIEFyZSB0aG9zZSBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBRRU1VIG9yIEdDRSBzZXR1cD8gTXkgZXhwZXJpZW5jZSBzYXlzIG5vLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gU3RhbmRhcmQgZnV6emluZyByZWxpZXMgb24geDg2XzY0IG9yIGFybTY0IFFFTVUvR0NFLCBhbmQgdGhlc2UgZG9uJ3QgdHlwaWNhbGx5IGluY2x1ZGUgZW11bGF0ZWQgTWVkaWFUZWsgU29DIGRldmljZXMgb3IgdGhlaXIgYXNzb2NpYXRlZCBkZXZpY2UgdHJlZXMuIFFFTVUgZ2VuZXJhbGx5IHByZXNlbnRzIHZpcnRpbywgUEwwMTEsIGFuZCBzaW1pbGFyIHZpcnR1YWwgaGFyZHdhcmUgaW4gaXRzIGRldmljZSB0cmVlLlxuXG5TcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCB3aGljaCBoYW5kbGVzIE1lZGlhVGVrIEV0aGVybmV0LiBUaGUgZHJpdmVyIHJlbGllcyBvbiBPcGVuRmlybXdhcmUgKE9GKSBjb21wYXRpYmxlIHN0cmluZ3MgbGlrZSBgbWVkaWF0ZWssbXQyNzAxLWV0aGAsIGBtZWRpYXRlayxtdDc2MjItZXRoYCwgZXRjLiBUaGVyZSdzIGFsc28gdGhlIE1UNzUzMCBEU0Egc3dpdGNoLCB3aGljaCBsb29rcyBmb3Igc3RyaW5ncyBsaWtlIGBtZWRpYXRlayxtdDc2MjFgLCBgbWVkaWF0ZWssbXQ3NTMwYC5cblxuVGhlIHByb2JsZW0gaXMgdGhlc2UgZGV2aWNlcyDigJMgdGhlIEV0aGVybmV0IE1BQyBhbmQgdGhlIERTQSBzd2l0Y2ggY29udHJvbGxlciDigJMgKnJlcXVpcmUqIHRoZSB1bmRlcmx5aW5nIE1lZGlhVGVrIFNvQyBoYXJkd2FyZSwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIGEgKnNwZWNpZmljKiBTb0MgRFRCLiAgU3RhbmRhcmQgUUVNVS9HQ0UgZG9lc24ndCBlbXVsYXRlIHRob3NlLiBTbywgbmVpdGhlciBkcml2ZXIgd2lsbCBwcm9iZSwgYW5kIHRoZWlyIHJ1bnRpbWUgY29kZSB3aWxsIGJlIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgY29uZmlybTogaXMgdGhlcmUgKmFueSogdmlydHVhbCBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZXNlIE1lZGlhVGVrIEV0aGVybmV0IG9yIERTQSBzd2l0Y2ggY29tcG9uZW50cz8gTm8sIGEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgdGhvc2UgZHJpdmVycyByZXF1aXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGRldmljZSBvciB0aGUgTURJTyBidXMgdG8gZXZlbiBwcm9iZSBhbmQgaW5zdGFudGlhdGUgdGhlaXIgbmV0d29yayBkZXZpY2VzLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB3aXRoaW4gZHJpdmVycyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgaXQncyBhIGNsZWFyIGNhc2UuIFRoaXMgaXNuJ3Qgc29tZXRoaW5nIHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6LlxuXG5UaW1lIGZvciBhIGZpbmFsIHNhbml0eSBjaGVjayBvZiB0aGUgb3V0cHV0IEknbSBhYm91dCB0byBzdWJtaXQ6XG4qICAgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC5cbiogICBgRW5hYmxlQ29uZmlnc2Agd29uJ3QgYmUgbmVjZXNzYXJ5OyB3ZSdyZSBub3QgZW5hYmxpbmcgYW55dGhpbmcgaGVyZS5cbiogICBgRm9jdXNTeW1ib2xzYCBpcyBlbXB0eS5cbiogICBUaGUgYFJlYXNvbmluZ2AgbmVlZHMgdG8gYmUgY3J5c3RhbCBjbGVhcjogdGhpcyBwYXRjaCBpbnZvbHZlcyBNZWRpYVRlayBTb0MgRXRoZXJuZXQgYW5kIERTQSBzd2l0Y2ggZHJpdmVycyAobXRrX2V0aF9zb2MgYW5kIG10NzUzMCkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvZGV2aWNlIHRyZWUgbm9kZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB3aGljaCBtYWtlcyB0aGVtIHVuZnV6emFibGUgaW4gc3VjaCBjb250ZXh0cy5cblxuT2theSwgdGhhdCBhbGwgbG9va3Mgc29saWQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc4MywiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6NTIuMzI5NjQwOTgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZL0xQSSBjYXBhYmlsaXR5IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBNVDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykgYW5kIHRoZSBNZWRpYVRlayBTb0MgRXRoZXJuZXQgTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvcGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo1Mi4zMjk2ODY5OTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowjfkfm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 21:42:55 +0000 UTC FinishedAt: 2026-09-02 21:57:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZL0xQSSBjYXBhYmlsaXR5IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBNVDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykgYW5kIHRoZSBNZWRpYVRlayBTb0MgRXRoZXJuZXQgTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvcGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMzYzNmE3ZjkyYThmMjk0NGUzMWQwNTg4ZjM1MDRhZWE4NjlhY2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbmluZGV4IDJiN2JlMDkxYzA1NmUuLmExODhhMzkxYjY1MDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuQEAgLTMxNzIsMjMgJiM0MzszMTcyLDM4IEBAIHN0YXRpYyB2b2lkIG10NzUzeF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gXG4gXHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTtcbiBcbiYjNDM7XHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4mIzQzO1xuIFx0LyogVGhlIEVONzUyOCBHUEhZcyByZXBvcnQgRUVFIGNhcGFiaWxpdHksIGJ1dCBuZWdvdGlhdGluZyBFRUUgd2l0aFxuIFx0ICogY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhbiB1bnN0YWJsZVxuIFx0ICogbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBMZWF2ZSB0aGUgTFBJIGNhcGFiaWxpdGllcyBlbXB0eSBzbyB0aGF0XG4gXHQgKiBwaHlsaW5rIGRpc2FibGVzIEVFRSBvbiB0aGVzZSBQSFlzIGFuZCByZWZ1c2VzIHRvIGVuYWJsZSBpdCBmcm9tXG4tXHQgKiB1c2Vyc3BhY2UuXG4mIzQzO1x0ICogdXNlcnNwYWNlLiBQb3J0cyB0aGF0IHJ1biBhdCBuZWl0aGVyIDEwMCBNYnBzIG5vciAxIEdicHMgYXJlIGxlZnRcbiYjNDM7XHQgKiBlbXB0eSB0b28sIHNpbmNlIExQSSBhYm92ZSAxIEdicHMgaXMgdW52YWxpZGF0ZWQuXG4gXHQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWlkICE9IElEX0VONzUyOCkge1xuJiM0MztcdGlmIChwcml2LVx1MDAzZWlkICE9IElEX0VONzUyOCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgY29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgXHUwMDI2IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkge1xuIFx0XHR1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTtcbiBcbi1cdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDtcbiYjNDM7XHRcdC8qIFBNQ1IgZm9sZHMgU1BFRURfMjUwMCBhbmQgU1BFRURfMTAwMDAgb250b1xuJiM0MztcdFx0ICogUE1DUl9GT1JDRV9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmUgMSBHYnBzIHdvdWxkIGJlXG4mIzQzO1x0XHQgKiBnb3Zlcm5lZCBieSBQTUNSX0ZPUkNFX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZCByYXRoZXIgdGhhblxuJiM0MztcdFx0ICogdW5zdXBwb3J0ZWQuIExlYXZlIGl0IG91dCBvZiBib3RoIGJpdG1hcHM6IGxwaV9jYXBhYmlsaXRpZXNcbiYjNDM7XHRcdCAqIGdhdGVzIG9uIHRoZSBtZWRpYSBzcGVlZCBhIHJhdGUgbWF0Y2hpbmcgUEhZIHJlcG9ydHMsIG5vdFxuJiM0MztcdFx0ICogb24gdGhlIHNwZWVkIHRoZSBNQUMgcnVucyBhdC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0Y29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMgPSBjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcdTAwMjZcbiYjNDM7XHRcdFx0XHRcdCAgIChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKTtcbiYjNDM7XHRcdHBoeV9pbnRlcmZhY2VfY29weShjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMsXG4mIzQzO1x0XHRcdFx0ICAgY29uZmlnLVx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XHRcdF9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXG4mIzQzO1x0XHRcdCAgICBjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xuJiM0MztcbiBcdFx0LyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvclxuIFx0XHQgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC5cbiBcdFx0ICovXG4gXHRcdGNvbmZpZy1cdTAwM2VscGlfdGltZXJfZGVmYXVsdCA9IEZJRUxEX0dFVChMUElfVEhSRVNIX01BU0ssIGVlZWNyKTtcbiBcdH1cbi1cbi1cdHByaXYtXHUwMDNlaW5mby1cdTAwM2VtYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcbiB9XG4gXG4gc3RhdGljIGludCBtdDc1M3hfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5pbmRleCBiZTNiZDAyNWM0MWExLi4wOWY1Mzg3NWQxMDBmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xuQEAgLTQ4MjgsNyAmIzQzOzQ4MjgsNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XG4gXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcbiBcdHN0cnVjdCBtdGtfbWFjICptYWM7XG4tXHRpbnQgaWQsIGVycjtcbiYjNDM7XHRpbnQgaWQsIGVyciwgaTtcbiBcdGludCB0eHFzID0gMTtcbiBcdHUzMiB2YWw7XG4gXG5AQCAtNDkwNyw4ICYjNDM7NDkwNywxMSBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuIFx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0UgfFxuIFx0XHRNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDAgfCBNQUNfMjUwMEZEO1xuLVx0bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHxcbi1cdFx0TUFDXzI1MDBGRDtcbiYjNDM7XHQvKiBNQUNfTUNSIGZvbGRzIFNQRUVEXzI1MDAgb250byBNQUNfTUNSX1NQRUVEXzEwMDAsIHNvIExQSSBhYm92ZVxuJiM0MztcdCAqIDEgR2JwcyB3b3VsZCBiZSBnb3Zlcm5lZCBieSBNQUNfTUNSX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZFxuJiM0MztcdCAqIHJhdGhlciB0aGFuIHVuc3VwcG9ydGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7XG4gXG4gXHQvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uXG5AQCAtNDk2Niw2ICYjNDM7NDk2OSwyNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG4gXHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4gXHRcdFx0ICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuIFxuJiM0MztcdC8qIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHByb2dyYW1zIHdha2UtdXAgdGltZXMgYm9ycm93ZWQgZnJvbVxuJiM0MztcdCAqIE1UNzUzMTsgb25seSBTb0NzIHdoZXJlIHRob3NlIGhhdmUgYmVlbiBzZWVuIHRvIGV4aXQgTFBJIGNsZWFubHlcbiYjNDM7XHQgKiBnZXQgTFBJIGludGVyZmFjZXMuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKE1US19IQVNfQ0FQUyhldGgtXHUwMDNlc29jLVx1MDAzZWNhcHMsIE1US19HTUFDX0VFRSkpIHtcbiYjNDM7XHRcdHBoeV9pbnRlcmZhY2VfY29weShtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsXG4mIzQzO1x0XHRcdFx0ICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgTUFDIHNpZGUgb2YgMjUwMEJBU0UtWCBpcyBuZXZlciBiZWxvdyAyLjUgR2Jwcywgbm90XG4mIzQzO1x0XHQgKiBldmVuIHdoZW4gYSByYXRlIG1hdGNoaW5nIFBIWSBkcm9wcyB0aGUgbWVkaWEgdG8gMSBHYnBzLFxuJiM0MztcdFx0ICogYW5kIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHJlZnVzZXMgdGhlIHhHTUlJIG1vZGVzXG4mIzQzO1x0XHQgKiBvdXRyaWdodC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbiYjNDM7XHRcdFx0ICAgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyk7XG4mIzQzO1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQSFlfSU5URVJGQUNFX01PREVfTUFYOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0aWYgKG10a19pbnRlcmZhY2VfbW9kZV9pc194Z21paShldGgsIGkpKVxuJiM0MztcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4mIzQzO1x0XHRcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgJiM0Mzs5OTQsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiBcdE1US19VM19DT1BIWV9WMl9CSVQsXG4gXHRNVEtfU1JBTV9CSVQsXG4gXHRNVEtfMzZCSVRfRE1BX0JJVCxcbiYjNDM7XHRNVEtfR01BQ19FRUVfQklULFxuIFxuIFx0LyogTVVYIEJJVFMqL1xuIFx0TVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklULFxuQEAgLTEwMzQsNiAmIzQzOzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4mIzQzOyNkZWZpbmUgTVRLX0dNQUNfRUVFXHRcdEJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVClcbiBcbiAjZGVmaW5lIE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXXHRcdFxcXG4gXHRCSVRfVUxMKE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVClcbkBAIC0xMTE3LDcgJiM0MzsxMTE5LDcgQEAgZW51bSBta3RfZXRoX2NhcGFiaWxpdGllcyB7XG4gI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX1UzX0dNQUMyX1RPX1FQSFkgfCBNVEtfVTNfQ09QSFlfVjIgfCBcXFxuLVx0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pXG4mIzQzO1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjM2MzZhN2Y5MmE4ZjI5NDRlMzFkMDU4OGYzNTA0YWVhODY5YWNlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMjE6NTc6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKaW5kZXggMmI3YmUwOTFjMDU2ZS4uYTE4OGEzOTFiNjUwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwpAQCAtMzE3MiwyMyAmIzQzOzMxNzIsMzggQEAgc3RhdGljIHZvaWQgbXQ3NTN4X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwKIAogCWNvbmZpZy0mZ3Q7bWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRTsKIAomIzQzOwlwcml2LSZndDtpbmZvLSZndDttYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTsKJiM0MzsKIAkvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoCiAJICogY29tbW9uIGxpbmsgcGFydG5lcnMgKGUuZy4gUmVhbHRlayBHYkUgTklDcykgcmVzdWx0cyBpbiBhbiB1bnN0YWJsZQogCSAqIGxpbmsgd2l0aCBkcm9wcGVkIGZyYW1lcy4gTGVhdmUgdGhlIExQSSBjYXBhYmlsaXRpZXMgZW1wdHkgc28gdGhhdAogCSAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb20KLQkgKiB1c2Vyc3BhY2UuCiYjNDM7CSAqIHVzZXJzcGFjZS4gUG9ydHMgdGhhdCBydW4gYXQgbmVpdGhlciAxMDAgTWJwcyBub3IgMSBHYnBzIGFyZSBsZWZ0CiYjNDM7CSAqIGVtcHR5IHRvbywgc2luY2UgTFBJIGFib3ZlIDEgR2JwcyBpcyB1bnZhbGlkYXRlZC4KIAkgKi8KLQlpZiAocHJpdi0mZ3Q7aWQgIT0gSURfRU43NTI4KSB7CiYjNDM7CWlmIChwcml2LSZndDtpZCAhPSBJRF9FTjc1MjggJmFtcDsmYW1wOwomIzQzOwkgICAgY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkgewogCQl1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTsKIAotCQljb25maWctJmd0O2xwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHwgTUFDXzI1MDBGRDsKJiM0MzsJCS8qIFBNQ1IgZm9sZHMgU1BFRURfMjUwMCBhbmQgU1BFRURfMTAwMDAgb250bwomIzQzOwkJICogUE1DUl9GT1JDRV9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmUgMSBHYnBzIHdvdWxkIGJlCiYjNDM7CQkgKiBnb3Zlcm5lZCBieSBQTUNSX0ZPUkNFX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZCByYXRoZXIgdGhhbgomIzQzOwkJICogdW5zdXBwb3J0ZWQuIExlYXZlIGl0IG91dCBvZiBib3RoIGJpdG1hcHM6IGxwaV9jYXBhYmlsaXRpZXMKJiM0MzsJCSAqIGdhdGVzIG9uIHRoZSBtZWRpYSBzcGVlZCBhIHJhdGUgbWF0Y2hpbmcgUEhZIHJlcG9ydHMsIG5vdAomIzQzOwkJICogb24gdGhlIHNwZWVkIHRoZSBNQUMgcnVucyBhdC4KJiM0MzsJCSAqLwomIzQzOwkJY29uZmlnLSZndDtscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLSZndDttYWNfY2FwYWJpbGl0aWVzICZhbXA7CiYjNDM7CQkJCQkgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7CiYjNDM7CQlwaHlfaW50ZXJmYWNlX2NvcHkoY29uZmlnLSZndDtscGlfaW50ZXJmYWNlcywKJiM0MzsJCQkJICAgY29uZmlnLSZndDtzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiYjNDM7CQlfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLAomIzQzOwkJCSAgICBjb25maWctJmd0O2xwaV9pbnRlcmZhY2VzKTsKJiM0MzsKIAkJLyogdHhfbHBpX3RpbWVyIHNob3VsZCBiZSBpbiBtaWNyb3NlY29uZHMuIFRoZSB0aW1lIHVuaXRzIGZvcgogCQkgKiBMUEkgdGhyZXNob2xkIGFyZSB1bnNwZWNpZmllZC4KIAkJICovCiAJCWNvbmZpZy0mZ3Q7bHBpX3RpbWVyX2RlZmF1bHQgPSBGSUVMRF9HRVQoTFBJX1RIUkVTSF9NQVNLLCBlZWVjcik7CiAJfQotCi0JcHJpdi0mZ3Q7aW5mby0mZ3Q7bWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7CiB9CiAKIHN0YXRpYyBpbnQgbXQ3NTN4X3Bjc192YWxpZGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jCmluZGV4IGJlM2JkMDI1YzQxYTEuLjA5ZjUzODc1ZDEwMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYwpAQCAtNDgyOCw3ICYjNDM7NDgyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAlwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7CiAJc3RydWN0IHBoeWxpbmsgKnBoeWxpbms7CiAJc3RydWN0IG10a19tYWMgKm1hYzsKLQlpbnQgaWQsIGVycjsKJiM0MzsJaW50IGlkLCBlcnIsIGk7CiAJaW50IHR4cXMgPSAxOwogCXUzMiB2YWw7CiAKQEAgLTQ5MDcsOCAmIzQzOzQ5MDcsMTEgQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogCW1hYy0mZ3Q7cGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWOwogCW1hYy0mZ3Q7cGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8CiAJCU1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7Ci0JbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8Ci0JCU1BQ18yNTAwRkQ7CiYjNDM7CS8qIE1BQ19NQ1IgZm9sZHMgU1BFRURfMjUwMCBvbnRvIE1BQ19NQ1JfU1BFRURfMTAwMCwgc28gTFBJIGFib3ZlCiYjNDM7CSAqIDEgR2JwcyB3b3VsZCBiZSBnb3Zlcm5lZCBieSBNQUNfTUNSX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZAomIzQzOwkgKiByYXRoZXIgdGhhbiB1bnN1cHBvcnRlZC4KJiM0MzsJICovCiYjNDM7CW1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQ7CiAJbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7CiAKIAkvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uCkBAIC00OTY2LDYgJiM0Mzs0OTY5LDI3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCwKIAkJCSAgbWFjLSZndDtwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7CiAKJiM0MzsJLyogbXRrX21hY19lbmFibGVfdHhfbHBpKCkgcHJvZ3JhbXMgd2FrZS11cCB0aW1lcyBib3Jyb3dlZCBmcm9tCiYjNDM7CSAqIE1UNzUzMTsgb25seSBTb0NzIHdoZXJlIHRob3NlIGhhdmUgYmVlbiBzZWVuIHRvIGV4aXQgTFBJIGNsZWFubHkKJiM0MzsJICogZ2V0IExQSSBpbnRlcmZhY2VzLgomIzQzOwkgKi8KJiM0MzsJaWYgKE1US19IQVNfQ0FQUyhldGgtJmd0O3NvYy0mZ3Q7Y2FwcywgTVRLX0dNQUNfRUVFKSkgewomIzQzOwkJcGh5X2ludGVyZmFjZV9jb3B5KG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMsCiYjNDM7CQkJCSAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpOwomIzQzOwomIzQzOwkJLyogVGhlIE1BQyBzaWRlIG9mIDI1MDBCQVNFLVggaXMgbmV2ZXIgYmVsb3cgMi41IEdicHMsIG5vdAomIzQzOwkJICogZXZlbiB3aGVuIGEgcmF0ZSBtYXRjaGluZyBQSFkgZHJvcHMgdGhlIG1lZGlhIHRvIDEgR2JwcywKJiM0MzsJCSAqIGFuZCBtdGtfbWFjX2VuYWJsZV90eF9scGkoKSByZWZ1c2VzIHRoZSB4R01JSSBtb2RlcwomIzQzOwkJICogb3V0cmlnaHQuCiYjNDM7CQkgKi8KJiM0MzsJCV9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsCiYjNDM7CQkJICAgIG1hYy0mZ3Q7cGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IFBIWV9JTlRFUkZBQ0VfTU9ERV9NQVg7IGkmIzQzOyYjNDM7KQomIzQzOwkJCWlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSkKJiM0MzsJCQkJX19jbGVhcl9iaXQoaSwKJiM0MzsJCQkJCSAgICBtYWMtJmd0O3BoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTsKJiM0MzsJfQomIzQzOwogCXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZSgmYW1wO21hYy0mZ3Q7cGh5bGlua19jb25maWcsCiAJCQkJIG9mX2Z3bm9kZV9oYW5kbGUobWFjLSZndDtvZl9ub2RlKSwKIAkJCQkgcGh5X21vZGUsIG1hY19vcHMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgKaW5kZXggMDE2OGUyZmJjNjE5Ny4uODhhOWIzYjIzYmVhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oCkBAIC05OTQsNiAmIzQzOzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMgewogCU1US19VM19DT1BIWV9WMl9CSVQsCiAJTVRLX1NSQU1fQklULAogCU1US18zNkJJVF9ETUFfQklULAomIzQzOwlNVEtfR01BQ19FRUVfQklULAogCiAJLyogTVVYIEJJVFMqLwogCU1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCwKQEAgLTEwMzQsNiAmIzQzOzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHsKICNkZWZpbmUgTVRLX1UzX0NPUEhZX1YyCQlCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpCiAjZGVmaW5lIE1US19TUkFNCQlCSVRfVUxMKE1US19TUkFNX0JJVCkKICNkZWZpbmUgTVRLXzM2QklUX0RNQQlCSVRfVUxMKE1US18zNkJJVF9ETUFfQklUKQomIzQzOyNkZWZpbmUgTVRLX0dNQUNfRUVFCQlCSVRfVUxMKE1US19HTUFDX0VFRV9CSVQpCiAKICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1cJCVwKIAlCSVRfVUxMKE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCkKQEAgLTExMTcsNyAmIzQzOzExMTksNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHsKICNkZWZpbmUgTVQ3OTgxX0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBNVEtfR01BQzJfR0VQSFkgfCBcCiAJCSAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcCiAJCSAgICAgIE1US19NVVhfVTNfR01BQzJfVE9fUVBIWSB8IE1US19VM19DT1BIWV9WMiB8IFwKLQkJICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNKQomIzQzOwkJICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNIHwgTVRLX0dNQUNfRUVFKQogCiAjZGVmaW5lIE1UNzk4Nl9DQVBTICAoTVRLX0dNQUMxX1NHTUlJIHwgTVRLX0dNQUMyX1NHTUlJIHwgXAogCQkgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzEzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGZ1enppbmcgaXMgYSB2aWFibGUgYXBwcm9hY2guIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGludm9sdmVzIGEgZmV3IGtleSBzdGVwcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9uLiBTcGVjaWZpY2FsbHksIEkgc2VlIGNoYW5nZXMgaW1wYWN0aW5nIHRocmVlIGZpbGVzOiBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhgLiBUaGF0JiMzOTtzIHRoZSBNZWRpYXRlayBNVDc1MzAvTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKERTQSBzd2l0Y2ggZHJpdmVyKSBhbmQgYSBNZWRpYXRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBNQUMgZHJpdmVyLCByZXNwZWN0aXZlbHkuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpbnZvbHZlcyBoYXJkd2FyZS1sZXZlbCBpbnRlcmFjdGlvbi4gSXMgdGhlIE1lZGlhdGVrIEV0aGVybmV0IFNvQyBhbmQgTVQ3NTMwIERTQSBzd2l0Y2ggYSBwaHlzaWNhbCBTb0MgcGxhdGZvcm0gZHJpdmVyPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQmIzM5O3MgdGhlIGNydWNpYWwgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgcGF0Y2ggdG91Y2hlcyBsb3ctbGV2ZWwgaGFyZHdhcmUgY29tbXVuaWNhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUuIE15IG5leHQgbW92ZSBpcyB0byBjbG9zZWx5IGV4YW1pbmUgdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBtZW50aW9uZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUgaW50ZXJhY3Rpb24uCgpJIHRoaW5rIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgb3IganVzdCByZWFkIHRocm91Z2ggdGhlIGZpbGVzIGRpcmVjdGx5IHRvIGRldGVybWluZSB3aGF0IHdlJiMzOTtyZSBhY3R1YWxseSBtb2RpZnlpbmcuIE9uY2UgSSBoYXZlIGEgaGFuZGxlIG9uIHRoZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiwgSSBjYW4gdGhlbiBjb25zaWRlciBob3cgZnV6emluZyB3b3VsZCBmaXQgaW50byB0aGUgdGVzdGluZyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX01UNzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM0LVx0c2VsZWN0IFJFR01BUF9JUlFcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjM1Olx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQ1Olx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDYtXHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NjpcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzApXHQmIzQzOz0gbXQ3NTMwLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMF9NRElPKSAmIzQzOz0gbXQ3NTMwLW1kaW8ub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjg6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01NSU8pICYjNDM7PSBtdDc1MzAtbW1pby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfTkVUX0RTQV9NVDc2MjgpICYjNDM7PSBtdDc2Mjgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NDUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIE1lZGlhdGVrIEV0aGVybmV0IEtjb25maWcgRmlsZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZ2AuIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyBmaWxlIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGRyaXZlciDigJMgdGhpbmdzIGxpa2UgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBkcml2ZXIsIHNlbGVjdGluZyBzcGVjaWZpYyBNZWRpYXRlayBFdGhlcm5ldCBjb250cm9sbGVyIG1vZGVscywgcG90ZW50aWFsbHkgb3B0aW9ucyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgb3IgdmFyaWF0aW9ucywgYW5kIHByb2JhYmx5IGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBoZXJlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgcG9zc2libHkgdHJvdWJsZXNob290IGFueXRoaW5nIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlcnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHRoZSBkZWZhdWx0IHNldHRpbmdzLCBhbnkgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMsIGFuZCBwYXJ0aWN1bGFybHkgYW55IHRyaWNreSBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBuZXR3b3JraW5nIG9yIGhhcmR3YXJlIHN1YnN5c3RlbXMuIEhvcGVmdWxseSwgaXTigJlzIHdlbGwtb3JnYW5pemVkIGFuZCBjbGVhcmx5IGRvY3VtZW50ZWQsIGJ1dCBJJiMzOTttIHByZXBhcmVkIGZvciBhIGJpdCBvZiBhIGRlZXAgZGl2ZSBpZiBuZWNlc3NhcnkuIEl0JiMzOTtzIHRpbWUgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX01FRElBVEVLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz04PWlmIE5FVF9WRU5ET1JfTUVESUFURUtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTA6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NfV0VEXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTExLVx0ZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMjpcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTQ6Y29uZmlnIE5FVF9NRURJQVRFS19TT0NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBTb0MgR2lnYWJpdCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6Mjk6Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBTVEFSIEV0aGVybmV0IE1BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0MpICYjNDM7PSBtdGtfZXRoLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTctbXRrX2V0aC15IDo9IG10a19ldGhfc29jLm8gbXRrX2V0aF9wYXRoLm8gbXRrX3BwZS5vIG10a19wcGVfZGVidWdmcy5vIG10a19wcGVfb2ZmbG9hZC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo4Om10a19ldGgtJChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpICYjNDM7PSBtdGtfd2VkLm8gbXRrX3dlZF9tY3UubyBtdGtfd2VkX3dvLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTktaWZkZWYgQ09ORklHX0RFQlVHX0ZTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMDptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSAmIzQzOz0gbXRrX3dlZF9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTExLWVuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpICYjNDM7PSBtdGtfd2VkX29wcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NUQVJfRU1BQykgJiM0Mzs9IG10a19zdGFyX2VtYWMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jPTkyPW10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jOjEwNDpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMtMTA1LVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oPTU2PXN0cnVjdCBtdGtfd2RtYV9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmgtNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmg6NjQ6I2lmZGVmIENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTY1LXN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2lzX3YxKHN0cnVjdCBtdGtfd2VkX2h3ICpodylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzIzCgkJCQkJCQlvdXRwdXQ6IDU3CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgRHJpdmVyIFJlYWNoYWJpbGl0eSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgc29tZXRoaW5nIGhlcmUuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZSBjb2RlIHdpdGhpbiBgbXRrX2V0aF9zb2MuY2AgYW5kIGBtdDc1MzAuY2AgaXMgYWN0dWFsbHkgYWNjZXNzaWJsZSBpbiB0eXBpY2FsIHZpcnR1YWxpemVkIHNldHVwcyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCBvciBpZiBpdCYjMzk7cyBzdHJpY3RseSB0aWVkIHRvIE1lZGlhVGVrIFNvQyBoYXJkd2FyZSDigJMgc3BlY2lmaWNhbGx5IHRob3NlIEFSTSBvciBNSVBTIE1lZGlhVGVrIHJvdXRlciBTb0NzLCBsaWtlIHRoZSBNVDc2MjEsIE1UNzYyMiwgTVQ3NjIzLCBNVDc5ODEsIG9yIE1UNzk4Niwgd2hpY2ggSSYjMzk7bSB2ZXJ5IGZhbWlsaWFyIHdpdGguIFRoZSBrZXkgaGVyZSBpcyBkZXRlcm1pbmluZyB0aGUgZGVwZW5kZW5jaWVzLgoKVG8gZG8gdGhhdCwgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgZm9jdXMgb24gdGhlIHByb2JlIGZ1bmN0aW9ucyBhbmQgZHJpdmVyIHJlZ2lzdHJhdGlvbiBzZXF1ZW5jZXMgd2l0aGluIGJvdGggZmlsZXMuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoZSBkcml2ZXIgaXMgY29uZmlndXJlZCBpbiBhIHdheSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB2aXJ0dWFsaXphdGlvbiwgb3IgaWYgaXQgaGFzIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgY2hlY2tzIHRoYXQgd291bGQgcHJldmVudCBpdCBmcm9tIHJ1bm5pbmcgb3V0c2lkZSBvZiB0aGUgYWN0dWFsIE1lZGlhVGVrIHNpbGljb24uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxtb2R1bGVfbWRpb19kcml2ZXJ8cGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBNVDc1MzAgRHJpdmVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NTMwIHN3aXRjaCBpcyBiZWluZyBpbnRlcmZhY2VkLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGRyaXZlciBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHJldmlld2luZyB0aGUgaW1wbGVtZW50YXRpb25zIGluIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uY2AuIEkgbmVlZCB0byBzZWUgaG93IHRoZSByZWdpc3RlciBhY2Nlc3MgYW5kIGNvbW11bmljYXRpb24gYXJlIGhhbmRsZWQgdXNpbmcgYm90aCBNRElPIGFuZCBNTUlPLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdyZWF0IG92ZXJ2aWV3IG9mIHRoZSBkaWZmZXJlbnQgYWNjZXNzIG1ldGhvZHMgYXZhaWxhYmxlLiBUaGVuLCBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgaG93IHRoaXMgYWxsIHRpZXMgaW50byB0aGUgTWVkaWFUZWsgRXRoZXJuZXQgU29DIGdlbmVyYWxseS4gSSB3aWxsIHRoZXJlZm9yZSBjaGVjayBgbXRrX2V0aF9zb2MuY2AgdG8gc2VlIGhvdyB0aGUgc3dpdGNoIGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlIG9mIHRoZSBTb0MmIzM5O3MgRXRoZXJuZXQgc3Vic3lzdGVtLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGdyYXNwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgZGF0YSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRFNBIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjaywgYW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIHByb2JsZW0sIHRoZSBsaWtlbHkgY3VscHJpdCBpcyByZWxhdGVkIHRvIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkuIFRoZXJlZm9yZSwgbXkgZmlyc3QgbW92ZSBpcyB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZHJpdmVyIGNvZGUgYW5kIHJlbGV2YW50IHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgc3RhbmRhcmQgRFNBIGNvcmUgZmlsZXMsIHN3aXRjaCBkcml2ZXJzIGZvciB2YXJpb3VzIGNoaXBzZXRzLCBhbmQgcGVyaGFwcyBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGdsdWUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIGFueSBjbHVlcyB0aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5OTEgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfRFNBX01UNzUzMClcdCYjNDM7PSBtdDc1MzAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICYjNDM7PSBtdDc1MzAtbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgJiM0Mzs9IG10NzUzMC1tbWlvLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgJiM0Mzs9IG10NzYyOC5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNjojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxOTptdDc1MzBfcmVnbWFwX3dyaXRlKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMi1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NDptdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy00Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NzQ6bXQ3NTMwX21kaW9fcmVnbWFwX2xvY2sodm9pZCAqbWRpb19sb2NrKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTc5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4MDptdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy04NC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg2Olx0LnJlZ193cml0ZSA9IG10NzUzMF9yZWdtYXBfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NzpcdC5yZWdfcmVhZCA9IG10NzUzMF9yZWdtYXBfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg4LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9OTA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6OTE6bXQ3NTMxX2NyZWF0ZV9zZ21paShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy05Mi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTEyLVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2VtYXhfcmVnaXN0ZXIgPSAweDE3YztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMzpcdFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTE0Olx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2V1bmxvY2sgPSBtdDc1MzBfbWRpb19yZWdtYXBfdW5sb2NrO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTE1LVx0XHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cdTAwM2Vsb2NrX2FyZyA9IFx1MDAyNnByaXYtXHUwMDNlYnVzLVx1MDAzZW1kaW9fbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExNzpcdFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTgtXHRcdFx0XHRcdCAgbXQ3NTMxX3Bjc19jb25maWdbaV0pO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjEzODpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc1MzBfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cdHsgLmNvbXBhdGlibGUgPSBcJiMzNDttZWRpYXRlayxtdDc2MjFcJiMzNDssIC5kYXRhID0gXHUwMDI2bXQ3NTN4X3RhYmxlW0lEX01UNzYyMV0sIH0sXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNDA6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWVkaWF0ZWssbXQ3NTMwXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQxLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21lZGlhdGVrLG10NzUzMVwmIzM0OywgLmRhdGEgPSBcdTAwMjZtdDc1M3hfdGFibGVbSURfTVQ3NTMxXSwgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNDMtfTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0NDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdDc1MzBfb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1Ni17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTgtXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmRuO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE3MTpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIxMDpcdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVx1MDAzZWRldiwgXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMTEtXHRcdFx0XHRcdFx1MDAyNnJlZ21hcF9jb25maWcpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjIyOm10NzUzMF9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjIzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjUtXHRpbnQgcmV0ID0gMCwgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDA6XHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDY6c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0Ny17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1ODpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1OTpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjA6XHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcdC5zaHV0ZG93biA9IG10NzUzMF9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2Mi1cdC5tZGlvZHJ2LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MzpcdFx0Lm5hbWUgPSBcJiMzNDttdDc1MzAtbWRpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3NTMwX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjg6bWRpb19tb2R1bGVfZHJpdmVyKG10NzUzMF9tZGlvX2RyaXZlcik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjEwOiNpbmNsdWRlIFwmIzM0O210NzUzMC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0xMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMD1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTMxLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjMyOlx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzMtXHR2b2lkIF9faW9tZW0gKmJhc2VfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz02Nz1zdGF0aWMgdm9pZCBtdDc5ODhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02OC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo2OTpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy03MS1cdGlmIChwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzI6XHRcdG10NzUzMF9yZW1vdmVfY29tbW9uKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc1PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzYte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6Nzc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc4LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTg3PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTEtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6OTI6XHRcdC5uYW1lID0gXCYjMzQ7bXQ3NTMwLW1taW9cJiMzNDssXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy05My1cdFx0Lm9mX21hdGNoX3RhYmxlID0gbXQ3OTg4X29mX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjojaW5jbHVkZSBcJiMzNDttdDc1MzAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNi0vKiBTdHJpbmcsIG9mZnNldCwgYW5kIHJlZ2lzdGVyIHNpemUgaW4gYnl0ZXMgaWYgZGlmZmVyZW50IGZyb20gNCBieXRlcyAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOC1cdE1JQl9ERVNDKDEsIE1UNzUzMF9QT1JUX01JQl9UWF9EUk9QLCBcJiMzNDtUeERyb3BcJiMzNDspLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwOm10NzUzMF9tdXRleF9sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTU2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTc6bXQ3NTMwX211dGV4X3VubG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njk6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTk3LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9OTk9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxMDA6Y29yZV9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHNldClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTA3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQyOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNDMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDU9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDY6Y29yZV9zZXQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE0Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1MT1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1Mjpjb3JlX2NsZWFyKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1ODptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjUtXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTY2Olx0XHRcdFwmIzM0O2ZhaWxlZCB0byB3cml0ZSBtdDc1MzAgcmVnaXN0ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTcxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNzMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODAtXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTgxOlx0XHRcdFwmIzM0O2ZhaWxlZCB0byByZWFkIG10NzUzMCByZWdpc3RlclxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTgyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MTg4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxODk6bXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkzOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk0LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NTpcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgcmVnLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTc6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjAyPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMDM6X210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA3Olx0bXQ3NTMwX211dGV4X2xvY2socC1cdTAwM2Vwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA5Olx0dmFsID0gbXQ3NTMwX21paV9yZWFkKHAtXHUwMDNlcHJpdiwgcC1cdTAwM2VyZWcpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxMC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTE6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHAtXHUwMDNlcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMTY9c3RhdGljIHUzMlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxNzptdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjE4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTk6XHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjAtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIxLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCByZWcpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIyMjpcdHJldHVybiBfbXQ3NTMwX3JlYWQoXHUwMDI2cCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIzLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjI1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI2Om10NzUzMF9ybXcoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNy1cdCAgIHUzMiBtYXNrLCB1MzIgc2V0KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyOC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI5Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjMzOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzQtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzc6bXQ3NTMwX3NldChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM4LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk6XHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0MC19XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTI0Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0MzptdDc1MzBfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQ1Olx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ2LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjQ4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDk6bXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjUwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU1LVx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI1NjpcdHJldCA9IG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjA6XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNjEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNjc6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9Mjg2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg3Om10NzUzMF9mZGJfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHN0cnVjdCBtdDc1MzBfZmRiICpmZGIpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjg4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyOTQ6XHRcdHJlZ1tpXSA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9UU1JBMSAmIzQzOyAoaSAqIDQpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMxMj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxMzptdDc1MzBfZmRiX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTE2IHZpZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMTQtXHRcdCB1OCBwb3J0X21hc2ssIGNvbnN0IHU4ICptYWMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzOC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzOTpcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEExICYjNDM7IChpICogNCksIHJlZ1tpXSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQwLX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzQyLS8qIFNldCB1cCBzd2l0Y2ggY29yZSBjbG9jayBmb3IgTVQ3NTMwICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzQzOnN0YXRpYyB2b2lkIG10NzUzMF9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTM4Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NDptdDc1MzBfc2V0dXBfcG9ydDYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4NS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mzg2Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODctXHR1MzIgbmNwbzEsIHNzY19kZWx0YSwgeHRhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzkyLVx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpIHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTM6XHRcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSyxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTQtXHRcdFx0ICAgUDZfSU5URl9NT0RFKDApKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM5ODpcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSywgUDZfSU5URl9NT0RFKDEpKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDAwOlx0eHRhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzWF9NVFJBUCkgXHUwMDI2IE1UNzUzMF9YVEFMX01BU0s7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00MzY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Mzc6bXQ3NTMxX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDM4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DUkVWKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NDU6XHR0b3Bfc2lnID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1RPUF9TSUdfU1IpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NjpcdGh3c3RyYXAgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfVFJBUCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDQ3LVx0aWYgKCh2YWwgXHUwMDI2IENISVBfUkVWX00pIFx1MDAzZSAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTQtXHQvKiBTdGVwIDEgOiBEaXNhYmxlIE1UNzUzMSBDT1JFUExMICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU1Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTYtXHR2YWwgXHUwMDI2PSB+RU5fQ09SRVBMTDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NTc6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTktXHQvKiBTdGVwIDI6IHN3aXRjaCB0byBYVEFMIG91dHB1dCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYxLVx0dmFsIHw9IFNXX0NMS1NXO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2MjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYzLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NDpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2NS1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX0VOO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ2NjpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjgtXHQvKiBTdGVwIDM6IGRpc2FibGUgUExMR1AgYW5kIGVuYWJsZSBwcm9ncmFtIFBMTEdQICovXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzAtXHR2YWwgfD0gU1dfUExMR1A7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDcxOlx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDczLVx0LyogU3RlcCA0OiBwcm9ncmFtIENPUkVQTEwgb3V0cHV0IGZyZXF1ZW5jeSB0byA1MDBNSHogKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzUtXHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9QT1NESVZfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzYtXHR2YWwgfD0gMiBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9QT1NESVZfUztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzgtXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgxLVx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzI1TUhaOlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4MjpcdFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDgzLVx0XHR2YWwgXHUwMDI2PSB+UkdfQ09SRVBMTF9TRE1fUENXX007XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg0LVx0XHR2YWwgfD0gMHgxNDAwMDAgXHUwMDNjXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ4NTpcdFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg2LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODctXHRjYXNlIE1UNzUzMV9YVEFMX0ZTRUxfNDBNSFo6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg4Olx0XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODktXHRcdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTAtXHRcdHZhbCB8PSAweDE5MDAwMCBcdTAwM2NcdTAwM2MgUkdfQ09SRVBMTF9TRE1fUENXX1M7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkxOlx0XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTUtXHQvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gaGlnaCAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5NjpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5Ny1cdHZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5ODpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cdC8qIFdhaXQgZm9yIGF0IGxlYXN0IDE2IFhUQUwgY2xvY2tzICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cdC8qIFN0ZXAgNTogc2V0IGZlZWRiYWNrIGRpdmlkZSByYXRpbyB1cGRhdGUgc2lnbmFsIHRvIGxvdyAqL1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwMzpcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNC1cdHZhbCBcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUwNTpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDctXHQvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDg6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjUsIDB4YWQwMDAwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDktXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEwLVx0LyogRW5hYmxlIDI1MFNTQyBjbG9jayBmb3IgUkdNSUkgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTE6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEyLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMy1cdC8qIFN0ZXAgNjogRW5hYmxlIE1UNzUzMSBQTEwgKi9cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTQ6XHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTUtXHR2YWwgfD0gUkdfQ09SRVBMTF9FTjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTY6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE4Olx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTktXHR2YWwgfD0gRU5fQ09SRVBMTDtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjA6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyMS1cdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01MjQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjU6bXQ3NTMwX21pYl9yZXNldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI2LXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjc6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyOC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjk6XHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX01JQl9DQ1IsIENDUl9NSUJfRkxVU0gpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUzMDpcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9BQ1RJVkFURSk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTMxLX1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMzOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mzg6c3RhdGljIGludCBtdDc1MzBfcGh5X3dyaXRlX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzOS1cdFx0XHRcdHUxNiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0My1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDQ6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQ1LVx0XHRcdCAgICAgICBpbnQgZGV2YWQsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0OS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTA6c3RhdGljIGludCBtdDc1MzBfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTUxLVx0XHRcdFx0aW50IHJlZ251bSwgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NTU2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTc6bXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU1OC1cdFx0XHRpbnQgcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjItXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTYzOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NzMtXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTc0Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3NS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU4Ni1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODc6XHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTg4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LW91dDpcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDA6XHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjA1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MDctXHRcdFx0IGludCByZWdudW0sIHUxNiBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTEtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjEyOlx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjEzLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MjItXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjIzOlx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNS1cdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM2Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYzNy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0Ny1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjQ4Olx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDktXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY1Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU0Om10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU4LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY1OTpcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjcwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3MTpcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHZhbCB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODMtb3V0OlxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY4NDpcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjg1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02ODk9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5MDptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTEtXHRcdFx0IHUxNiBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTUtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Njk2Olx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjk3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MDctXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzA4Olx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwOS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcxOS1vdXQ6XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzIwOlx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTcyNj1tdDc1M3hfcGh5X3JlYWRfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyNy17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzI4Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03MzQ9bXQ3NTN4X3BoeV9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTczNS17XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzM2Olx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzM3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03NDI9bXQ3NTN4X3BoeV93cml0ZV9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0sIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzQzLXtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NDQ6XHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTc1MD1tdDc1M3hfcGh5X3dyaXRlX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NTIte1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjc1MzpcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTc1NC1cbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMjE6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5MzUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE1lZGlhVGVrIEV0aGVybmV0IERyaXZlcnMqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBGaXJzdCwgSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgZXhhY3RseSBNVDc1MzAgYW5kIG10a19ldGhfc29jIGFyZS4gUmlnaHQsIE1UNzUzMCBpcyB0aGF0IHN3aXRjaCBJQywgdHlwaWNhbGx5IGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIHdoZW4gcGFpcmVkIHdpdGggTWVkaWFUZWsgU29DcyBsaWtlIHRoZSBNVDc5ODguIEdvdCBpdC4gQW5kIGBtdGtfZXRoX3NvY2A/IFRoYXQmIzM5O3MgdGhlIEV0aGVybmV0IE1BQyBkcml2ZXIgdGFpbG9yZWQgZm9yIE1lZGlhVGVrIHJvdXRlciBTb0NzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBNVDc2MjAsIE1UNzYyMSwgYW5kIHNvIG9uLCBhbGwgdGhlIHdheSB1cCB0byB0aGUgTVQ3OTg4LgoKU28sIGFyZSB0aGVzZSBlc3NlbnRpYWxseSBwbGF0Zm9ybSBhbmQvb3IgTURJTyBkcml2ZXJzIGZvciBNZWRpYVRlayBoYXJkd2FyZT8gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdC4gQWgsIHllcywgYG10a19ldGhfc29jLmNgIGlzIGRlZmluaXRlbHkgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlci4gSSBzZWUgdGhlIHRlbGx0YWxlIHNpZ25zOiBgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHsgLi4uIC5kcml2ZXIgPSB7IC5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihvZl9tdGtfbWF0Y2gpLCAuLi4gfSB9O2AgYW5kIHRoZSBgbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfZHJpdmVyKTtgLiBUaGF0IGNsZWFybHkgaW5kaWNhdGVzIHRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIG1hdGNoaW5nIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZSwgYXMgZXhwZWN0ZWQuIE5vdywgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgZHJpdmVyLiBMZXQgbWUgY2hlY2sgYG10a19ldGhfc29jLmNgIGRpcmVjdGx5Li4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTU2OTA9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTU2OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjU2OTk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTcwMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTc0OT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfc3Rhcl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE3NTYtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNzU3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXRrX3N0YXJfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTc4MwoJCQkJCQkJb3V0cHV0OiAxNDIKCQkJCQkJCXRob3VnaHRzOiA3ODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgdGhpcyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIHJ1bGVzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNoYW5nZXMgdGhhdCBjYW4gYmUgbWVhbmluZ2Z1bGx5IGZ1enplZCBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50LiBMZXQmIzM5O3Mgc2VlOiBtb2RpZmljYXRpb25zIHRvIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG51bWVyaWMgY29uc3RhbnQgY2hhbmdlcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBhcmUgYWxsIG5vLWdvcyBmb3IgZnV6emluZy4KCk5vdywgaG9sZCBvbiBhIHNlY29uZC4uLiBUaGlzIHBhdGNoIHRvdWNoZXMgcGxhdGZvcm0gZHJpdmVycyBmb3IgTWVkaWFUZWsgU29Dcy4gQXJlIHRob3NlIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIFFFTVUgb3IgR0NFIHNldHVwPyBNeSBleHBlcmllbmNlIHNheXMgbm8sIGJ1dCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBTdGFuZGFyZCBmdXp6aW5nIHJlbGllcyBvbiB4ODZfNjQgb3IgYXJtNjQgUUVNVS9HQ0UsIGFuZCB0aGVzZSBkb24mIzM5O3QgdHlwaWNhbGx5IGluY2x1ZGUgZW11bGF0ZWQgTWVkaWFUZWsgU29DIGRldmljZXMgb3IgdGhlaXIgYXNzb2NpYXRlZCBkZXZpY2UgdHJlZXMuIFFFTVUgZ2VuZXJhbGx5IHByZXNlbnRzIHZpcnRpbywgUEwwMTEsIGFuZCBzaW1pbGFyIHZpcnR1YWwgaGFyZHdhcmUgaW4gaXRzIGRldmljZSB0cmVlLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNgIHdoaWNoIGhhbmRsZXMgTWVkaWFUZWsgRXRoZXJuZXQuIFRoZSBkcml2ZXIgcmVsaWVzIG9uIE9wZW5GaXJtd2FyZSAoT0YpIGNvbXBhdGlibGUgc3RyaW5ncyBsaWtlIGBtZWRpYXRlayxtdDI3MDEtZXRoYCwgYG1lZGlhdGVrLG10NzYyMi1ldGhgLCBldGMuIFRoZXJlJiMzOTtzIGFsc28gdGhlIE1UNzUzMCBEU0Egc3dpdGNoLCB3aGljaCBsb29rcyBmb3Igc3RyaW5ncyBsaWtlIGBtZWRpYXRlayxtdDc2MjFgLCBgbWVkaWF0ZWssbXQ3NTMwYC4KClRoZSBwcm9ibGVtIGlzIHRoZXNlIGRldmljZXMg4oCTIHRoZSBFdGhlcm5ldCBNQUMgYW5kIHRoZSBEU0Egc3dpdGNoIGNvbnRyb2xsZXIg4oCTICpyZXF1aXJlKiB0aGUgdW5kZXJseWluZyBNZWRpYVRlayBTb0MgaGFyZHdhcmUsIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0LCBhICpzcGVjaWZpYyogU29DIERUQi4gIFN0YW5kYXJkIFFFTVUvR0NFIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhvc2UuIFNvLCBuZWl0aGVyIGRyaXZlciB3aWxsIHByb2JlLCBhbmQgdGhlaXIgcnVudGltZSBjb2RlIHdpbGwgYmUgY29tcGxldGVseSBpbmFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBzZXR1cHMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIGNvbmZpcm06IGlzIHRoZXJlICphbnkqIHZpcnR1YWwgb3Igc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGVzZSBNZWRpYVRlayBFdGhlcm5ldCBvciBEU0Egc3dpdGNoIGNvbXBvbmVudHM/IE5vLCBhIHF1aWNrIHNlYXJjaCBjb25maXJtcyB0aGF0IHRob3NlIGRyaXZlcnMgcmVxdWlyZSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSBkZXZpY2Ugb3IgdGhlIE1ESU8gYnVzIHRvIGV2ZW4gcHJvYmUgYW5kIGluc3RhbnRpYXRlIHRoZWlyIG5ldHdvcmsgZGV2aWNlcy4KClRoZXJlZm9yZSwgc2luY2UgdGhpcyBwYXRjaCBtb2RpZmllcyBjb2RlIHdpdGhpbiBkcml2ZXJzIHRoYXQgYXJlIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLCBpdCYjMzk7cyBhIGNsZWFyIGNhc2UuIFRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB3ZSBjYW4gZWZmZWN0aXZlbHkgZnV6ei4KClRpbWUgZm9yIGEgZmluYWwgc2FuaXR5IGNoZWNrIG9mIHRoZSBvdXRwdXQgSSYjMzk7bSBhYm91dCB0byBzdWJtaXQ6CiogICBgV29ydGhGdXp6aW5nYCBzaG91bGQgZGVmaW5pdGVseSBiZSBgZmFsc2VgLgoqICAgYEVuYWJsZUNvbmZpZ3NgIHdvbiYjMzk7dCBiZSBuZWNlc3Nhcnk7IHdlJiMzOTtyZSBub3QgZW5hYmxpbmcgYW55dGhpbmcgaGVyZS4KKiAgIGBGb2N1c1N5bWJvbHNgIGlzIGVtcHR5LgoqICAgVGhlIGBSZWFzb25pbmdgIG5lZWRzIHRvIGJlIGNyeXN0YWwgY2xlYXI6IHRoaXMgcGF0Y2ggaW52b2x2ZXMgTWVkaWFUZWsgU29DIEV0aGVybmV0IGFuZCBEU0Egc3dpdGNoIGRyaXZlcnMgKG10a19ldGhfc29jIGFuZCBtdDc1MzApLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL2RldmljZSB0cmVlIG5vZGVzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgd2hpY2ggbWFrZXMgdGhlbSB1bmZ1enphYmxlIGluIHN1Y2ggY29udGV4dHMuCgpPa2F5LCB0aGF0IGFsbCBsb29rcyBzb2xpZC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDIxOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZL0xQSSBjYXBhYmlsaXR5IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBNVDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykgYW5kIHRoZSBNZWRpYVRlayBTb0MgRXRoZXJuZXQgTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvcGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAyMTo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MjUuMTA2MDUxMTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcyMjM2NDg2MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBQSFkvTFBJIGNhcGFiaWxpdHkgaGFuZGxpbmcgaW4gdGhlIE1lZGlhVGVrIE1UNzUzMCBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL210NzUzMC5jKSBhbmQgdGhlIE1lZGlhVGVrIFNvQyBFdGhlcm5ldCBNQUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jKS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIE1lZGlhVGVrIFNvQyBoYXJkd2FyZS9wbGF0Zm9ybSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRodXMsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MjUuMTA2MDU2NDgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA0NTYwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMzYzNmE3ZjkyYThmMjk0NGUzMWQwNTg4ZjM1MDRhZWE4NjlhY2UxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMjE6NTc6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXFxuaW5kZXggMmI3YmUwOTFjMDU2ZS4uYTE4OGEzOTFiNjUwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5AQCAtMzE3MiwyMyArMzE3MiwzOCBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbiBcXG4gXFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gTUFDX0FTWU1fUEFVU0UgfCBNQUNfU1lNX1BBVVNFO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XFxuK1xcbiBcXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXFxuIFxcdCAqIGNvbW1vbiBsaW5rIHBhcnRuZXJzIChlLmcuIFJlYWx0ZWsgR2JFIE5JQ3MpIHJlc3VsdHMgaW4gYW4gdW5zdGFibGVcXG4gXFx0ICogbGluayB3aXRoIGRyb3BwZWQgZnJhbWVzLiBMZWF2ZSB0aGUgTFBJIGNhcGFiaWxpdGllcyBlbXB0eSBzbyB0aGF0XFxuIFxcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cXG4tXFx0ICogdXNlcnNwYWNlLlxcbitcXHQgKiB1c2Vyc3BhY2UuIFBvcnRzIHRoYXQgcnVuIGF0IG5laXRoZXIgMTAwIE1icHMgbm9yIDEgR2JwcyBhcmUgbGVmdFxcbitcXHQgKiBlbXB0eSB0b28sIHNpbmNlIExQSSBhYm92ZSAxIEdicHMgaXMgdW52YWxpZGF0ZWQuXFxuIFxcdCAqL1xcbi1cXHRpZiAocHJpdi1cXHUwMDNlaWQgIT0gSURfRU43NTI4KSB7XFxuK1xcdGlmIChwcml2LVxcdTAwM2VpZCAhPSBJRF9FTjc1MjggXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGNvbmZpZy1cXHUwMDNlbWFjX2NhcGFiaWxpdGllcyBcXHUwMDI2IChNQUNfMTAwRkQgfCBNQUNfMTAwMEZEKSkge1xcbiBcXHRcXHR1MzIgZWVlY3IgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfUE1FRUVDUl9QKHBvcnQpKTtcXG4gXFxuLVxcdFxcdGNvbmZpZy1cXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfCBNQUNfMjUwMEZEO1xcbitcXHRcXHQvKiBQTUNSIGZvbGRzIFNQRUVEXzI1MDAgYW5kIFNQRUVEXzEwMDAwIG9udG9cXG4rXFx0XFx0ICogUE1DUl9GT1JDRV9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmUgMSBHYnBzIHdvdWxkIGJlXFxuK1xcdFxcdCAqIGdvdmVybmVkIGJ5IFBNQ1JfRk9SQ0VfRUVFMUcgYW5kIGlzIHVudmFsaWRhdGVkIHJhdGhlciB0aGFuXFxuK1xcdFxcdCAqIHVuc3VwcG9ydGVkLiBMZWF2ZSBpdCBvdXQgb2YgYm90aCBiaXRtYXBzOiBscGlfY2FwYWJpbGl0aWVzXFxuK1xcdFxcdCAqIGdhdGVzIG9uIHRoZSBtZWRpYSBzcGVlZCBhIHJhdGUgbWF0Y2hpbmcgUEhZIHJlcG9ydHMsIG5vdFxcbitcXHRcXHQgKiBvbiB0aGUgc3BlZWQgdGhlIE1BQyBydW5zIGF0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0Y29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gY29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFxcdTAwMjZcXG4rXFx0XFx0XFx0XFx0XFx0ICAgKE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQpO1xcbitcXHRcXHRwaHlfaW50ZXJmYWNlX2NvcHkoY29uZmlnLVxcdTAwM2VscGlfaW50ZXJmYWNlcyxcXG4rXFx0XFx0XFx0XFx0ICAgY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuK1xcdFxcdF9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsXFxuK1xcdFxcdFxcdCAgICBjb25maWctXFx1MDAzZWxwaV9pbnRlcmZhY2VzKTtcXG4rXFxuIFxcdFxcdC8qIHR4X2xwaV90aW1lciBzaG91bGQgYmUgaW4gbWljcm9zZWNvbmRzLiBUaGUgdGltZSB1bml0cyBmb3JcXG4gXFx0XFx0ICogTFBJIHRocmVzaG9sZCBhcmUgdW5zcGVjaWZpZWQuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRjb25maWctXFx1MDAzZWxwaV90aW1lcl9kZWZhdWx0ID0gRklFTERfR0VUKExQSV9USFJFU0hfTUFTSywgZWVlY3IpO1xcbiBcXHR9XFxuLVxcbi1cXHRwcml2LVxcdTAwM2VpbmZvLVxcdTAwM2VtYWNfcG9ydF9nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBtdDc1M3hfcGNzX3ZhbGlkYXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbmluZGV4IGJlM2JkMDI1YzQxYTEuLjA5ZjUzODc1ZDEwMGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcXG5AQCAtNDgyOCw3ICs0ODI4LDcgQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbiBcXHRwaHlfaW50ZXJmYWNlX3QgcGh5X21vZGU7XFxuIFxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xcbiBcXHRzdHJ1Y3QgbXRrX21hYyAqbWFjO1xcbi1cXHRpbnQgaWQsIGVycjtcXG4rXFx0aW50IGlkLCBlcnIsIGk7XFxuIFxcdGludCB0eHFzID0gMTtcXG4gXFx0dTMyIHZhbDtcXG4gXFxuQEAgLTQ5MDcsOCArNDkwNywxMSBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuIFxcdG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xcbiBcXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0UgfFxcbiBcXHRcXHRNQUNfMTAgfCBNQUNfMTAwIHwgTUFDXzEwMDAgfCBNQUNfMjUwMEZEO1xcbi1cXHRtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9jYXBhYmlsaXRpZXMgPSBNQUNfMTAwRkQgfCBNQUNfMTAwMEZEIHxcXG4tXFx0XFx0TUFDXzI1MDBGRDtcXG4rXFx0LyogTUFDX01DUiBmb2xkcyBTUEVFRF8yNTAwIG9udG8gTUFDX01DUl9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmVcXG4rXFx0ICogMSBHYnBzIHdvdWxkIGJlIGdvdmVybmVkIGJ5IE1BQ19NQ1JfRUVFMUcgYW5kIGlzIHVudmFsaWRhdGVkXFxuK1xcdCAqIHJhdGhlciB0aGFuIHVuc3VwcG9ydGVkLlxcbitcXHQgKi9cXG4rXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcXG4gXFx0bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7XFxuIFxcbiBcXHQvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uXFxuQEAgLTQ5NjYsNiArNDk2OSwyNyBAQCBzdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuIFxcdFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuIFxcdFxcdFxcdCAgbWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxuIFxcbitcXHQvKiBtdGtfbWFjX2VuYWJsZV90eF9scGkoKSBwcm9ncmFtcyB3YWtlLXVwIHRpbWVzIGJvcnJvd2VkIGZyb21cXG4rXFx0ICogTVQ3NTMxOyBvbmx5IFNvQ3Mgd2hlcmUgdGhvc2UgaGF2ZSBiZWVuIHNlZW4gdG8gZXhpdCBMUEkgY2xlYW5seVxcbitcXHQgKiBnZXQgTFBJIGludGVyZmFjZXMuXFxuK1xcdCAqL1xcbitcXHRpZiAoTVRLX0hBU19DQVBTKGV0aC1cXHUwMDNlc29jLVxcdTAwM2VjYXBzLCBNVEtfR01BQ19FRUUpKSB7XFxuK1xcdFxcdHBoeV9pbnRlcmZhY2VfY29weShtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzLFxcbitcXHRcXHRcXHRcXHQgICBtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG4rXFxuK1xcdFxcdC8qIFRoZSBNQUMgc2lkZSBvZiAyNTAwQkFTRS1YIGlzIG5ldmVyIGJlbG93IDIuNSBHYnBzLCBub3RcXG4rXFx0XFx0ICogZXZlbiB3aGVuIGEgcmF0ZSBtYXRjaGluZyBQSFkgZHJvcHMgdGhlIG1lZGlhIHRvIDEgR2JwcyxcXG4rXFx0XFx0ICogYW5kIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHJlZnVzZXMgdGhlIHhHTUlJIG1vZGVzXFxuK1xcdFxcdCAqIG91dHJpZ2h0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcXG4rXFx0XFx0XFx0ICAgIG1hYy1cXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSsrKVxcbitcXHRcXHRcXHRpZiAobXRrX2ludGVyZmFjZV9tb2RlX2lzX3hnbWlpKGV0aCwgaSkpXFxuK1xcdFxcdFxcdFxcdF9fY2xlYXJfYml0KGksXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcXG4rXFx0fVxcbitcXG4gXFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbiBcXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbiBcXHRcXHRcXHRcXHQgcGh5X21vZGUsIG1hY19vcHMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaFxcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcXG5AQCAtOTk0LDYgKzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xcbiBcXHRNVEtfVTNfQ09QSFlfVjJfQklULFxcbiBcXHRNVEtfU1JBTV9CSVQsXFxuIFxcdE1US18zNkJJVF9ETUFfQklULFxcbitcXHRNVEtfR01BQ19FRUVfQklULFxcbiBcXG4gXFx0LyogTVVYIEJJVFMqL1xcbiBcXHRNVEtfRVRIX01VWF9HRE0xX1RPX0dNQUMxX0VTV19CSVQsXFxuQEAgLTEwMzQsNiArMTAzNSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlxcdFxcdEJJVF9VTEwoTVRLX1UzX0NPUEhZX1YyX0JJVClcXG4gI2RlZmluZSBNVEtfU1JBTVxcdFxcdEJJVF9VTEwoTVRLX1NSQU1fQklUKVxcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcXHRCSVRfVUxMKE1US18zNkJJVF9ETUFfQklUKVxcbisjZGVmaW5lIE1US19HTUFDX0VFRVxcdFxcdEJJVF9VTEwoTVRLX0dNQUNfRUVFX0JJVClcXG4gXFxuICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dcXHRcXHRcXFxcXFxuIFxcdEJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKVxcbkBAIC0xMTE3LDcgKzExMTksNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcXG4gI2RlZmluZSBNVDc5ODFfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IE1US19HTUFDMl9HRVBIWSB8IFxcXFxcXG4gXFx0XFx0ICAgICAgTVRLX01VWF9HTUFDMTJfVE9fR0VQSFlfU0dNSUkgfCBNVEtfUURNQSB8IFxcXFxcXG4gXFx0XFx0ICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXFxcXFxcbi1cXHRcXHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0pXFxuK1xcdFxcdCAgICAgIE1US19SU1RDVFJMX1BQRTEgfCBNVEtfU1JBTSB8IE1US19HTUFDX0VFRSlcXG4gXFxuICNkZWZpbmUgTVQ3OTg2X0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBcXFxcXFxuIFxcdFxcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjI1LjU2NzU2NjE5MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MjY3NjIxMTg1MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiMzYzNmE3ZjkyYThmMjk0NGUzMWQwNTg4ZjM1MDRhZWE4NjlhY2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAyMTo1NzoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggMmI3YmUwOTFjMDU2ZS4uYTE4OGEzOTFiNjUwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuKysrIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMzE3MiwyMyArMzE3MiwzOCBAQCBzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuIFxuIFx0Y29uZmlnLVx1MDAzZW1hY19jYXBhYmlsaXRpZXMgPSBNQUNfQVNZTV9QQVVTRSB8IE1BQ19TWU1fUEFVU0U7XG4gXG4rXHRwcml2LVx1MDAzZWluZm8tXHUwMDNlbWFjX3BvcnRfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG4rXG4gXHQvKiBUaGUgRU43NTI4IEdQSFlzIHJlcG9ydCBFRUUgY2FwYWJpbGl0eSwgYnV0IG5lZ290aWF0aW5nIEVFRSB3aXRoXG4gXHQgKiBjb21tb24gbGluayBwYXJ0bmVycyAoZS5nLiBSZWFsdGVrIEdiRSBOSUNzKSByZXN1bHRzIGluIGFuIHVuc3RhYmxlXG4gXHQgKiBsaW5rIHdpdGggZHJvcHBlZCBmcmFtZXMuIExlYXZlIHRoZSBMUEkgY2FwYWJpbGl0aWVzIGVtcHR5IHNvIHRoYXRcbiBcdCAqIHBoeWxpbmsgZGlzYWJsZXMgRUVFIG9uIHRoZXNlIFBIWXMgYW5kIHJlZnVzZXMgdG8gZW5hYmxlIGl0IGZyb21cbi1cdCAqIHVzZXJzcGFjZS5cbitcdCAqIHVzZXJzcGFjZS4gUG9ydHMgdGhhdCBydW4gYXQgbmVpdGhlciAxMDAgTWJwcyBub3IgMSBHYnBzIGFyZSBsZWZ0XG4rXHQgKiBlbXB0eSB0b28sIHNpbmNlIExQSSBhYm92ZSAxIEdicHMgaXMgdW52YWxpZGF0ZWQuXG4gXHQgKi9cbi1cdGlmIChwcml2LVx1MDAzZWlkICE9IElEX0VONzUyOCkge1xuK1x0aWYgKHByaXYtXHUwMDNlaWQgIT0gSURfRU43NTI4IFx1MDAyNlx1MDAyNlxuK1x0ICAgIGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFx1MDAyNiAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCkpIHtcbiBcdFx0dTMyIGVlZWNyID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1BNRUVFQ1JfUChwb3J0KSk7XG4gXG4tXHRcdGNvbmZpZy1cdTAwM2VscGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCB8IE1BQ18yNTAwRkQ7XG4rXHRcdC8qIFBNQ1IgZm9sZHMgU1BFRURfMjUwMCBhbmQgU1BFRURfMTAwMDAgb250b1xuK1x0XHQgKiBQTUNSX0ZPUkNFX1NQRUVEXzEwMDAsIHNvIExQSSBhYm92ZSAxIEdicHMgd291bGQgYmVcbitcdFx0ICogZ292ZXJuZWQgYnkgUE1DUl9GT1JDRV9FRUUxRyBhbmQgaXMgdW52YWxpZGF0ZWQgcmF0aGVyIHRoYW5cbitcdFx0ICogdW5zdXBwb3J0ZWQuIExlYXZlIGl0IG91dCBvZiBib3RoIGJpdG1hcHM6IGxwaV9jYXBhYmlsaXRpZXNcbitcdFx0ICogZ2F0ZXMgb24gdGhlIG1lZGlhIHNwZWVkIGEgcmF0ZSBtYXRjaGluZyBQSFkgcmVwb3J0cywgbm90XG4rXHRcdCAqIG9uIHRoZSBzcGVlZCB0aGUgTUFDIHJ1bnMgYXQuXG4rXHRcdCAqL1xuK1x0XHRjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyA9IGNvbmZpZy1cdTAwM2VtYWNfY2FwYWJpbGl0aWVzIFx1MDAyNlxuK1x0XHRcdFx0XHQgICAoTUFDXzEwMEZEIHwgTUFDXzEwMDBGRCk7XG4rXHRcdHBoeV9pbnRlcmZhY2VfY29weShjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMsXG4rXHRcdFx0XHQgICBjb25maWctXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuK1x0XHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLFxuK1x0XHRcdCAgICBjb25maWctXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xuK1xuIFx0XHQvKiB0eF9scGlfdGltZXIgc2hvdWxkIGJlIGluIG1pY3Jvc2Vjb25kcy4gVGhlIHRpbWUgdW5pdHMgZm9yXG4gXHRcdCAqIExQSSB0aHJlc2hvbGQgYXJlIHVuc3BlY2lmaWVkLlxuIFx0XHQgKi9cbiBcdFx0Y29uZmlnLVx1MDAzZWxwaV90aW1lcl9kZWZhdWx0ID0gRklFTERfR0VUKExQSV9USFJFU0hfTUFTSywgZWVlY3IpO1xuIFx0fVxuLVxuLVx0cHJpdi1cdTAwM2VpbmZvLVx1MDAzZW1hY19wb3J0X2dldF9jYXBzKGRzLCBwb3J0LCBjb25maWcpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG10NzUzeF9wY3NfdmFsaWRhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmNcbmluZGV4IGJlM2JkMDI1YzQxYTEuLjA5ZjUzODc1ZDEwMGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jXG5AQCAtNDgyOCw3ICs0ODI4LDcgQEAgc3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuIFx0cGh5X2ludGVyZmFjZV90IHBoeV9tb2RlO1xuIFx0c3RydWN0IHBoeWxpbmsgKnBoeWxpbms7XG4gXHRzdHJ1Y3QgbXRrX21hYyAqbWFjO1xuLVx0aW50IGlkLCBlcnI7XG4rXHRpbnQgaWQsIGVyciwgaTtcbiBcdGludCB0eHFzID0gMTtcbiBcdHUzMiB2YWw7XG4gXG5AQCAtNDkwNyw4ICs0OTA3LDExIEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG4gXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19BU1lNX1BBVVNFIHwgTUFDX1NZTV9QQVVTRSB8XG4gXHRcdE1BQ18xMCB8IE1BQ18xMDAgfCBNQUNfMTAwMCB8IE1BQ18yNTAwRkQ7XG4tXHRtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2NhcGFiaWxpdGllcyA9IE1BQ18xMDBGRCB8IE1BQ18xMDAwRkQgfFxuLVx0XHRNQUNfMjUwMEZEO1xuK1x0LyogTUFDX01DUiBmb2xkcyBTUEVFRF8yNTAwIG9udG8gTUFDX01DUl9TUEVFRF8xMDAwLCBzbyBMUEkgYWJvdmVcbitcdCAqIDEgR2JwcyB3b3VsZCBiZSBnb3Zlcm5lZCBieSBNQUNfTUNSX0VFRTFHIGFuZCBpcyB1bnZhbGlkYXRlZFxuK1x0ICogcmF0aGVyIHRoYW4gdW5zdXBwb3J0ZWQuXG4rXHQgKi9cbitcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfY2FwYWJpbGl0aWVzID0gTUFDXzEwMEZEIHwgTUFDXzEwMDBGRDtcbiBcdG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfdGltZXJfZGVmYXVsdCA9IDEwMDA7XG4gXG4gXHQvKiBNVDc2MjMgZ21hYzAgaXMgbm93IG1pc3NpbmcgaXRzIHNwZWVkLXNwZWNpZmljIFBMTCBjb25maWd1cmF0aW9uXG5AQCAtNDk2Niw2ICs0OTY5LDI3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbiBcdFx0XHQgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gXG4rXHQvKiBtdGtfbWFjX2VuYWJsZV90eF9scGkoKSBwcm9ncmFtcyB3YWtlLXVwIHRpbWVzIGJvcnJvd2VkIGZyb21cbitcdCAqIE1UNzUzMTsgb25seSBTb0NzIHdoZXJlIHRob3NlIGhhdmUgYmVlbiBzZWVuIHRvIGV4aXQgTFBJIGNsZWFubHlcbitcdCAqIGdldCBMUEkgaW50ZXJmYWNlcy5cbitcdCAqL1xuK1x0aWYgKE1US19IQVNfQ0FQUyhldGgtXHUwMDNlc29jLVx1MDAzZWNhcHMsIE1US19HTUFDX0VFRSkpIHtcbitcdFx0cGh5X2ludGVyZmFjZV9jb3B5KG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5scGlfaW50ZXJmYWNlcyxcbitcdFx0XHRcdCAgIG1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4rXG4rXHRcdC8qIFRoZSBNQUMgc2lkZSBvZiAyNTAwQkFTRS1YIGlzIG5ldmVyIGJlbG93IDIuNSBHYnBzLCBub3RcbitcdFx0ICogZXZlbiB3aGVuIGEgcmF0ZSBtYXRjaGluZyBQSFkgZHJvcHMgdGhlIG1lZGlhIHRvIDEgR2JwcyxcbitcdFx0ICogYW5kIG10a19tYWNfZW5hYmxlX3R4X2xwaSgpIHJlZnVzZXMgdGhlIHhHTUlJIG1vZGVzXG4rXHRcdCAqIG91dHJpZ2h0LlxuK1x0XHQgKi9cbitcdFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCxcbitcdFx0XHQgICAgbWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLmxwaV9pbnRlcmZhY2VzKTtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSsrKVxuK1x0XHRcdGlmIChtdGtfaW50ZXJmYWNlX21vZGVfaXNfeGdtaWkoZXRoLCBpKSlcbitcdFx0XHRcdF9fY2xlYXJfYml0KGksXG4rXHRcdFx0XHRcdCAgICBtYWMtXHUwMDNlcGh5bGlua19jb25maWcubHBpX2ludGVyZmFjZXMpO1xuK1x0fVxuK1xuIFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hYy1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbiBcdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cdTAwM2VvZl9ub2RlKSxcbiBcdFx0XHRcdCBwaHlfbW9kZSwgbWFjX29wcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmhcbmluZGV4IDAxNjhlMmZiYzYxOTcuLjg4YTliM2IyM2JlYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oXG5AQCAtOTk0LDYgKzk5NCw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuIFx0TVRLX1UzX0NPUEhZX1YyX0JJVCxcbiBcdE1US19TUkFNX0JJVCxcbiBcdE1US18zNkJJVF9ETUFfQklULFxuK1x0TVRLX0dNQUNfRUVFX0JJVCxcbiBcbiBcdC8qIE1VWCBCSVRTKi9cbiBcdE1US19FVEhfTVVYX0dETTFfVE9fR01BQzFfRVNXX0JJVCxcbkBAIC0xMDM0LDYgKzEwMzUsNyBAQCBlbnVtIG1rdF9ldGhfY2FwYWJpbGl0aWVzIHtcbiAjZGVmaW5lIE1US19VM19DT1BIWV9WMlx0XHRCSVRfVUxMKE1US19VM19DT1BIWV9WMl9CSVQpXG4gI2RlZmluZSBNVEtfU1JBTVx0XHRCSVRfVUxMKE1US19TUkFNX0JJVClcbiAjZGVmaW5lIE1US18zNkJJVF9ETUFcdEJJVF9VTEwoTVRLXzM2QklUX0RNQV9CSVQpXG4rI2RlZmluZSBNVEtfR01BQ19FRUVcdFx0QklUX1VMTChNVEtfR01BQ19FRUVfQklUKVxuIFxuICNkZWZpbmUgTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dcdFx0XFxcbiBcdEJJVF9VTEwoTVRLX0VUSF9NVVhfR0RNMV9UT19HTUFDMV9FU1dfQklUKVxuQEAgLTExMTcsNyArMTExOSw3IEBAIGVudW0gbWt0X2V0aF9jYXBhYmlsaXRpZXMge1xuICNkZWZpbmUgTVQ3OTgxX0NBUFMgIChNVEtfR01BQzFfU0dNSUkgfCBNVEtfR01BQzJfU0dNSUkgfCBNVEtfR01BQzJfR0VQSFkgfCBcXFxuIFx0XHQgICAgICBNVEtfTVVYX0dNQUMxMl9UT19HRVBIWV9TR01JSSB8IE1US19RRE1BIHwgXFxcbiBcdFx0ICAgICAgTVRLX01VWF9VM19HTUFDMl9UT19RUEhZIHwgTVRLX1UzX0NPUEhZX1YyIHwgXFxcbi1cdFx0ICAgICAgTVRLX1JTVENUUkxfUFBFMSB8IE1US19TUkFNKVxuK1x0XHQgICAgICBNVEtfUlNUQ1RSTF9QUEUxIHwgTVRLX1NSQU0gfCBNVEtfR01BQ19FRUUpXG4gXG4gI2RlZmluZSBNVDc5ODZfQ0FQUyAgKE1US19HTUFDMV9TR01JSSB8IE1US19HTUFDMl9TR01JSSB8IFxcXG4gXHRcdCAgICAgIE1US19NVVhfR01BQzEyX1RPX0dFUEhZX1NHTUlJIHwgTVRLX1FETUEgfCBcXFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MjUuNTY3NTY4MjgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDUzMDIzMTE5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgZnV6emluZyBpcyBhIHZpYWJsZSBhcHByb2FjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaW52b2x2ZXMgYSBmZXcga2V5IHN0ZXBzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb24uIFNwZWNpZmljYWxseSwgSSBzZWUgY2hhbmdlcyBpbXBhY3RpbmcgdGhyZWUgZmlsZXM6IGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaGAuIFRoYXQncyB0aGUgTWVkaWF0ZWsgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChEU0Egc3dpdGNoIGRyaXZlcikgYW5kIGEgTWVkaWF0ZWsgU29DIEdpZ2FiaXQgRXRoZXJuZXQgTUFDIGRyaXZlciwgcmVzcGVjdGl2ZWx5LlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpbnZvbHZlcyBoYXJkd2FyZS1sZXZlbCBpbnRlcmFjdGlvbi4gSXMgdGhlIE1lZGlhdGVrIEV0aGVybmV0IFNvQyBhbmQgTVQ3NTMwIERTQSBzd2l0Y2ggYSBwaHlzaWNhbCBTb0MgcGxhdGZvcm0gZHJpdmVyPyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQncyB0aGUgY3J1Y2lhbCBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBwYXRjaCB0b3VjaGVzIGxvdy1sZXZlbCBoYXJkd2FyZSBjb21tdW5pY2F0aW9uLiBJJ2xsIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBNeSBuZXh0IG1vdmUgaXMgdG8gY2xvc2VseSBleGFtaW5lIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgbWVudGlvbmVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9gIGFuZCBgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB3ZSdyZSBkZWFsaW5nIHdpdGggaGFyZHdhcmUgaW50ZXJhY3Rpb24uXG5cbkkgdGhpbmsgSSdsbCB1c2UgYGdyZXBwZXJgIG9yIGp1c3QgcmVhZCB0aHJvdWdoIHRoZSBmaWxlcyBkaXJlY3RseSB0byBkZXRlcm1pbmUgd2hhdCB3ZSdyZSBhY3R1YWxseSBtb2RpZnlpbmcuIE9uY2UgSSBoYXZlIGEgaGFuZGxlIG9uIHRoZSBsZXZlbCBvZiBpbnRlcmFjdGlvbiwgSSBjYW4gdGhlbiBjb25zaWRlciBob3cgZnV6emluZyB3b3VsZCBmaXQgaW50byB0aGUgdGVzdGluZyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMxMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjMwLjA5NzgwMTk1MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1NjgzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfRFNBX01UNzUzMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzQtXFx0c2VsZWN0IFJFR01BUF9JUlFcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozNTpcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzY6XFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTU1JT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTM3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjQzOmNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNRElPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ2LVxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTY6XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01UNzUzMFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU3LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgKz0gbXQ3NjI4Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MzAuMTQ2ODYzNjYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5NjM4MjQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBNZWRpYXRlayBFdGhlcm5ldCBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1lZGlhdGVrIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uLiBMZXQncyBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnYC4gSSdtIGd1ZXNzaW5nIHRoaXMgZmlsZSB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBkcml2ZXIg4oCTIHRoaW5ncyBsaWtlIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgZHJpdmVyLCBzZWxlY3Rpbmcgc3BlY2lmaWMgTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlciBtb2RlbHMsIHBvdGVudGlhbGx5IG9wdGlvbnMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzIG9yIHZhcmlhdGlvbnMsIGFuZCBwcm9iYWJseSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIGFuZCBkZXBlbmRlbmNpZXMgZGVmaW5lZCBoZXJlIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBhbmQgcG9zc2libHkgdHJvdWJsZXNob290IGFueXRoaW5nIHJlbGF0ZWQgdG8gTWVkaWF0ZWsgRXRoZXJuZXQgY29udHJvbGxlcnMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgdGhlIGRlZmF1bHQgc2V0dGluZ3MsIGFueSBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucywgYW5kIHBhcnRpY3VsYXJseSBhbnkgdHJpY2t5IGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmtpbmcgb3IgaGFyZHdhcmUgc3Vic3lzdGVtcy4gSG9wZWZ1bGx5LCBpdOKAmXMgd2VsbC1vcmdhbml6ZWQgYW5kIGNsZWFybHkgZG9jdW1lbnRlZCwgYnV0IEknbSBwcmVwYXJlZCBmb3IgYSBiaXQgb2YgYSBkZWVwIGRpdmUgaWYgbmVjZXNzYXJ5LiBJdCdzIHRpbWUgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NDUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozMi41NDMyNDkwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDE2NDMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfTUVESUFURUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz04PWlmIE5FVF9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxMDpjb25maWcgTkVUX01FRElBVEVLX1NPQ19XRURcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTExLVxcdGRlcGVuZHMgb24gQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjEyOlxcdGRlZl9ib29sIE5FVF9NRURJQVRFS19TT0MgIT0gblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxNDpjb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIFNvQyBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6Mjk6Y29uZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBTVEFSIEV0aGVybmV0IE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZS03LW10a19ldGgteSA6PSBtdGtfZXRoX3NvYy5vIG10a19ldGhfcGF0aC5vIG10a19wcGUubyBtdGtfcHBlX2RlYnVnZnMubyBtdGtfcHBlX29mZmxvYWQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlOjg6bXRrX2V0aC0kKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkgKz0gbXRrX3dlZC5vIG10a193ZWRfbWN1Lm8gbXRrX3dlZF93by5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGUtOS1pZmRlZiBDT05GSUdfREVCVUdfRlNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZToxMDptdGtfZXRoLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlLTExLWVuZGlmXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSArPSBtdGtfd2VkX29wcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9NRURJQVRFS19TVEFSX0VNQUMpICs9IG10a19zdGFyX2VtYWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM9OTI9bXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYy0xMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTA0OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwNS1cXHRcXHRyZXR1cm4gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfd2VkLmg9NTY9c3RydWN0IG10a193ZG1hX2luZm8ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a193ZWQuaDo2NDojaWZkZWYgQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3dlZC5oLTY1LXN0YXRpYyBpbmxpbmUgYm9vbCBtdGtfd2VkX2lzX3YxKHN0cnVjdCBtdGtfd2VkX2h3ICpodylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6MzIuNTk3NDE3NjU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM3NDI3MDc5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIERyaXZlciBSZWFjaGFiaWxpdHkgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgc29tZXRoaW5nIGhlcmUuIEknbSB3b25kZXJpbmcgaWYgdGhlIGNvZGUgd2l0aGluIGBtdGtfZXRoX3NvYy5jYCBhbmQgYG10NzUzMC5jYCBpcyBhY3R1YWxseSBhY2Nlc3NpYmxlIGluIHR5cGljYWwgdmlydHVhbGl6ZWQgc2V0dXBzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIG9yIGlmIGl0J3Mgc3RyaWN0bHkgdGllZCB0byBNZWRpYVRlayBTb0MgaGFyZHdhcmUg4oCTIHNwZWNpZmljYWxseSB0aG9zZSBBUk0gb3IgTUlQUyBNZWRpYVRlayByb3V0ZXIgU29DcywgbGlrZSB0aGUgTVQ3NjIxLCBNVDc2MjIsIE1UNzYyMywgTVQ3OTgxLCBvciBNVDc5ODYsIHdoaWNoIEknbSB2ZXJ5IGZhbWlsaWFyIHdpdGguIFRoZSBrZXkgaGVyZSBpcyBkZXRlcm1pbmluZyB0aGUgZGVwZW5kZW5jaWVzLlxuXG5UbyBkbyB0aGF0LCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIGZvY3VzIG9uIHRoZSBwcm9iZSBmdW5jdGlvbnMgYW5kIGRyaXZlciByZWdpc3RyYXRpb24gc2VxdWVuY2VzIHdpdGhpbiBib3RoIGZpbGVzLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gYSB3YXkgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdmlydHVhbGl6YXRpb24sIG9yIGlmIGl0IGhhcyB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGNoZWNrcyB0aGF0IHdvdWxkIHByZXZlbnQgaXQgZnJvbSBydW5uaW5nIG91dHNpZGUgb2YgdGhlIGFjdHVhbCBNZWRpYVRlayBzaWxpY29uLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcyMywiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozNS45NzE2OTEzMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MTI5MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8bW9kdWxlX21kaW9fZHJpdmVyfHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcnxtZGlvX2RyaXZlcl9yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozNi4wMjA0MTQxMDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyOTQwNzU5ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyB0aGUgTVQ3NTMwIERyaXZlciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTVQ3NTMwIHN3aXRjaCBpcyBiZWluZyBpbnRlcmZhY2VkLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGRyaXZlciBjb2RlLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgcmV2aWV3aW5nIHRoZSBpbXBsZW1lbnRhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jYC4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIHJlZ2lzdGVyIGFjY2VzcyBhbmQgY29tbXVuaWNhdGlvbiBhcmUgaGFuZGxlZCB1c2luZyBib3RoIE1ESU8gYW5kIE1NSU8uIFRoYXQgd2lsbCBnaXZlIG1lIGEgZ3JlYXQgb3ZlcnZpZXcgb2YgdGhlIGRpZmZlcmVudCBhY2Nlc3MgbWV0aG9kcyBhdmFpbGFibGUuIFRoZW4sIEknbGwgbmVlZCB0byBsb29rIGF0IGhvdyB0aGlzIGFsbCB0aWVzIGludG8gdGhlIE1lZGlhVGVrIEV0aGVybmV0IFNvQyBnZW5lcmFsbHkuIEkgd2lsbCB0aGVyZWZvcmUgY2hlY2sgYG10a19ldGhfc29jLmNgIHRvIHNlZSBob3cgdGhlIHN3aXRjaCBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZSBvZiB0aGUgU29DJ3MgRXRoZXJuZXQgc3Vic3lzdGVtLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBkYXRhIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1NzozOC45NjExNzc2NDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTA5MTg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjM5LjAxNDEwMDg5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTMxMTM5MDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERTQSBOZXR3b3JrIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBhbmQgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSwgdGhlIGxpa2VseSBjdWxwcml0IGlzIHJlbGF0ZWQgdG8gRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKS4gVGhlcmVmb3JlLCBteSBmaXJzdCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBjb3JlIGRyaXZlciBjb2RlIGFuZCByZWxldmFudCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgc3RhbmRhcmQgRFNBIGNvcmUgZmlsZXMsIHN3aXRjaCBkcml2ZXJzIGZvciB2YXJpb3VzIGNoaXBzZXRzLCBhbmQgcGVyaGFwcyBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGdsdWUgY29kZSB0aGF0IGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIGFueSBjbHVlcyB0aGF0IEkgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo0MS4xNDUyNDMxMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY4MTc0OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3NTMwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTkxIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFxcdCs9IGtzODk5NS5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwKVxcdCs9IG10NzUzMC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05FVF9EU0FfTVQ3NTMwX01ESU8pICs9IG10NzUzMC1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfTkVUX0RTQV9NVDc1MzBfTU1JTykgKz0gbXQ3NTMwLW1taW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS05LW9iai0kKENPTkZJR19ORVRfRFNBX01UNzYyOCkgKz0gbXQ3NjI4Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE2OiNpbmNsdWRlIFxcXCJtdDc1MzAuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xOD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTk6bXQ3NTMwX3JlZ21hcF93cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIwLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyMTpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTIyLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz00Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6NDQ6bXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjc0Om10NzUzMF9tZGlvX3JlZ21hcF9sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz03OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjgwOm10NzUzMF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTg0LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBtdDc1MzBfcmVnbWFwX2J1cyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NjpcXHQucmVnX3dyaXRlID0gbXQ3NTMwX3JlZ21hcF93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo4NzpcXHQucmVnX3JlYWQgPSBtdDc1MzBfcmVnbWFwX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtODgtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTkwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzo5MTptdDc1MzFfY3JlYXRlX3NnbWlpKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy05Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTItXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZW1heF9yZWdpc3RlciA9IDB4MTdjO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExMzpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNlbG9jayA9IG10NzUzMF9tZGlvX3JlZ21hcF9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjExNDpcXHRcXHRtdDc1MzFfcGNzX2NvbmZpZ1tpXS1cXHUwMDNldW5sb2NrID0gbXQ3NTMwX21kaW9fcmVnbWFwX3VubG9jaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTUtXFx0XFx0bXQ3NTMxX3Bjc19jb25maWdbaV0tXFx1MDAzZWxvY2tfYXJnID0gXFx1MDAyNnByaXYtXFx1MDAzZWJ1cy1cXHUwMDNlbWRpb19sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTExNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxMTc6XFx0XFx0cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdChwcml2LVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc1MzBfcmVnbWFwX2J1cywgcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMTgtXFx0XFx0XFx0XFx0XFx0ICBtdDc1MzFfcGNzX2NvbmZpZ1tpXSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xMzctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTM4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10NzUzMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTEzOS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzYyMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc2MjFdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE0MDpcXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMFxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzBdLCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE0MS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1lZGlhdGVrLG10NzUzMVxcXCIsIC5kYXRhID0gXFx1MDAyNm10NzUzeF90YWJsZVtJRF9NVDc1MzFdLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQzLX07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTQ0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10NzUzMF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM9MTU0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNTU6bXQ3NTMwX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE1NzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqZG47XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTcxOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTcyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMDktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjEwOlxcdHByaXYtXFx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQocHJpdi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3NTMwX3JlZ21hcF9idXMsIHByaXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjExLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZWdtYXBfY29uZmlnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTIyMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyMjptdDc1MzBfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yMjMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjIyNDpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjI1LVxcdGludCByZXQgPSAwLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI0MDpcXHRtdDc1MzBfcmVtb3ZlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNDUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjQ2OnN0YXRpYyB2b2lkIG10NzUzMF9zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNDg6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTg6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjU5OlxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjYwOlxcdC5yZW1vdmUgPSBtdDc1MzBfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2MTpcXHQuc2h1dGRvd24gPSBtdDc1MzBfc2h1dGRvd24sXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjYyLVxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNjM6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1kaW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI2NDpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtdDc1MzBfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6MTA6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9MzA9bXQ3OTg4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtMzEte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjMyOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy0zMy1cXHR2b2lkIF9faW9tZW0gKmJhc2VfYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTY3PXN0YXRpYyB2b2lkIG10Nzk4OF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy02OC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6Njk6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzEtXFx0aWYgKHByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6NzI6XFx0XFx0bXQ3NTMwX3JlbW92ZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzU9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjc3OlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9ODc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkxLVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6OTI6XFx0XFx0Lm5hbWUgPSBcXFwibXQ3NTMwLW1taW9cXFwiLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTkzLVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IG10Nzk4OF9vZl9tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY6I2luY2x1ZGUgXFxcIm10NzUzMC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMT1zdGF0aWMgc3RydWN0IG10NzUzeF9wY3MgKnBjc190b19tdDc1M3hfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM2LS8qIFN0cmluZywgb2Zmc2V0LCBhbmQgcmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyBpZiBkaWZmZXJlbnQgZnJvbSA0IGJ5dGVzICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTMwX21pYl9kZXNjIG10NzUzMF9taWJbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzgtXFx0TUlCX0RFU0MoMSwgTVQ3NTMwX1BPUlRfTUlCX1RYX0RST1AsIFxcXCJUeERyb3BcXFwiKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00OT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDptdDc1MzBfbXV0ZXhfbG9jayhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NzptdDc1MzBfbXV0ZXhfdW5sb2NrKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTYzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0OmNvcmVfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy05NS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6OTY6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtOTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTk5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjEwMDpjb3JlX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTEwNS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTA2OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xMDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNDI6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNDU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTQ2OmNvcmVfc2V0KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTQ3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNTE9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTUyOmNvcmVfY2xlYXIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE1Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE1ODptdDc1MzBfbWlpX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xNjUtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE2NjpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHdyaXRlIG10NzUzMCByZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0xNzE9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxNzI6bXQ3NTMwX21paV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZylcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xODAtXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4MTpcXHRcXHRcXHRcXFwiZmFpbGVkIHRvIHJlYWQgbXQ3NTMwIHJlZ2lzdGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTgyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTE4OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE4OTptdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MTkzOlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0xOTQtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjE5NTpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk2LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoxOTc6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMTk4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIwMj1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwMzpfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjA3OlxcdG10NzUzMF9tdXRleF9sb2NrKHAtXFx1MDAzZXByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMDgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIwOTpcXHR2YWwgPSBtdDc1MzBfbWlpX3JlYWQocC1cXHUwMDNlcHJpdiwgcC1cXHUwMDNlcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMTE6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwLVxcdTAwM2Vwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIxNj1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxNzptdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIxOC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjIxOTpcXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjEtXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgcmVnKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjIyOlxcdHJldHVybiBfbXQ3NTMwX3JlYWQoXFx1MDAyNnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMjMtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTIyNT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMjY6bXQ3NTMwX3JtdyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIyNy1cXHQgICB1MzIgbWFzaywgdTMyIHNldClcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjI4LXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjI5OlxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzM6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM3Om10NzUzMF9zZXQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yMzgte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk6XFx0bXQ3NTMwX3Jtdyhwcml2LCByZWcsIHZhbCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjQzOm10NzUzMF9jbGVhcihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI0NC17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI0NTpcXHRtdDc1MzBfcm13KHByaXYsIHJlZywgdmFsLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjQ2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yNDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyNDk6bXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjU1LVxcdHZhbCA9IEFUQ19CVVNZIHwgQVRDX01BVCgwKSB8IGNtZDtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjU2OlxcdHJldCA9IG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yNTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjI2MDpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjYxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjY3OlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI2OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yODY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjg3Om10NzUzMF9mZGJfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHN0cnVjdCBtdDc1MzBfZmRiICpmZGIpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTI4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjkzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6Mjk0OlxcdFxcdHJlZ1tpXSA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9UU1JBMSArIChpICogNCkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzEyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMxMzptdDc1MzBfZmRiX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTE2IHZpZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzE0LVxcdFxcdCB1OCBwb3J0X21hc2ssIGNvbnN0IHU4ICptYWMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAzOyBpKyspXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzOTpcXHRcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQTEgKyAoaSAqIDQpLCByZWdbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0Mi0vKiBTZXQgdXAgc3dpdGNoIGNvcmUgY2xvY2sgZm9yIE1UNzUzMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDM6c3RhdGljIHZvaWQgbXQ3NTMwX3BsbF9zZXR1cChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzgzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjM4NDptdDc1MzBfc2V0dXBfcG9ydDYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zODUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozODY6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM4Ny1cXHR1MzIgbmNwbzEsIHNzY19kZWx0YSwgeHRhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTItXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzkzOlxcdFxcdG10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1A2RUNSLCBQNl9JTlRGX01PREVfTUFTSyxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk0LVxcdFxcdFxcdCAgIFA2X0lOVEZfTU9ERSgwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzk3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozOTg6XFx0bXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzBfUDZFQ1IsIFA2X0lOVEZfTU9ERV9NQVNLLCBQNl9JTlRGX01PREUoMSkpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zOTktXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQwMDpcXHR4dGFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX01UUkFQKSBcXHUwMDI2IE1UNzUzMF9YVEFMX01BU0s7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz00MzY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDM3Om10NzUzMV9wbGxfc2V0dXAoc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00Mzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ0My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DUkVWKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDQ1OlxcdHRvcF9zaWcgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfVE9QX1NJR19TUik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ0NjpcXHRod3N0cmFwID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTNYX1RSQVApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NDctXFx0aWYgKCh2YWwgXFx1MDAyNiBDSElQX1JFVl9NKSBcXHUwMDNlIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDU0LVxcdC8qIFN0ZXAgMSA6IERpc2FibGUgTVQ3NTMxIENPUkVQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDU1OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1Ni1cXHR2YWwgXFx1MDAyNj0gfkVOX0NPUkVQTEw7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ1NzpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NTgtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ1OS1cXHQvKiBTdGVwIDI6IHN3aXRjaCB0byBYVEFMIG91dHB1dCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjA6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDYxLVxcdHZhbCB8PSBTV19DTEtTVztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDYyOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2My1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NjUtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX0VOO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NjY6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDY4LVxcdC8qIFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDY5OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3MC1cXHR2YWwgfD0gU1dfUExMR1A7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ3MTpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00NzItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3My1cXHQvKiBTdGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0NzQ6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3NS1cXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfUE9TRElWX007XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3Ni1cXHR2YWwgfD0gMiBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1BPU0RJVl9TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0Nzc6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ3OC1cXHR1c2xlZXBfcmFuZ2UoMjUsIDM1KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODEtXFx0Y2FzZSBNVDc1MzFfWFRBTF9GU0VMXzI1TUhaOlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODI6XFx0XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4My1cXHRcXHR2YWwgXFx1MDAyNj0gflJHX0NPUkVQTExfU0RNX1BDV19NO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODQtXFx0XFx0dmFsIHw9IDB4MTQwMDAwIFxcdTAwM2NcXHUwMDNjIFJHX0NPUkVQTExfU0RNX1BDV19TO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0ODU6XFx0XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ4Ni1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDg3LVxcdGNhc2UgTVQ3NTMxX1hUQUxfRlNFTF80ME1IWjpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDg4OlxcdFxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00ODktXFx0XFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfTTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDkwLVxcdFxcdHZhbCB8PSAweDE5MDAwMCBcXHUwMDNjXFx1MDAzYyBSR19DT1JFUExMX1NETV9QQ1dfUztcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NDkxOlxcdFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy00OTItXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk1LVxcdC8qIFNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBoaWdoICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjQ5NjpcXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNDk3LVxcdHZhbCB8PSBSR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo0OTg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTQ5OS1cXHQvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBYVEFMIGNsb2NrcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwMi1cXHQvKiBTdGVwIDU6IHNldCBmZWVkYmFjayBkaXZpZGUgcmF0aW8gdXBkYXRlIHNpZ25hbCB0byBsb3cgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTAzOlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MDQtXFx0dmFsIFxcdTAwMjY9IH5SR19DT1JFUExMX1NETV9QQ1dfQ0hHO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDU6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwNi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTA3LVxcdC8qIEVuYWJsZSAzMjVNIGNsb2NrIGZvciBTR01JSSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MDg6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUwOS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEwLVxcdC8qIEVuYWJsZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxMTpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX0FOQV9QTExHUF9DUjIsIDB4NGY0MDAwMCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUxMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTEzLVxcdC8qIFN0ZXAgNjogRW5hYmxlIE1UNzUzMSBQTEwgKi9cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTE0OlxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MTUtXFx0dmFsIHw9IFJHX0NPUkVQTExfRU47XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUxNjpcXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MTg6XFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTE5LVxcdHZhbCB8PSBFTl9DT1JFUExMO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjA6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTIxLVxcdHVzbGVlcF9yYW5nZSgyNSwgMzUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTUyND1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1MjU6bXQ3NTMwX21pYl9yZXNldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUyNi17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjUyNzpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTI4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1Mjk6XFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9NSUJfQ0NSLCBDQ1JfTUlCX0ZMVVNIKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMwOlxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfTUlCX0NDUiwgQ0NSX01JQl9BQ1RJVkFURSk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMS19XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzMi1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTMzOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV9yZWFkX2MyMihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTUzNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTM4OnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jMjIoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTM5LVxcdFxcdFxcdFxcdHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NDQ6c3RhdGljIGludCBtdDc1MzBfcGh5X3JlYWRfYzQ1KHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0NS1cXHRcXHRcXHQgICAgICAgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU0OS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NTUwOnN0YXRpYyBpbnQgbXQ3NTMwX3BoeV93cml0ZV9jNDUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTEtXFx0XFx0XFx0XFx0aW50IHJlZ251bSwgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz01NTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1NTc6bXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NTgtXFx0XFx0XFx0aW50IHJlZ251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01NjItXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU2MzpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3My1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjU3NDpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTU3NS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODYtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo1ODc6XFx0cmV0ID0gbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy01ODgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNTk5LW91dDpcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjAwOlxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz02MDU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2MDY6bXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjA3LVxcdFxcdFxcdCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MTEtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYxMjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyMi1cXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjYyMzpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTYyNC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02MzUtXFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjM2OlxcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjM3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY0Ny1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY0ODpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NDktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NjUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NjU0Om10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjU4LVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2NTk6XFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02NzAtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY3MTpcXHRyZXQgPSBtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTY3Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02ODMtb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo2ODQ6XFx0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjg1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTY4OT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5MDptdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjkxLVxcdFxcdFxcdCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy02OTUtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjY5NjpcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNjk3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcwNy1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzA4OlxcdHJldCA9IG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzA5LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcxOS1vdXQ6XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjcyMDpcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MjEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzI2PW10NzUzeF9waHlfcmVhZF9jMjIoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyNy17XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjcyODpcXHRzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTcyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz03MzQ9bXQ3NTN4X3BoeV9yZWFkX2M0NShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcG9ydCwgaW50IGRldmFkLCBpbnQgcmVnbnVtKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MzUte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3MzY6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03MzctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzQyPW10NzUzeF9waHlfd3JpdGVfYzIyKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDMte1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzo3NDQ6XFx0c3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy03NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9NzUwPW10NzUzeF9waHlfd3JpdGVfYzQ1KHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwb3J0LCBpbnQgZGV2YWQsIGludCByZWdudW0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzUyLXtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6NzUzOlxcdHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtNzU0LVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDIxOjU3OjQxLjIwMjA2OTE3OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTgxNTc2MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBNZWRpYVRlayBFdGhlcm5ldCBEcml2ZXJzKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEZpcnN0LCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBleGFjdGx5IE1UNzUzMCBhbmQgbXRrX2V0aF9zb2MgYXJlLiBSaWdodCwgTVQ3NTMwIGlzIHRoYXQgc3dpdGNoIElDLCB0eXBpY2FsbHkgY29ubmVjdGVkIHZpYSBNRElPIG9yIE1NSU8gd2hlbiBwYWlyZWQgd2l0aCBNZWRpYVRlayBTb0NzIGxpa2UgdGhlIE1UNzk4OC4gR290IGl0LiBBbmQgYG10a19ldGhfc29jYD8gVGhhdCdzIHRoZSBFdGhlcm5ldCBNQUMgZHJpdmVyIHRhaWxvcmVkIGZvciBNZWRpYVRlayByb3V0ZXIgU29DcyDigJMgdGhlIHVzdWFsIHN1c3BlY3RzIGxpa2UgTVQ3NjIwLCBNVDc2MjEsIGFuZCBzbyBvbiwgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIE1UNzk4OC5cblxuU28sIGFyZSB0aGVzZSBlc3NlbnRpYWxseSBwbGF0Zm9ybSBhbmQvb3IgTURJTyBkcml2ZXJzIGZvciBNZWRpYVRlayBoYXJkd2FyZT8gTGV0J3MgY29uZmlybSB0aGF0LiBBaCwgeWVzLCBgbXRrX2V0aF9zb2MuY2AgaXMgZGVmaW5pdGVseSByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyLiBJIHNlZSB0aGUgdGVsbHRhbGUgc2lnbnM6IGBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0geyAuLi4gLmRyaXZlciA9IHsgLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKG9mX210a19tYXRjaCksIC4uLiB9IH07YCBhbmQgdGhlIGBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO2AuIFRoYXQgY2xlYXJseSBpbmRpY2F0ZXMgdGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciwgbWF0Y2hpbmcgYmFzZWQgb24gdGhlIGRldmljZSB0cmVlLCBhcyBleHBlY3RlZC4gTm93LCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBkcml2ZXIuIExldCBtZSBjaGVjayBgbXRrX2V0aF9zb2MuY2AgZGlyZWN0bHkuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6NDQuMzgzNjQ4NTQ1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQwMjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NTY5MD1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy01Njk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NTY5OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10a19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNTcwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYz0xNzQ5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19zdGFyX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jOjE3NTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtdGtfc3Rhcl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYy0xNzU4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo0NC40MjkwNTY2MjNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzkwMDU4MTczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGlzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIHJ1bGVzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNoYW5nZXMgdGhhdCBjYW4gYmUgbWVhbmluZ2Z1bGx5IGZ1enplZCBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50LiBMZXQncyBzZWU6IG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcywgbnVtZXJpYyBjb25zdGFudCBjaGFuZ2VzIHdpdGhvdXQgZnVuY3Rpb25hbCBpbXBhY3QsIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBhbmQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlIGFyZSBhbGwgbm8tZ29zIGZvciBmdXp6aW5nLlxuXG5Ob3csIGhvbGQgb24gYSBzZWNvbmQuLi4gVGhpcyBwYXRjaCB0b3VjaGVzIHBsYXRmb3JtIGRyaXZlcnMgZm9yIE1lZGlhVGVrIFNvQ3MuIEFyZSB0aG9zZSBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBRRU1VIG9yIEdDRSBzZXR1cD8gTXkgZXhwZXJpZW5jZSBzYXlzIG5vLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gU3RhbmRhcmQgZnV6emluZyByZWxpZXMgb24geDg2XzY0IG9yIGFybTY0IFFFTVUvR0NFLCBhbmQgdGhlc2UgZG9uJ3QgdHlwaWNhbGx5IGluY2x1ZGUgZW11bGF0ZWQgTWVkaWFUZWsgU29DIGRldmljZXMgb3IgdGhlaXIgYXNzb2NpYXRlZCBkZXZpY2UgdHJlZXMuIFFFTVUgZ2VuZXJhbGx5IHByZXNlbnRzIHZpcnRpbywgUEwwMTEsIGFuZCBzaW1pbGFyIHZpcnR1YWwgaGFyZHdhcmUgaW4gaXRzIGRldmljZSB0cmVlLlxuXG5TcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jYCB3aGljaCBoYW5kbGVzIE1lZGlhVGVrIEV0aGVybmV0LiBUaGUgZHJpdmVyIHJlbGllcyBvbiBPcGVuRmlybXdhcmUgKE9GKSBjb21wYXRpYmxlIHN0cmluZ3MgbGlrZSBgbWVkaWF0ZWssbXQyNzAxLWV0aGAsIGBtZWRpYXRlayxtdDc2MjItZXRoYCwgZXRjLiBUaGVyZSdzIGFsc28gdGhlIE1UNzUzMCBEU0Egc3dpdGNoLCB3aGljaCBsb29rcyBmb3Igc3RyaW5ncyBsaWtlIGBtZWRpYXRlayxtdDc2MjFgLCBgbWVkaWF0ZWssbXQ3NTMwYC5cblxuVGhlIHByb2JsZW0gaXMgdGhlc2UgZGV2aWNlcyDigJMgdGhlIEV0aGVybmV0IE1BQyBhbmQgdGhlIERTQSBzd2l0Y2ggY29udHJvbGxlciDigJMgKnJlcXVpcmUqIHRoZSB1bmRlcmx5aW5nIE1lZGlhVGVrIFNvQyBoYXJkd2FyZSwgb3IgYXQgdGhlIHZlcnkgbGVhc3QsIGEgKnNwZWNpZmljKiBTb0MgRFRCLiAgU3RhbmRhcmQgUUVNVS9HQ0UgZG9lc24ndCBlbXVsYXRlIHRob3NlLiBTbywgbmVpdGhlciBkcml2ZXIgd2lsbCBwcm9iZSwgYW5kIHRoZWlyIHJ1bnRpbWUgY29kZSB3aWxsIGJlIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgY29uZmlybTogaXMgdGhlcmUgKmFueSogdmlydHVhbCBvciBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZXNlIE1lZGlhVGVrIEV0aGVybmV0IG9yIERTQSBzd2l0Y2ggY29tcG9uZW50cz8gTm8sIGEgcXVpY2sgc2VhcmNoIGNvbmZpcm1zIHRoYXQgdGhvc2UgZHJpdmVycyByZXF1aXJlIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGRldmljZSBvciB0aGUgTURJTyBidXMgdG8gZXZlbiBwcm9iZSBhbmQgaW5zdGFudGlhdGUgdGhlaXIgbmV0d29yayBkZXZpY2VzLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoaXMgcGF0Y2ggbW9kaWZpZXMgY29kZSB3aXRoaW4gZHJpdmVycyB0aGF0IGFyZSBpbmhlcmVudGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgaXQncyBhIGNsZWFyIGNhc2UuIFRoaXMgaXNuJ3Qgc29tZXRoaW5nIHdlIGNhbiBlZmZlY3RpdmVseSBmdXp6LlxuXG5UaW1lIGZvciBhIGZpbmFsIHNhbml0eSBjaGVjayBvZiB0aGUgb3V0cHV0IEknbSBhYm91dCB0byBzdWJtaXQ6XG4qICAgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC5cbiogICBgRW5hYmxlQ29uZmlnc2Agd29uJ3QgYmUgbmVjZXNzYXJ5OyB3ZSdyZSBub3QgZW5hYmxpbmcgYW55dGhpbmcgaGVyZS5cbiogICBgRm9jdXNTeW1ib2xzYCBpcyBlbXB0eS5cbiogICBUaGUgYFJlYXNvbmluZ2AgbmVlZHMgdG8gYmUgY3J5c3RhbCBjbGVhcjogdGhpcyBwYXRjaCBpbnZvbHZlcyBNZWRpYVRlayBTb0MgRXRoZXJuZXQgYW5kIERTQSBzd2l0Y2ggZHJpdmVycyAobXRrX2V0aF9zb2MgYW5kIG10NzUzMCkuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvZGV2aWNlIHRyZWUgbm9kZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCB3aGljaCBtYWtlcyB0aGVtIHVuZnV6emFibGUgaW4gc3VjaCBjb250ZXh0cy5cblxuT2theSwgdGhhdCBhbGwgbG9va3Mgc29saWQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc4MywiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMjE6NTc6NTIuMzI5NjQwOTgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUEhZL0xQSSBjYXBhYmlsaXR5IGhhbmRsaW5nIGluIHRoZSBNZWRpYVRlayBNVDc1MzAgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYykgYW5kIHRoZSBNZWRpYVRlayBTb0MgRXRoZXJuZXQgTUFDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYykuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBNZWRpYVRlayBTb0MgaGFyZHdhcmUvcGxhdGZvcm0gZGV2aWNlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaHVzLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFBIWS9MUEkgY2FwYWJpbGl0eSBoYW5kbGluZyBpbiB0aGUgTWVkaWFUZWsgTVQ3NTMwIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMpIGFuZCB0aGUgTWVkaWFUZWsgU29DIEV0aGVybmV0IE1BQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMpLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgTWVkaWFUZWsgU29DIGhhcmR3YXJlL3BsYXRmb3JtIGRldmljZXMgdGhhdCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGh1cywgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQyMTo1Nzo1Mi4zMjk2ODY5OTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowjfkfm[1] Phase: Running StartedAt: 2026-09-02 21:58:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjfkfm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 21:58:03 +0000 UTC FinishedAt: 2026-09-02 21:58:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}