Name: series-workflowch7hj Phase: Failed StartedAt: 2026-08-14 11:21:14 +0000 UTC FinishedAt: 2026-08-14 12:08:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch7hj[0] Phase: Succeeded StartedAt: 2026-08-14 11:21:14 +0000 UTC FinishedAt: 2026-08-14 12:08:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch7hj[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 11:21:14 +0000 UTC FinishedAt: 2026-08-14 12:08:12 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ODFjYjhmYWZmZDUxZTlmZWI5MTZmMGNhMjY2M2ZkY2ExMWQ3OTI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MDY6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcbmluZGV4IGI2NzliZWQ5NTJkZTMuLjJiYTc4YmYwZTk3YjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5AQCAtNSw2ICYjNDM7NSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbkBAIC0yMyw2ICYjNDM7MjQsOCBAQFxuICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFXHQweDIwMDAwMFxuICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9EQVRBX01BWF9TSVpFXHQweDEwMDAwXG4gI2RlZmluZSBOUFVfRFVNUF9TSVpFXHRcdFx0XHQ1MTJcbiYjNDM7LyogTWF4aW11bSBtYWlsYm94IERNQSBwYXlsb2FkIChQUEUgfjI4IGJ5dGVzLCBXTEFOIFRMViB1cCB0byAyNCkuICovXG4mIzQzOyNkZWZpbmUgQUlST0hBX05QVV9NQk9YX1NJWkVcdFx0XHQyNTZcbiBcbiAjZGVmaW5lIFJFR19OUFVfTE9DQUxfU1JBTVx0XHQweDBcbiBcbkBAIC0xNjAsMjMgJiM0MzsxNjMsMzMgQEAgc3RydWN0IHdsYW5fbWJveF9kYXRhIHtcbiBcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XG4gfTtcbiBcbi1zdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXG4tXHRcdFx0ICAgICAgIHZvaWQgKnAsIGludCBzaXplKVxuJiM0MztzdGF0aWMgaW50IF9fYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiYjNDM7XHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbiwgdm9pZCAqcmVwbHksXG4mIzQzO1x0XHRcdFx0IHUxNiByZXBseV9sZW4pXG4ge1xuLVx0dTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqL1xuLVx0dTMyIHZhbCwgb2Zmc2V0ID0gY29yZSBcdTAwM2NcdTAwM2MgNDtcbiYjNDM7XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzWzBdOyAvKiBGSVhNRTogY29yZSAqL1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbWFwX2xlbiA9IEFMSUdOKGxlbiwgU01QX0NBQ0hFX0JZVEVTKTtcbiYjNDM7XHR1MzIgdmFsLCBvZmZzZXQgPSAwO1xuIFx0aW50IHJldDtcbiBcbi1cdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuJiM0MztcdGlmIChsZW4gXHUwMDNjPSAwIHx8IGxlbiBcdTAwM2UgQUlST0hBX05QVV9NQk9YX1NJWkUpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJlcGx5IFx1MDAyNlx1MDAyNiByZXBseV9sZW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0bWVtY3B5KGNvcmUtXHUwMDNlYnVmLCBkYXRhLCBsZW4pO1xuJiM0MztcbiYjNDM7XHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIGNvcmUtXHUwMDNlYnVmLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XG4gXHRyZXQgPSBkbWFfbWFwcGluZ19lcnJvcihucHUtXHUwMDNlZGV2LCBkbWFfYWRkcik7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcbiYjNDM7XHRcdGdvdG8gdW5sb2NrO1xuIFxuIFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMCkgJiM0Mzsgb2Zmc2V0LCBkbWFfYWRkcik7XG4tXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSAmIzQzOyBvZmZzZXQsIHNpemUpO1xuJiM0MztcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDEpICYjNDM7IG9mZnNldCwgbGVuKTtcbiBcdHJlZ21hcF9yZWFkKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCBcdTAwMjZ2YWwpO1xuIFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCB2YWwgJiM0MzsgMSk7XG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1CT1hfTVNHX0ZVTkNfSUQsIGZ1bmNfaWQpIHwgTUJPWF9NU0dfV0FJVF9SU1A7XG5AQCAtMTg5LDEzICYjNDM7MjAyLDIzIEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiBcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBGSUVMRF9HRVQoTUJPWF9NU0dfU1RBVFVTLCB2YWwpICE9IE5QVV9NQk9YX1NVQ0NFU1MpXG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXG4tXHRzcGluX3VubG9ja19iaChcdTAwMjZucHUtXHUwMDNlY29yZXNbY29yZV0ubG9jayk7XG4mIzQzO1x0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFxuLVx0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuJiM0MztcdC8qIENvcHkgdGhlIHRyYWlsaW5nIHJlcGx5X2xlbiBieXRlcyBvZiB0aGUgcmVzcG9uc2UuICovXG4mIzQzO1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHJlcGx5KVxuJiM0MztcdFx0bWVtY3B5KHJlcGx5LCBjb3JlLVx1MDAzZWJ1ZiAmIzQzOyBsZW4gLSByZXBseV9sZW4sIHJlcGx5X2xlbik7XG4mIzQzO3VubG9jazpcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjb3JlLVx1MDAzZWxvY2spO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiYjNDM7XHRcdFx0ICAgICAgIHZvaWQgKmRhdGEsIGludCBsZW4pXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICphZGRyLFxuIFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGludCBmd19tYXhfc2l6ZSlcbiB7XG5AQCAtNDk3LDkgJiM0Mzs1MjAsOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuIFx0d2xhbl9kYXRhLVx1MDAzZWZ1bmNfdHlwZSA9IE5QVV9PUF9HRVQ7XG4gXHR3bGFuX2RhdGEtXHUwMDNlZnVuY19pZCA9IGZ1bmNfaWQ7XG4gXG4tXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pO1xuLVx0aWYgKCFlcnIpXG4tXHRcdG1lbWNweShkYXRhLCB3bGFuX2RhdGEtXHUwMDNlZCwgZGF0YV9sZW4pO1xuJiM0MztcdGVyciA9IF9fYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuLFxuJiM0MztcdFx0XHRcdCAgICBkYXRhLCBkYXRhX2xlbik7XG4gXHRrZnJlZSh3bGFuX2RhdGEpO1xuIFxuIFx0cmV0dXJuIGVycjtcbkBAIC03NzAsNiAmIzQzOzc5MiwxOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tpXTtcbiYjNDM7XHRcdHZvaWQgKnJhdztcbiYjNDM7XG4mIzQzO1x0XHRyYXcgPSBkZXZtX2ttYWxsb2MoZGV2LCBBSVJPSEFfTlBVX01CT1hfU0laRSAmIzQzOyBTTVBfQ0FDSEVfQllURVMsXG4mIzQzO1x0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0XHRpZiAoIXJhdylcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0Y29yZS1cdTAwM2VidWYgPSBQVFJfQUxJR04ocmF3LCBTTVBfQ0FDSEVfQllURVMpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFx1MDAyNnJlcyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcbmluZGV4IDc1ODlmY2NmZWVmNmQuLmY2MzU3NjZlM2RiYTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NvYy9haXJvaGEvYWlyb2hhX29mZmxvYWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcbkBAIC0xNzMsNiAmIzQzOzE3Myw3IEBAIHN0cnVjdCBhaXJvaGFfbnB1IHtcbiBcdFx0LyogcHJvdGVjdCBjb25jdXJyZW50IG5wdSBtZW1vcnkgYWNjZXNzZXMgKi9cbiBcdFx0c3BpbmxvY2tfdCBsb2NrO1xuIFx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd2R0X3dvcms7XG4mIzQzO1x0XHR2b2lkICpidWY7IC8qIG1haWxib3ggRE1BIGJvdW5jZSBidWZmZXIgKi9cbiBcdH0gY29yZXNbTlBVX05VTV9DT1JFU107XG4gXG4gXHRpbnQgaXJxc1tOUFVfTlVNX0lSUV07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgTlBVIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgZHJpdmVyIGZvciBBaXJvaGEgRU43NTgxL0FONzU4MyByb3V0ZXJzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDgxY2I4ZmFmZmQ1MWU5ZmViOTE2ZjBjYTI2NjNmZGNhMTFkNzkyNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDEyOjA2OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMKaW5kZXggYjY3OWJlZDk1MmRlMy4uMmJhNzhiZjBlOTdiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvZGV2Y29yZWR1bXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZG1hLW1hcHBpbmcuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9maXJtd2FyZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwpAQCAtMjMsNiAmIzQzOzI0LDggQEAKICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFCTB4MjAwMDAwCiAjZGVmaW5lIE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRQkweDEwMDAwCiAjZGVmaW5lIE5QVV9EVU1QX1NJWkUJCQkJNTEyCiYjNDM7LyogTWF4aW11bSBtYWlsYm94IERNQSBwYXlsb2FkIChQUEUgfjI4IGJ5dGVzLCBXTEFOIFRMViB1cCB0byAyNCkuICovCiYjNDM7I2RlZmluZSBBSVJPSEFfTlBVX01CT1hfU0laRQkJCTI1NgogCiAjZGVmaW5lIFJFR19OUFVfTE9DQUxfU1JBTQkJMHgwCiAKQEAgLTE2MCwyMyAmIzQzOzE2MywzMyBAQCBzdHJ1Y3Qgd2xhbl9tYm94X2RhdGEgewogCURFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7CiB9OwogCi1zdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCi0JCQkgICAgICAgdm9pZCAqcCwgaW50IHNpemUpCiYjNDM7c3RhdGljIGludCBfX2Fpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiYjNDM7CQkJCSBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLCB2b2lkICpyZXBseSwKJiM0MzsJCQkJIHUxNiByZXBseV9sZW4pCiB7Ci0JdTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqLwotCXUzMiB2YWwsIG9mZnNldCA9IGNvcmUgJmx0OyZsdDsgNDsKJiM0MzsJc3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9ICZhbXA7bnB1LSZndDtjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi8KIAlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwl1bnNpZ25lZCBpbnQgbWFwX2xlbiA9IEFMSUdOKGxlbiwgU01QX0NBQ0hFX0JZVEVTKTsKJiM0MzsJdTMyIHZhbCwgb2Zmc2V0ID0gMDsKIAlpbnQgcmV0OwogCi0JZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShucHUtJmd0O2RldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpOwomIzQzOwlpZiAobGVuICZsdDs9IDAgfHwgbGVuICZndDsgQUlST0hBX05QVV9NQk9YX1NJWkUpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJaWYgKHJlcGx5ICZhbXA7JmFtcDsgcmVwbHlfbGVuICZndDsgbGVuKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2NvcmUtJmd0O2xvY2spOwomIzQzOwomIzQzOwltZW1jcHkoY29yZS0mZ3Q7YnVmLCBkYXRhLCBsZW4pOwomIzQzOwomIzQzOwlkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS0mZ3Q7ZGV2LCBjb3JlLSZndDtidWYsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTsKIAlyZXQgPSBkbWFfbWFwcGluZ19lcnJvcihucHUtJmd0O2RldiwgZG1hX2FkZHIpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlzcGluX2xvY2tfYmgoJmFtcDtucHUtJmd0O2NvcmVzW2NvcmVdLmxvY2spOwomIzQzOwkJZ290byB1bmxvY2s7CiAKIAlyZWdtYXBfd3JpdGUobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMCkgJiM0Mzsgb2Zmc2V0LCBkbWFfYWRkcik7Ci0JcmVnbWFwX3dyaXRlKG5wdS0mZ3Q7cmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDEpICYjNDM7IG9mZnNldCwgc2l6ZSk7CiYjNDM7CXJlZ21hcF93cml0ZShucHUtJmd0O3JlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSAmIzQzOyBvZmZzZXQsIGxlbik7CiAJcmVnbWFwX3JlYWQobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCAmYW1wO3ZhbCk7CiAJcmVnbWFwX3dyaXRlKG5wdS0mZ3Q7cmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDIpICYjNDM7IG9mZnNldCwgdmFsICYjNDM7IDEpOwogCXZhbCA9IEZJRUxEX1BSRVAoTUJPWF9NU0dfRlVOQ19JRCwgZnVuY19pZCkgfCBNQk9YX01TR19XQUlUX1JTUDsKQEAgLTE4OSwxMyAmIzQzOzIwMiwyMyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiAJaWYgKCFyZXQgJmFtcDsmYW1wOyBGSUVMRF9HRVQoTUJPWF9NU0dfU1RBVFVTLCB2YWwpICE9IE5QVV9NQk9YX1NVQ0NFU1MpCiAJCXJldCA9IC1FSU5WQUw7CiAKLQlzcGluX3VubG9ja19iaCgmYW1wO25wdS0mZ3Q7Y29yZXNbY29yZV0ubG9jayk7CiYjNDM7CWRtYV91bm1hcF9zaW5nbGUobnB1LSZndDtkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7CiAKLQlkbWFfdW5tYXBfc2luZ2xlKG5wdS0mZ3Q7ZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpOwomIzQzOwkvKiBDb3B5IHRoZSB0cmFpbGluZyByZXBseV9sZW4gYnl0ZXMgb2YgdGhlIHJlc3BvbnNlLiAqLwomIzQzOwlpZiAoIXJldCAmYW1wOyZhbXA7IHJlcGx5KQomIzQzOwkJbWVtY3B5KHJlcGx5LCBjb3JlLSZndDtidWYgJiM0MzsgbGVuIC0gcmVwbHlfbGVuLCByZXBseV9sZW4pOwomIzQzO3VubG9jazoKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtjb3JlLSZndDtsb2NrKTsKIAogCXJldHVybiByZXQ7CiB9CiAKJiM0MztzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiYjNDM7CQkJICAgICAgIHZvaWQgKmRhdGEsIGludCBsZW4pCiYjNDM7ewomIzQzOwlyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICphZGRyLAogCQkJCSAgICBjb25zdCBjaGFyICpmd19uYW1lLCBpbnQgZndfbWF4X3NpemUpCiB7CkBAIC00OTcsOSAmIzQzOzUyMCw4IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19nZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsCiAJd2xhbl9kYXRhLSZndDtmdW5jX3R5cGUgPSBOUFVfT1BfR0VUOwogCXdsYW5fZGF0YS0mZ3Q7ZnVuY19pZCA9IGZ1bmNfaWQ7CiAKLQllcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pOwotCWlmICghZXJyKQotCQltZW1jcHkoZGF0YSwgd2xhbl9kYXRhLSZndDtkLCBkYXRhX2xlbik7CiYjNDM7CWVyciA9IF9fYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuLAomIzQzOwkJCQkgICAgZGF0YSwgZGF0YV9sZW4pOwogCWtmcmVlKHdsYW5fZGF0YSk7CiAKIAlyZXR1cm4gZXJyOwpAQCAtNzcwLDYgJiM0Mzs3OTIsMTggQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShucHUtJmd0O2NvcmVzKTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSAmYW1wO25wdS0mZ3Q7Y29yZXNbaV07CiYjNDM7CQl2b2lkICpyYXc7CiYjNDM7CiYjNDM7CQlyYXcgPSBkZXZtX2ttYWxsb2MoZGV2LCBBSVJPSEFfTlBVX01CT1hfU0laRSAmIzQzOyBTTVBfQ0FDSEVfQllURVMsCiYjNDM7CQkJCSAgIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCFyYXcpCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQljb3JlLSZndDtidWYgPSBQVFJfQUxJR04ocmF3LCBTTVBfQ0FDSEVfQllURVMpOwomIzQzOwl9CiYjNDM7CiAJZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCAmYW1wO3Jlcyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7ZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcbiYjMzQ7KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmgKaW5kZXggNzU4OWZjY2ZlZWY2ZC4uZjYzNTc2NmUzZGJhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmgKQEAgLTE3Myw2ICYjNDM7MTczLDcgQEAgc3RydWN0IGFpcm9oYV9ucHUgewogCQkvKiBwcm90ZWN0IGNvbmN1cnJlbnQgbnB1IG1lbW9yeSBhY2Nlc3NlcyAqLwogCQlzcGlubG9ja190IGxvY2s7CiAJCXN0cnVjdCB3b3JrX3N0cnVjdCB3ZHRfd29yazsKJiM0MzsJCXZvaWQgKmJ1ZjsgLyogbWFpbGJveCBETUEgYm91bmNlIGJ1ZmZlciAqLwogCX0gY29yZXNbTlBVX05VTV9DT1JFU107CiAKIAlpbnQgaXJxc1tOUFVfTlVNX0lSUV07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2g6IEFpcm9oYSBOUFUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgIGFuZCBgaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhgLiBJdCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgaG93IG1lc3NhZ2VzIGFyZSBzZW50IHRvIHRoZSBOUFUgb24gQWlyb2hhIFNvQ3MuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBETUEgYm91bmNlIGJ1ZmZlciAoYGNvcmUtJmd0O2J1ZmApIGFuZCByZW5hbWluZyBgYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gYF9fYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gdXNlIGl0LiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXJseSB0byByZXNvbHZlIHBvdGVudGlhbCBETUEgbWFwcGluZyBwcm9ibGVtcywgd2hpY2ggbWFrZXMgc2Vuc2U7IGRlYWxpbmcgd2l0aCBzdGFjayBtZW1vcnkgb3IgdW5hbGlnbmVkIG1lbW9yeSBpbiBETUEgb3BlcmF0aW9ucyBpcyBhbHdheXMgYSBwYWluLgoKQnV0IGhvbGQgb24sIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci4gVGhlIHByb21wdCBzYXlzIEkgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciB0aGF0ICpyZXF1aXJlcyogcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCYjMzk7cyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcG9pbnQuIElzIHRoaXMgQWlyb2hhIE5QVSBkcml2ZXIgb25lIG9mICp0aG9zZSo/CgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgYGFpcm9oYV9ucHVgIGZpdHMgdGhpcyBjcml0ZXJpYS4gSSBrbm93IGl0JiMzOTtzIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCwgc28gYXQgbGVhc3QgaXQmIzM5O3MgYSBuZXR3b3JrIGRyaXZlciBhbmQgdmVuZG9yLXNwZWNpZmljIHRvIEFpcm9oYS4gQnV0IGlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbnQgb24gYSBQQ0llIGRldmljZSwgb3Igc29tZXRoaW5nIGVsc2UgdGhhdCBRRU1VIG1pZ2h0IG5vdCBoYW5kbGU/IFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgdHJlZSB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBgYWlyb2hhX25wdWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIHRpZWQgdG8gYSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiBvciBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSBlbXVsYXRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Fpcm9oYV9ucHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZT04PWFpcm9oYS1ldGgtJChDT05GSUdfREVCVUdfRlMpICYjNDM7PSBhaXJvaGFfcHBlX2RlYnVnZnMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9BSVJPSEFfTlBVKSAmIzQzOz0gYWlyb2hhX25wdS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02NDU9c3RydWN0IGFpcm9oYV9ldGgge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDo2NTM6XHRzdHJ1Y3QgYWlyb2hhX25wdSBfX3JjdSAqbnB1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC02NTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz0xMDg9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExMzpzdHJ1Y3QgYWlyb2hhX25wdV9mdyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTExNC1cdGNvbnN0IGNoYXIgKm5hbWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExODpzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExOTpcdHN0cnVjdCBhaXJvaGFfbnB1X2Z3IGZ3X3J2MzI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjEyMDpcdHN0cnVjdCBhaXJvaGFfbnB1X2Z3IGZ3X2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTEyMS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9MTU5PXN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjE2NjpzdGF0aWMgaW50IF9fYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTY3LVx0XHRcdFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKnJlcGx5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MTcwOlx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTcxLVx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTIxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjE2OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjE3LVx0XHRcdCAgICAgICB2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyMTk6XHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMjAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjIyMjpzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjIzLVx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGludCBmd19tYXhfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTI0Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI0NzphaXJvaGFfbnB1X2xvYWRfZmlybXdhcmVfZnJvbV9kdHMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI0OC1cdFx0XHRcdCAgdm9pZCBfX2lvbWVtICpiYXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyNTg6XHRyZXQgPSBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBhZGRyLCBmd19uYW1lc1swXSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU5LVx0XHRcdFx0ICAgICAgIE5QVV9FTjc1ODFfRklSTVdBUkVfUlYzMl9NQVhfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI2MzpcdHJldHVybiBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBiYXNlICYjNDM7IFJFR19OUFVfTE9DQUxfU1JBTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjY0LVx0XHRcdFx0XHRmd19uYW1lc1sxXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjY4OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI2OS1cdFx0XHRcdCAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyNzE6XHRjb25zdCBzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSAqc29jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNzItXHR2b2lkIF9faW9tZW0gKmFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODYtXHRpZiAob2ZfZmluZF9wcm9wZXJ0eShkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7ZmlybXdhcmUtbmFtZVwmIzM0OywgTlVMTCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI4NzpcdFx0cmV0dXJuIGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZV9mcm9tX2R0cyhkZXYsIGFkZHIsIGJhc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI4OS1cdC8qIExvYWQgcnYzMiBucHUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjkwOlx0cmV0ID0gYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlKGRldiwgYWRkciwgc29jLVx1MDAzZWZ3X3J2MzIubmFtZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjkxLVx0XHRcdFx0ICAgICAgIHNvYy1cdTAwM2Vmd19ydjMyLm1heF9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI5NS1cdC8qIExvYWQgZGF0YSBucHUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mjk2Olx0cmV0dXJuIGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGJhc2UgJiM0MzsgUkVHX05QVV9MT0NBTF9TUkFNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yOTctXHRcdFx0XHRcdHNvYy1cdTAwM2Vmd19kYXRhLm5hbWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjMwMTpzdGF0aWMgaXJxcmV0dXJuX3QgYWlyb2hhX25wdV9tYm94X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqbnB1X2luc3RhbmNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMDM6XHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1ID0gbnB1X2luc3RhbmNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjMxNjpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dkdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzE3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE4Olx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE5Olx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzIwLVx0dm9pZCAqZHVtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzI0Olx0Y29yZSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlLCB3ZHRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMyNS1cdG5wdSA9IGNvcmUtXHUwMDNlbnB1O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMzk6c3RhdGljIGlycXJldHVybl90IGFpcm9oYV9ucHVfd2R0X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqY29yZV9pbnN0YW5jZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzQxOlx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IGNvcmVfaW5zdGFuY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM0MjpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBjb3JlLVx1MDAzZW5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzQzLVx0aW50IGMgPSBjb3JlIC0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozNTQ6c3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9pbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM2ODpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNjktXHRcdFx0XHQgIHNpemVvZigqcHBlX2RhdGEpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mzc1OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZGVpbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM4NzpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODgtXHRcdFx0XHQgIHNpemVvZigqcHBlX2RhdGEpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mzk0OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZmx1c2hfc3JhbV9lbnRyaWVzKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM5NS1cdFx0XHRcdFx0ICAgICBkbWFfYWRkcl90IGZvZV9hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0MTE6XHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfUFBFLCBwcGVfZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEyLVx0XHRcdFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQxODpzdGF0aWMgaW50IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00MTktXHRcdFx0XHQgICAgICAgZG1hX2FkZHJfdCBmb2VfYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDM2Olx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1BQRSwgcHBlX2RhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQzNy1cdFx0XHRcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0NDU6XHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfUFBFLCBwcGVfZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDQ2LVx0XHRcdFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQ1MzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX3N0YXRzX3NldHVwKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ1NC1cdFx0XHRcdCAgICAgIGRtYV9hZGRyX3QgZm9lX3N0YXRzX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQ2ODpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NjktXHRcdFx0XHQgIHNpemVvZigqcHBlX2RhdGEpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDg0OnN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0ODU6XHRcdFx0XHQgICAgZW51bSBhaXJvaGFfbnB1X3dsYW5fc2V0X2NtZCBmdW5jX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00ODYtXHRcdFx0XHQgICAgdm9pZCAqZGF0YSwgaW50IGRhdGFfbGVuLCBnZnBfdCBnZnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwMTpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19XSUZJLCB3bGFuX2RhdGEsIGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwMi1cdGtmcmVlKHdsYW5fZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwNzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MDg6XHRcdFx0XHQgICBlbnVtIGFpcm9oYV9ucHVfd2xhbl9nZXRfY21kIGZ1bmNfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwOS1cdFx0XHRcdCAgIHZvaWQgKmRhdGEsIGludCBkYXRhX2xlbiwgZ2ZwX3QgZ2ZwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MjM6XHRlcnIgPSBfX2Fpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19XSUZJLCB3bGFuX2RhdGEsIGxlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTI0LVx0XHRcdFx0ICAgIGRhdGEsIGRhdGFfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTUzMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUzMTphaXJvaGFfbnB1X3dsYW5fc2V0X3Jlc2VydmVkX21lbW9yeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01MzItXHRcdFx0XHQgICAgaW50IGlmaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUzMzpcdFx0XHRcdCAgICBlbnVtIGFpcm9oYV9ucHVfd2xhbl9zZXRfY21kIGZ1bmNfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NDUtXHR2YWwgPSByZXMuc3RhcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU0NjpcdHJldHVybiBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQobnB1LCBpZmluZGV4LCBmdW5jX2lkLCBcdTAwMjZ2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU0Ny1cdFx0XHRcdFx0c2l6ZW9mKHZhbCksIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTA6c3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTUxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTUyOlx0ZW51bSBhaXJvaGFfbnB1X3dsYW5fc2V0X2NtZCBjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfTlBVX0JBTkQwX09OQ1BVO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NTMtXHR1MzIgdmFsID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTU2Olx0ZXJyID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKG5wdSwgMSwgY21kLCBcdTAwMjZ2YWwsIHNpemVvZih2YWwpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NTctXHRcdFx0XHQgICAgICAgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NjEtXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfVFhfQlVGX0NIRUNLX0FERFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU2MjpcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXCYjMzQ7dHgtYnVmaWRcJiMzNDssIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NjYtXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfUEtUX0JVRl9BRERSO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1Njc6XHRlcnIgPSBhaXJvaGFfbnB1X3dsYW5fc2V0X3Jlc2VydmVkX21lbW9yeShucHUsIDAsIFwmIzM0O3BrdFwmIzM0OywgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTY4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU3MS1cdGNtZCA9IFdMQU5fRlVOQ19TRVRfV0FJVF9UWF9QS1RfQlVGX0FERFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU3MjpcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXCYjMzQ7dHgtcGt0XCYjMzQ7LCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTc4LVx0XHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfRFJBTV9CQV9OT0RFX0FERFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU3OTpcdFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkobnB1LCAwLCBcJiMzNDtiYVwmIzM0OywgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTgwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTg0LVx0Y21kID0gV0xBTl9GVU5DX1NFVF9XQUlUX0lTX0ZPUkNFX1RPX0NQVTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTg1Olx0cmV0dXJuIGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChucHUsIDAsIGNtZCwgXHUwMDI2dmFsLCBzaXplb2YodmFsKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTg2LVx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTg5OnN0YXRpYyB1MzIgYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBxaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU5MC1cdFx0XHRcdFx0ICBib29sIHhtaXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU5ODpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19zZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjAzOnN0YXRpYyB1MzIgYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MDQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2MTE6c3RhdGljIHZvaWQgYWlyb2hhX25wdV93bGFuX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IHEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYxNjpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IHEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYyMTpzdHJ1Y3QgYWlyb2hhX25wdSAqYWlyb2hhX25wdV9nZXQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjI0LVx0c3RydWN0IGRldmljZV9ub2RlICpucDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjI1Olx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjI2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjY4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjY5OkVYUE9SVF9TWU1CT0xfR1BMKGFpcm9oYV9ucHVfZ2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2NzE6dm9pZCBhaXJvaGFfbnB1X3B1dChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02NzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc2OkVYUE9SVF9TWU1CT0xfR1BMKGFpcm9oYV9ucHVfcHV0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCBhaXJvaGFfbnB1X3NvY19kYXRhIGVuNzU4MV9ucHVfc29jX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3OS1cdC5md19ydjMyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBhaXJvaGFfbnB1X3NvY19kYXRhIGFuNzU4M19ucHVfc29jX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY5MC1cdC5md19ydjMyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MDA6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfYWlyb2hhX25wdV9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MDEtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWlyb2hhLGVuNzU4MS1ucHVcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzA0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcwNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbnB1X21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz03MDc9c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHJlZ21hcF9jb25maWcgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxNTpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzE2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzE3LVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxODpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTcxOS1cdHN0cnVjdCByZXNvdXJjZSByZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MzItXHRucHUtXHUwMDNlZGV2ID0gZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MzM6XHRucHUtXHUwMDNlb3BzLnBwZV9pbml0ID0gYWlyb2hhX25wdV9wcGVfaW5pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM0Olx0bnB1LVx1MDAzZW9wcy5wcGVfZGVpbml0ID0gYWlyb2hhX25wdV9wcGVfZGVpbml0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MzU6XHRucHUtXHUwMDNlb3BzLnBwZV9pbml0X3N0YXRzID0gYWlyb2hhX25wdV9wcGVfc3RhdHNfc2V0dXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczNjpcdG5wdS1cdTAwM2VvcHMucHBlX2ZsdXNoX3NyYW1fZW50cmllcyA9IGFpcm9oYV9ucHVfcHBlX2ZsdXNoX3NyYW1fZW50cmllcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM3Olx0bnB1LVx1MDAzZW9wcy5wcGVfZm9lX2NvbW1pdF9lbnRyeSA9IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM4Olx0bnB1LVx1MDAzZW9wcy53bGFuX2luaXRfcmVzZXJ2ZWRfbWVtb3J5ID0gYWlyb2hhX25wdV93bGFuX2luaXRfbWVtb3J5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3Mzk6XHRucHUtXHUwMDNlb3BzLndsYW5fc2VuZF9tc2cgPSBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0MDpcdG5wdS1cdTAwM2VvcHMud2xhbl9nZXRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19nZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0MTpcdG5wdS1cdTAwM2VvcHMud2xhbl9nZXRfcXVldWVfYWRkciA9IGFpcm9oYV9ucHVfd2xhbl9xdWV1ZV9hZGRyX2dldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQyOlx0bnB1LVx1MDAzZW9wcy53bGFuX3NldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NDM6XHRucHUtXHUwMDNlb3BzLndsYW5fZ2V0X2lycV9zdGF0dXMgPSBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19nZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0NDpcdG5wdS1cdTAwM2VvcHMud2xhbl9lbmFibGVfaXJxID0gYWlyb2hhX25wdV93bGFuX2lycV9lbmFibGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0NTpcdG5wdS1cdTAwM2VvcHMud2xhbl9kaXNhYmxlX2lycSA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfZGlzYWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NTk6XHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X21ib3hfaGFuZGxlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzYwLVx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgXCYjMzQ7YWlyb2hhLW5wdS1tYm94XCYjMzQ7LCBucHUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzY0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NjU6XHRcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcdTAwMjZucHUtXHUwMDNlY29yZXNbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc0Olx0XHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NzUtXHRcdFx0XHQgICAgICAgSVJRRl9TSEFSRUQsIFwmIzM0O2Fpcm9oYS1ucHUtd2R0XCYjMzQ7LCBjb3JlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc5Olx0XHRJTklUX1dPUksoXHUwMDI2Y29yZS1cdTAwM2V3ZHRfd29yaywgYWlyb2hhX25wdV93ZHRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc4MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc5NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobnB1LVx1MDAzZWNvcmVzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzk2Olx0XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03OTctXHRcdHZvaWQgKnJhdztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODA3Olx0ZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MDgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4Mjg6XHRpZiAoIWFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KG5wdSwgMCwgV0xBTl9GVU5DX0dFVF9XQUlUX05QVV9WRVJTSU9OLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjktXHRcdFx0XHQgICAgIFx1MDAyNnZhbCwgc2l6ZW9mKHZhbCksIEdGUF9LRVJORUwpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4Mzg6c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODM5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQwOlx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04NDEtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQ3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NDg6XHQucHJvYmUgPSBhaXJvaGFfbnB1X3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NDk6XHQucmVtb3ZlID0gYWlyb2hhX25wdV9yZW1vdmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1MC1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1MS1cdFx0Lm5hbWUgPSBcJiMzNDthaXJvaGEtbnB1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTI6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG9mX2Fpcm9oYV9ucHVfbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1My1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTYwNz1zdGF0aWMgdm9pZCBhaXJvaGFfcHBlX2ZvZV9mbG93X3N0YXRfZW50cnlfcmVzZXQoc3RydWN0IGFpcm9oYV9wcGUgKnBwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NjA4Olx0XHRcdFx0XHRcdCBzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy02MDktXHRcdFx0XHRcdFx0IGludCBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTYxNT1zdGF0aWMgdm9pZCBhaXJvaGFfcHBlX2ZvZV9mbG93X3N0YXRzX3Jlc2V0KHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjYxNjpcdFx0XHRcdFx0ICAgIHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTYxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz02Mjg9c3RhdGljIHZvaWQgYWlyb2hhX3BwZV9mb2VfZmxvd19zdGF0c191cGRhdGUoc3RydWN0IGFpcm9oYV9wcGUgKnBwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NjI5Olx0XHRcdFx0XHQgICAgIHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTYzMC1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgYWlyb2hhX2ZvZV9lbnRyeSAqaHdlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9NzY1PXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9mb2VfY29tbWl0X2VudHJ5KHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy03NzItXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcHBlLVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NzczOlx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNzc0LVx0aW50IGVyciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xMzAxPXZvaWQgYWlyb2hhX3BwZV9mb2VfZW50cnlfZ2V0X3N0YXRzKHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsIHUzMiBoYXNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTMwNS1cdGludCBwcGVfbnVtX3N0YXRzX2VudHJpZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjEzMDY6XHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMzA3LVx0dTMyIGluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTM3OT1zdGF0aWMgaW50IGFpcm9oYV9wcGVfZmx1c2hfc3JhbV9lbnRyaWVzKHN0cnVjdCBhaXJvaGFfcHBlICpwcGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMzk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMzk3OnN0YXRpYyBzdHJ1Y3QgYWlyb2hhX25wdSAqYWlyb2hhX3BwZV9ucHVfZ2V0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTEzOTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMzk5Olx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IGFpcm9oYV9ucHVfZ2V0KGV0aC1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDAwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQwMi1cdFx0cmVxdWVzdF9tb2R1bGUoXCYjMzQ7YWlyb2hhLW5wdVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0MDM6XHRcdG5wdSA9IGFpcm9oYV9ucHVfZ2V0KGV0aC1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDA0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTQzMj1zdGF0aWMgaW50IGFpcm9oYV9wcGVfb2ZmbG9hZF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTQzNDpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBhaXJvaGFfcHBlX25wdV9nZXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQzNS1cdHN0cnVjdCBhaXJvaGFfcHBlICpwcGUgPSBldGgtXHUwMDNlcHBlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQ2Ni1lcnJvcl9ucHVfcHV0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNDY3Olx0YWlyb2hhX25wdV9wdXQobnB1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQ2OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTE2NjI9dm9pZCBhaXJvaGFfcHBlX2RlaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjYzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTY2NDpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE2NjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjcyLVx0XHRucHUtXHUwMDNlb3BzLnBwZV9kZWluaXQobnB1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTY3MzpcdFx0YWlyb2hhX25wdV9wdXQobnB1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTY3NC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA4MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBBaXJvaGEgTlBVIERyaXZlciBhbmQgV29ydGhGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhaXJvaGFfbnB1YCBkcml2ZXIsIHBhcnQgb2YgdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIgc3VpdGUuIEl0IHNlZW1zIHRvIGJlIGFuIE5QVSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBaXJvaGEmIzM5O3MgRU43NTgxIFNvQ3MuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGFuZCBpcyB0aGVyZWZvcmUgYSBuby1nbyBmb3Igc3RhbmRhcmQgUUVNVSBlbXVsYXRpb24/CgpUaGUgRU43NTgxICppcyogYSByb3V0ZXIvZ2F0ZXdheSBTb0MsIGNvbmZpcm1pbmcgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSB2ZW5kb3Itc3BlY2lmaWMgc2lsaWNvbi4gVGhlIGNvZGUmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBza2lwcGluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgcmVhbCBQQ0llIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZpdHMgdGhhdCBkZXNjcmlwdGlvbi4KCkEgcXVpY2sgY2hlY2sgb2YgdGhlIHNvdXJjZSByZXZlYWxzIGl0JiMzOTtzIHJlZ2lzdGVyZWQgYXMgYSBgcGxhdGZvcm1fZHJpdmVyYC4gVGhhdCBtZWFucyBpdCYjMzk7cyBhbiBJUCBibG9jayAqd2l0aGluKiB0aGUgU29DLCBhbmQgbm90IGEgUENJZSBkZXZpY2UsIHdoaWNoIGNoYW5nZXMgdGhpbmdzIGEgYml0ISBQbGF0Zm9ybSBkcml2ZXJzIGFyZSBvZnRlbiBTb0Mtc3BlY2lmaWMsIHJlbHlpbmcgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIG1lbW9yeS1tYXBwZWQgSS9PIHJlZ2lvbnMuIFRoZSBsaWtlbGlob29kIG9mIHN0YW5kYXJkIFFFTVUgcGVyZmVjdGx5IGVtdWxhdGluZyB0aGUgRU43NTgxJiMzOTtzIHBsYXRmb3JtIHNwZWNpZmljcyBpcyB2YW5pc2hpbmdseSBzbWFsbCwgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBtYWNoaW5lIHR5cGUgZm9yIGl0LgoKSG93ZXZlciwgU3l6a2FsbGVyICpjYW4qIHNvbWV0aW1lcyBnZXQgYXQgcGxhdGZvcm0gZHJpdmVycy4gSXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcywgdXNlIGBzeXpfbW91bnRfaW1hZ2VgLCBvciBmYWtlIHBsYXRmb3JtIGRldmljZXMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBhaXJvaGFfbnB1X3Byb2JlYCBkb2VzIGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMClgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkaXJlY3RseSBhY2Nlc3NpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIHRocm91Z2ggTU1JTy4gSWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCwgdGhhdCYjMzk7cyBqdXN0IGdvaW5nIHRvIGNyYXNoIG9yIGZhaWwgdGhlIHByb2JlLgoKTm93LCB3aGlsZSBTeXprYWxsZXIgY2FuIHNvbWV0aW1lcyBwb2tlIGFyb3VuZCB2aWEgYC9kZXYvYCBub2RlcyBvciBwc2V1ZG8tZGV2aWNlIGZyYW1ld29ya3MsIGRpcmVjdCBNTUlPIG9uIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGhvdXQgZW11bGF0aW9uIGlzIGEgZGVhZCBlbmQuIFVubGVzcywgb2YgY291cnNlLCB0aGVyZSYjMzk7cyBzb21lIHdheSBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIHRoaXMgZHJpdmVyLCBidXQgaW4gdGhpcyBjYXNlLCBJJiMzOTtkIG5lZWQgYW4gZW11bGF0b3Igb2YgdGhlIGhhcmR3YXJlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlcmUmIzM5O3MgZXhpc3RpbmcgU3l6a2FsbGVyIHN1cHBvcnQgZm9yIEFpcm9oYSYjMzk7cyBOUFUuIEkgbmVlZCB0byByZXNlYXJjaCB0aGlzIGJlZm9yZSBJIG1ha2UgYSBmaW5hbCBjYWxsLCBidXQgbXkgZ3V0IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBub3QgZnV6emFibGUgd2l0aG91dCB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Fpcm9oYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9BSVJPSEEpICYjNDM7PSBhaXJvaGEtZXRoLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo3OmFpcm9oYS1ldGgteSA6PSBhaXJvaGFfZXRoLm8gYWlyb2hhX3BwZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gYWlyb2hhX3BwZV9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgJiM0Mzs9IGFpcm9oYV9ucHUub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3OiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9yZWdzLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg6I2luY2x1ZGUgXCYjMzQ7YWlyb2hhX2V0aC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1OnZvaWQgYWlyb2hhX3dyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwOnUzMiBhaXJvaGFfcm13KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI6XHR2YWwgfD0gKGFpcm9oYV9ycihiYXNlLCBvZmZzZXQpIFx1MDAyNiB+bWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMzOlx0YWlyb2hhX3dyKGJhc2UsIG9mZnNldCwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5LVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIGNsZWFyLCB1MzIgc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxOlx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gaXJxX2JhbmstXHUwMDNlcWRtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDItXHRpbnQgYmFuayA9IGlycV9iYW5rIC0gXHUwMDI2cWRtYS1cdTAwM2VpcnFfYmFua3NbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MS1cdGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdIHw9IHNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI6XHRhaXJvaGFfcWRtYV93cihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzLVx0XHQgICAgICAgaXJxX2JhbmstXHUwMDNlaXJxbWFza1tpbmRleF0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc6XHRhaXJvaGFfcWRtYV9ycihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MjpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cdFx0XHRcdCAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjU6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIDAsIG1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ni19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2ODpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjktXHRcdFx0XHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3MTpcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc0OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Ni1cdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc3Olx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc4LVx0dTMyIHJlZywgdmFsLCBsbWluLCBsbWF4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cdTAwM2Vwb3J0cyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg2Olx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZXRoLVx1MDAzZXBvcnRzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04Ny1cdFx0aW50IGo7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05Mi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgQVJSQVlfU0laRShwb3J0LVx1MDAzZWRldnMpOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo5MzpcdFx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKml0ZXJfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05NC1cdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMDpcdFx0XHRpZiAoYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGl0ZXJfZGV2KSAhPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDE6XHRcdFx0ICAgIGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMDItXHRcdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM0Olx0cmVnID0gYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikgPyBSRUdfRkVfTEFOX01BQ19IIDogUkVHX0ZFX1dBTl9NQUNfSDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM1LVx0dmFsID0gKGFkZHJbMF0gXHUwMDNjXHUwMDNjIDE2KSB8IChhZGRyWzFdIFx1MDAzY1x1MDAzYyA4KSB8IGFkZHJbMl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNjpcdGFpcm9oYV9mZV93cihldGgsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNSU4ocmVnKSwgbG1pbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1BWChyZWcpLCBsbWF4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDE6XHRhaXJvaGFfcHBlX2luaXRfdXBkX21lbShkZXYsIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0NjpzdGF0aWMgdm9pZCBhaXJvaGFfc2V0X2dkbV9wb3J0X2Z3ZF9jZmcoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgdTMyIGFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Ny1cdFx0XHRcdFx0dTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQ5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9PQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1MC1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fT0NGUV9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUxOlx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9NQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Mi1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fTUNGUV9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9CQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1NC1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fQkNGUV9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9VQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Ni1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fVUNGUV9NQVNLLCB2YWwpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU5OnN0YXRpYyBpbnQgYWlyb2hhX3NldF92aXBfZm9yX2dkbV9wb3J0KHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYxOlx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjI6XHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYzLVx0dTMyIHZpcF9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTY2LVx0aWYgKGVuYWJsZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjc6XHRcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY4Olx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2OS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MDpcdFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MTpcdFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc3OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9tYWNjcl9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODEtXHRmb3IgKHAgPSAxOyBwIFx1MDAzYz0gQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBwJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODI6XHRcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcocCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cdFx0XHQgICAgICBHRE1fVENQX0NLU1VNX01BU0sgfCBHRE1fVURQX0NLU1VNX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODQtXHRcdFx0ICAgICAgR0RNX0lQNF9DS1NVTV9NQVNLIHwgR0RNX0RST1BfQ1JDX0VSUl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg1Olx0XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9MRU5fQ0ZHKHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODYtXHRcdFx0ICAgICAgR0RNX1NIT1JUX0xFTl9NQVNLIHwgR0RNX0xPTkdfTEVOX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX1ZMQU5fQ1RSTCgxKSwgQ0RNX1ZMQU5fTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WTEFOX01BU0ssIDB4ODEwMCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NDpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QQUQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfdmlwX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5OTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigzKSwgRVRIX1BfUFBQX0RJU0MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDMpLCBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDQpLCBQUFBfTENQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAzOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA0LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNiksIFBQUF9JUENQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA5LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTI6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNyksIFBQUF9DSEFQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEzOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig3KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE0LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE3LVx0LyogQk9PVFAgKDB4NDMpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig4KSwgMHg0Myk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyMC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjMtXHQvKiBCT09UUCAoMHg0NCkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI0Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDkpLCAweDQ0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig5KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI2LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyOS1cdC8qIElTQUtNUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTApLCAweDFmNDAxZjQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzE6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjMyLVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDExKSwgUFBQX0lQVjZDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTEpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzctXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDAtXHQvKiBESENQdjYgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEyKSwgMHgyMjIwMjIzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0My1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0NjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxOSksIFBQUF9QQVApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDE5KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ4LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjUxLVx0LyogRVRILVx1MDAzZUVUSF9QXzE5MDUgKDB4ODkzYSkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIwKSwgMHg4OTNhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUzOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1NC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU2Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIxKSwgRVRIX1BfTExEUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjEpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTgtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjE6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYyLVx0XHRcdFx0XHQgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2NDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LVx0XHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY5Olx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3MC1cdFx0XHQgICAgIFBTRV9DRkdfT1FfUlNWX01BU0spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzM6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NC1cdFx0XHRcdFx0ICAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCwgUFNFX0NGR19PUV9SU1ZfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc3LVx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9DRkdfT1FfUlNWX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3OS1cdFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODY6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5MTpzdGF0aWMgaW50IGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTItXHRcdFx0XHQgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk0Olx0dTMyIG9yaWdfdmFsID0gYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUtXHR1MzIgdG1wLCBhbGxfcnN2LCBmcV9saW1pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTc6XHRhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTktXHQvKiBtb2RpZnkgYWxsIHJzdiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDA6XHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDEtXHRhbGxfcnN2ICYjNDM7PSAodmFsIC0gb3JpZ192YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDI6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMy1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cdC8qIG1vZGlmeSBodGhkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwNjpcdGZxX2xpbWl0ID0gYWlyb2hhX2ZlX2dldChldGgsIFBTRV9GUV9DRkcsIFBTRV9GUV9MSU1JVF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA3LVx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgyMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwOS1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfSFRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyLVx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgxMDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTQtXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX01USERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNi1cdHRtcCA9ICgzICogdG1wKSBcdTAwM2VcdTAwM2UgMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE3Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE4LVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9MVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyNDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzI1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQxOlx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Mi1cdFx0dTMyIGFsbF9yc3Y7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDQtXHRcdC8qIGh3IG1pc3NlcyBQUEUyIG9xIHJzdiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDU6XHRcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ni1cdFx0YWxsX3JzdiAmIzQzOz0gUFNFX1JTVl9QQUdFUyAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ny1cdFx0XHQgICBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDg6XHRcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ5LVx0XHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTMtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTFdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0xLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTUtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTg6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTEsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1OS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYxLVx0Zm9yIChxID0gNjsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0yXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MjpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMiwgcSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2My1cdC8qIEdETTMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY0LVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0zXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2NTpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMywgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjktXHRcdGlmIChxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTFdIC8gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzcwOlx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cdFx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Mi1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzM6XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Ni1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMl07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzc6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTIsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgwLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0zXSAtIDE7IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODE6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTMsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODItXHQvKiBDRE00ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4My1cdGZvciAocSA9IDQ7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNF07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODQ6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTQsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4NS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODY6XHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg3LVx0XHQvKiBQUEUyICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODktXHRcdFx0aWYgKHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl0gLyAyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTA6XHRcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXHRcdFx0XHRcdFx0XHQgcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cdFx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5NDpcdFx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NS1cdFx0XHRcdFx0XHRcdCBxLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5OS1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNNF07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDA6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTQsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAzLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE01XTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwNDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwODpzdGF0aWMgaW50IGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNjpcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE5LVx0XHQgICAgICBNQ19WTEFOX0NGR19UQUJMRV9TRUxfTUFTSyB8IE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMDpcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjE6XHRcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjItXHRcdFx0XHRcdHZhbCBcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyOC1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgQUlST0hBX0ZFX01DX01BWF9WTEFOX1BPUlQ7IGomIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyOTpcdFx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzMtXHRcdFx0ICAgICAgTUNfVkxBTl9DRkdfUldfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM0Olx0XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM1Olx0XHRcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzYtXHRcdFx0XHRcdFx0dmFsIFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NDg6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MC1cdC8qIENETTFfQ1JTTl9RU0VMICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIyIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU0LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMDggXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTgtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2MC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2MzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI0IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY2LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY3Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjUgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzEtXHQvKiBDRE0yX0NSU05fUVNFTCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzI6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8wOCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3My1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIxIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc5LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDgwOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjIgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODMtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4NS1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4ODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI1IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTQ6c3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTY6XHRhaXJvaGFfZmVfbWFjY3JfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5OC1cdC8qIFBTRSBJUSByZXNlcnZlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5OTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjEsIFBTRV9JUV9SRVMxX1AyX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMC1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfSVFfUkVTMV9QMl9NQVNLLCAweDEwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwMTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMi1cdFx0ICAgICAgUFNFX0lRX1JFUzJfUDVfTUFTSyB8IFBTRV9JUV9SRVMyX1A0X01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDYtXHQvKiBlbmFibGUgRkUgY29weSBlbmdpbmUgZm9yIEtBL0RQSSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUENFX0NGRywgUENFX0RQSV9FTl9NQVNLIHwgUENFX0tBX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXHQvKiBzZXQgdmlwIHF1ZXVlIHNlbGVjdGlvbiB0byByaW5nIDEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygxKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMC1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxMTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9WSVBfUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTItXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTMtXHQvKiBzZXQgR0RNNCBzb3VyY2UgaW50ZXJmYWNlIG9mZnNldCB0byA4ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxNDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX1NSQ19QT1JUX1NFVCg0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE1LVx0XHQgICAgICBHRE1fU1BPUlRfT0ZGMl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyMi1cdC8qIHNldCBQU0UgUGFnZSBhcyAxMjhCICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyMzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfRE1BX0dMT19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cdFx0ICAgICAgRkVfRE1BX0dMT19MMl9TUEFDRV9NQVNLIHwgRkVfRE1BX0dMT19QR19TWl9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI2LVx0XHQgICAgICBGRV9ETUFfR0xPX1BHX1NaX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mjc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUlNUX0dMT19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyOC1cdFx0ICAgICBGRV9SU1RfQ09SRV9NQVNLIHwgRkVfUlNUX0dETTNfTUJJX0FSQl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzNC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAwLCBCSVQoNCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAxLCBCSVQoMjgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMiwgQklUKDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMywgQklUKDI4KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQwOlx0YWlyb2hhX2ZlX3ZpcF9zZXR1cChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDE6XHRhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDM6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9NSVNDX0NGRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ0LVx0XHQgICAgICBHRE0yX1JETV9BQ0tfV0FJVF9QUkVGX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDUtXHRcdCAgICAgIEdETTJfQ0hOX1ZMRF9NT0RFX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDY6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fT0FNX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ3LVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9PQU1fUVNFTF9NQVNLLCAxNSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUwLVx0LyogTlBVIENvcmUtMywgTlBVIEJyaWRnZSBDaGFubmVsLTMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTUxOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTItXHRcdCAgICAgIElQX0ZSQUdNRU5UX1BPUlRfTUFTSyB8IElQX0ZSQUdNRU5UX05CUV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU1LVx0LyogUURNQSBMQU4sIFJYIFJpbmctMjIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTU2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTctXHRcdCAgICAgIElQX0FTU0VNQkxFX1BPUlRfTUFTSyB8IElQX0FTU0VNQkxFX05CUV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjE6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksIEdETV9QQURfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2MjpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTRfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjQtXHQvKiBFbmFibGUgc3BsaXQgZm9yIE1JQiBjb3VudGVycyBmb3IgR0RNMyBhbmQgR0RNNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjU6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cdFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY3LVx0XHQgICAgICBGRV9HRE1fUlhfTUlCX1NQTElUX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Njg6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE00X0lEWCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2OS1cdFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTcyOlx0YWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc0Olx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUVVFVUVfWEZDX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzU6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUE9SVF9YRkNfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc3LVx0LyogZGVmYXVsdCBhZ2luZyBtb2RlIGZvciBtYmkgdW5sb2NrIGlzc3VlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3ODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0NITl9STFMoMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OS1cdFx0ICAgICAgTUJJX1JYX0FHRV9TRUxfTUFTSyB8IE1CSV9UWF9BR0VfU0VMX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODMtXHQvKiBkaXNhYmxlIElGQyBieSBkZWZhdWx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4NDpcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DU1JfSUZDX0NGRywgRkVfSUZDX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4Ni1cdC8qIGVuYWJsZSAxOk4gdmxhbiBhY3Rpb24sIGluaXQgdmxhbiB0YWJsZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODc6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX01DX1ZMQU5fRU4sIE1DX1ZMQU5fRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5Olx0cmV0dXJuIGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTkyOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS1cdGludCBxaWQgPSBxIC0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4WzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTk4LVx0d2hpbGUgKHEtXHUwMDNlcXVldWVkIFx1MDAzYyBxLVx1MDAzZW5kZXNjIC0gMSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTk6XHRcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcdTAwMjZxLVx1MDAzZWVudHJ5W3EtXHUwMDNlaGVhZF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMDpcdFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcdTAwMjZxLVx1MDAzZWRlc2NbcS1cdTAwM2VoZWFkXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAxLVx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzMC1cdGlmIChuZnJhbWVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MzE6XHRcdGFpcm9oYV9xZG1hX3JtdyhxZG1hLCBSRUdfUlhfQ1BVX0lEWChxaWQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzItXHRcdFx0XHRSWF9SSU5HX0NQVV9JRFhfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjM4OnN0YXRpYyBzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzk6YWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0MTpcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0Mi1cdHUxNiBwLCBkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjA6c3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2Mi1cdGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciA9IHBhZ2VfcG9vbF9nZXRfZG1hX2RpcihxLVx1MDAzZXBhZ2VfcG9vbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MzpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXHUwMDNlcWRtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY0Olx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IHFkbWEtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjUtXHRpbnQgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2OC1cdHdoaWxlIChkb25lIFx1MDAzYyBidWRnZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY5Olx0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXHUwMDI2cS1cdTAwM2VlbnRyeVtxLVx1MDAzZXRhaWxdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzA6XHRcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXHUwMDI2cS1cdTAwM2VkZXNjW3EtXHUwMDNldGFpbF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3MS1cdFx0dTMyIGhhc2gsIHJlYXNvbiwgbXNnMSwgZGVzY19jdHJsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6XHRcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY5NTpcdFx0ZGV2ID0gYWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoZXRoLCBkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk2LVx0XHRpZiAoSVNfRVJSKGRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MjgtXHRcdGlmIChuZXRkZXZfdXNlc19kc2EobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3Mjk6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NTItXHRcdGlmIChyZWFzb24gPT0gUFBFX0NQVV9SRUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc1MzpcdFx0XHRhaXJvaGFfcHBlX2NoZWNrX3NrYihcdTAwMjZldGgtXHUwMDNlcHBlLVx1MDAzZWRldiwgcS1cdTAwM2Vza2IsIGhhc2gsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjUyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIEFpcm9oYSBOUFUgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGFpcm9oYV9ucHVgIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYCBkcml2ZXIuIEkgc2VlIHRoYXQgYGFpcm9oYV9ucHVgIGlzIGluaXRpYWxpemVkIHZpYSBgYWlyb2hhX3BwZV9ucHVfZ2V0KClgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgLiBBbmQsIGBhaXJvaGFfcHBlX29mZmxvYWRfc2V0dXAoKWAgaXRzZWxmIGlzIGNhbGxlZCBieSBmdW5jdGlvbnMgaW4gYGFpcm9oYV9ldGguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIGBhaXJvaGFfZXRoLmNgIGlzIGEgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVyLiBZZXMsIGl0IHNlZW1zIHRvIGJlIGFuIEV0aGVybmV0IGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIEFpcm9oYSBTb0NzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZSBzcGVjaWFsLXB1cnBvc2UgaGFyZHdhcmUsIGxpa2UgYSBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXIsIGJlY2F1c2UgaWYgc28sIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGV4Y2x1ZGVkIGZyb20gZnV6emluZy4gQnV0IG5vLCBpdCYjMzk7cyBqdXN0IGFuIFNvQy1pbnRlZ3JhdGVkIEV0aGVybmV0IGRyaXZlci4gVGhhdCYjMzk7cyBrZXkuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBmYWxscyB1bmRlciBzZXZlcmFsIGNhdGVnb3JpZXMsIGluY2x1ZGluZyBjb2RlIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIEFpcm9oYSBFdGhlcm5ldCBhIFBDSWUgY2FyZD8gTm8sIGl0JiMzOTtzIGJ1aWx0IGludG8gdGhlIFNvQy4KCkNhbiBTeXprYWxsZXIgZnV6eiB0aGlzPyBTeXprYWxsZXIgKmNhbiogZnV6eiBwbGF0Zm9ybSBkcml2ZXJzIGlmIHRoZXkgY2FuIGJlIGluc3RhbnRpYXRlZC4gU29tZXRpbWVzIHRoaXMgaGFwcGVucyB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHBzZXVkby1kZXZpY2VzLiBUaGUgcHJvbXB0IGlzIGNsZWFyLCB0aG91Z2g6IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGNvZGUgKmNhbiogYmUgZXhlY3V0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCBpcywgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBtZWFuIEkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSGVyZSYjMzk7cyB0aGUgcHJvYmxlbTogU29DLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlcnMsIGxpa2UgQWlyb2hhIChhbG9uZyB3aXRoIE1lZGlhVGVrIGFuZCBRdWFsY29tbSBJUFEpLCBhcmUgKm5vdCogdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXkgdXN1YWxseSByZXF1aXJlIHZlcnkgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgd2hpY2ggaXNuJiMzOTt0IHByZXNlbnQgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIFFFTVUgaW1hZ2VzIHRoYXQgdXNlIGBxMzVgIG9yIGB2aXJ0YCBtYWNoaW5lIHR5cGVzLgoKSSBrbm93IFN5emthbGxlciBoYXMgYmVlbiBldm9sdmluZywgYW5kIEkmIzM5O20gYXdhcmUgdGhhdCBpdCYjMzk7cyBhZGRlZCBzdXBwb3J0IGZvciBwbGF0Zm9ybSBkcml2ZXJzIHRocm91Z2ggbWVjaGFuaXNtcyBsaWtlIGBzeXpfZGV2cmVzYCBvciBzaW1pbGFyLCBidXQgdGhlIGNvcmUgaXNzdWUgcmVtYWlucyBNTUlPLiBJZiB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHRoZXJlLCBhbnkgYXR0ZW1wdCB0byByZWFkIG9yIHdyaXRlIHRvIE1NSU8gYWRkcmVzc2VzIHdpbGwgcmVzdWx0IGluIGEgY3Jhc2gsIGEgcHJvYmUgZmFpbHVyZSwgb3IganVzdCBnYXJiYWdlIGRhdGEuIEkgcmVtZW1iZXIgdGhlIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgcHNldWRvLXN5c2NhbGwsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IGV4aXN0LiBTeXprYWxsZXIgdXNlcyBgc3l6X21vdW50X2ltYWdlYCBhbmQgY3JhZnRlZCBmaWxlc3lzdGVtcyB0byBsb2FkIHRoaW5ncywgbWF5YmUgaW5jbHVkaW5nIGRldmljZSB0cmVlIG92ZXJsYXlzLiBUaGUgbGF0ZXN0IGFkZGl0aW9ucyB0byBmdXp6aW5nIHBsYXRmb3JtIGRyaXZlcnMgZGVwZW5kIG9uIHdoYXQgdGhvc2Ugb3ZlcmxheXMgZG8uCgpJZiBhIERUIG92ZXJsYXkgaXMgdXNlZCB0byByZWdpc3RlciB0aGlzIGhhcmR3YXJlLCB0aGUgZHJpdmVyIHdpbGwgdHJ5IHRvIGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMClgLiBUaGUgb3ZlcmxheSB3aWxsIHNwZWNpZnkgc29tZSBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGF0IGFkZHJlc3MgaXMgbm90IGJhY2tlZCBieSBSQU0gb3IgYSByZWFsIE1NSU8gZGV2aWNlIGluIFFFTVUsIGBpb3JlbWFwYCAqbWlnaHQqIHN1Y2NlZWQsIGJ1dCBhY3R1YWxseSByZWFkaW5nIG9yIHdyaXRpbmcgdG8gaXQgd2lsbCBjYXVzZSBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IG9yIHBhZ2UgZmF1bHQgaWYgdGhlIGFkZHJlc3MgaXMgbm90IG1hcHBlZC4gT3IsIEkgbWlnaHQganVzdCBnZXQgYWxsIDB4RkZzLCB3aGljaCB3aWxsIGxpa2VseSBjYXVzZSBhIHByb2JlIGZhaWx1cmUuCgpMZXQmIzM5O3MgbG9vayBjbG9zZWx5IGF0IGBhaXJvaGFfbnB1X3Byb2JlYDogaXQgY2FsbHMgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZSgpYCB0byBtYXAgdGhlIE1NSU8gcmVnaW9uLiBUaGVuIGl0IHVzZXMgYGRldm1fcmVnbWFwX2luaXRfbW1pb2AgdG8gaW5pdGlhbGl6ZSBhIGByZWdtYXBgLiBDcnVjaWFsbHksIGl0IHRoZW4gY2FsbHMgYGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKClgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZSgpYC4gVGhpcyBmdW5jdGlvbiByZXF1ZXN0cyBmaXJtd2FyZSwgYW5kIGlmIHRoYXQgZmlybXdhcmUgaXNuJiMzOTt0IGZvdW5kLCBpdCBmYWlscy4gSWYgdGhlIHByb2JlIGZhaWxzLCBldmVyeXRoaW5nIGFmdGVyIGl0LCBsaWtlIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCwgaXMgbmV2ZXIgcmVhY2hlZC4KClRoZSByZWFjaGFiaWxpdHkgb2YgYGFpcm9oYV9ucHVfc2VuZF9tc2dgIGRlcGVuZHMgb24gc3VjY2Vzc2Z1bGx5IHByb2JpbmcgdGhlIGRyaXZlci4gYGFpcm9oYV9ucHVfc2VuZF9tc2dgIGlzIGNhbGxlZCBieSBgYWlyb2hhX25wdV9wcGVfaW5pdGAsIGBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmRgLCBldGMuLCB3aGljaCBhcmUgcmVhY2hlZCB0aHJvdWdoIGZ1bmN0aW9uIHBvaW50ZXJzIHZpYSBgbnB1LSZndDtvcHMucHBlX2luaXRgIGV0Yy4gVGhpcyBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgIGluIGBhaXJvaGFfcHBlLmNgLCB3aGljaCBpcyB1bHRpbWF0ZWx5IGNhbGxlZCBmcm9tIGBhaXJvaGFfZXRoX3Byb2JlYC4gVGhlcmVmb3JlLCBpdCByZXF1aXJlcyB0aGUgYGFpcm9oYV9ldGhgIGRyaXZlciB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIGBhaXJvaGFfZXRoYCBpcyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyLiBJZiB0aGVyZSBpcyBubyBBaXJvaGEgaGFyZHdhcmUsIHRoaXMgcHJvYmUgd2lsbCBmYWlsLgoKSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBmYWN0Cgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNjg5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSAmIzQzOz0gYWlyb2hhLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjg6YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgJiM0Mzs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICYjNDM7PSBhaXJvaGFfbnB1Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzojaW5jbHVkZSBcJiMzNDthaXJvaGFfcmVncy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4OiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9ldGguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA6dTMyIGFpcm9oYV9ycih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcdTAwMjYgfm1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cdFx0XHRcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEtXHRpcnFfYmFuay1cdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOlx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cdFx0ICAgICAgIGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3Olx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjI6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMtXHRcdFx0XHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY1Olx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzE6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIG1hc2ssIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NDpzdGF0aWMgaW50IGFpcm9oYV9zZXRfbWFjYWRkcihzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgY29uc3QgdTggKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzYtXHR1OCByZWZfYWRkcltFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo4NjpcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cdTAwM2Vwb3J0c1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXHRcdGludCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTItXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTM6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTQtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDA6XHRcdFx0aWYgKGFpcm9oYV9pc19sYW5fZ2RtX2RldihpdGVyX2RldikgIT1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlx0XHRcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTAyLVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNDpcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cdHZhbCA9IChhZGRyWzBdIFx1MDAzY1x1MDAzYyAxNikgfCAoYWRkclsxXSBcdTAwM2NcdTAwM2MgOCkgfCBhZGRyWzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUlOKHJlZyksIGxtaW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNQVgocmVnKSwgbG1heCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlx0YWlyb2hhX3BwZV9pbml0X3VwZF9tZW0oZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDY6c3RhdGljIHZvaWQgYWlyb2hhX3NldF9nZG1fcG9ydF9md2RfY2ZnKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXHRcdFx0XHRcdHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0OTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fT0NGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX09DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fTUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTItXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX01DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fVUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX1VDRlFfTUFTSywgdmFsKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1OTpzdGF0aWMgaW50IGFpcm9oYV9zZXRfdmlwX2Zvcl9nZG1fcG9ydChzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYyOlx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2My1cdHUzMiB2aXBfcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2Ni1cdGlmIChlbmFibGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3Olx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzE6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVx0Zm9yIChwID0gMTsgcCBcdTAwM2M9IEFSUkFZX1NJWkUoZXRoLVx1MDAzZXBvcnRzKTsgcCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTgyOlx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODMtXHRcdFx0ICAgICAgR0RNX1RDUF9DS1NVTV9NQVNLIHwgR0RNX1VEUF9DS1NVTV9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVx0XHRcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NTpcdFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg2LVx0XHRcdCAgICAgIEdETV9TSE9SVF9MRU5fTUFTSyB8IEdETV9MT05HX0xFTl9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9WTEFOX0NUUkwoMSksIENETV9WTEFOX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVkxBTl9NQVNLLCAweDgxMDApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTQ6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUEFEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTc6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3ZpcF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMyksIEVUSF9QX1BQUF9ESVNDKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigzKSwgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig0KSwgUFBQX0xDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDYpLCBQUFBfSVBDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOS1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDcpLCBQUFBfQ0hBUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNy1cdC8qIEJPT1RQICgweDQzKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOCksIDB4NDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjAtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVx0LyogQk9PVFAgKDB4NDQpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjktXHQvKiBJU0FLTVAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEwKSwgMHgxZjQwMWY0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMSksIFBQUF9JUFY2Q1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM3LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQwLVx0LyogREhDUHY2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMiksIDB4MjIyMDIyMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDMtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTkpLCBQUFBfUEFQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0OC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cdC8qIEVUSC1cdTAwM2VFVEhfUF8xOTA1ICgweDg5M2EpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMCksIDB4ODkzYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTQtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjYxOnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cdFx0XHRcdFx0ICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cdFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2OTpcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzAtXHRcdFx0ICAgICBQU0VfQ0ZHX09RX1JTVl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjczOnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXHRcdFx0XHRcdCAgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsIFBTRV9DRkdfT1FfUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Ny1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfQ0ZHX09RX1JTVl9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXHRcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODg6XHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVx0XHRcdFx0ICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NDpcdHUzMiBvcmlnX3ZhbCA9IGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVx0dTMyIHRtcCwgYWxsX3JzdiwgZnFfbGltaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3Olx0YWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVx0LyogbW9kaWZ5IGFsbCByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAwOlx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAxLVx0YWxsX3JzdiAmIzQzOz0gKHZhbCAtIG9yaWdfdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDUtXHQvKiBtb2RpZnkgaHRoZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDY6XHRmcV9saW1pdCA9IGFpcm9oYV9mZV9nZXQoZXRoLCBQU0VfRlFfQ0ZHLCBQU0VfRlFfTElNSVRfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MjA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMi1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9NVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTYtXHR0bXAgPSAoMyAqIHRtcCkgXHUwMDNlXHUwMDNlIDI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxNzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0MTpcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXHRcdHUzMiBhbGxfcnN2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVx0XHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ1Olx0XHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXHRcdGFsbF9yc3YgJiM0Mzs9IFBTRV9SU1ZfUEFHRVMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXHRcdFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ4Olx0XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OS1cdFx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0xXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1NDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU1LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTctXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTFdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0xLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2MS1cdGZvciAocSA9IDY7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjI6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTIsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjMtXHQvKiBHRE0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2NC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjU6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTMsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2Ni1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVx0XHRpZiAocSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3MDpcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzEtXHRcdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzYtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc3Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0yLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzgtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNM10gLSAxOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzgxOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgyLVx0LyogQ0RNNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXHRmb3IgKHEgPSA0OyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODUtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg2Olx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cdFx0LyogUFBFMiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg5LVx0XHRcdGlmIChxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdIC8gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlx0XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkxLVx0XHRcdFx0XHRcdFx0IHEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTMtXHRcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XHRcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTUtXHRcdFx0XHRcdFx0XHQgcSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTktXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMy1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDQ6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTUsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwNS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDg6c3RhdGljIGludCBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTY6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cdFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjA6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIxOlx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIyLVx0XHRcdFx0XHR2YWwgXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Mjk6XHRcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMzLVx0XHRcdCAgICAgIE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcdFx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNTpcdFx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM2LVx0XHRcdFx0XHRcdHZhbCBcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTAtXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMiBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1Mi1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU4LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjEgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjItXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2NC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2NzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDcxLVx0LyogQ0RNMl9DUlNOX1FTRUwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMDggXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzUtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzY6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3Ny1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4MDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgzLVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjQgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODctXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RNikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4OS1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk0OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2Olx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDAtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXHRcdCAgICAgIFBTRV9JUV9SRVMyX1A1X01BU0sgfCBQU0VfSVFfUkVTMl9QNF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA2LVx0LyogZW5hYmxlIEZFIGNvcHkgZW5naW5lIGZvciBLQS9EUEkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1BDRV9DRkcsIFBDRV9EUElfRU5fTUFTSyB8IFBDRV9LQV9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA4LVx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMSksIENETV9WSVBfUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fVklQX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEzLVx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9TUkNfUE9SVF9TRVQoNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cdFx0ICAgICAgR0RNX1NQT1JUX09GRjJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjItXHQvKiBzZXQgUFNFIFBhZ2UgYXMgMTI4QiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX0RNQV9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjQtXHRcdCAgICAgIEZFX0RNQV9HTE9fTDJfU1BBQ0VfTUFTSyB8IEZFX0RNQV9HTE9fUEdfU1pfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cdFx0ICAgICAgRkVfRE1BX0dMT19QR19TWl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1JTVF9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXHRcdCAgICAgRkVfUlNUX0NPUkVfTUFTSyB8IEZFX1JTVF9HRE0zX01CSV9BUkJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM2Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMSwgQklUKDI4KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDIsIEJJVCg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MDpcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQxOlx0YWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQzOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fTUlTQ19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cdFx0ICAgICAgR0RNMl9SRE1fQUNLX1dBSVRfUFJFRl9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVx0XHQgICAgICBHRE0yX0NITl9WTERfTU9ERV9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX09BTV9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fT0FNX1FTRUxfTUFTSywgMTUpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cdC8qIE5QVSBDb3JlLTMsIE5QVSBCcmlkZ2UgQ2hhbm5lbC0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUyLVx0XHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1NS1cdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVx0XHQgICAgICBJUF9BU1NFTUJMRV9QT1JUX01BU0sgfCBJUF9BU1NFTUJMRV9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYxOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjI6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE00X0lEWCksIEdETV9QQURfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY0LVx0LyogRW5hYmxlIHNwbGl0IGZvciBNSUIgY291bnRlcnMgZm9yIEdETTMgYW5kIEdETTQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNM19JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjYtXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ny1cdFx0ICAgICAgRkVfR0RNX1JYX01JQl9TUExJVF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY4Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcdGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1FVRVVFX1hGQ19NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3Ny1cdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Nzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9DSE5fUkxTKDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXHRcdCAgICAgIE1CSV9SWF9BR0VfU0VMX01BU0sgfCBNQklfVFhfQUdFX1NFTF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgzLVx0LyogZGlzYWJsZSBJRkMgYnkgZGVmYXVsdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1NSX0lGQ19DRkcsIEZFX0lGQ19FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg3Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4OTpcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk0Olx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cdTAwM2VxZG1hO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTUtXHRpbnQgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5OC1cdHdoaWxlIChxLVx1MDAzZXF1ZXVlZCBcdTAwM2MgcS1cdTAwM2VuZGVzYyAtIDEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5Olx0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXHUwMDI2cS1cdTAwM2VlbnRyeVtxLVx1MDAzZWhlYWRdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XHRcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXHUwMDI2cS1cdTAwM2VkZXNjW3EtXHUwMDNlaGVhZF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzAtXHRpZiAobmZyYW1lcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlx0XHRhaXJvaGFfcWRtYV9ybXcocWRtYSwgUkVHX1JYX0NQVV9JRFgocWlkKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVx0XHRcdFx0UlhfUklOR19DUFVfSURYX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzODpzdGF0aWMgc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjM5OmFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDE6XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXHR1MTYgcCwgZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjYwOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cdTAwM2VwYWdlX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBxZG1hLVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVx0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjgtXHR3aGlsZSAoZG9uZSBcdTAwM2MgYnVkZ2V0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2OTpcdFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFx1MDAyNnEtXHUwMDNlZW50cnlbcS1cdTAwM2V0YWlsXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcwOlx0XHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFx1MDAyNnEtXHUwMDNlZGVzY1txLVx1MDAzZXRhaWxdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtXHRcdHUzMiBoYXNoLCByZWFzb24sIG1zZzEsIGRlc2NfY3RybDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcyOlx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjczLVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2OTU6XHRcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5Ni1cdFx0aWYgKElTX0VSUihkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzI4LVx0XHRpZiAobmV0ZGV2X3VzZXNfZHNhKG5ldGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzI5Olx0XHRcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVx0XHRpZiAocmVhc29uID09IFBQRV9DUFVfUkVBU09OX0hJVF9VTkJJTkRfUkFURV9SRUFDSEVEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XHRcdFx0YWlyb2hhX3BwZV9jaGVja19za2IoXHUwMDI2ZXRoLVx1MDAzZXBwZS1cdTAwM2VkZXYsIHEtXHUwMDNlc2tiLCBoYXNoLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE2MTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXb3J0aEZ1enppbmcgQ3JpdGVyaWEqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJJiMzOTt2ZSBzcG90dGVkIGBhaXJvaGFfZXRoLmNgLCBgYWlyb2hhX3BwZS5jYCwgYW5kIGBhaXJvaGFfbnB1LmNgIGluIHRoZSBwYXRjaC4gTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhpcyBhZ2FpbnN0IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjb2RlIHBhdGhzIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLgoKVGhlIGtleSBxdWVzdGlvbiBpczogSXMgYGFpcm9oYV9ucHUuY2AgcmVhY2hhYmxlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IENvbnNpZGVyaW5nIG15IHVuZGVyc3RhbmRpbmcsIG5vLCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciB0YWlsb3JlZCBmb3IgYSBwYXJ0aWN1bGFyIFN5c3RlbS1vbi1hLUNoaXAgKFNvQykuIFRoaXMgZHJpdmVyIG5lY2Vzc2l0YXRlcyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBvciBhdCBsZWFzdCBpdHMgYWNjdXJhdGUgZW11bGF0aW9uLCB3aGljaCwgSSYjMzk7bSBwcmV0dHkgc3VyZSwgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBmb3IgdGhpcyBzcGVjaWZpYyBTb0MuCgpJIHJlY2FsbCBTeXprYWxsZXIgaGFzIG1lY2hhbmlzbXMgZm9yIGV2YWx1YXRpbmcgcGF0Y2hlcyBldmVuIGlmIHRoZXkgY2FuJiMzOTt0IGJlIGZ1bGx5IGZ1enplZC4gSXQmIzM5O2xsIGF0dGVtcHQgdG8gYXBwbHkgdGhlIHBhdGNoLCBjaGVjayBjb21waWxhdGlvbiwgb3IgdHJ5IGEgZnV6emluZyBydW4gdG8gZGV0ZXJtaW5lIGlmIGl0IGNhbiBmaW5kIGFueXRoaW5nLiBCdXQgdGhhdCYjMzk7cyBub3QgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlLgoKVGhlIHByb21wdCBpcyBjcnlzdGFsIGNsZWFyOiBpZiBpdCBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSByZWFjaGFibGUsIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIElmIGl0JiMzOTtzIGluYWNjZXNzaWJsZSwgdGhlbiBpdCYjMzk7cyBub3QuIEdpdmVuIG15IGFzc2Vzc21lbnQgdGhhdCBgYWlyb2hhX25wdS5jYCAqaXMqIGluYWNjZXNzaWJsZSBpbiBRRU1VIGJlY2F1c2UgaXQmIzM5O3MgaGFyZHdhcmUtc3BlY2lmaWMsIGl0IGxvb2tzIGxpa2UgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBkZXRlcm1pbmF0aW9uLgoKSG93ZXZlciwgSSBzaG91bGQgZG91YmxlLWNoZWNrLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGB0b29scy9gIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2AgZGlyZWN0b3JpZXMgZm9yIGFueSBtb2NrIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBzdXBwb3J0IGZvciBBaXJvaGEgaGFyZHdhcmUuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gYXZvaWQgbWFraW5nIGFueSBhc3N1bXB0aW9ucy4gSWYgSSBmaW5kIHNvbWV0aGluZywgbXkgYXNzZXNzbWVudCBtaWdodCBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQyOQoJCQkJCQkJb3V0cHV0OiA5NwoJCQkJCQkJdGhvdWdodHM6IDE1NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIG5vIG1vY2t1cHMgYXJlIG5lZWRlZC4gSSYjMzk7bSBmb2N1c2luZyBvbiByZWFjaGFiaWxpdHkgaW4gYSBmdXp6aW5nIGNvbnRleHQsIGFuZCB0aGF0IG1lYW5zIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYXJlIHRoZSBrZXkgY29uc2lkZXJhdGlvbi4gIElzIGBDT05GSUdfTkVUX0FJUk9IQV9OUFVgIGV2ZW4gZW5hYmxlZCBpbiBzeXprYWxsZXI/ICBFdmVuIGlmIGl0ICppcyosIHRoaXMgZHJpdmVyLCBhIGBwbGF0Zm9ybV9kcml2ZXJgLCBpcyBnb2luZyB0byBuZWVkIGEgY29ycmVzcG9uZGluZyBgcGxhdGZvcm1fZGV2aWNlYCB0byB0cmlnZ2VyIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiAgU3l6a2FsbGVyIG1pZ2h0ICp0cnkqIHRvIGNyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB1c2luZyBgc3l6X2RldnJlc2Agb3Igc2ltaWxhciwgYnV0IGV2ZW4gdGhlbiB0aGUgYHByb2JlYCBmdW5jdGlvbiBpcyBnb2luZyB0byB0cnkgdG8gYGlvcmVtYXBgIHRoZSBwaHlzaWNhbCBhZGRyZXNzLiBBbmQgaWYgdGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgKmFjdHVhbGx5KiB0aGVyZSwgdGhhdCYjMzk7cyBqdXN0IGdvaW5nIHRvIGNyYXNoIG9yIGZhaWwuCgpIb2xkIG9uLCBJIHRob3VnaHQgbWF5YmUgc3l6a2FsbGVyIGhhcyBzb21lIGtpbmQgb2YgcHNldWRvLXN5c2NhbGwgbGlrZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgPyBObywgdGhhdCBkb2VzbiYjMzk7dCBleGlzdC4gTm93LCB3aGF0IGlmIGl0IHdhcyBhIFBDSSBkcml2ZXI/IE5vLCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgc28gdGhhdCYjMzk7cyBpcnJlbGV2YW50LgoKQWxyaWdodCwgYmFjayB0byB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IGBhaXJvaGFfbnB1LmNgLgoKYGBgYwpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7Cgl7IC5jb21wYXRpYmxlID0gJiMzNDthaXJvaGEsZW43NTgxLW5wdSYjMzQ7LCAuZGF0YSA9ICZhbXA7ZW43NTgxX25wdV9zb2NfZGF0YSB9LAoJeyAuY29tcGF0aWJsZSA9ICYjMzQ7YWlyb2hhLGFuNzU4My1ucHUmIzM0OywgLmRhdGEgPSAmYW1wO2FuNzU4M19ucHVfc29jX2RhdGEgfSwKCXsgLyogc2VudGluZWwgKi8gfQp9OwpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbnB1X21hdGNoKTsKCnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0gewoJLnByb2JlID0gYWlyb2hhX25wdV9wcm9iZSwKCS5yZW1vdmUgPSBhaXJvaGFfbnB1X3JlbW92ZSwKCS5kcml2ZXIgPSB7CgkJLm5hbWUgPSAmIzM0O2Fpcm9oYS1ucHUmIzM0OywKCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9haXJvaGFfbnB1X21hdGNoLAoJfSwKfTsKbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7CmBgYAoKT2theSwgaXQmIzM5O3MgYSBzdGFuZGFyZCBEZXZpY2UgVHJlZSBiYXNlZCBwbGF0Zm9ybSBkcml2ZXIuIEluIFFFTVUsIHRoZSBkZXZpY2UgdHJlZSBpcyBwcm92aWRlZCBieSB0aGUgbWFjaGluZSB0eXBlLCBlLmcuLCAmIzM5O3ZpcnQmIzM5Oy4gQW5kIHRoZSAmIzM5O3ZpcnQmIzM5OyBtYWNoaW5lIHR5cGUgKipkb2VzbiYjMzk7dCoqIGluY2x1ZGUgc29tZXRoaW5nIGxpa2UgJiMzNDthaXJvaGEsZW43NTgxLW5wdSYjMzQ7LiBCb29tLiAgVGhlIGRldmljZSB3b24mIzM5O3QgYmUgaW5zdGFudGlhdGVkLCBhbmQgYHByb2JlYCB3b24mIzM5O3QgYmUgY2FsbGVkLiAgSXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gaGFwcGVuIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkNvdWxkIHN5emthbGxlciB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IEV2ZW4gaWYgaXQgZGlkLCB0aGF0IGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VgIGNhbGwgd2lsbCBtYXAgYSBwaHlzaWNhbCBhZGRyZXNzLiAgUUVNVSBpc24mIzM5O3QgZW11bGF0aW5nIEFpcm9oYSBOUFUgcmVnaXN0ZXJzIGF0IHRoYXQgYWRkcmVzcy4gIFJlYWRpbmcgZnJvbSB0aGF0IGFkZHJlc3Mgd2lsbCBwcm9iYWJseSBjYXVzZSBhIGJ1cyBlcnJvciwgb3IgcmV0dXJuIGdhcmJhZ2UuIEVpdGhlciB3YXksIGl0JiMzOTtzIGEgZGVhZCBlbmQuCgpTcGVjaWZpY2FsbHkgaW4gYGFpcm9oYV9ucHVfcHJvYmVgOgoKYGBgYwoJZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCAmYW1wO3Jlcyk7CmBgYAoKSW5zaWRlIGBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZWA6CgpgYGBjCgkvKiBMb2FkIHJ2MzIgbnB1IGZpcm13YXJlICovCglyZXQgPSBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBhZGRyLCBzb2MtJmd0O2Z3X3J2MzIubmFtZSwKCQkJCSAgICAgICBzb2MtJmd0O2Z3X3J2MzIubWF4X3NpemUpOwpgYGAKCklmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgaW4gdGhlIHJvb3RmcywgaXQmIzM5O3MgZ29pbmcgdG8gZmFpbCAqdGhlcmUqLCBidXQgZXZlbiBpZiBpdCYjMzk7cyB0aGVyZSBpdCBpcyB3cml0aW5nIHJlZ2lzdGVycyBhbmQgd2FpdGluZzoKCmBgYGMKCWlmICghYWlyb2hhX25wdV93bGFuX21zZ19nZXQobnB1LCAwLCBXTEFOX0ZVTkNfR0VUX1dBSVRfTlBVX1ZFUlNJT04sCgkJCQkgICAgICZhbXA7dmFsLCBzaXplb2YodmFsKSwgR0ZQX0tFUk5FTCkpCgkJZGV2X2luZm8oZGV2LCAmIzM0O05QVSB2ZXJzaW9uOiAlZFxuJiMzNDssIHZhbCk7CmBgYAoKYGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0YCB0aGVuIGNhbGxzIGBfX2Fpcm9oYV9ucHVfc2VuZF9tc2dgLCB3aGVyZSB3ZSBzZWU6CgpgYGBjCglyZWdtYXBfd3JpdGUobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMCkgJiM0Mzsgb2Zmc2V0LCBkbWFfYWRkcik7CglyZWdtYXBfd3JpdGUobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMSkgJiM0Mzsgb2Zmc2V0LCBsZW4pOwoJcmVnbWFwX3JlYWQobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCAmYW1wO3ZhbCk7CglyZWdtYXBfCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIE5QVSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIGRyaXZlciBmb3IgQWlyb2hhIEVONzU4MS9BTjc1ODMgcm91dGVycy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo0NS41NTA5MjIxOTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTc4ODE2MTI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgTlBVIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgZHJpdmVyIGZvciBBaXJvaGEgRU43NTgxL0FONzU4MyByb3V0ZXJzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo0NS41NTA5MjgyNDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzczMDA3NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ODFjYjhmYWZmZDUxZTlmZWI5MTZmMGNhMjY2M2ZkY2ExMWQ3OTI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjA2OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXFxuaW5kZXggYjY3OWJlZDk1MmRlMy4uMmJhNzhiZjBlOTdiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZjb3JlZHVtcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbkBAIC0yMyw2ICsyNCw4IEBAXFxuICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFXFx0MHgyMDAwMDBcXG4gI2RlZmluZSBOUFVfRU43NTgxX0ZJUk1XQVJFX0RBVEFfTUFYX1NJWkVcXHQweDEwMDAwXFxuICNkZWZpbmUgTlBVX0RVTVBfU0laRVxcdFxcdFxcdFxcdDUxMlxcbisvKiBNYXhpbXVtIG1haWxib3ggRE1BIHBheWxvYWQgKFBQRSB+MjggYnl0ZXMsIFdMQU4gVExWIHVwIHRvIDI0KS4gKi9cXG4rI2RlZmluZSBBSVJPSEFfTlBVX01CT1hfU0laRVxcdFxcdFxcdDI1NlxcbiBcXG4gI2RlZmluZSBSRUdfTlBVX0xPQ0FMX1NSQU1cXHRcXHQweDBcXG4gXFxuQEAgLTE2MCwyMyArMTYzLDMzIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XFxuIFxcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuLVxcdFxcdFxcdCAgICAgICB2b2lkICpwLCBpbnQgc2l6ZSlcXG4rc3RhdGljIGludCBfX2Fpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuK1xcdFxcdFxcdFxcdCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLCB2b2lkICpyZXBseSxcXG4rXFx0XFx0XFx0XFx0IHUxNiByZXBseV9sZW4pXFxuIHtcXG4tXFx0dTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqL1xcbi1cXHR1MzIgdmFsLCBvZmZzZXQgPSBjb3JlIFxcdTAwM2NcXHUwMDNjIDQ7XFxuK1xcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi9cXG4gXFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcXG4rXFx0dW5zaWduZWQgaW50IG1hcF9sZW4gPSBBTElHTihsZW4sIFNNUF9DQUNIRV9CWVRFUyk7XFxuK1xcdHUzMiB2YWwsIG9mZnNldCA9IDA7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cXHUwMDNlZGV2LCBwLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7XFxuK1xcdGlmIChsZW4gXFx1MDAzYz0gMCB8fCBsZW4gXFx1MDAzZSBBSVJPSEFfTlBVX01CT1hfU0laRSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRpZiAocmVwbHkgXFx1MDAyNlxcdTAwMjYgcmVwbHlfbGVuIFxcdTAwM2UgbGVuKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y29yZS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRtZW1jcHkoY29yZS1cXHUwMDNlYnVmLCBkYXRhLCBsZW4pO1xcbitcXG4rXFx0ZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShucHUtXFx1MDAzZWRldiwgY29yZS1cXHUwMDNlYnVmLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcdHJldCA9IGRtYV9tYXBwaW5nX2Vycm9yKG5wdS1cXHUwMDNlZGV2LCBkbWFfYWRkcik7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbY29yZV0ubG9jayk7XFxuK1xcdFxcdGdvdG8gdW5sb2NrO1xcbiBcXG4gXFx0cmVnbWFwX3dyaXRlKG5wdS1cXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDApICsgb2Zmc2V0LCBkbWFfYWRkcik7XFxuLVxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgc2l6ZSk7XFxuK1xcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgbGVuKTtcXG4gXFx0cmVnbWFwX3JlYWQobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgKyBvZmZzZXQsIFxcdTAwMjZ2YWwpO1xcbiBcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgKyBvZmZzZXQsIHZhbCArIDEpO1xcbiBcXHR2YWwgPSBGSUVMRF9QUkVQKE1CT1hfTVNHX0ZVTkNfSUQsIGZ1bmNfaWQpIHwgTUJPWF9NU0dfV0FJVF9SU1A7XFxuQEAgLTE4OSwxMyArMjAyLDIzIEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcXG4gXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgRklFTERfR0VUKE1CT1hfTVNHX1NUQVRVUywgdmFsKSAhPSBOUFVfTUJPWF9TVUNDRVNTKVxcbiBcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiBcXG4tXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbY29yZV0ubG9jayk7XFxuK1xcdGRtYV91bm1hcF9zaW5nbGUobnB1LVxcdTAwM2VkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcbi1cXHRkbWFfdW5tYXBfc2luZ2xlKG5wdS1cXHUwMDNlZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xcbitcXHQvKiBDb3B5IHRoZSB0cmFpbGluZyByZXBseV9sZW4gYnl0ZXMgb2YgdGhlIHJlc3BvbnNlLiAqL1xcbitcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiByZXBseSlcXG4rXFx0XFx0bWVtY3B5KHJlcGx5LCBjb3JlLVxcdTAwM2VidWYgKyBsZW4gLSByZXBseV9sZW4sIHJlcGx5X2xlbik7XFxuK3VubG9jazpcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNvcmUtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxcbitcXHRcXHRcXHQgICAgICAgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4re1xcbitcXHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcXG4gXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGludCBmd19tYXhfc2l6ZSlcXG4ge1xcbkBAIC00OTcsOSArNTIwLDggQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcXG4gXFx0d2xhbl9kYXRhLVxcdTAwM2VmdW5jX3R5cGUgPSBOUFVfT1BfR0VUO1xcbiBcXHR3bGFuX2RhdGEtXFx1MDAzZWZ1bmNfaWQgPSBmdW5jX2lkO1xcbiBcXG4tXFx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuKTtcXG4tXFx0aWYgKCFlcnIpXFxuLVxcdFxcdG1lbWNweShkYXRhLCB3bGFuX2RhdGEtXFx1MDAzZWQsIGRhdGFfbGVuKTtcXG4rXFx0ZXJyID0gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4sXFxuK1xcdFxcdFxcdFxcdCAgICBkYXRhLCBkYXRhX2xlbik7XFxuIFxcdGtmcmVlKHdsYW5fZGF0YSk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbkBAIC03NzAsNiArNzkyLDE4IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3Jlcyk7IGkrKykge1xcbitcXHRcXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbaV07XFxuK1xcdFxcdHZvaWQgKnJhdztcXG4rXFxuK1xcdFxcdHJhdyA9IGRldm1fa21hbGxvYyhkZXYsIEFJUk9IQV9OUFVfTUJPWF9TSVpFICsgU01QX0NBQ0hFX0JZVEVTLFxcbitcXHRcXHRcXHRcXHQgICBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0aWYgKCFyYXcpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0Y29yZS1cXHUwMDNlYnVmID0gUFRSX0FMSUdOKHJhdywgU01QX0NBQ0hFX0JZVEVTKTtcXG4rXFx0fVxcbitcXG4gXFx0ZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCBcXHUwMDI2cmVzKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJmYWlsZWQgdG8gcnVuIG5wdSBmaXJtd2FyZVxcXFxuXFxcIik7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcXG5pbmRleCA3NTg5ZmNjZmVlZjZkLi5mNjM1NzY2ZTNkYmEyIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcXG5AQCAtMTczLDYgKzE3Myw3IEBAIHN0cnVjdCBhaXJvaGFfbnB1IHtcXG4gXFx0XFx0LyogcHJvdGVjdCBjb25jdXJyZW50IG5wdSBtZW1vcnkgYWNjZXNzZXMgKi9cXG4gXFx0XFx0c3BpbmxvY2tfdCBsb2NrO1xcbiBcXHRcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd2R0X3dvcms7XFxuK1xcdFxcdHZvaWQgKmJ1ZjsgLyogbWFpbGJveCBETUEgYm91bmNlIGJ1ZmZlciAqL1xcbiBcXHR9IGNvcmVzW05QVV9OVU1fQ09SRVNdO1xcbiBcXG4gXFx0aW50IGlycXNbTlBVX05VTV9JUlFdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo0Ni45ODkwNDY4NDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NDM1MDAxOTk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ4MWNiOGZhZmZkNTFlOWZlYjkxNmYwY2EyNjYzZmRjYTExZDc5MjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxMjowNjo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5pbmRleCBiNjc5YmVkOTUyZGUzLi4yYmE3OGJmMGU5N2I0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuQEAgLTUsNiArNSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuQEAgLTIzLDYgKzI0LDggQEBcbiAjZGVmaW5lIE5QVV9FTjc1ODFfRklSTVdBUkVfUlYzMl9NQVhfU0laRVx0MHgyMDAwMDBcbiAjZGVmaW5lIE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRVx0MHgxMDAwMFxuICNkZWZpbmUgTlBVX0RVTVBfU0laRVx0XHRcdFx0NTEyXG4rLyogTWF4aW11bSBtYWlsYm94IERNQSBwYXlsb2FkIChQUEUgfjI4IGJ5dGVzLCBXTEFOIFRMViB1cCB0byAyNCkuICovXG4rI2RlZmluZSBBSVJPSEFfTlBVX01CT1hfU0laRVx0XHRcdDI1NlxuIFxuICNkZWZpbmUgUkVHX05QVV9MT0NBTF9TUkFNXHRcdDB4MFxuIFxuQEAgLTE2MCwyMyArMTYzLDMzIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XG4gXHRERUNMQVJFX0ZMRVhfQVJSQVkodTgsIGQpO1xuIH07XG4gXG4tc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuLVx0XHRcdCAgICAgICB2b2lkICpwLCBpbnQgc2l6ZSlcbitzdGF0aWMgaW50IF9fYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbitcdFx0XHRcdCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLCB2b2lkICpyZXBseSxcbitcdFx0XHRcdCB1MTYgcmVwbHlfbGVuKVxuIHtcbi1cdHUxNiBjb3JlID0gMDsgLyogRklYTUUgKi9cbi1cdHUzMiB2YWwsIG9mZnNldCA9IGNvcmUgXHUwMDNjXHUwMDNjIDQ7XG4rXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzWzBdOyAvKiBGSVhNRTogY29yZSAqL1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbitcdHVuc2lnbmVkIGludCBtYXBfbGVuID0gQUxJR04obGVuLCBTTVBfQ0FDSEVfQllURVMpO1xuK1x0dTMyIHZhbCwgb2Zmc2V0ID0gMDtcbiBcdGludCByZXQ7XG4gXG4tXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIHAsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbitcdGlmIChsZW4gXHUwMDNjPSAwIHx8IGxlbiBcdTAwM2UgQUlST0hBX05QVV9NQk9YX1NJWkUpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0aWYgKHJlcGx5IFx1MDAyNlx1MDAyNiByZXBseV9sZW4gXHUwMDNlIGxlbilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbitcbitcdG1lbWNweShjb3JlLVx1MDAzZWJ1ZiwgZGF0YSwgbGVuKTtcbitcbitcdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgY29yZS1cdTAwM2VidWYsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTtcbiBcdHJldCA9IGRtYV9tYXBwaW5nX2Vycm9yKG5wdS1cdTAwM2VkZXYsIGRtYV9hZGRyKTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRzcGluX2xvY2tfYmgoXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2NvcmVdLmxvY2spO1xuK1x0XHRnb3RvIHVubG9jaztcbiBcbiBcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDApICsgb2Zmc2V0LCBkbWFfYWRkcik7XG4tXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgc2l6ZSk7XG4rXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgbGVuKTtcbiBcdHJlZ21hcF9yZWFkKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgKyBvZmZzZXQsIFx1MDAyNnZhbCk7XG4gXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgyKSArIG9mZnNldCwgdmFsICsgMSk7XG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1CT1hfTVNHX0ZVTkNfSUQsIGZ1bmNfaWQpIHwgTUJPWF9NU0dfV0FJVF9SU1A7XG5AQCAtMTg5LDEzICsyMDIsMjMgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuIFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IEZJRUxEX0dFVChNQk9YX01TR19TVEFUVVMsIHZhbCkgIT0gTlBVX01CT1hfU1VDQ0VTUylcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcbitcdGRtYV91bm1hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTtcbiBcbi1cdGRtYV91bm1hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbitcdC8qIENvcHkgdGhlIHRyYWlsaW5nIHJlcGx5X2xlbiBieXRlcyBvZiB0aGUgcmVzcG9uc2UuICovXG4rXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcmVwbHkpXG4rXHRcdG1lbWNweShyZXBseSwgY29yZS1cdTAwM2VidWYgKyBsZW4gLSByZXBseV9sZW4sIHJlcGx5X2xlbik7XG4rdW5sb2NrOlxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuK3N0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbitcdFx0XHQgICAgICAgdm9pZCAqZGF0YSwgaW50IGxlbilcbit7XG4rXHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xuK31cbitcbiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcbiBcdFx0XHRcdCAgICBjb25zdCBjaGFyICpmd19uYW1lLCBpbnQgZndfbWF4X3NpemUpXG4ge1xuQEAgLTQ5Nyw5ICs1MjAsOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuIFx0d2xhbl9kYXRhLVx1MDAzZWZ1bmNfdHlwZSA9IE5QVV9PUF9HRVQ7XG4gXHR3bGFuX2RhdGEtXHUwMDNlZnVuY19pZCA9IGZ1bmNfaWQ7XG4gXG4tXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pO1xuLVx0aWYgKCFlcnIpXG4tXHRcdG1lbWNweShkYXRhLCB3bGFuX2RhdGEtXHUwMDNlZCwgZGF0YV9sZW4pO1xuK1x0ZXJyID0gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4sXG4rXHRcdFx0XHQgICAgZGF0YSwgZGF0YV9sZW4pO1xuIFx0a2ZyZWUod2xhbl9kYXRhKTtcbiBcbiBcdHJldHVybiBlcnI7XG5AQCAtNzcwLDYgKzc5MiwxOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG5wdS1cdTAwM2Vjb3Jlcyk7IGkrKykge1xuK1x0XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2ldO1xuK1x0XHR2b2lkICpyYXc7XG4rXG4rXHRcdHJhdyA9IGRldm1fa21hbGxvYyhkZXYsIEFJUk9IQV9OUFVfTUJPWF9TSVpFICsgU01QX0NBQ0hFX0JZVEVTLFxuK1x0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghcmF3KVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0XHRjb3JlLVx1MDAzZWJ1ZiA9IFBUUl9BTElHTihyYXcsIFNNUF9DQUNIRV9CWVRFUyk7XG4rXHR9XG4rXG4gXHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFx1MDAyNnJlcyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCJmYWlsZWQgdG8gcnVuIG5wdSBmaXJtd2FyZVxcblwiKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NvYy9haXJvaGEvYWlyb2hhX29mZmxvYWQuaCBiL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oXG5pbmRleCA3NTg5ZmNjZmVlZjZkLi5mNjM1NzY2ZTNkYmEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oXG5AQCAtMTczLDYgKzE3Myw3IEBAIHN0cnVjdCBhaXJvaGFfbnB1IHtcbiBcdFx0LyogcHJvdGVjdCBjb25jdXJyZW50IG5wdSBtZW1vcnkgYWNjZXNzZXMgKi9cbiBcdFx0c3BpbmxvY2tfdCBsb2NrO1xuIFx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd2R0X3dvcms7XG4rXHRcdHZvaWQgKmJ1ZjsgLyogbWFpbGJveCBETUEgYm91bmNlIGJ1ZmZlciAqL1xuIFx0fSBjb3Jlc1tOUFVfTlVNX0NPUkVTXTtcbiBcbiBcdGludCBpcnFzW05QVV9OVU1fSVJRXTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA2OjQ2Ljk4OTA0ODExN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDI3OTczOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBBaXJvaGEgTlBVIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jYCBhbmQgYGluY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oYC4gSXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGhvdyBtZXNzYWdlcyBhcmUgc2VudCB0byB0aGUgTlBVIG9uIEFpcm9oYSBTb0NzLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGEgRE1BIGJvdW5jZSBidWZmZXIgKGBjb3JlLVx1MDAzZWJ1ZmApIGFuZCByZW5hbWluZyBgYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gYF9fYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gdXNlIGl0LiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXJseSB0byByZXNvbHZlIHBvdGVudGlhbCBETUEgbWFwcGluZyBwcm9ibGVtcywgd2hpY2ggbWFrZXMgc2Vuc2U7IGRlYWxpbmcgd2l0aCBzdGFjayBtZW1vcnkgb3IgdW5hbGlnbmVkIG1lbW9yeSBpbiBETUEgb3BlcmF0aW9ucyBpcyBhbHdheXMgYSBwYWluLlxuXG5CdXQgaG9sZCBvbiwgdGhlcmUncyBhIHNwZWNpZmljIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIuIFRoZSBwcm9tcHQgc2F5cyBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgdGhhdCAqcmVxdWlyZXMqIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQncyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0J3MgYSBjcml0aWNhbCBwb2ludC4gSXMgdGhpcyBBaXJvaGEgTlBVIGRyaXZlciBvbmUgb2YgKnRob3NlKj9cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGBhaXJvaGFfbnB1YCBmaXRzIHRoaXMgY3JpdGVyaWEuIEkga25vdyBpdCdzIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCwgc28gYXQgbGVhc3QgaXQncyBhIG5ldHdvcmsgZHJpdmVyIGFuZCB2ZW5kb3Itc3BlY2lmaWMgdG8gQWlyb2hhLiBCdXQgaXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVudCBvbiBhIFBDSWUgZGV2aWNlLCBvciBzb21ldGhpbmcgZWxzZSB0aGF0IFFFTVUgbWlnaHQgbm90IGhhbmRsZT8gVGltZSB0byBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlIHRvIGdldCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGBhaXJvaGFfbnB1YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaXMgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIG9yIGlmIGl0J3MgcG90ZW50aWFsbHkgZW11bGF0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA2OjU4LjAxNzAzMDExOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMyMzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhaXJvaGFfbnB1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlPTg9YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgKz0gYWlyb2hhX3BwZV9kZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICs9IGFpcm9oYV9ucHUub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02NDU9c3RydWN0IGFpcm9oYV9ldGgge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC02NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDo2NTM6XFx0c3RydWN0IGFpcm9oYV9ucHUgX19yY3UgKm5wdTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTY1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9MTA4PWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoxMTM6c3RydWN0IGFpcm9oYV9ucHVfZncge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTE0LVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExODpzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoxMTk6XFx0c3RydWN0IGFpcm9oYV9ucHVfZncgZndfcnYzMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjEyMDpcXHRzdHJ1Y3QgYWlyb2hhX25wdV9mdyBmd19kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTIxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTE1OT1zdHJ1Y3Qgd2xhbl9tYm94X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoxNjY6c3RhdGljIGludCBfX2Fpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjctXFx0XFx0XFx0XFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKnJlcGx5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MTcwOlxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTE3MS1cXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyMTY6c3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjE3LVxcdFxcdFxcdCAgICAgICB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjE4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjIxOTpcXHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjIwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjIyMjpzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTIyMy1cXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqZndfbmFtZSwgaW50IGZ3X21heF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz0yNDY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjQ3OmFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZV9mcm9tX2R0cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI0OC1cXHRcXHRcXHRcXHQgIHZvaWQgX19pb21lbSAqYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjU4OlxcdHJldCA9IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGFkZHIsIGZ3X25hbWVzWzBdLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU5LVxcdFxcdFxcdFxcdCAgICAgICBOUFVfRU43NTgxX0ZJUk1XQVJFX1JWMzJfTUFYX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyNjM6XFx0cmV0dXJuIGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGJhc2UgKyBSRUdfTlBVX0xPQ0FMX1NSQU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNjQtXFx0XFx0XFx0XFx0XFx0ZndfbmFtZXNbMV0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI2ODpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICpiYXNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjY5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjcwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI3MTpcXHRjb25zdCBzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSAqc29jO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjcyLVxcdHZvaWQgX19pb21lbSAqYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjg2LVxcdGlmIChvZl9maW5kX3Byb3BlcnR5KGRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcImZpcm13YXJlLW5hbWVcXFwiLCBOVUxMKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI4NzpcXHRcXHRyZXR1cm4gYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlX2Zyb21fZHRzKGRldiwgYWRkciwgYmFzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODktXFx0LyogTG9hZCBydjMyIG5wdSBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjkwOlxcdHJldCA9IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGFkZHIsIHNvYy1cXHUwMDNlZndfcnYzMi5uYW1lLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjkxLVxcdFxcdFxcdFxcdCAgICAgICBzb2MtXFx1MDAzZWZ3X3J2MzIubWF4X3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yOTUtXFx0LyogTG9hZCBkYXRhIG5wdSBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mjk2OlxcdHJldHVybiBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBiYXNlICsgUkVHX05QVV9MT0NBTF9TUkFNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjk3LVxcdFxcdFxcdFxcdFxcdHNvYy1cXHUwMDNlZndfZGF0YS5uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMDE6c3RhdGljIGlycXJldHVybl90IGFpcm9oYV9ucHVfbWJveF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKm5wdV9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMwMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMDM6XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IG5wdV9pbnN0YW5jZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE2OnN0YXRpYyB2b2lkIGFpcm9oYV9ucHVfd2R0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzE3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjMxODpcXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE5OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMjAtXFx0dm9pZCAqZHVtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzI0OlxcdGNvcmUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGFpcm9oYV9ucHVfY29yZSwgd2R0X3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzI1LVxcdG5wdSA9IGNvcmUtXFx1MDAzZW5wdTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzM5OnN0YXRpYyBpcnFyZXR1cm5fdCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmNvcmVfaW5zdGFuY2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzQxOlxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBjb3JlX2luc3RhbmNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzQyOlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBjb3JlLVxcdTAwM2VucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNDMtXFx0aW50IGMgPSBjb3JlIC0gXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM1NDpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM2ODpcXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfUFBFLCBwcGVfZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM2OS1cXHRcXHRcXHRcXHQgIHNpemVvZigqcHBlX2RhdGEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mzc1OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZGVpbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozODc6XFx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1BQRSwgcHBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODgtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM5NDpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2ZsdXNoX3NyYW1fZW50cmllcyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzk1LVxcdFxcdFxcdFxcdFxcdCAgICAgZG1hX2FkZHJfdCBmb2VfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDExOlxcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEyLVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0MTg6c3RhdGljIGludCBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQxOS1cXHRcXHRcXHRcXHQgICAgICAgZG1hX2FkZHJfdCBmb2VfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDM2OlxcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDM3LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0NDU6XFx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1BQRSwgcHBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NDYtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQ1MzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX3N0YXRzX3NldHVwKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NTQtXFx0XFx0XFx0XFx0ICAgICAgZG1hX2FkZHJfdCBmb2Vfc3RhdHNfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDY4OlxcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDY5LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0ODQ6c3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0ODU6XFx0XFx0XFx0XFx0ICAgIGVudW0gYWlyb2hhX25wdV93bGFuX3NldF9jbWQgZnVuY19pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ4Ni1cXHRcXHRcXHRcXHQgICAgdm9pZCAqZGF0YSwgaW50IGRhdGFfbGVuLCBnZnBfdCBnZnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwMTpcXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTAyLVxcdGtmcmVlKHdsYW5fZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwNzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTA4OlxcdFxcdFxcdFxcdCAgIGVudW0gYWlyb2hhX25wdV93bGFuX2dldF9jbWQgZnVuY19pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwOS1cXHRcXHRcXHRcXHQgICB2b2lkICpkYXRhLCBpbnQgZGF0YV9sZW4sIGdmcF90IGdmcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTIzOlxcdGVyciA9IF9fYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTI0LVxcdFxcdFxcdFxcdCAgICBkYXRhLCBkYXRhX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTUzMD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MzE6YWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUzMi1cXHRcXHRcXHRcXHQgICAgaW50IGlmaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MzM6XFx0XFx0XFx0XFx0ICAgIGVudW0gYWlyb2hhX25wdV93bGFuX3NldF9jbWQgZnVuY19pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU0NS1cXHR2YWwgPSByZXMuc3RhcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NDY6XFx0cmV0dXJuIGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChucHUsIGlmaW5kZXgsIGZ1bmNfaWQsIFxcdTAwMjZ2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NDctXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKHZhbCksIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTA6c3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTI6XFx0ZW51bSBhaXJvaGFfbnB1X3dsYW5fc2V0X2NtZCBjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfTlBVX0JBTkQwX09OQ1BVO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTUzLVxcdHUzMiB2YWwgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTY6XFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKG5wdSwgMSwgY21kLCBcXHUwMDI2dmFsLCBzaXplb2YodmFsKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU1Ny1cXHRcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU2MS1cXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfVFhfQlVGX0NIRUNLX0FERFI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NjI6XFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkobnB1LCAwLCBcXFwidHgtYnVmaWRcXFwiLCBjbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU2Ni1cXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfUEtUX0JVRl9BRERSO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTY3OlxcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXFxcInBrdFxcXCIsIGNtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NjgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTcxLVxcdGNtZCA9IFdMQU5fRlVOQ19TRVRfV0FJVF9UWF9QS1RfQlVGX0FERFI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NzI6XFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkobnB1LCAwLCBcXFwidHgtcGt0XFxcIiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU3My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NzgtXFx0XFx0Y21kID0gV0xBTl9GVU5DX1NFVF9XQUlUX0RSQU1fQkFfTk9ERV9BRERSO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTc5OlxcdFxcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXFxcImJhXFxcIiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU4MC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01ODQtXFx0Y21kID0gV0xBTl9GVU5DX1NFVF9XQUlUX0lTX0ZPUkNFX1RPX0NQVTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU4NTpcXHRyZXR1cm4gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKG5wdSwgMCwgY21kLCBcXHUwMDI2dmFsLCBzaXplb2YodmFsKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU4Ni1cXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTg5OnN0YXRpYyB1MzIgYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBxaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01OTAtXFx0XFx0XFx0XFx0XFx0ICBib29sIHhtaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU5ODpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19zZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYwMzpzdGF0aWMgdTMyIGFpcm9oYV9ucHVfd2xhbl9pcnFfc3RhdHVzX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYxMTpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYxNjpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IHEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2MjE6c3RydWN0IGFpcm9oYV9ucHUgKmFpcm9oYV9ucHVfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYyNC1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjI1OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY2OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2Njk6RVhQT1JUX1NZTUJPTF9HUEwoYWlyb2hhX25wdV9nZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjcxOnZvaWQgYWlyb2hhX25wdV9wdXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2NzY6RVhQT1JUX1NZTUJPTF9HUEwoYWlyb2hhX25wdV9wdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSBlbjc1ODFfbnB1X3NvY19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc5LVxcdC5md19ydjMyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBhaXJvaGFfbnB1X3NvY19kYXRhIGFuNzU4M19ucHVfc29jX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02OTAtXFx0LmZ3X3J2MzIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcwMDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MDEtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhaXJvaGEsZW43NTgxLW5wdVxcXCIsIC5kYXRhID0gXFx1MDAyNmVuNzU4MV9ucHVfc29jX2RhdGEgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzA0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX25wdV9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz03MDc9c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHJlZ21hcF9jb25maWcgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTcxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxNTpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTcxNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MTctXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxODpcXHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzE5LVxcdHN0cnVjdCByZXNvdXJjZSByZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTczMi1cXHRucHUtXFx1MDAzZWRldiA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczMzpcXHRucHUtXFx1MDAzZW9wcy5wcGVfaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2luaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MzQ6XFx0bnB1LVxcdTAwM2VvcHMucHBlX2RlaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2RlaW5pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczNTpcXHRucHUtXFx1MDAzZW9wcy5wcGVfaW5pdF9zdGF0cyA9IGFpcm9oYV9ucHVfcHBlX3N0YXRzX3NldHVwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM2OlxcdG5wdS1cXHUwMDNlb3BzLnBwZV9mbHVzaF9zcmFtX2VudHJpZXMgPSBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3Mzc6XFx0bnB1LVxcdTAwM2VvcHMucHBlX2ZvZV9jb21taXRfZW50cnkgPSBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3Mzg6XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9pbml0X3Jlc2VydmVkX21lbW9yeSA9IGFpcm9oYV9ucHVfd2xhbl9pbml0X21lbW9yeTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczOTpcXHRucHUtXFx1MDAzZW9wcy53bGFuX3NlbmRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQwOlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZ2V0X21zZyA9IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQxOlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZ2V0X3F1ZXVlX2FkZHIgPSBhaXJvaGFfbnB1X3dsYW5fcXVldWVfYWRkcl9nZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NDI6XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9zZXRfaXJxX3N0YXR1cyA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfc3RhdHVzX3NldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0MzpcXHRucHUtXFx1MDAzZW9wcy53bGFuX2dldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfZ2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQ0OlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZW5hYmxlX2lycSA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfZW5hYmxlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQ1OlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZGlzYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc1OTpcXHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X21ib3hfaGFuZGxlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc2MC1cXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIFxcXCJhaXJvaGEtbnB1LW1ib3hcXFwiLCBucHUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NjQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3Jlcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzY1OlxcdFxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc0OlxcdFxcdGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGFpcm9oYV9ucHVfd2R0X2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NzUtXFx0XFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBcXFwiYWlyb2hhLW5wdS13ZHRcXFwiLCBjb3JlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc5OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2Y29yZS1cXHUwMDNld2R0X3dvcmssIGFpcm9oYV9ucHVfd2R0X3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzgwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzk1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5wdS1cXHUwMDNlY29yZXMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc5NjpcXHRcXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03OTctXFx0XFx0dm9pZCAqcmF3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4MDc6XFx0ZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgwOC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4Mjg6XFx0aWYgKCFhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChucHUsIDAsIFdMQU5fRlVOQ19HRVRfV0FJVF9OUFVfVkVSU0lPTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyOS1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ2YWwsIHNpemVvZih2YWwpLCBHRlBfS0VSTkVMKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODM4OnN0YXRpYyB2b2lkIGFpcm9oYV9ucHVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04Mzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQwOlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg0MS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQ3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQ4OlxcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NDk6XFx0LnJlbW92ZSA9IGFpcm9oYV9ucHVfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODUwLVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04NTEtXFx0XFx0Lm5hbWUgPSBcXFwiYWlyb2hhLW5wdVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTI6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb2ZfYWlyb2hhX25wdV9tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1My1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODU0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTYwNz1zdGF0aWMgdm9pZCBhaXJvaGFfcHBlX2ZvZV9mbG93X3N0YXRfZW50cnlfcmVzZXQoc3RydWN0IGFpcm9oYV9wcGUgKnBwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjYwODpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTYwOS1cXHRcXHRcXHRcXHRcXHRcXHQgaW50IGluZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz02MTU9c3RhdGljIHZvaWQgYWlyb2hhX3BwZV9mb2VfZmxvd19zdGF0c19yZXNldChzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NjE2OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9NjI4PXN0YXRpYyB2b2lkIGFpcm9oYV9wcGVfZm9lX2Zsb3dfc3RhdHNfdXBkYXRlKHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzo2Mjk6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNjMwLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGFpcm9oYV9mb2VfZW50cnkgKmh3ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9NzY1PXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9mb2VfY29tbWl0X2VudHJ5KHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTc3Mi1cXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcHBlLVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzo3NzM6XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTc3NC1cXHRpbnQgZXJyID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTMwMT12b2lkIGFpcm9oYV9wcGVfZm9lX2VudHJ5X2dldF9zdGF0cyhzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlLCB1MzIgaGFzaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTMwNS1cXHRpbnQgcHBlX251bV9zdGF0c19lbnRyaWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTMwNjpcXHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTMwNy1cXHR1MzIgaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTEzNzk9c3RhdGljIGludCBhaXJvaGFfcHBlX2ZsdXNoX3NyYW1fZW50cmllcyhzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTM5NzpzdGF0aWMgc3RydWN0IGFpcm9oYV9ucHUgKmFpcm9oYV9wcGVfbnB1X2dldChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTM5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMzk5OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBhaXJvaGFfbnB1X2dldChldGgtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDAyLVxcdFxcdHJlcXVlc3RfbW9kdWxlKFxcXCJhaXJvaGEtbnB1XFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNDAzOlxcdFxcdG5wdSA9IGFpcm9oYV9ucHVfZ2V0KGV0aC1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0MDQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xNDMyPXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0MzQ6XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IGFpcm9oYV9wcGVfbnB1X2dldChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQzNS1cXHRzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlID0gZXRoLVxcdTAwM2VwcGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NjYtZXJyb3JfbnB1X3B1dDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0Njc6XFx0YWlyb2hhX25wdV9wdXQobnB1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTE2NjI9dm9pZCBhaXJvaGFfcHBlX2RlaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTY2My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNjY0OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjcyLVxcdFxcdG5wdS1cXHUwMDNlb3BzLnBwZV9kZWluaXQobnB1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE2NzM6XFx0XFx0YWlyb2hhX25wdV9wdXQobnB1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE2NzQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo1OC4wNjQzNjMyMjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE5MDg3MTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBBaXJvaGEgTlBVIERyaXZlciBhbmQgV29ydGhGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgYWlyb2hhX25wdWAgZHJpdmVyLCBwYXJ0IG9mIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyIHN1aXRlLiBJdCBzZWVtcyB0byBiZSBhbiBOUFUgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgQWlyb2hhJ3MgRU43NTgxIFNvQ3MuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGFuZCBpcyB0aGVyZWZvcmUgYSBuby1nbyBmb3Igc3RhbmRhcmQgUUVNVSBlbXVsYXRpb24/XG5cblRoZSBFTjc1ODEgKmlzKiBhIHJvdXRlci9nYXRld2F5IFNvQywgY29uZmlybWluZyB0aGF0IGl0J3MgcHJvYmFibHkgdmVuZG9yLXNwZWNpZmljIHNpbGljb24uIFRoZSBjb2RlJ3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBza2lwcGluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgcmVhbCBQQ0llIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZpdHMgdGhhdCBkZXNjcmlwdGlvbi5cblxuQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIHJldmVhbHMgaXQncyByZWdpc3RlcmVkIGFzIGEgYHBsYXRmb3JtX2RyaXZlcmAuIFRoYXQgbWVhbnMgaXQncyBhbiBJUCBibG9jayAqd2l0aGluKiB0aGUgU29DLCBhbmQgbm90IGEgUENJZSBkZXZpY2UsIHdoaWNoIGNoYW5nZXMgdGhpbmdzIGEgYml0ISBQbGF0Zm9ybSBkcml2ZXJzIGFyZSBvZnRlbiBTb0Mtc3BlY2lmaWMsIHJlbHlpbmcgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIG1lbW9yeS1tYXBwZWQgSS9PIHJlZ2lvbnMuIFRoZSBsaWtlbGlob29kIG9mIHN0YW5kYXJkIFFFTVUgcGVyZmVjdGx5IGVtdWxhdGluZyB0aGUgRU43NTgxJ3MgcGxhdGZvcm0gc3BlY2lmaWNzIGlzIHZhbmlzaGluZ2x5IHNtYWxsLCB1bmxlc3MgdGhlcmUncyBzb21lIG9ic2N1cmUgbWFjaGluZSB0eXBlIGZvciBpdC5cblxuSG93ZXZlciwgU3l6a2FsbGVyICpjYW4qIHNvbWV0aW1lcyBnZXQgYXQgcGxhdGZvcm0gZHJpdmVycy4gSXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcywgdXNlIGBzeXpfbW91bnRfaW1hZ2VgLCBvciBmYWtlIHBsYXRmb3JtIGRldmljZXMuIEJ1dCBoZXJlJ3MgdGhlIGtpY2tlcjogYGFpcm9oYV9ucHVfcHJvYmVgIGRvZXMgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKWAsIHdoaWNoIG1lYW5zIGl0J3MgZGlyZWN0bHkgYWNjZXNzaW5nIGhhcmR3YXJlIHJlZ2lzdGVycyB0aHJvdWdoIE1NSU8uIElmIHRoZSBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCwgdGhhdCdzIGp1c3QgZ29pbmcgdG8gY3Jhc2ggb3IgZmFpbCB0aGUgcHJvYmUuXG5cbk5vdywgd2hpbGUgU3l6a2FsbGVyIGNhbiBzb21ldGltZXMgcG9rZSBhcm91bmQgdmlhIGAvZGV2L2Agbm9kZXMgb3IgcHNldWRvLWRldmljZSBmcmFtZXdvcmtzLCBkaXJlY3QgTU1JTyBvbiBhIHBsYXRmb3JtIGRyaXZlciB3aXRob3V0IGVtdWxhdGlvbiBpcyBhIGRlYWQgZW5kLiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUncyBzb21lIHdheSBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIHRoaXMgZHJpdmVyLCBidXQgaW4gdGhpcyBjYXNlLCBJJ2QgbmVlZCBhbiBlbXVsYXRvciBvZiB0aGUgaGFyZHdhcmUuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSdzIGV4aXN0aW5nIFN5emthbGxlciBzdXBwb3J0IGZvciBBaXJvaGEncyBOUFUuIEkgbmVlZCB0byByZXNlYXJjaCB0aGlzIGJlZm9yZSBJIG1ha2UgYSBmaW5hbCBjYWxsLCBidXQgbXkgZ3V0IHRlbGxzIG1lIGl0J3MgbGlrZWx5IG5vdCBmdXp6YWJsZSB3aXRob3V0IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA3OjA4LjI1NTIzNjg4N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAzMzczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhaXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSArPSBhaXJvaGEtZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo4OmFpcm9oYS1ldGgtJChDT05GSUdfREVCVUdfRlMpICs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9BSVJPSEFfTlBVKSArPSBhaXJvaGFfbnB1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzojaW5jbHVkZSBcXFwiYWlyb2hhX3JlZ3MuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4OiNpbmNsdWRlIFxcXCJhaXJvaGFfZXRoLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOnUzMiBhaXJvaGFfcnIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1OnZvaWQgYWlyb2hhX3dyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI6XFx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcXHUwMDI2IH5tYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMzOlxcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5LVxcdFxcdFxcdFxcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxOlxcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVxcdTAwM2VxZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDItXFx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFxcdTAwMjZxZG1hLVxcdTAwM2VpcnFfYmFua3NbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxLVxcdGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjpcXHRhaXJvaGFfcWRtYV93cihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cXHRcXHQgICAgICAgaXJxX2JhbmstXFx1MDAzZWlycW1hc2tbaW5kZXhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzpcXHRhaXJvaGFfcWRtYV9ycihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjI6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzLVxcdFxcdFxcdFxcdCAgIGludCBpbmRleCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NTpcXHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIDAsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2ODpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVxcdFxcdFxcdFxcdCAgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzE6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCBtYXNrLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzQ6c3RhdGljIGludCBhaXJvaGFfc2V0X21hY2FkZHIoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYsIGNvbnN0IHU4ICphZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzYtXFx0dTggcmVmX2FkZHJbRVRIX0FMRU5dIF9fYWxpZ25lZCgyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc3OlxcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXFx1MDAzZWV0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc4LVxcdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZXRoLVxcdTAwM2Vwb3J0cyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6ODY6XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cXHUwMDNlcG9ydHNbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04Ny1cXHRcXHRpbnQgajtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTItXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cXHUwMDNlZGV2cyk7IGorKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTM6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk0LVxcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAwOlxcdFxcdFxcdGlmIChhaXJvaGFfaXNfbGFuX2dkbV9kZXYoaXRlcl9kZXYpICE9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDE6XFx0XFx0XFx0ICAgIGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTAyLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzQ6XFx0cmVnID0gYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikgPyBSRUdfRkVfTEFOX01BQ19IIDogUkVHX0ZFX1dBTl9NQUNfSDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cXHR2YWwgPSAoYWRkclswXSBcXHUwMDNjXFx1MDAzYyAxNikgfCAoYWRkclsxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IGFkZHJbMl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1JTihyZWcpLCBsbWluKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNQVgocmVnKSwgbG1heCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDE6XFx0YWlyb2hhX3BwZV9pbml0X3VwZF9tZW0oZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQ2OnN0YXRpYyB2b2lkIGFpcm9oYV9zZXRfZ2RtX3BvcnRfZndkX2NmZyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCB1MzIgYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Ny1cXHRcXHRcXHRcXHRcXHR1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX09DRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1MC1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9PQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fTUNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTUyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX01DRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9CQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fQkNGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX1VDRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Ni1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9VQ0ZRX01BU0ssIHZhbCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTk6c3RhdGljIGludCBhaXJvaGFfc2V0X3ZpcF9mb3JfZ2RtX3BvcnQoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYyOlxcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXFx1MDAzZWV0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2My1cXHR1MzIgdmlwX3BvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2Ni1cXHRpZiAoZW5hYmxlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjc6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY4OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2OS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTcwOlxcdFxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTcxOlxcdFxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTcyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc3OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9tYWNjcl9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODEtXFx0Zm9yIChwID0gMTsgcCBcXHUwMDNjPSBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBwKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4MjpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgzLVxcdFxcdFxcdCAgICAgIEdETV9UQ1BfQ0tTVU1fTUFTSyB8IEdETV9VRFBfQ0tTVU1fTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODQtXFx0XFx0XFx0ICAgICAgR0RNX0lQNF9DS1NVTV9NQVNLIHwgR0RNX0RST1BfQ1JDX0VSUl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NTpcXHRcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9MRU5fQ0ZHKHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg2LVxcdFxcdFxcdCAgICAgIEdETV9TSE9SVF9MRU5fTUFTSyB8IEdETV9MT05HX0xFTl9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fVkxBTl9DVFJMKDEpLCBDRE1fVkxBTl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZMQU5fTUFTSywgMHg4MTAwKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTQ6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BBRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk3OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV92aXBfc2V0dXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDMpLCBFVEhfUF9QUFBfRElTQyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDA6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigzKSwgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig0KSwgUFBQX0xDUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDM6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDYpLCBQUFBfSVBDUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOS1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTI6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDcpLCBQUFBfQ0hBUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTM6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig3KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTctXFx0LyogQk9PVFAgKDB4NDMpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDgpLCAweDQzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIwLVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjMtXFx0LyogQk9PVFAgKDB4NDQpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDkpLCAweDQ0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI2LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjktXFx0LyogSVNBS01QICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzA6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEwKSwgMHgxZjQwMWY0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMi1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM1OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMSksIFBQUF9JUFY2Q1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTEpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM3LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0MC1cXHQvKiBESENQdjYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTIpLCAweDIyMjAyMjMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQzLVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDY6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDE5KSwgUFBQX1BBUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxOSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDgtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjUxLVxcdC8qIEVUSC1cXHUwMDNlRVRIX1BfMTkwNSAoMHg4OTNhKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMCksIDB4ODkzYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTM6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTY6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIxKSwgRVRIX1BfTExEUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTgtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2MTpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYyLVxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjQ6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LVxcdFxcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjk6XFx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzAtXFx0XFx0XFx0ICAgICBQU0VfQ0ZHX09RX1JTVl9NQVNLKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjczOnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc0LVxcdFxcdFxcdFxcdFxcdCAgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsIFBTRV9DRkdfT1FfUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzctXFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQ0ZHX09RX1JTVl9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3ODpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXFx0XFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODY6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg4OlxcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5MTpzdGF0aWMgaW50IGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVxcdFxcdFxcdFxcdCAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NDpcXHR1MzIgb3JpZ192YWwgPSBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUtXFx0dTMyIHRtcCwgYWxsX3JzdiwgZnFfbGltaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTc6XFx0YWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTktXFx0LyogbW9kaWZ5IGFsbCByc3YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwMDpcXHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAxLVxcdGFsbF9yc3YgKz0gKHZhbCAtIG9yaWdfdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwMjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA1LVxcdC8qIG1vZGlmeSBodGhkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDY6XFx0ZnFfbGltaXQgPSBhaXJvaGFfZmVfZ2V0KGV0aCwgUFNFX0ZRX0NGRywgUFNFX0ZRX0xJTUlUX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA3LVxcdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MjA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfSFRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTItXFx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgxMDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTQtXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTVRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTYtXFx0dG1wID0gKDMgKiB0bXApIFxcdTAwM2VcXHUwMDNlIDI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTc6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cXHRcXHQgICAgICBQU0VfU0hBUkVfVVNFRF9MVEhEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyNDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0MTpcXHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Mi1cXHRcXHR1MzIgYWxsX3JzdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVxcdFxcdC8qIGh3IG1pc3NlcyBQUEUyIG9xIHJzdiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ1OlxcdFxcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXFx0XFx0YWxsX3JzdiArPSBQU0VfUlNWX1BBR0VTICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ny1cXHRcXHRcXHQgICBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ4OlxcdFxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OS1cXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTMtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1NDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0xLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU3LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTFdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTg6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1OS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2MS1cXHRmb3IgKHEgPSA2OyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0yXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzYyOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTIsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYzLVxcdC8qIEdETTMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2NC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0zXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzY1OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTMsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjYtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjktXFx0XFx0aWYgKHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTFdIC8gMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3MDpcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcxLVxcdFxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Mi1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzM6XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzYtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMl07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NzpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0yLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc4LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgwLVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTNdIC0gMTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzgxOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTMsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgyLVxcdC8qIENETTQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4My1cXHRmb3IgKHEgPSA0OyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE00XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg0OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTQsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODUtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg2OlxcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg3LVxcdFxcdC8qIFBQRTIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg5LVxcdFxcdFxcdGlmIChxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXSAvIDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTA6XFx0XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkzLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5NDpcXHRcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBxLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk5LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTRdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDA6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNNCwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMy1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE01XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA0OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTUsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDUtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDg6c3RhdGljIGludCBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE2OlxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cXHRcXHQgICAgICBNQ19WTEFOX0NGR19UQUJMRV9TRUxfTUFTSyB8IE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjA6XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIxOlxcdFxcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIyLVxcdFxcdFxcdFxcdFxcdHZhbCBcXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyOC1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgQUlST0hBX0ZFX01DX01BWF9WTEFOX1BPUlQ7IGorKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDI5OlxcdFxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzMy1cXHRcXHRcXHQgICAgICBNQ19WTEFOX0NGR19SV19NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM0OlxcdFxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNTpcXHRcXHRcXHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzNi1cXHRcXHRcXHRcXHRcXHRcXHR2YWwgXFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NDg6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUwLVxcdC8qIENETTFfQ1JTTl9RU0VMICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjIgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTItXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU0LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTU6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMDggXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU4LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjEgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYyLVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NjM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjQgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjQtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY2LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Njc6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjUgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDcxLVxcdC8qIENETTJfQ1JTTl9RU0VMICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzI6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMDggXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc1LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjEgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzctXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc5LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODA6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjIgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgzLVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODQ6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjQgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg3LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjUgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODktXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk0OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTY6XFx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5OC1cXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk5OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjEsIFBTRV9JUV9SRVMxX1AyX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDAtXFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfSVFfUkVTMV9QMl9NQVNLLCAweDEwKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMi1cXHRcXHQgICAgICBQU0VfSVFfUkVTMl9QNV9NQVNLIHwgUFNFX0lRX1JFUzJfUDRfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA2LVxcdC8qIGVuYWJsZSBGRSBjb3B5IGVuZ2luZSBmb3IgS0EvRFBJICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1BDRV9DRkcsIFBDRV9EUElfRU5fTUFTSyB8IFBDRV9LQV9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwOC1cXHQvKiBzZXQgdmlwIHF1ZXVlIHNlbGVjdGlvbiB0byByaW5nIDEgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDEpLCBDRE1fVklQX1FTRUxfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMC1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxMTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fVklQX1FTRUxfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMy1cXHQvKiBzZXQgR0RNNCBzb3VyY2UgaW50ZXJmYWNlIG9mZnNldCB0byA4ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTQ6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fU1JDX1BPUlRfU0VUKDQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE1LVxcdFxcdCAgICAgIEdETV9TUE9SVF9PRkYyX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjItXFx0Lyogc2V0IFBTRSBQYWdlIGFzIDEyOEIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyMzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX0RNQV9HTE9fQ0ZHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI0LVxcdFxcdCAgICAgIEZFX0RNQV9HTE9fTDJfU1BBQ0VfTUFTSyB8IEZFX0RNQV9HTE9fUEdfU1pfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI2LVxcdFxcdCAgICAgIEZFX0RNQV9HTE9fUEdfU1pfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mjc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1JTVF9HTE9fQ0ZHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI4LVxcdFxcdCAgICAgRkVfUlNUX0NPUkVfTUFTSyB8IEZFX1JTVF9HRE0zX01CSV9BUkJfTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAwLCBCSVQoNCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDEsIEJJVCgyOCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDIsIEJJVCg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMywgQklUKDI4KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDA6XFx0YWlyb2hhX2ZlX3ZpcF9zZXR1cChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQxOlxcdGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQzOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX01JU0NfQ0ZHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ0LVxcdFxcdCAgICAgIEdETTJfUkRNX0FDS19XQUlUX1BSRUZfTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDUtXFx0XFx0ICAgICAgR0RNMl9DSE5fVkxEX01PREVfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX09BTV9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDctXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fT0FNX1FTRUxfTUFTSywgMTUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUwLVxcdC8qIE5QVSBDb3JlLTMsIE5QVSBCcmlkZ2UgQ2hhbm5lbC0zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUyLVxcdFxcdCAgICAgIElQX0ZSQUdNRU5UX1BPUlRfTUFTSyB8IElQX0ZSQUdNRU5UX05CUV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTUtXFx0LyogUURNQSBMQU4sIFJYIFJpbmctMjIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTctXFx0XFx0ICAgICAgSVBfQVNTRU1CTEVfUE9SVF9NQVNLIHwgSVBfQVNTRU1CTEVfTkJRX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2MTpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksIEdETV9QQURfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjI6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNNF9JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY0LVxcdC8qIEVuYWJsZSBzcGxpdCBmb3IgTUlCIGNvdW50ZXJzIGZvciBHRE0zIGFuZCBHRE00ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNM19JRFgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY2LVxcdFxcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjctXFx0XFx0ICAgICAgRkVfR0RNX1JYX01JQl9TUExJVF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2ODpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE00X0lEWCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXFx0XFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTcyOlxcdGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc0OlxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1FVRVVFX1hGQ19NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NTpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUE9SVF9YRkNfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzctXFx0LyogZGVmYXVsdCBhZ2luZyBtb2RlIGZvciBtYmkgdW5sb2NrIGlzc3VlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Nzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fQ0hOX1JMUygyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OS1cXHRcXHQgICAgICBNQklfUlhfQUdFX1NFTF9NQVNLIHwgTUJJX1RYX0FHRV9TRUxfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgzLVxcdC8qIGRpc2FibGUgSUZDIGJ5IGRlZmF1bHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4NDpcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1NSX0lGQ19DRkcsIEZFX0lGQ19FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4Ni1cXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4NzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX01DX1ZMQU5fRU4sIE1DX1ZMQU5fRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODk6XFx0cmV0dXJuIGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTkyOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5NDpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVxcdTAwM2VxZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTk1LVxcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5OC1cXHR3aGlsZSAocS1cXHUwMDNlcXVldWVkIFxcdTAwM2MgcS1cXHUwMDNlbmRlc2MgLSAxKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTk6XFx0XFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFxcdTAwMjZxLVxcdTAwM2VlbnRyeVtxLVxcdTAwM2VoZWFkXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMDpcXHRcXHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFxcdTAwMjZxLVxcdTAwM2VkZXNjW3EtXFx1MDAzZWhlYWRdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAxLVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzAtXFx0aWYgKG5mcmFtZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MzE6XFx0XFx0YWlyb2hhX3FkbWFfcm13KHFkbWEsIFJFR19SWF9DUFVfSURYKHFpZCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzItXFx0XFx0XFx0XFx0UlhfUklOR19DUFVfSURYX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzODpzdGF0aWMgc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzOTphaXJvaGFfcWRtYV9nZXRfZ2RtX2RldihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCBzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDE6XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0Mi1cXHR1MTYgcCwgZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjYwOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2Mi1cXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cXHUwMDNlcGFnZV9wb29sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MzpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVxcdTAwM2VxZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY0OlxcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBxZG1hLVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjUtXFx0aW50IHFpZCA9IHEgLSBcXHUwMDI2cWRtYS1cXHUwMDNlcV9yeFswXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY4LVxcdHdoaWxlIChkb25lIFxcdTAwM2MgYnVkZ2V0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Njk6XFx0XFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFxcdTAwMjZxLVxcdTAwM2VlbnRyeVtxLVxcdTAwM2V0YWlsXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY3MDpcXHRcXHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFxcdTAwMjZxLVxcdTAwM2VkZXNjW3EtXFx1MDAzZXRhaWxdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjcxLVxcdFxcdHUzMiBoYXNoLCByZWFzb24sIG1zZzEsIGRlc2NfY3RybDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY3MjpcXHRcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3My1cXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2OTU6XFx0XFx0ZGV2ID0gYWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoZXRoLCBkZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5Ni1cXHRcXHRpZiAoSVNfRVJSKGRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyOC1cXHRcXHRpZiAobmV0ZGV2X3VzZXNfZHNhKG5ldGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjcyOTpcXHRcXHRcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NTItXFx0XFx0aWYgKHJlYXNvbiA9PSBQUEVfQ1BVX1JFQVNPTl9ISVRfVU5CSU5EX1JBVEVfUkVBQ0hFRClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc1MzpcXHRcXHRcXHRhaXJvaGFfcHBlX2NoZWNrX3NrYihcXHUwMDI2ZXRoLVxcdTAwM2VwcGUtXFx1MDAzZWRldiwgcS1cXHUwMDNlc2tiLCBoYXNoLFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNzowOC4zMDQyNzYzNDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDY0NDgzNTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgQWlyb2hhIE5QVSBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGFpcm9oYV9ucHVgIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYCBkcml2ZXIuIEkgc2VlIHRoYXQgYGFpcm9oYV9ucHVgIGlzIGluaXRpYWxpemVkIHZpYSBgYWlyb2hhX3BwZV9ucHVfZ2V0KClgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgLiBBbmQsIGBhaXJvaGFfcHBlX29mZmxvYWRfc2V0dXAoKWAgaXRzZWxmIGlzIGNhbGxlZCBieSBmdW5jdGlvbnMgaW4gYGFpcm9oYV9ldGguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIGBhaXJvaGFfZXRoLmNgIGlzIGEgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVyLiBZZXMsIGl0IHNlZW1zIHRvIGJlIGFuIEV0aGVybmV0IGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIEFpcm9oYSBTb0NzLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBzb21lIHNwZWNpYWwtcHVycG9zZSBoYXJkd2FyZSwgbGlrZSBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlciwgYmVjYXVzZSBpZiBzbywgaXQncyBpbW1lZGlhdGVseSBleGNsdWRlZCBmcm9tIGZ1enppbmcuIEJ1dCBubywgaXQncyBqdXN0IGFuIFNvQy1pbnRlZ3JhdGVkIEV0aGVybmV0IGRyaXZlci4gVGhhdCdzIGtleS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgdW5kZXIgc2V2ZXJhbCBjYXRlZ29yaWVzLCBpbmNsdWRpbmcgY29kZSB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJcyBBaXJvaGEgRXRoZXJuZXQgYSBQQ0llIGNhcmQ/IE5vLCBpdCdzIGJ1aWx0IGludG8gdGhlIFNvQy5cblxuQ2FuIFN5emthbGxlciBmdXp6IHRoaXM/IFN5emthbGxlciAqY2FuKiBmdXp6IHBsYXRmb3JtIGRyaXZlcnMgaWYgdGhleSBjYW4gYmUgaW5zdGFudGlhdGVkLiBTb21ldGltZXMgdGhpcyBoYXBwZW5zIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgcHNldWRvLWRldmljZXMuIFRoZSBwcm9tcHQgaXMgY2xlYXIsIHRob3VnaDogSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY29kZSAqY2FuKiBiZSBleGVjdXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0IGlzLCBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIG1lYW4gSSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhlcmUncyB0aGUgcHJvYmxlbTogU29DLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlcnMsIGxpa2UgQWlyb2hhIChhbG9uZyB3aXRoIE1lZGlhVGVrIGFuZCBRdWFsY29tbSBJUFEpLCBhcmUgKm5vdCogdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXkgdXN1YWxseSByZXF1aXJlIHZlcnkgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgd2hpY2ggaXNuJ3QgcHJlc2VudCBpbiBzdGFuZGFyZCBzeXprYWxsZXIgUUVNVSBpbWFnZXMgdGhhdCB1c2UgYHEzNWAgb3IgYHZpcnRgIG1hY2hpbmUgdHlwZXMuXG5cbkkga25vdyBTeXprYWxsZXIgaGFzIGJlZW4gZXZvbHZpbmcsIGFuZCBJJ20gYXdhcmUgdGhhdCBpdCdzIGFkZGVkIHN1cHBvcnQgZm9yIHBsYXRmb3JtIGRyaXZlcnMgdGhyb3VnaCBtZWNoYW5pc21zIGxpa2UgYHN5el9kZXZyZXNgIG9yIHNpbWlsYXIsIGJ1dCB0aGUgY29yZSBpc3N1ZSByZW1haW5zIE1NSU8uIElmIHRoZSBoYXJkd2FyZSBpc24ndCB0aGVyZSwgYW55IGF0dGVtcHQgdG8gcmVhZCBvciB3cml0ZSB0byBNTUlPIGFkZHJlc3NlcyB3aWxsIHJlc3VsdCBpbiBhIGNyYXNoLCBhIHByb2JlIGZhaWx1cmUsIG9yIGp1c3QgZ2FyYmFnZSBkYXRhLiBJIHJlbWVtYmVyIHRoZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgIHBzZXVkby1zeXNjYWxsLCBidXQgdGhhdCBkb2Vzbid0IGV4aXN0LiBTeXprYWxsZXIgdXNlcyBgc3l6X21vdW50X2ltYWdlYCBhbmQgY3JhZnRlZCBmaWxlc3lzdGVtcyB0byBsb2FkIHRoaW5ncywgbWF5YmUgaW5jbHVkaW5nIGRldmljZSB0cmVlIG92ZXJsYXlzLiBUaGUgbGF0ZXN0IGFkZGl0aW9ucyB0byBmdXp6aW5nIHBsYXRmb3JtIGRyaXZlcnMgZGVwZW5kIG9uIHdoYXQgdGhvc2Ugb3ZlcmxheXMgZG8uXG5cbklmIGEgRFQgb3ZlcmxheSBpcyB1c2VkIHRvIHJlZ2lzdGVyIHRoaXMgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKWAuIFRoZSBvdmVybGF5IHdpbGwgc3BlY2lmeSBzb21lIHBoeXNpY2FsIGFkZHJlc3MuIElmIHRoYXQgYWRkcmVzcyBpcyBub3QgYmFja2VkIGJ5IFJBTSBvciBhIHJlYWwgTU1JTyBkZXZpY2UgaW4gUUVNVSwgYGlvcmVtYXBgICptaWdodCogc3VjY2VlZCwgYnV0IGFjdHVhbGx5IHJlYWRpbmcgb3Igd3JpdGluZyB0byBpdCB3aWxsIGNhdXNlIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgb3IgcGFnZSBmYXVsdCBpZiB0aGUgYWRkcmVzcyBpcyBub3QgbWFwcGVkLiBPciwgSSBtaWdodCBqdXN0IGdldCBhbGwgMHhGRnMsIHdoaWNoIHdpbGwgbGlrZWx5IGNhdXNlIGEgcHJvYmUgZmFpbHVyZS5cblxuTGV0J3MgbG9vayBjbG9zZWx5IGF0IGBhaXJvaGFfbnB1X3Byb2JlYDogaXQgY2FsbHMgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZSgpYCB0byBtYXAgdGhlIE1NSU8gcmVnaW9uLiBUaGVuIGl0IHVzZXMgYGRldm1fcmVnbWFwX2luaXRfbW1pb2AgdG8gaW5pdGlhbGl6ZSBhIGByZWdtYXBgLiBDcnVjaWFsbHksIGl0IHRoZW4gY2FsbHMgYGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKClgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZSgpYC4gVGhpcyBmdW5jdGlvbiByZXF1ZXN0cyBmaXJtd2FyZSwgYW5kIGlmIHRoYXQgZmlybXdhcmUgaXNuJ3QgZm91bmQsIGl0IGZhaWxzLiBJZiB0aGUgcHJvYmUgZmFpbHMsIGV2ZXJ5dGhpbmcgYWZ0ZXIgaXQsIGxpa2UgYGFpcm9oYV9ucHVfc2VuZF9tc2dgLCBpcyBuZXZlciByZWFjaGVkLlxuXG5UaGUgcmVhY2hhYmlsaXR5IG9mIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCBkZXBlbmRzIG9uIHN1Y2Nlc3NmdWxseSBwcm9iaW5nIHRoZSBkcml2ZXIuIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCBpcyBjYWxsZWQgYnkgYGFpcm9oYV9ucHVfcHBlX2luaXRgLCBgYWlyb2hhX25wdV93bGFuX21zZ19zZW5kYCwgZXRjLiwgd2hpY2ggYXJlIHJlYWNoZWQgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyB2aWEgYG5wdS1cdTAwM2VvcHMucHBlX2luaXRgIGV0Yy4gVGhpcyBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgIGluIGBhaXJvaGFfcHBlLmNgLCB3aGljaCBpcyB1bHRpbWF0ZWx5IGNhbGxlZCBmcm9tIGBhaXJvaGFfZXRoX3Byb2JlYC4gVGhlcmVmb3JlLCBpdCByZXF1aXJlcyB0aGUgYGFpcm9oYV9ldGhgIGRyaXZlciB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIGBhaXJvaGFfZXRoYCBpcyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyLiBJZiB0aGVyZSBpcyBubyBBaXJvaGEgaGFyZHdhcmUsIHRoaXMgcHJvYmUgd2lsbCBmYWlsLlxuXG5JIGhhdmUgdG8gY29uc2lkZXIgdGhlIGZhY3RcblxuIiwiSW5wdXRUb2tlbnMiOjMyNTI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNzoyOC45NDkxMTU1MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ3ODQzNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNjg5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0FJUk9IQSkgKz0gYWlyb2hhLWV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjc6YWlyb2hhLWV0aC15IDo9IGFpcm9oYV9ldGgubyBhaXJvaGFfcHBlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhaXJvaGFfcHBlX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgKz0gYWlyb2hhX25wdS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc6I2luY2x1ZGUgXFxcImFpcm9oYV9yZWdzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODojaW5jbHVkZSBcXFwiYWlyb2hhX2V0aC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA6dTMyIGFpcm9oYV9ybXcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlxcdHZhbCB8PSAoYWlyb2hhX3JyKGJhc2UsIG9mZnNldCkgXFx1MDAyNiB+bWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcXHRhaXJvaGFfd3IoYmFzZSwgb2Zmc2V0LCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgY2xlYXIsIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBpcnFfYmFuay1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVxcdGludCBiYW5rID0gaXJxX2JhbmsgLSBcXHUwMDI2cWRtYS1cXHUwMDNlaXJxX2JhbmtzWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MS1cXHRpcnFfYmFuay1cXHUwMDNlaXJxbWFza1tpbmRleF0gfD0gc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI6XFx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMtXFx0XFx0ICAgICAgIGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc6XFx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYyOnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cXHRcXHRcXHRcXHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjU6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjcxOlxcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc0OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc2LVxcdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cXHR1MzIgcmVnLCB2YWwsIGxtaW4sIGxtYXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg2OlxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBldGgtXFx1MDAzZXBvcnRzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXFx0XFx0aW50IGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTkyLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXFx1MDAzZWRldnMpOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjkzOlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqaXRlcl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05NC1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMDpcXHRcXHRcXHRpZiAoYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGl0ZXJfZGV2KSAhPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlxcdFxcdFxcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwMi1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM0OlxcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzUtXFx0dmFsID0gKGFkZHJbMF0gXFx1MDAzY1xcdTAwM2MgMTYpIHwgKGFkZHJbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBhZGRyWzJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM2OlxcdGFpcm9oYV9mZV93cihldGgsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNSU4ocmVnKSwgbG1pbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUFYKHJlZyksIGxtYXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlxcdGFpcm9oYV9wcGVfaW5pdF91cGRfbWVtKGRldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0NjpzdGF0aWMgdm9pZCBhaXJvaGFfc2V0X2dkbV9wb3J0X2Z3ZF9jZmcoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXFx0XFx0XFx0XFx0XFx0dTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9PQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fT0NGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX01DRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9NQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU0LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9VQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fVUNGUV9NQVNLLCB2YWwpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU5OnN0YXRpYyBpbnQgYWlyb2hhX3NldF92aXBfZm9yX2dkbV9wb3J0KHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjE6XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MjpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjMtXFx0dTMyIHZpcF9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjYtXFx0aWYgKGVuYWJsZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MDpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MTpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVxcdGZvciAocCA9IDE7IHAgXFx1MDAzYz0gQVJSQVlfU0laRShldGgtXFx1MDAzZXBvcnRzKTsgcCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODI6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cXHRcXHRcXHQgICAgICBHRE1fVENQX0NLU1VNX01BU0sgfCBHRE1fVURQX0NLU1VNX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVxcdFxcdFxcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODU6XFx0XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cXHRcXHRcXHQgICAgICBHRE1fU0hPUlRfTEVOX01BU0sgfCBHRE1fTE9OR19MRU5fTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTkxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX1ZMQU5fQ1RSTCgxKSwgQ0RNX1ZMQU5fTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WTEFOX01BU0ssIDB4ODEwMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk0OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QQUQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfdmlwX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk5OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigzKSwgRVRIX1BfUFBQX0RJU0MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMyksIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNCksIFBQUF9MQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig2KSwgUFBQX0lQQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDktXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig3KSwgUFBQX0NIQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE3LVxcdC8qIEJPT1RQICgweDQzKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjE4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig4KSwgMHg0Myk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig4KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyMC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVxcdC8qIEJPT1RQICgweDQ0KSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI0OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig5KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI5LVxcdC8qIElTQUtNUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMCksIDB4MWY0MDFmNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzItXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTEpLCBQUFBfSVBWNkNQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNy1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDAtXFx0LyogREhDUHY2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEyKSwgMHgyMjIwMjIzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0My1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxOSksIFBQUF9QQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cXHQvKiBFVEgtXFx1MDAzZUVUSF9QXzE5MDUgKDB4ODkzYSkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjApLCAweDg5M2EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU0LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjEpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjE6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cXHRcXHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY5OlxcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcwLVxcdFxcdFxcdCAgICAgUFNFX0NGR19PUV9SU1ZfTUFTSyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3MzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NC1cXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLCBQU0VfQ0ZHX09RX1JTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0NGR19PUV9SU1ZfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc5LVxcdFxcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpcXHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Mi1cXHRcXHRcXHRcXHQgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTQ6XFx0dTMyIG9yaWdfdmFsID0gYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVxcdHUzMiB0bXAsIGFsbF9yc3YsIGZxX2xpbWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3OlxcdGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVxcdC8qIG1vZGlmeSBhbGwgcnN2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDA6XFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cXHRhbGxfcnN2ICs9ICh2YWwgLSBvcmlnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDI6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAzLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cXHQvKiBtb2RpZnkgaHRoZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA2OlxcdGZxX2xpbWl0ID0gYWlyb2hhX2ZlX2dldChldGgsIFBTRV9GUV9DRkcsIFBTRV9GUV9MSU1JVF9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDIwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA5LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyLVxcdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX01USERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE2LVxcdHRtcCA9ICgzICogdG1wKSBcXHUwMDNlXFx1MDAzZSAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTgtXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDE6XFx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXFx0XFx0dTMyIGFsbF9yc3Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0NC1cXHRcXHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0NTpcXHRcXHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ2LVxcdFxcdGFsbF9yc3YgKz0gUFNFX1JTVl9QQUdFUyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXFx0XFx0XFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0ODpcXHRcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDktXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTFdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTQ6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0xXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjEtXFx0Zm9yIChxID0gNjsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MjpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0yLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2My1cXHQvKiBHRE0zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjQtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2NTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0zLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVxcdFxcdGlmIChxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzA6XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cXHRcXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc2LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzc6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMiwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0zXSAtIDE7IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4MTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Mi1cXHQvKiBDRE00ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXFx0Zm9yIChxID0gNDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNF07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NjpcXHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cXHRcXHQvKiBQUEUyICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4OS1cXHRcXHRcXHRpZiAocSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl0gLyAyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlxcdFxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cXHRcXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XFx0XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5OS1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE00XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTQsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDMtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwNDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE01LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA4OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNjpcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTktXFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIwOlxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMTpcXHRcXHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyMi1cXHRcXHRcXHRcXHRcXHR2YWwgXFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyOTpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzMtXFx0XFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfUldfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzU6XFx0XFx0XFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzYtXFx0XFx0XFx0XFx0XFx0XFx0dmFsIFxcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MC1cXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU1OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYwLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDYzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MS1cXHQvKiBDRE0yX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDczLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDc2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDgwOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg1LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5NDpzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2OlxcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXFx0LyogUFNFIElRIHJlc2VydmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXFx0XFx0ICAgICAgUFNFX0lRX1JFUzJfUDVfTUFTSyB8IFBTRV9JUV9SRVMyX1A0X01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwNi1cXHQvKiBlbmFibGUgRkUgY29weSBlbmdpbmUgZm9yIEtBL0RQSSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9QQ0VfQ0ZHLCBQQ0VfRFBJX0VOX01BU0sgfCBQQ0VfS0FfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXFx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygxKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTItXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTMtXFx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTE0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX1NSQ19QT1JUX1NFVCg0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cXHRcXHQgICAgICBHRE1fU1BPUlRfT0ZGMl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTIyLVxcdC8qIHNldCBQU0UgUGFnZSBhcyAxMjhCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9ETUFfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cXHRcXHQgICAgICBGRV9ETUFfR0xPX0wyX1NQQUNFX01BU0sgfCBGRV9ETUFfR0xPX1BHX1NaX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cXHRcXHQgICAgICBGRV9ETUFfR0xPX1BHX1NaX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9SU1RfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyOC1cXHRcXHQgICAgIEZFX1JTVF9DT1JFX01BU0sgfCBGRV9SU1RfR0RNM19NQklfQVJCX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAxLCBCSVQoMjgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAyLCBCSVQoNCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQwOlxcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MTpcXHRhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9NSVNDX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cXHRcXHQgICAgICBHRE0yX1JETV9BQ0tfV0FJVF9QUkVGX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVxcdFxcdCAgICAgIEdETTJfQ0hOX1ZMRF9NT0RFX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9PQU1fUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX09BTV9RU0VMX01BU0ssIDE1KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cXHQvKiBOUFUgQ29yZS0zLCBOUFUgQnJpZGdlIENoYW5uZWwtMyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1Mi1cXHRcXHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU1LVxcdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVxcdFxcdCAgICAgIElQX0FTU0VNQkxFX1BPUlRfTUFTSyB8IElQX0FTU0VNQkxFX05CUV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjE6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYyOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTRfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2NC1cXHQvKiBFbmFibGUgc3BsaXQgZm9yIE1JQiBjb3VudGVycyBmb3IgR0RNMyBhbmQgR0RNNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTNfSURYKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cXHRcXHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY3LVxcdFxcdCAgICAgIEZFX0dETV9SWF9NSUJfU1BMSVRfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Njg6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY5LVxcdFxcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcXHRhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9RVUVVRV9YRkNfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc3LVxcdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0NITl9STFMoMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXFx0XFx0ICAgICAgTUJJX1JYX0FHRV9TRUxfTUFTSyB8IE1CSV9UWF9BR0VfU0VMX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4My1cXHQvKiBkaXNhYmxlIElGQyBieSBkZWZhdWx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NTUl9JRkNfQ0ZHLCBGRV9JRkNfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXFx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODc6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5OlxcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS1cXHRpbnQgcWlkID0gcSAtIFxcdTAwMjZxZG1hLVxcdTAwM2VxX3J4WzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTgtXFx0d2hpbGUgKHEtXFx1MDAzZXF1ZXVlZCBcXHUwMDNjIHEtXFx1MDAzZW5kZXNjIC0gMSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNlaGVhZF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2VoZWFkXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMwLVxcdGlmIChuZnJhbWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlxcdFxcdGFpcm9oYV9xZG1hX3JtdyhxZG1hLCBSRUdfUlhfQ1BVX0lEWChxaWQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVxcdFxcdFxcdFxcdFJYX1JJTkdfQ1BVX0lEWF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzg6c3RhdGljIHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzk6YWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQxOlxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXFx0dTE2IHAsIGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MDpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXFx0ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gcGFnZV9wb29sX2dldF9kbWFfZGlyKHEtXFx1MDAzZXBhZ2VfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcWRtYS1cXHUwMDNlZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVxcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2OC1cXHR3aGlsZSAoZG9uZSBcXHUwMDNjIGJ1ZGdldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNldGFpbF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2V0YWlsXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3MS1cXHRcXHR1MzIgaGFzaCwgcmVhc29uLCBtc2cxLCBkZXNjX2N0cmw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njk1OlxcdFxcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTYtXFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MjgtXFx0XFx0aWYgKG5ldGRldl91c2VzX2RzYShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3Mjk6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVxcdFxcdGlmIChyZWFzb24gPT0gUFBFX0NQVV9SRUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XFx0XFx0XFx0YWlyb2hhX3BwZV9jaGVja19za2IoXFx1MDAyNmV0aC1cXHUwMDNlcHBlLVxcdTAwM2VkZXYsIHEtXFx1MDAzZXNrYiwgaGFzaCxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MDc6MjkuMDEzOTA3NTMxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU4NjAwMzE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdvcnRoRnV6emluZyBDcml0ZXJpYSoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSd2ZSBzcG90dGVkIGBhaXJvaGFfZXRoLmNgLCBgYWlyb2hhX3BwZS5jYCwgYW5kIGBhaXJvaGFfbnB1LmNgIGluIHRoZSBwYXRjaC4gTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhpcyBhZ2FpbnN0IHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjb2RlIHBhdGhzIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzOiBJcyBgYWlyb2hhX25wdS5jYCByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gQ29uc2lkZXJpbmcgbXkgdW5kZXJzdGFuZGluZywgbm8sIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIgdGFpbG9yZWQgZm9yIGEgcGFydGljdWxhciBTeXN0ZW0tb24tYS1DaGlwIChTb0MpLiBUaGlzIGRyaXZlciBuZWNlc3NpdGF0ZXMgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgYXQgbGVhc3QgaXRzIGFjY3VyYXRlIGVtdWxhdGlvbiwgd2hpY2gsIEknbSBwcmV0dHkgc3VyZSwgUUVNVSBkb2Vzbid0IG9mZmVyIGZvciB0aGlzIHNwZWNpZmljIFNvQy5cblxuSSByZWNhbGwgU3l6a2FsbGVyIGhhcyBtZWNoYW5pc21zIGZvciBldmFsdWF0aW5nIHBhdGNoZXMgZXZlbiBpZiB0aGV5IGNhbid0IGJlIGZ1bGx5IGZ1enplZC4gSXQnbGwgYXR0ZW1wdCB0byBhcHBseSB0aGUgcGF0Y2gsIGNoZWNrIGNvbXBpbGF0aW9uLCBvciB0cnkgYSBmdXp6aW5nIHJ1biB0byBkZXRlcm1pbmUgaWYgaXQgY2FuIGZpbmQgYW55dGhpbmcuIEJ1dCB0aGF0J3Mgbm90IHRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZS5cblxuVGhlIHByb21wdCBpcyBjcnlzdGFsIGNsZWFyOiBpZiBpdCBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSByZWFjaGFibGUsIGl0J3Mgd29ydGggZnV6emluZy4gSWYgaXQncyBpbmFjY2Vzc2libGUsIHRoZW4gaXQncyBub3QuIEdpdmVuIG15IGFzc2Vzc21lbnQgdGhhdCBgYWlyb2hhX25wdS5jYCAqaXMqIGluYWNjZXNzaWJsZSBpbiBRRU1VIGJlY2F1c2UgaXQncyBoYXJkd2FyZS1zcGVjaWZpYywgaXQgbG9va3MgbGlrZSBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IGRldGVybWluYXRpb24uXG5cbkhvd2V2ZXIsIEkgc2hvdWxkIGRvdWJsZS1jaGVjay4gSSdsbCBzZWFyY2ggdGhlIGB0b29scy9gIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2AgZGlyZWN0b3JpZXMgZm9yIGFueSBtb2NrIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBzdXBwb3J0IGZvciBBaXJvaGEgaGFyZHdhcmUuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gYXZvaWQgbWFraW5nIGFueSBhc3N1bXB0aW9ucy4gSWYgSSBmaW5kIHNvbWV0aGluZywgbXkgYXNzZXNzbWVudCBtaWdodCBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNjE4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA3OjM2LjU5OTkxMzU0NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMTE3NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MDc6MzYuNjYyOTQxNDA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0Njc2MDkxMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgbm8gbW9ja3VwcyBhcmUgbmVlZGVkLiBJJ20gZm9jdXNpbmcgb24gcmVhY2hhYmlsaXR5IGluIGEgZnV6emluZyBjb250ZXh0LCBhbmQgdGhhdCBtZWFucyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFyZSB0aGUga2V5IGNvbnNpZGVyYXRpb24uICBJcyBgQ09ORklHX05FVF9BSVJPSEFfTlBVYCBldmVuIGVuYWJsZWQgaW4gc3l6a2FsbGVyPyAgRXZlbiBpZiBpdCAqaXMqLCB0aGlzIGRyaXZlciwgYSBgcGxhdGZvcm1fZHJpdmVyYCwgaXMgZ29pbmcgdG8gbmVlZCBhIGNvcnJlc3BvbmRpbmcgYHBsYXRmb3JtX2RldmljZWAgdG8gdHJpZ2dlciB0aGUgYHByb2JlYCBmdW5jdGlvbi4gIFN5emthbGxlciBtaWdodCAqdHJ5KiB0byBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdXNpbmcgYHN5el9kZXZyZXNgIG9yIHNpbWlsYXIsIGJ1dCBldmVuIHRoZW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gdHJ5IHRvIGBpb3JlbWFwYCB0aGUgcGh5c2ljYWwgYWRkcmVzcy4gQW5kIGlmIHRoYXQgaGFyZHdhcmUgaXNuJ3QgKmFjdHVhbGx5KiB0aGVyZSwgdGhhdCdzIGp1c3QgZ29pbmcgdG8gY3Jhc2ggb3IgZmFpbC5cblxuSG9sZCBvbiwgSSB0aG91Z2h0IG1heWJlIHN5emthbGxlciBoYXMgc29tZSBraW5kIG9mIHBzZXVkby1zeXNjYWxsIGxpa2UgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYD8gTm8sIHRoYXQgZG9lc24ndCBleGlzdC4gTm93LCB3aGF0IGlmIGl0IHdhcyBhIFBDSSBkcml2ZXI/IE5vLCBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyB0aGF0J3MgaXJyZWxldmFudC5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IGBhaXJvaGFfbnB1LmNgLlxuXG5gYGBjXG5zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XG5cdHsgLmNvbXBhdGlibGUgPSBcImFpcm9oYSxlbjc1ODEtbnB1XCIsIC5kYXRhID0gXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxuXHR7IC5jb21wYXRpYmxlID0gXCJhaXJvaGEsYW43NTgzLW5wdVwiLCAuZGF0YSA9IFx1MDAyNmFuNzU4M19ucHVfc29jX2RhdGEgfSxcblx0eyAvKiBzZW50aW5lbCAqLyB9XG59O1xuTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX25wdV9tYXRjaCk7XG5cbnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xuXHQucHJvYmUgPSBhaXJvaGFfbnB1X3Byb2JlLFxuXHQucmVtb3ZlID0gYWlyb2hhX25wdV9yZW1vdmUsXG5cdC5kcml2ZXIgPSB7XG5cdFx0Lm5hbWUgPSBcImFpcm9oYS1ucHVcIixcblx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9haXJvaGFfbnB1X21hdGNoLFxuXHR9LFxufTtcbm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xuYGBgXG5cbk9rYXksIGl0J3MgYSBzdGFuZGFyZCBEZXZpY2UgVHJlZSBiYXNlZCBwbGF0Zm9ybSBkcml2ZXIuIEluIFFFTVUsIHRoZSBkZXZpY2UgdHJlZSBpcyBwcm92aWRlZCBieSB0aGUgbWFjaGluZSB0eXBlLCBlLmcuLCAndmlydCcuIEFuZCB0aGUgJ3ZpcnQnIG1hY2hpbmUgdHlwZSAqKmRvZXNuJ3QqKiBpbmNsdWRlIHNvbWV0aGluZyBsaWtlIFwiYWlyb2hhLGVuNzU4MS1ucHVcIi4gQm9vbS4gIFRoZSBkZXZpY2Ugd29uJ3QgYmUgaW5zdGFudGlhdGVkLCBhbmQgYHByb2JlYCB3b24ndCBiZSBjYWxsZWQuICBJdCdzIGp1c3Qgbm90IGdvaW5nIHRvIGhhcHBlbiBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbkNvdWxkIHN5emthbGxlciB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IEV2ZW4gaWYgaXQgZGlkLCB0aGF0IGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VgIGNhbGwgd2lsbCBtYXAgYSBwaHlzaWNhbCBhZGRyZXNzLiAgUUVNVSBpc24ndCBlbXVsYXRpbmcgQWlyb2hhIE5QVSByZWdpc3RlcnMgYXQgdGhhdCBhZGRyZXNzLiAgUmVhZGluZyBmcm9tIHRoYXQgYWRkcmVzcyB3aWxsIHByb2JhYmx5IGNhdXNlIGEgYnVzIGVycm9yLCBvciByZXR1cm4gZ2FyYmFnZS4gRWl0aGVyIHdheSwgaXQncyBhIGRlYWQgZW5kLlxuXG5TcGVjaWZpY2FsbHkgaW4gYGFpcm9oYV9ucHVfcHJvYmVgOlxuXG5gYGBjXG5cdGVyciA9IGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKGRldiwgYmFzZSwgXHUwMDI2cmVzKTtcbmBgYFxuXG5JbnNpZGUgYGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlYDpcblxuYGBgY1xuXHQvKiBMb2FkIHJ2MzIgbnB1IGZpcm13YXJlICovXG5cdHJldCA9IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGFkZHIsIHNvYy1cdTAwM2Vmd19ydjMyLm5hbWUsXG5cdFx0XHRcdCAgICAgICBzb2MtXHUwMDNlZndfcnYzMi5tYXhfc2l6ZSk7XG5gYGBcblxuSWYgdGhlIGZpcm13YXJlIGlzbid0IGluIHRoZSByb290ZnMsIGl0J3MgZ29pbmcgdG8gZmFpbCAqdGhlcmUqLCBidXQgZXZlbiBpZiBpdCdzIHRoZXJlIGl0IGlzIHdyaXRpbmcgcmVnaXN0ZXJzIGFuZCB3YWl0aW5nOlxuXG5gYGBjXG5cdGlmICghYWlyb2hhX25wdV93bGFuX21zZ19nZXQobnB1LCAwLCBXTEFOX0ZVTkNfR0VUX1dBSVRfTlBVX1ZFUlNJT04sXG5cdFx0XHRcdCAgICAgXHUwMDI2dmFsLCBzaXplb2YodmFsKSwgR0ZQX0tFUk5FTCkpXG5cdFx0ZGV2X2luZm8oZGV2LCBcIk5QVSB2ZXJzaW9uOiAlZFxcblwiLCB2YWwpO1xuYGBgXG5cbmBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldGAgdGhlbiBjYWxscyBgX19haXJvaGFfbnB1X3NlbmRfbXNnYCwgd2hlcmUgd2Ugc2VlOlxuXG5gYGBjXG5cdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDApICsgb2Zmc2V0LCBkbWFfYWRkcik7XG5cdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDEpICsgb2Zmc2V0LCBsZW4pO1xuXHRyZWdtYXBfcmVhZChucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDIpICsgb2Zmc2V0LCBcdTAwMjZ2YWwpO1xuXHRyZWdtYXBfXG5cbiIsIklucHV0VG9rZW5zIjo1MjQyOSwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MDg6MDEuMzM5MDM1ODExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgTlBVIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgZHJpdmVyIGZvciBBaXJvaGEgRU43NTgxL0FONzU4MyByb3V0ZXJzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowODowMS4zMzkwNjg5NzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowch7hj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 11:21:14 +0000 UTC FinishedAt: 2026-08-14 12:08:02 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ODFjYjhmYWZmZDUxZTlmZWI5MTZmMGNhMjY2M2ZkY2ExMWQ3OTI0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTI6MDY6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNcbmluZGV4IGI2NzliZWQ5NTJkZTMuLjJiYTc4YmYwZTk3YjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5AQCAtNSw2ICYjNDM7NSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZmlybXdhcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbmV0LmhcdTAwM2VcbkBAIC0yMyw2ICYjNDM7MjQsOCBAQFxuICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFXHQweDIwMDAwMFxuICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9EQVRBX01BWF9TSVpFXHQweDEwMDAwXG4gI2RlZmluZSBOUFVfRFVNUF9TSVpFXHRcdFx0XHQ1MTJcbiYjNDM7LyogTWF4aW11bSBtYWlsYm94IERNQSBwYXlsb2FkIChQUEUgfjI4IGJ5dGVzLCBXTEFOIFRMViB1cCB0byAyNCkuICovXG4mIzQzOyNkZWZpbmUgQUlST0hBX05QVV9NQk9YX1NJWkVcdFx0XHQyNTZcbiBcbiAjZGVmaW5lIFJFR19OUFVfTE9DQUxfU1JBTVx0XHQweDBcbiBcbkBAIC0xNjAsMjMgJiM0MzsxNjMsMzMgQEAgc3RydWN0IHdsYW5fbWJveF9kYXRhIHtcbiBcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XG4gfTtcbiBcbi1zdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXG4tXHRcdFx0ICAgICAgIHZvaWQgKnAsIGludCBzaXplKVxuJiM0MztzdGF0aWMgaW50IF9fYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiYjNDM7XHRcdFx0XHQgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbiwgdm9pZCAqcmVwbHksXG4mIzQzO1x0XHRcdFx0IHUxNiByZXBseV9sZW4pXG4ge1xuLVx0dTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqL1xuLVx0dTMyIHZhbCwgb2Zmc2V0ID0gY29yZSBcdTAwM2NcdTAwM2MgNDtcbiYjNDM7XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzWzBdOyAvKiBGSVhNRTogY29yZSAqL1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgbWFwX2xlbiA9IEFMSUdOKGxlbiwgU01QX0NBQ0hFX0JZVEVTKTtcbiYjNDM7XHR1MzIgdmFsLCBvZmZzZXQgPSAwO1xuIFx0aW50IHJldDtcbiBcbi1cdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuJiM0MztcdGlmIChsZW4gXHUwMDNjPSAwIHx8IGxlbiBcdTAwM2UgQUlST0hBX05QVV9NQk9YX1NJWkUpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0aWYgKHJlcGx5IFx1MDAyNlx1MDAyNiByZXBseV9sZW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0bWVtY3B5KGNvcmUtXHUwMDNlYnVmLCBkYXRhLCBsZW4pO1xuJiM0MztcbiYjNDM7XHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIGNvcmUtXHUwMDNlYnVmLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XG4gXHRyZXQgPSBkbWFfbWFwcGluZ19lcnJvcihucHUtXHUwMDNlZGV2LCBkbWFfYWRkcik7XG4gXHRpZiAocmV0KVxuLVx0XHRyZXR1cm4gcmV0O1xuLVxuLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcbiYjNDM7XHRcdGdvdG8gdW5sb2NrO1xuIFxuIFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMCkgJiM0Mzsgb2Zmc2V0LCBkbWFfYWRkcik7XG4tXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSAmIzQzOyBvZmZzZXQsIHNpemUpO1xuJiM0MztcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDEpICYjNDM7IG9mZnNldCwgbGVuKTtcbiBcdHJlZ21hcF9yZWFkKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCBcdTAwMjZ2YWwpO1xuIFx0cmVnbWFwX3dyaXRlKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCB2YWwgJiM0MzsgMSk7XG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1CT1hfTVNHX0ZVTkNfSUQsIGZ1bmNfaWQpIHwgTUJPWF9NU0dfV0FJVF9SU1A7XG5AQCAtMTg5LDEzICYjNDM7MjAyLDIzIEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiBcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBGSUVMRF9HRVQoTUJPWF9NU0dfU1RBVFVTLCB2YWwpICE9IE5QVV9NQk9YX1NVQ0NFU1MpXG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXG4tXHRzcGluX3VubG9ja19iaChcdTAwMjZucHUtXHUwMDNlY29yZXNbY29yZV0ubG9jayk7XG4mIzQzO1x0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgbWFwX2xlbiwgRE1BX0JJRElSRUNUSU9OQUwpO1xuIFxuLVx0ZG1hX3VubWFwX3NpbmdsZShucHUtXHUwMDNlZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xuJiM0MztcdC8qIENvcHkgdGhlIHRyYWlsaW5nIHJlcGx5X2xlbiBieXRlcyBvZiB0aGUgcmVzcG9uc2UuICovXG4mIzQzO1x0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IHJlcGx5KVxuJiM0MztcdFx0bWVtY3B5KHJlcGx5LCBjb3JlLVx1MDAzZWJ1ZiAmIzQzOyBsZW4gLSByZXBseV9sZW4sIHJlcGx5X2xlbik7XG4mIzQzO3VubG9jazpcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZjb3JlLVx1MDAzZWxvY2spO1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbiYjNDM7XHRcdFx0ICAgICAgIHZvaWQgKmRhdGEsIGludCBsZW4pXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICphZGRyLFxuIFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGludCBmd19tYXhfc2l6ZSlcbiB7XG5AQCAtNDk3LDkgJiM0Mzs1MjAsOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuIFx0d2xhbl9kYXRhLVx1MDAzZWZ1bmNfdHlwZSA9IE5QVV9PUF9HRVQ7XG4gXHR3bGFuX2RhdGEtXHUwMDNlZnVuY19pZCA9IGZ1bmNfaWQ7XG4gXG4tXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pO1xuLVx0aWYgKCFlcnIpXG4tXHRcdG1lbWNweShkYXRhLCB3bGFuX2RhdGEtXHUwMDNlZCwgZGF0YV9sZW4pO1xuJiM0MztcdGVyciA9IF9fYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuLFxuJiM0MztcdFx0XHRcdCAgICBkYXRhLCBkYXRhX2xlbik7XG4gXHRrZnJlZSh3bGFuX2RhdGEpO1xuIFxuIFx0cmV0dXJuIGVycjtcbkBAIC03NzAsNiAmIzQzOzc5MiwxOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tpXTtcbiYjNDM7XHRcdHZvaWQgKnJhdztcbiYjNDM7XG4mIzQzO1x0XHRyYXcgPSBkZXZtX2ttYWxsb2MoZGV2LCBBSVJPSEFfTlBVX01CT1hfU0laRSAmIzQzOyBTTVBfQ0FDSEVfQllURVMsXG4mIzQzO1x0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0XHRpZiAoIXJhdylcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0Y29yZS1cdTAwM2VidWYgPSBQVFJfQUxJR04ocmF3LCBTTVBfQ0FDSEVfQllURVMpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFx1MDAyNnJlcyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCYjMzQ7ZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcbmluZGV4IDc1ODlmY2NmZWVmNmQuLmY2MzU3NjZlM2RiYTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NvYy9haXJvaGEvYWlyb2hhX29mZmxvYWQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcbkBAIC0xNzMsNiAmIzQzOzE3Myw3IEBAIHN0cnVjdCBhaXJvaGFfbnB1IHtcbiBcdFx0LyogcHJvdGVjdCBjb25jdXJyZW50IG5wdSBtZW1vcnkgYWNjZXNzZXMgKi9cbiBcdFx0c3BpbmxvY2tfdCBsb2NrO1xuIFx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd2R0X3dvcms7XG4mIzQzO1x0XHR2b2lkICpidWY7IC8qIG1haWxib3ggRE1BIGJvdW5jZSBidWZmZXIgKi9cbiBcdH0gY29yZXNbTlBVX05VTV9DT1JFU107XG4gXG4gXHRpbnQgaXJxc1tOUFVfTlVNX0lSUV07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgTlBVIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgZHJpdmVyIGZvciBBaXJvaGEgRU43NTgxL0FONzU4MyByb3V0ZXJzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDgxY2I4ZmFmZmQ1MWU5ZmViOTE2ZjBjYTI2NjNmZGNhMTFkNzkyNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDEyOjA2OjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMKaW5kZXggYjY3OWJlZDk1MmRlMy4uMmJhNzhiZjBlOTdiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jCkBAIC01LDYgJiM0Mzs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAmbHQ7bGludXgvZGV2Y29yZWR1bXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZG1hLW1hcHBpbmcuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9maXJtd2FyZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L29mX25ldC5oJmd0OwpAQCAtMjMsNiAmIzQzOzI0LDggQEAKICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFCTB4MjAwMDAwCiAjZGVmaW5lIE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRQkweDEwMDAwCiAjZGVmaW5lIE5QVV9EVU1QX1NJWkUJCQkJNTEyCiYjNDM7LyogTWF4aW11bSBtYWlsYm94IERNQSBwYXlsb2FkIChQUEUgfjI4IGJ5dGVzLCBXTEFOIFRMViB1cCB0byAyNCkuICovCiYjNDM7I2RlZmluZSBBSVJPSEFfTlBVX01CT1hfU0laRQkJCTI1NgogCiAjZGVmaW5lIFJFR19OUFVfTE9DQUxfU1JBTQkJMHgwCiAKQEAgLTE2MCwyMyAmIzQzOzE2MywzMyBAQCBzdHJ1Y3Qgd2xhbl9tYm94X2RhdGEgewogCURFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7CiB9OwogCi1zdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCi0JCQkgICAgICAgdm9pZCAqcCwgaW50IHNpemUpCiYjNDM7c3RhdGljIGludCBfX2Fpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiYjNDM7CQkJCSBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLCB2b2lkICpyZXBseSwKJiM0MzsJCQkJIHUxNiByZXBseV9sZW4pCiB7Ci0JdTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqLwotCXUzMiB2YWwsIG9mZnNldCA9IGNvcmUgJmx0OyZsdDsgNDsKJiM0MzsJc3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9ICZhbXA7bnB1LSZndDtjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi8KIAlkbWFfYWRkcl90IGRtYV9hZGRyOwomIzQzOwl1bnNpZ25lZCBpbnQgbWFwX2xlbiA9IEFMSUdOKGxlbiwgU01QX0NBQ0hFX0JZVEVTKTsKJiM0MzsJdTMyIHZhbCwgb2Zmc2V0ID0gMDsKIAlpbnQgcmV0OwogCi0JZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShucHUtJmd0O2RldiwgcCwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpOwomIzQzOwlpZiAobGVuICZsdDs9IDAgfHwgbGVuICZndDsgQUlST0hBX05QVV9NQk9YX1NJWkUpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJaWYgKHJlcGx5ICZhbXA7JmFtcDsgcmVwbHlfbGVuICZndDsgbGVuKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO2NvcmUtJmd0O2xvY2spOwomIzQzOwomIzQzOwltZW1jcHkoY29yZS0mZ3Q7YnVmLCBkYXRhLCBsZW4pOwomIzQzOwomIzQzOwlkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS0mZ3Q7ZGV2LCBjb3JlLSZndDtidWYsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTsKIAlyZXQgPSBkbWFfbWFwcGluZ19lcnJvcihucHUtJmd0O2RldiwgZG1hX2FkZHIpOwogCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlzcGluX2xvY2tfYmgoJmFtcDtucHUtJmd0O2NvcmVzW2NvcmVdLmxvY2spOwomIzQzOwkJZ290byB1bmxvY2s7CiAKIAlyZWdtYXBfd3JpdGUobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMCkgJiM0Mzsgb2Zmc2V0LCBkbWFfYWRkcik7Ci0JcmVnbWFwX3dyaXRlKG5wdS0mZ3Q7cmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDEpICYjNDM7IG9mZnNldCwgc2l6ZSk7CiYjNDM7CXJlZ21hcF93cml0ZShucHUtJmd0O3JlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSAmIzQzOyBvZmZzZXQsIGxlbik7CiAJcmVnbWFwX3JlYWQobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCAmYW1wO3ZhbCk7CiAJcmVnbWFwX3dyaXRlKG5wdS0mZ3Q7cmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDIpICYjNDM7IG9mZnNldCwgdmFsICYjNDM7IDEpOwogCXZhbCA9IEZJRUxEX1BSRVAoTUJPWF9NU0dfRlVOQ19JRCwgZnVuY19pZCkgfCBNQk9YX01TR19XQUlUX1JTUDsKQEAgLTE4OSwxMyAmIzQzOzIwMiwyMyBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiAJaWYgKCFyZXQgJmFtcDsmYW1wOyBGSUVMRF9HRVQoTUJPWF9NU0dfU1RBVFVTLCB2YWwpICE9IE5QVV9NQk9YX1NVQ0NFU1MpCiAJCXJldCA9IC1FSU5WQUw7CiAKLQlzcGluX3VubG9ja19iaCgmYW1wO25wdS0mZ3Q7Y29yZXNbY29yZV0ubG9jayk7CiYjNDM7CWRtYV91bm1hcF9zaW5nbGUobnB1LSZndDtkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7CiAKLQlkbWFfdW5tYXBfc2luZ2xlKG5wdS0mZ3Q7ZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpOwomIzQzOwkvKiBDb3B5IHRoZSB0cmFpbGluZyByZXBseV9sZW4gYnl0ZXMgb2YgdGhlIHJlc3BvbnNlLiAqLwomIzQzOwlpZiAoIXJldCAmYW1wOyZhbXA7IHJlcGx5KQomIzQzOwkJbWVtY3B5KHJlcGx5LCBjb3JlLSZndDtidWYgJiM0MzsgbGVuIC0gcmVwbHlfbGVuLCByZXBseV9sZW4pOwomIzQzO3VubG9jazoKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDtjb3JlLSZndDtsb2NrKTsKIAogCXJldHVybiByZXQ7CiB9CiAKJiM0MztzdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsCiYjNDM7CQkJICAgICAgIHZvaWQgKmRhdGEsIGludCBsZW4pCiYjNDM7ewomIzQzOwlyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICphZGRyLAogCQkJCSAgICBjb25zdCBjaGFyICpmd19uYW1lLCBpbnQgZndfbWF4X3NpemUpCiB7CkBAIC00OTcsOSAmIzQzOzUyMCw4IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19nZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsCiAJd2xhbl9kYXRhLSZndDtmdW5jX3R5cGUgPSBOUFVfT1BfR0VUOwogCXdsYW5fZGF0YS0mZ3Q7ZnVuY19pZCA9IGZ1bmNfaWQ7CiAKLQllcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pOwotCWlmICghZXJyKQotCQltZW1jcHkoZGF0YSwgd2xhbl9kYXRhLSZndDtkLCBkYXRhX2xlbik7CiYjNDM7CWVyciA9IF9fYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuLAomIzQzOwkJCQkgICAgZGF0YSwgZGF0YV9sZW4pOwogCWtmcmVlKHdsYW5fZGF0YSk7CiAKIAlyZXR1cm4gZXJyOwpAQCAtNzcwLDYgJiM0Mzs3OTIsMTggQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVJSQVlfU0laRShucHUtJmd0O2NvcmVzKTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSAmYW1wO25wdS0mZ3Q7Y29yZXNbaV07CiYjNDM7CQl2b2lkICpyYXc7CiYjNDM7CiYjNDM7CQlyYXcgPSBkZXZtX2ttYWxsb2MoZGV2LCBBSVJPSEFfTlBVX01CT1hfU0laRSAmIzQzOyBTTVBfQ0FDSEVfQllURVMsCiYjNDM7CQkJCSAgIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKCFyYXcpCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQljb3JlLSZndDtidWYgPSBQVFJfQUxJR04ocmF3LCBTTVBfQ0FDSEVfQllURVMpOwomIzQzOwl9CiYjNDM7CiAJZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCAmYW1wO3Jlcyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICYjMzQ7ZmFpbGVkIHRvIHJ1biBucHUgZmlybXdhcmVcbiYjMzQ7KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmgKaW5kZXggNzU4OWZjY2ZlZWY2ZC4uZjYzNTc2NmUzZGJhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmgKQEAgLTE3Myw2ICYjNDM7MTczLDcgQEAgc3RydWN0IGFpcm9oYV9ucHUgewogCQkvKiBwcm90ZWN0IGNvbmN1cnJlbnQgbnB1IG1lbW9yeSBhY2Nlc3NlcyAqLwogCQlzcGlubG9ja190IGxvY2s7CiAJCXN0cnVjdCB3b3JrX3N0cnVjdCB3ZHRfd29yazsKJiM0MzsJCXZvaWQgKmJ1ZjsgLyogbWFpbGJveCBETUEgYm91bmNlIGJ1ZmZlciAqLwogCX0gY29yZXNbTlBVX05VTV9DT1JFU107CiAKIAlpbnQgaXJxc1tOUFVfTlVNX0lSUV07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MTEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2g6IEFpcm9oYSBOUFUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgIGFuZCBgaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhgLiBJdCBzZWVtcyB0byBiZSBtb2RpZnlpbmcgaG93IG1lc3NhZ2VzIGFyZSBzZW50IHRvIHRoZSBOUFUgb24gQWlyb2hhIFNvQ3MuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBETUEgYm91bmNlIGJ1ZmZlciAoYGNvcmUtJmd0O2J1ZmApIGFuZCByZW5hbWluZyBgYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gYF9fYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gdXNlIGl0LiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXJseSB0byByZXNvbHZlIHBvdGVudGlhbCBETUEgbWFwcGluZyBwcm9ibGVtcywgd2hpY2ggbWFrZXMgc2Vuc2U7IGRlYWxpbmcgd2l0aCBzdGFjayBtZW1vcnkgb3IgdW5hbGlnbmVkIG1lbW9yeSBpbiBETUEgb3BlcmF0aW9ucyBpcyBhbHdheXMgYSBwYWluLgoKQnV0IGhvbGQgb24sIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci4gVGhlIHByb21wdCBzYXlzIEkgbmVlZCB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciB0aGF0ICpyZXF1aXJlcyogcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCYjMzk7cyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcG9pbnQuIElzIHRoaXMgQWlyb2hhIE5QVSBkcml2ZXIgb25lIG9mICp0aG9zZSo/CgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgaWYgYGFpcm9oYV9ucHVgIGZpdHMgdGhpcyBjcml0ZXJpYS4gSSBrbm93IGl0JiMzOTtzIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCwgc28gYXQgbGVhc3QgaXQmIzM5O3MgYSBuZXR3b3JrIGRyaXZlciBhbmQgdmVuZG9yLXNwZWNpZmljIHRvIEFpcm9oYS4gQnV0IGlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbnQgb24gYSBQQ0llIGRldmljZSwgb3Igc29tZXRoaW5nIGVsc2UgdGhhdCBRRU1VIG1pZ2h0IG5vdCBoYW5kbGU/IFRpbWUgdG8gZG8gYSBxdWljayBzZWFyY2ggd2l0aGluIHRoZSBrZXJuZWwgdHJlZSB0byBnZXQgYSBicm9hZGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBgYWlyb2hhX25wdWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIHRpZWQgdG8gYSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiBvciBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSBlbXVsYXRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Fpcm9oYV9ucHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZT04PWFpcm9oYS1ldGgtJChDT05GSUdfREVCVUdfRlMpICYjNDM7PSBhaXJvaGFfcHBlX2RlYnVnZnMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9BSVJPSEFfTlBVKSAmIzQzOz0gYWlyb2hhX25wdS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02NDU9c3RydWN0IGFpcm9oYV9ldGgge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDo2NTM6XHRzdHJ1Y3QgYWlyb2hhX25wdSBfX3JjdSAqbnB1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC02NTQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz0xMDg9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExMzpzdHJ1Y3QgYWlyb2hhX25wdV9mdyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTExNC1cdGNvbnN0IGNoYXIgKm5hbWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExODpzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExOTpcdHN0cnVjdCBhaXJvaGFfbnB1X2Z3IGZ3X3J2MzI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjEyMDpcdHN0cnVjdCBhaXJvaGFfbnB1X2Z3IGZ3X2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTEyMS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9MTU5PXN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjE2NjpzdGF0aWMgaW50IF9fYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTY3LVx0XHRcdFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKnJlcGx5LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MTcwOlx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTcxLVx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTIxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjE2OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjE3LVx0XHRcdCAgICAgICB2b2lkICpkYXRhLCBpbnQgbGVuKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyMTk6XHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMjAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjIyMjpzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjIzLVx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGludCBmd19tYXhfc2l6ZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTI0Nj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI0NzphaXJvaGFfbnB1X2xvYWRfZmlybXdhcmVfZnJvbV9kdHMoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI0OC1cdFx0XHRcdCAgdm9pZCBfX2lvbWVtICpiYXNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyNTg6XHRyZXQgPSBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBhZGRyLCBmd19uYW1lc1swXSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU5LVx0XHRcdFx0ICAgICAgIE5QVV9FTjc1ODFfRklSTVdBUkVfUlYzMl9NQVhfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI2MzpcdHJldHVybiBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBiYXNlICYjNDM7IFJFR19OUFVfTE9DQUxfU1JBTSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjY0LVx0XHRcdFx0XHRmd19uYW1lc1sxXSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjY4OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI2OS1cdFx0XHRcdCAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyNzE6XHRjb25zdCBzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSAqc29jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNzItXHR2b2lkIF9faW9tZW0gKmFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODYtXHRpZiAob2ZfZmluZF9wcm9wZXJ0eShkZXYtXHUwMDNlb2Zfbm9kZSwgXCYjMzQ7ZmlybXdhcmUtbmFtZVwmIzM0OywgTlVMTCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI4NzpcdFx0cmV0dXJuIGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZV9mcm9tX2R0cyhkZXYsIGFkZHIsIGJhc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI4OS1cdC8qIExvYWQgcnYzMiBucHUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjkwOlx0cmV0ID0gYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlKGRldiwgYWRkciwgc29jLVx1MDAzZWZ3X3J2MzIubmFtZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjkxLVx0XHRcdFx0ICAgICAgIHNvYy1cdTAwM2Vmd19ydjMyLm1heF9zaXplKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI5NS1cdC8qIExvYWQgZGF0YSBucHUgZmlybXdhcmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mjk2Olx0cmV0dXJuIGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGJhc2UgJiM0MzsgUkVHX05QVV9MT0NBTF9TUkFNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yOTctXHRcdFx0XHRcdHNvYy1cdTAwM2Vmd19kYXRhLm5hbWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjMwMTpzdGF0aWMgaXJxcmV0dXJuX3QgYWlyb2hhX25wdV9tYm94X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqbnB1X2luc3RhbmNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMDM6XHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1ID0gbnB1X2luc3RhbmNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjMxNjpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dkdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzE3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE4Olx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE5Olx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzIwLVx0dm9pZCAqZHVtcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzI0Olx0Y29yZSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlLCB3ZHRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMyNS1cdG5wdSA9IGNvcmUtXHUwMDNlbnB1O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMzk6c3RhdGljIGlycXJldHVybl90IGFpcm9oYV9ucHVfd2R0X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqY29yZV9pbnN0YW5jZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzQxOlx0c3RydWN0IGFpcm9oYV9ucHVfY29yZSAqY29yZSA9IGNvcmVfaW5zdGFuY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM0MjpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBjb3JlLVx1MDAzZW5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzQzLVx0aW50IGMgPSBjb3JlIC0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozNTQ6c3RhdGljIGludCBhaXJvaGFfbnB1X3BwZV9pbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM2ODpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNjktXHRcdFx0XHQgIHNpemVvZigqcHBlX2RhdGEpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mzc1OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZGVpbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM3Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM4NzpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODgtXHRcdFx0XHQgIHNpemVvZigqcHBlX2RhdGEpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mzk0OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZmx1c2hfc3JhbV9lbnRyaWVzKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM5NS1cdFx0XHRcdFx0ICAgICBkbWFfYWRkcl90IGZvZV9hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0MTE6XHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfUFBFLCBwcGVfZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEyLVx0XHRcdFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQxODpzdGF0aWMgaW50IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00MTktXHRcdFx0XHQgICAgICAgZG1hX2FkZHJfdCBmb2VfYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDM2Olx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1BQRSwgcHBlX2RhdGEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQzNy1cdFx0XHRcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0NDU6XHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfUFBFLCBwcGVfZGF0YSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDQ2LVx0XHRcdFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQ1MzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX3N0YXRzX3NldHVwKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ1NC1cdFx0XHRcdCAgICAgIGRtYV9hZGRyX3QgZm9lX3N0YXRzX2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQ2ODpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NjktXHRcdFx0XHQgIHNpemVvZigqcHBlX2RhdGEpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDg0OnN0YXRpYyBpbnQgYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0ODU6XHRcdFx0XHQgICAgZW51bSBhaXJvaGFfbnB1X3dsYW5fc2V0X2NtZCBmdW5jX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00ODYtXHRcdFx0XHQgICAgdm9pZCAqZGF0YSwgaW50IGRhdGFfbGVuLCBnZnBfdCBnZnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwMTpcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19XSUZJLCB3bGFuX2RhdGEsIGxlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwMi1cdGtmcmVlKHdsYW5fZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwNzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MDg6XHRcdFx0XHQgICBlbnVtIGFpcm9oYV9ucHVfd2xhbl9nZXRfY21kIGZ1bmNfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwOS1cdFx0XHRcdCAgIHZvaWQgKmRhdGEsIGludCBkYXRhX2xlbiwgZ2ZwX3QgZ2ZwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MjM6XHRlcnIgPSBfX2Fpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19XSUZJLCB3bGFuX2RhdGEsIGxlbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTI0LVx0XHRcdFx0ICAgIGRhdGEsIGRhdGFfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTUzMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUzMTphaXJvaGFfbnB1X3dsYW5fc2V0X3Jlc2VydmVkX21lbW9yeShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01MzItXHRcdFx0XHQgICAgaW50IGlmaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUzMzpcdFx0XHRcdCAgICBlbnVtIGFpcm9oYV9ucHVfd2xhbl9zZXRfY21kIGZ1bmNfaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NDUtXHR2YWwgPSByZXMuc3RhcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU0NjpcdHJldHVybiBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQobnB1LCBpZmluZGV4LCBmdW5jX2lkLCBcdTAwMjZ2YWwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU0Ny1cdFx0XHRcdFx0c2l6ZW9mKHZhbCksIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTA6c3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTUxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTUyOlx0ZW51bSBhaXJvaGFfbnB1X3dsYW5fc2V0X2NtZCBjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfTlBVX0JBTkQwX09OQ1BVO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NTMtXHR1MzIgdmFsID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTU2Olx0ZXJyID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKG5wdSwgMSwgY21kLCBcdTAwMjZ2YWwsIHNpemVvZih2YWwpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NTctXHRcdFx0XHQgICAgICAgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NjEtXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfVFhfQlVGX0NIRUNLX0FERFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU2MjpcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXCYjMzQ7dHgtYnVmaWRcJiMzNDssIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU2My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NjYtXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfUEtUX0JVRl9BRERSO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1Njc6XHRlcnIgPSBhaXJvaGFfbnB1X3dsYW5fc2V0X3Jlc2VydmVkX21lbW9yeShucHUsIDAsIFwmIzM0O3BrdFwmIzM0OywgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTY4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU3MS1cdGNtZCA9IFdMQU5fRlVOQ19TRVRfV0FJVF9UWF9QS1RfQlVGX0FERFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU3MjpcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXCYjMzQ7dHgtcGt0XCYjMzQ7LCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTc4LVx0XHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfRFJBTV9CQV9OT0RFX0FERFI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU3OTpcdFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkobnB1LCAwLCBcJiMzNDtiYVwmIzM0OywgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTgwLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTg0LVx0Y21kID0gV0xBTl9GVU5DX1NFVF9XQUlUX0lTX0ZPUkNFX1RPX0NQVTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTg1Olx0cmV0dXJuIGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChucHUsIDAsIGNtZCwgXHUwMDI2dmFsLCBzaXplb2YodmFsKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTg2LVx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTg5OnN0YXRpYyB1MzIgYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBxaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU5MC1cdFx0XHRcdFx0ICBib29sIHhtaXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU5ODpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19zZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjAzOnN0YXRpYyB1MzIgYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MDQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2MTE6c3RhdGljIHZvaWQgYWlyb2hhX25wdV93bGFuX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IHEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxMi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYxNjpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IHEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYyMTpzdHJ1Y3QgYWlyb2hhX25wdSAqYWlyb2hhX25wdV9nZXQoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjI0LVx0c3RydWN0IGRldmljZV9ub2RlICpucDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjI1Olx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjI2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjY4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjY5OkVYUE9SVF9TWU1CT0xfR1BMKGFpcm9oYV9ucHVfZ2V0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2NzE6dm9pZCBhaXJvaGFfbnB1X3B1dChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02NzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc2OkVYUE9SVF9TWU1CT0xfR1BMKGFpcm9oYV9ucHVfcHV0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCBhaXJvaGFfbnB1X3NvY19kYXRhIGVuNzU4MV9ucHVfc29jX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3OS1cdC5md19ydjMyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBhaXJvaGFfbnB1X3NvY19kYXRhIGFuNzU4M19ucHVfc29jX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY5MC1cdC5md19ydjMyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MDA6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2ZfYWlyb2hhX25wdV9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MDEtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7YWlyb2hhLGVuNzU4MS1ucHVcJiMzNDssIC5kYXRhID0gXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzA0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcwNTpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbnB1X21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz03MDc9c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHJlZ21hcF9jb25maWcgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxNTpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzE2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzE3LVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxODpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTcxOS1cdHN0cnVjdCByZXNvdXJjZSByZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MzItXHRucHUtXHUwMDNlZGV2ID0gZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MzM6XHRucHUtXHUwMDNlb3BzLnBwZV9pbml0ID0gYWlyb2hhX25wdV9wcGVfaW5pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM0Olx0bnB1LVx1MDAzZW9wcy5wcGVfZGVpbml0ID0gYWlyb2hhX25wdV9wcGVfZGVpbml0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MzU6XHRucHUtXHUwMDNlb3BzLnBwZV9pbml0X3N0YXRzID0gYWlyb2hhX25wdV9wcGVfc3RhdHNfc2V0dXA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczNjpcdG5wdS1cdTAwM2VvcHMucHBlX2ZsdXNoX3NyYW1fZW50cmllcyA9IGFpcm9oYV9ucHVfcHBlX2ZsdXNoX3NyYW1fZW50cmllcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM3Olx0bnB1LVx1MDAzZW9wcy5wcGVfZm9lX2NvbW1pdF9lbnRyeSA9IGFpcm9oYV9ucHVfZm9lX2NvbW1pdF9lbnRyeTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM4Olx0bnB1LVx1MDAzZW9wcy53bGFuX2luaXRfcmVzZXJ2ZWRfbWVtb3J5ID0gYWlyb2hhX25wdV93bGFuX2luaXRfbWVtb3J5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3Mzk6XHRucHUtXHUwMDNlb3BzLndsYW5fc2VuZF9tc2cgPSBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0MDpcdG5wdS1cdTAwM2VvcHMud2xhbl9nZXRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19nZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0MTpcdG5wdS1cdTAwM2VvcHMud2xhbl9nZXRfcXVldWVfYWRkciA9IGFpcm9oYV9ucHVfd2xhbl9xdWV1ZV9hZGRyX2dldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQyOlx0bnB1LVx1MDAzZW9wcy53bGFuX3NldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NDM6XHRucHUtXHUwMDNlb3BzLndsYW5fZ2V0X2lycV9zdGF0dXMgPSBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19nZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0NDpcdG5wdS1cdTAwM2VvcHMud2xhbl9lbmFibGVfaXJxID0gYWlyb2hhX25wdV93bGFuX2lycV9lbmFibGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0NTpcdG5wdS1cdTAwM2VvcHMud2xhbl9kaXNhYmxlX2lycSA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfZGlzYWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NTk6XHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X21ib3hfaGFuZGxlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzYwLVx0XHRcdCAgICAgICBJUlFGX1NIQVJFRCwgXCYjMzQ7YWlyb2hhLW5wdS1tYm94XCYjMzQ7LCBucHUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzY0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShucHUtXHUwMDNlY29yZXMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NjU6XHRcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcdTAwMjZucHUtXHUwMDNlY29yZXNbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc2Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc0Olx0XHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NzUtXHRcdFx0XHQgICAgICAgSVJRRl9TSEFSRUQsIFwmIzM0O2Fpcm9oYS1ucHUtd2R0XCYjMzQ7LCBjb3JlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc5Olx0XHRJTklUX1dPUksoXHUwMDI2Y29yZS1cdTAwM2V3ZHRfd29yaywgYWlyb2hhX25wdV93ZHRfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc4MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc5NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUobnB1LVx1MDAzZWNvcmVzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzk2Olx0XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03OTctXHRcdHZvaWQgKnJhdztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODA3Olx0ZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MDgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4Mjg6XHRpZiAoIWFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KG5wdSwgMCwgV0xBTl9GVU5DX0dFVF9XQUlUX05QVV9WRVJTSU9OLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjktXHRcdFx0XHQgICAgIFx1MDAyNnZhbCwgc2l6ZW9mKHZhbCksIEdGUF9LRVJORUwpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4Mzg6c3RhdGljIHZvaWQgYWlyb2hhX25wdV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODM5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQwOlx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04NDEtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQ3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NDg6XHQucHJvYmUgPSBhaXJvaGFfbnB1X3Byb2JlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NDk6XHQucmVtb3ZlID0gYWlyb2hhX25wdV9yZW1vdmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1MC1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1MS1cdFx0Lm5hbWUgPSBcJiMzNDthaXJvaGEtbnB1XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTI6XHRcdC5vZl9tYXRjaF90YWJsZSA9IG9mX2Fpcm9oYV9ucHVfbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1My1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1NC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTYwNz1zdGF0aWMgdm9pZCBhaXJvaGFfcHBlX2ZvZV9mbG93X3N0YXRfZW50cnlfcmVzZXQoc3RydWN0IGFpcm9oYV9wcGUgKnBwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NjA4Olx0XHRcdFx0XHRcdCBzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy02MDktXHRcdFx0XHRcdFx0IGludCBpbmRleClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTYxNT1zdGF0aWMgdm9pZCBhaXJvaGFfcHBlX2ZvZV9mbG93X3N0YXRzX3Jlc2V0KHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjYxNjpcdFx0XHRcdFx0ICAgIHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTYxNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz02Mjg9c3RhdGljIHZvaWQgYWlyb2hhX3BwZV9mb2VfZmxvd19zdGF0c191cGRhdGUoc3RydWN0IGFpcm9oYV9wcGUgKnBwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NjI5Olx0XHRcdFx0XHQgICAgIHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTYzMC1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgYWlyb2hhX2ZvZV9lbnRyeSAqaHdlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9NzY1PXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9mb2VfY29tbWl0X2VudHJ5KHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy03NzItXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcHBlLVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NzczOlx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNzc0LVx0aW50IGVyciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xMzAxPXZvaWQgYWlyb2hhX3BwZV9mb2VfZW50cnlfZ2V0X3N0YXRzKHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsIHUzMiBoYXNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTMwNS1cdGludCBwcGVfbnVtX3N0YXRzX2VudHJpZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjEzMDY6XHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMzA3LVx0dTMyIGluZGV4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTM3OT1zdGF0aWMgaW50IGFpcm9oYV9wcGVfZmx1c2hfc3JhbV9lbnRyaWVzKHN0cnVjdCBhaXJvaGFfcHBlICpwcGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMzk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMzk3OnN0YXRpYyBzdHJ1Y3QgYWlyb2hhX25wdSAqYWlyb2hhX3BwZV9ucHVfZ2V0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTEzOTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMzk5Olx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IGFpcm9oYV9ucHVfZ2V0KGV0aC1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDAwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQwMi1cdFx0cmVxdWVzdF9tb2R1bGUoXCYjMzQ7YWlyb2hhLW5wdVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0MDM6XHRcdG5wdSA9IGFpcm9oYV9ucHVfZ2V0KGV0aC1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDA0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTQzMj1zdGF0aWMgaW50IGFpcm9oYV9wcGVfb2ZmbG9hZF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTQzNDpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBhaXJvaGFfcHBlX25wdV9nZXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQzNS1cdHN0cnVjdCBhaXJvaGFfcHBlICpwcGUgPSBldGgtXHUwMDNlcHBlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQ2Ni1lcnJvcl9ucHVfcHV0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNDY3Olx0YWlyb2hhX25wdV9wdXQobnB1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQ2OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTE2NjI9dm9pZCBhaXJvaGFfcHBlX2RlaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjYzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTY2NDpcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE2NjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjcyLVx0XHRucHUtXHUwMDNlb3BzLnBwZV9kZWluaXQobnB1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTY3MzpcdFx0YWlyb2hhX25wdV9wdXQobnB1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTY3NC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA4MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBBaXJvaGEgTlBVIERyaXZlciBhbmQgV29ydGhGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhaXJvaGFfbnB1YCBkcml2ZXIsIHBhcnQgb2YgdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIgc3VpdGUuIEl0IHNlZW1zIHRvIGJlIGFuIE5QVSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBaXJvaGEmIzM5O3MgRU43NTgxIFNvQ3MuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGFuZCBpcyB0aGVyZWZvcmUgYSBuby1nbyBmb3Igc3RhbmRhcmQgUUVNVSBlbXVsYXRpb24/CgpUaGUgRU43NTgxICppcyogYSByb3V0ZXIvZ2F0ZXdheSBTb0MsIGNvbmZpcm1pbmcgdGhhdCBpdCYjMzk7cyBwcm9iYWJseSB2ZW5kb3Itc3BlY2lmaWMgc2lsaWNvbi4gVGhlIGNvZGUmIzM5O3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBza2lwcGluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgcmVhbCBQQ0llIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZpdHMgdGhhdCBkZXNjcmlwdGlvbi4KCkEgcXVpY2sgY2hlY2sgb2YgdGhlIHNvdXJjZSByZXZlYWxzIGl0JiMzOTtzIHJlZ2lzdGVyZWQgYXMgYSBgcGxhdGZvcm1fZHJpdmVyYC4gVGhhdCBtZWFucyBpdCYjMzk7cyBhbiBJUCBibG9jayAqd2l0aGluKiB0aGUgU29DLCBhbmQgbm90IGEgUENJZSBkZXZpY2UsIHdoaWNoIGNoYW5nZXMgdGhpbmdzIGEgYml0ISBQbGF0Zm9ybSBkcml2ZXJzIGFyZSBvZnRlbiBTb0Mtc3BlY2lmaWMsIHJlbHlpbmcgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIG1lbW9yeS1tYXBwZWQgSS9PIHJlZ2lvbnMuIFRoZSBsaWtlbGlob29kIG9mIHN0YW5kYXJkIFFFTVUgcGVyZmVjdGx5IGVtdWxhdGluZyB0aGUgRU43NTgxJiMzOTtzIHBsYXRmb3JtIHNwZWNpZmljcyBpcyB2YW5pc2hpbmdseSBzbWFsbCwgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBtYWNoaW5lIHR5cGUgZm9yIGl0LgoKSG93ZXZlciwgU3l6a2FsbGVyICpjYW4qIHNvbWV0aW1lcyBnZXQgYXQgcGxhdGZvcm0gZHJpdmVycy4gSXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcywgdXNlIGBzeXpfbW91bnRfaW1hZ2VgLCBvciBmYWtlIHBsYXRmb3JtIGRldmljZXMuIEJ1dCBoZXJlJiMzOTtzIHRoZSBraWNrZXI6IGBhaXJvaGFfbnB1X3Byb2JlYCBkb2VzIGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMClgLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkaXJlY3RseSBhY2Nlc3NpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIHRocm91Z2ggTU1JTy4gSWYgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBlbXVsYXRlZCwgdGhhdCYjMzk7cyBqdXN0IGdvaW5nIHRvIGNyYXNoIG9yIGZhaWwgdGhlIHByb2JlLgoKTm93LCB3aGlsZSBTeXprYWxsZXIgY2FuIHNvbWV0aW1lcyBwb2tlIGFyb3VuZCB2aWEgYC9kZXYvYCBub2RlcyBvciBwc2V1ZG8tZGV2aWNlIGZyYW1ld29ya3MsIGRpcmVjdCBNTUlPIG9uIGEgcGxhdGZvcm0gZHJpdmVyIHdpdGhvdXQgZW11bGF0aW9uIGlzIGEgZGVhZCBlbmQuIFVubGVzcywgb2YgY291cnNlLCB0aGVyZSYjMzk7cyBzb21lIHdheSBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIHRoaXMgZHJpdmVyLCBidXQgaW4gdGhpcyBjYXNlLCBJJiMzOTtkIG5lZWQgYW4gZW11bGF0b3Igb2YgdGhlIGhhcmR3YXJlLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlcmUmIzM5O3MgZXhpc3RpbmcgU3l6a2FsbGVyIHN1cHBvcnQgZm9yIEFpcm9oYSYjMzk7cyBOUFUuIEkgbmVlZCB0byByZXNlYXJjaCB0aGlzIGJlZm9yZSBJIG1ha2UgYSBmaW5hbCBjYWxsLCBidXQgbXkgZ3V0IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBub3QgZnV6emFibGUgd2l0aG91dCB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Fpcm9oYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX05FVF9BSVJPSEEpICYjNDM7PSBhaXJvaGEtZXRoLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo3OmFpcm9oYS1ldGgteSA6PSBhaXJvaGFfZXRoLm8gYWlyb2hhX3BwZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gYWlyb2hhX3BwZV9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgJiM0Mzs9IGFpcm9oYV9ucHUub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3OiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9yZWdzLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg6I2luY2x1ZGUgXCYjMzQ7YWlyb2hhX2V0aC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1OnZvaWQgYWlyb2hhX3dyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwOnUzMiBhaXJvaGFfcm13KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyIG1hc2ssIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI6XHR2YWwgfD0gKGFpcm9oYV9ycihiYXNlLCBvZmZzZXQpIFx1MDAyNiB+bWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMzOlx0YWlyb2hhX3dyKGJhc2UsIG9mZnNldCwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5LVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIGNsZWFyLCB1MzIgc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxOlx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gaXJxX2JhbmstXHUwMDNlcWRtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDItXHRpbnQgYmFuayA9IGlycV9iYW5rIC0gXHUwMDI2cWRtYS1cdTAwM2VpcnFfYmFua3NbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MS1cdGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdIHw9IHNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI6XHRhaXJvaGFfcWRtYV93cihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzLVx0XHQgICAgICAgaXJxX2JhbmstXHUwMDNlaXJxbWFza1tpbmRleF0pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc6XHRhaXJvaGFfcWRtYV9ycihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MjpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9pcnFfZW5hYmxlKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cdFx0XHRcdCAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjU6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIDAsIG1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ni19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2ODpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjktXHRcdFx0XHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3MTpcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc0OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Ni1cdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc3Olx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc4LVx0dTMyIHJlZywgdmFsLCBsbWluLCBsbWF4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cdTAwM2Vwb3J0cyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg2Olx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZXRoLVx1MDAzZXBvcnRzW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04Ny1cdFx0aW50IGo7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05Mi1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgQVJSQVlfU0laRShwb3J0LVx1MDAzZWRldnMpOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo5MzpcdFx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKml0ZXJfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05NC1cdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMDpcdFx0XHRpZiAoYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGl0ZXJfZGV2KSAhPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDE6XHRcdFx0ICAgIGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMDItXHRcdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM0Olx0cmVnID0gYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikgPyBSRUdfRkVfTEFOX01BQ19IIDogUkVHX0ZFX1dBTl9NQUNfSDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM1LVx0dmFsID0gKGFkZHJbMF0gXHUwMDNjXHUwMDNjIDE2KSB8IChhZGRyWzFdIFx1MDAzY1x1MDAzYyA4KSB8IGFkZHJbMl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNjpcdGFpcm9oYV9mZV93cihldGgsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNSU4ocmVnKSwgbG1pbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1BWChyZWcpLCBsbWF4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDE6XHRhaXJvaGFfcHBlX2luaXRfdXBkX21lbShkZXYsIGFkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0NjpzdGF0aWMgdm9pZCBhaXJvaGFfc2V0X2dkbV9wb3J0X2Z3ZF9jZmcoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgdTMyIGFkZHIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Ny1cdFx0XHRcdFx0dTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQ5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9PQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1MC1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fT0NGUV9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUxOlx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9NQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Mi1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fTUNGUV9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUzOlx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9CQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1NC1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fQkNGUV9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9VQ0ZRX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Ni1cdFx0ICAgICAgRklFTERfUFJFUChHRE1fVUNGUV9NQVNLLCB2YWwpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU5OnN0YXRpYyBpbnQgYWlyb2hhX3NldF92aXBfZm9yX2dkbV9wb3J0KHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBib29sIGVuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYxOlx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjI6XHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYzLVx0dTMyIHZpcF9wb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTY2LVx0aWYgKGVuYWJsZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjc6XHRcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY4Olx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2OS1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MDpcdFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MTpcdFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc3OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9tYWNjcl9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODEtXHRmb3IgKHAgPSAxOyBwIFx1MDAzYz0gQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBwJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODI6XHRcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcocCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cdFx0XHQgICAgICBHRE1fVENQX0NLU1VNX01BU0sgfCBHRE1fVURQX0NLU1VNX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODQtXHRcdFx0ICAgICAgR0RNX0lQNF9DS1NVTV9NQVNLIHwgR0RNX0RST1BfQ1JDX0VSUl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTg1Olx0XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9MRU5fQ0ZHKHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODYtXHRcdFx0ICAgICAgR0RNX1NIT1JUX0xFTl9NQVNLIHwgR0RNX0xPTkdfTEVOX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX1ZMQU5fQ1RSTCgxKSwgQ0RNX1ZMQU5fTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WTEFOX01BU0ssIDB4ODEwMCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NDpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QQUQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfdmlwX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5OTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigzKSwgRVRIX1BfUFBQX0RJU0MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDMpLCBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDQpLCBQUFBfTENQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAzOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA0LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNiksIFBQUF9JUENQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig2KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA5LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTI6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNyksIFBQUF9DSEFQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEzOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig3KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE0LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE3LVx0LyogQk9PVFAgKDB4NDMpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig4KSwgMHg0Myk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxOTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyMC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjMtXHQvKiBCT09UUCAoMHg0NCkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI0Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDkpLCAweDQ0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig5KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI2LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyOS1cdC8qIElTQUtNUCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzA6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTApLCAweDFmNDAxZjQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzE6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjMyLVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDExKSwgUFBQX0lQVjZDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTEpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzctXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDAtXHQvKiBESENQdjYgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEyKSwgMHgyMjIwMjIzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0My1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0NjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxOSksIFBQUF9QQVApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDE5KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ4LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjUxLVx0LyogRVRILVx1MDAzZUVUSF9QXzE5MDUgKDB4ODkzYSkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIwKSwgMHg4OTNhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUzOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1NC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU2Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIxKSwgRVRIX1BfTExEUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjEpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTgtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjE6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYyLVx0XHRcdFx0XHQgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2NDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LVx0XHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY5Olx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3MC1cdFx0XHQgICAgIFBTRV9DRkdfT1FfUlNWX01BU0spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzM6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NC1cdFx0XHRcdFx0ICAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1ZBTCwgUFNFX0NGR19PUV9SU1ZfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc3LVx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9DRkdfT1FfUlNWX01BU0ssIHZhbCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3OS1cdFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODY6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5MTpzdGF0aWMgaW50IGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTItXHRcdFx0XHQgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk0Olx0dTMyIG9yaWdfdmFsID0gYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUtXHR1MzIgdG1wLCBhbGxfcnN2LCBmcV9saW1pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTc6XHRhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTktXHQvKiBtb2RpZnkgYWxsIHJzdiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDA6XHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDEtXHRhbGxfcnN2ICYjNDM7PSAodmFsIC0gb3JpZ192YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDI6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMy1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cdC8qIG1vZGlmeSBodGhkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwNjpcdGZxX2xpbWl0ID0gYWlyb2hhX2ZlX2dldChldGgsIFBTRV9GUV9DRkcsIFBTRV9GUV9MSU1JVF9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA3LVx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgyMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwOS1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfSFRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyLVx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgxMDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTQtXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX01USERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxNi1cdHRtcCA9ICgzICogdG1wKSBcdTAwM2VcdTAwM2UgMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE3Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE4LVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9MVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyNDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzI1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQxOlx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Mi1cdFx0dTMyIGFsbF9yc3Y7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDQtXHRcdC8qIGh3IG1pc3NlcyBQUEUyIG9xIHJzdiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDU6XHRcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ni1cdFx0YWxsX3JzdiAmIzQzOz0gUFNFX1JTVl9QQUdFUyAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ny1cdFx0XHQgICBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDg6XHRcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ5LVx0XHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTMtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTFdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0xLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTUtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTg6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTEsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1OS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYxLVx0Zm9yIChxID0gNjsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0yXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MjpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMiwgcSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2My1cdC8qIEdETTMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY0LVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0zXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2NTpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMywgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjktXHRcdGlmIChxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTFdIC8gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzcwOlx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cdFx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Mi1cdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzM6XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Ni1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMl07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzc6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTIsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgwLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0zXSAtIDE7IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODE6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTMsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODItXHQvKiBDRE00ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4My1cdGZvciAocSA9IDQ7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNF07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODQ6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTQsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4NS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODY6XHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg3LVx0XHQvKiBQUEUyICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODktXHRcdFx0aWYgKHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl0gLyAyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTA6XHRcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXHRcdFx0XHRcdFx0XHQgcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cdFx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5NDpcdFx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NS1cdFx0XHRcdFx0XHRcdCBxLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5OS1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNNF07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDA6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTQsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAzLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE01XTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwNDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNNSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwODpzdGF0aWMgaW50IGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNjpcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE5LVx0XHQgICAgICBNQ19WTEFOX0NGR19UQUJMRV9TRUxfTUFTSyB8IE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMDpcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjE6XHRcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjItXHRcdFx0XHRcdHZhbCBcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyOC1cdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgQUlST0hBX0ZFX01DX01BWF9WTEFOX1BPUlQ7IGomIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyOTpcdFx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzMtXHRcdFx0ICAgICAgTUNfVkxBTl9DRkdfUldfTUFTSztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM0Olx0XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM1Olx0XHRcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzYtXHRcdFx0XHRcdFx0dmFsIFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NDg6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MC1cdC8qIENETTFfQ1JTTl9RU0VMICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIyIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU0LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU1Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMDggXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTgtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2MC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2MzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI0IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY2LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY3Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjUgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzEtXHQvKiBDRE0yX0NSU05fUVNFTCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzI6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8wOCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3My1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ3NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIxIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjEpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc5LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDgwOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjIgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODMtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4NS1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4ODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI1IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTQ6c3RhdGljIGludCBhaXJvaGFfZmVfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTY6XHRhaXJvaGFfZmVfbWFjY3JfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5OC1cdC8qIFBTRSBJUSByZXNlcnZlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5OTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjEsIFBTRV9JUV9SRVMxX1AyX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMC1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfSVFfUkVTMV9QMl9NQVNLLCAweDEwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwMTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMi1cdFx0ICAgICAgUFNFX0lRX1JFUzJfUDVfTUFTSyB8IFBTRV9JUV9SRVMyX1A0X01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDYtXHQvKiBlbmFibGUgRkUgY29weSBlbmdpbmUgZm9yIEtBL0RQSSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUENFX0NGRywgUENFX0RQSV9FTl9NQVNLIHwgUENFX0tBX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXHQvKiBzZXQgdmlwIHF1ZXVlIHNlbGVjdGlvbiB0byByaW5nIDEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygxKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMC1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxMTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9WSVBfUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTItXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTMtXHQvKiBzZXQgR0RNNCBzb3VyY2UgaW50ZXJmYWNlIG9mZnNldCB0byA4ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxNDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX1NSQ19QT1JUX1NFVCg0KSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE1LVx0XHQgICAgICBHRE1fU1BPUlRfT0ZGMl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyMi1cdC8qIHNldCBQU0UgUGFnZSBhcyAxMjhCICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyMzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfRE1BX0dMT19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cdFx0ICAgICAgRkVfRE1BX0dMT19MMl9TUEFDRV9NQVNLIHwgRkVfRE1BX0dMT19QR19TWl9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI2LVx0XHQgICAgICBGRV9ETUFfR0xPX1BHX1NaX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mjc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfUlNUX0dMT19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyOC1cdFx0ICAgICBGRV9SU1RfQ09SRV9NQVNLIHwgRkVfUlNUX0dETTNfTUJJX0FSQl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzNC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzU6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAwLCBCSVQoNCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAxLCBCSVQoMjgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMiwgQklUKDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMywgQklUKDI4KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQwOlx0YWlyb2hhX2ZlX3ZpcF9zZXR1cChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDE6XHRhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDM6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9NSVNDX0NGRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ0LVx0XHQgICAgICBHRE0yX1JETV9BQ0tfV0FJVF9QUkVGX01BU0sgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDUtXHRcdCAgICAgIEdETTJfQ0hOX1ZMRF9NT0RFX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDY6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fT0FNX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ3LVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9PQU1fUVNFTF9NQVNLLCAxNSkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUwLVx0LyogTlBVIENvcmUtMywgTlBVIEJyaWRnZSBDaGFubmVsLTMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTUxOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTItXHRcdCAgICAgIElQX0ZSQUdNRU5UX1BPUlRfTUFTSyB8IElQX0ZSQUdNRU5UX05CUV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU1LVx0LyogUURNQSBMQU4sIFJYIFJpbmctMjIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTU2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTctXHRcdCAgICAgIElQX0FTU0VNQkxFX1BPUlRfTUFTSyB8IElQX0FTU0VNQkxFX05CUV9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjE6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksIEdETV9QQURfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2MjpcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTRfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjQtXHQvKiBFbmFibGUgc3BsaXQgZm9yIE1JQiBjb3VudGVycyBmb3IgR0RNMyBhbmQgR0RNNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjU6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cdFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY3LVx0XHQgICAgICBGRV9HRE1fUlhfTUlCX1NQTElUX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Njg6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE00X0lEWCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2OS1cdFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTcyOlx0YWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc0Olx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUVVFVUVfWEZDX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzU6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUE9SVF9YRkNfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc3LVx0LyogZGVmYXVsdCBhZ2luZyBtb2RlIGZvciBtYmkgdW5sb2NrIGlzc3VlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3ODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0NITl9STFMoMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OS1cdFx0ICAgICAgTUJJX1JYX0FHRV9TRUxfTUFTSyB8IE1CSV9UWF9BR0VfU0VMX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODMtXHQvKiBkaXNhYmxlIElGQyBieSBkZWZhdWx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4NDpcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DU1JfSUZDX0NGRywgRkVfSUZDX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4Ni1cdC8qIGVuYWJsZSAxOk4gdmxhbiBhY3Rpb24sIGluaXQgdmxhbiB0YWJsZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODc6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX01DX1ZMQU5fRU4sIE1DX1ZMQU5fRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5Olx0cmV0dXJuIGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTkyOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS1cdGludCBxaWQgPSBxIC0gXHUwMDI2cWRtYS1cdTAwM2VxX3J4WzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTk4LVx0d2hpbGUgKHEtXHUwMDNlcXVldWVkIFx1MDAzYyBxLVx1MDAzZW5kZXNjIC0gMSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTk6XHRcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcdTAwMjZxLVx1MDAzZWVudHJ5W3EtXHUwMDNlaGVhZF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMDpcdFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcdTAwMjZxLVx1MDAzZWRlc2NbcS1cdTAwM2VoZWFkXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAxLVx0XHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzMC1cdGlmIChuZnJhbWVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MzE6XHRcdGFpcm9oYV9xZG1hX3JtdyhxZG1hLCBSRUdfUlhfQ1BVX0lEWChxaWQpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzItXHRcdFx0XHRSWF9SSU5HX0NQVV9JRFhfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjM4OnN0YXRpYyBzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzk6YWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY0MTpcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0Mi1cdHUxNiBwLCBkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjA6c3RhdGljIGludCBhaXJvaGFfcWRtYV9yeF9wcm9jZXNzKHN0cnVjdCBhaXJvaGFfcXVldWUgKnEsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2Mi1cdGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciA9IHBhZ2VfcG9vbF9nZXRfZG1hX2RpcihxLVx1MDAzZXBhZ2VfcG9vbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MzpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IHEtXHUwMDNlcWRtYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY0Olx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IHFkbWEtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjUtXHRpbnQgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2OC1cdHdoaWxlIChkb25lIFx1MDAzYyBidWRnZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY5Olx0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXHUwMDI2cS1cdTAwM2VlbnRyeVtxLVx1MDAzZXRhaWxdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzA6XHRcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXHUwMDI2cS1cdTAwM2VkZXNjW3EtXHUwMDNldGFpbF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3MS1cdFx0dTMyIGhhc2gsIHJlYXNvbiwgbXNnMSwgZGVzY19jdHJsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6XHRcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtXHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY5NTpcdFx0ZGV2ID0gYWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoZXRoLCBkZXNjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk2LVx0XHRpZiAoSVNfRVJSKGRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MjgtXHRcdGlmIChuZXRkZXZfdXNlc19kc2EobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3Mjk6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cdTAwM2Vwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NTItXHRcdGlmIChyZWFzb24gPT0gUFBFX0NQVV9SRUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc1MzpcdFx0XHRhaXJvaGFfcHBlX2NoZWNrX3NrYihcdTAwMjZldGgtXHUwMDNlcHBlLVx1MDAzZWRldiwgcS1cdTAwM2Vza2IsIGhhc2gsXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjUyOAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3NDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIEFpcm9oYSBOUFUgRHJpdmVyIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGFpcm9oYV9ucHVgIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYCBkcml2ZXIuIEkgc2VlIHRoYXQgYGFpcm9oYV9ucHVgIGlzIGluaXRpYWxpemVkIHZpYSBgYWlyb2hhX3BwZV9ucHVfZ2V0KClgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgLiBBbmQsIGBhaXJvaGFfcHBlX29mZmxvYWRfc2V0dXAoKWAgaXRzZWxmIGlzIGNhbGxlZCBieSBmdW5jdGlvbnMgaW4gYGFpcm9oYV9ldGguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIGBhaXJvaGFfZXRoLmNgIGlzIGEgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVyLiBZZXMsIGl0IHNlZW1zIHRvIGJlIGFuIEV0aGVybmV0IGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIEFpcm9oYSBTb0NzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgc29tZSBzcGVjaWFsLXB1cnBvc2UgaGFyZHdhcmUsIGxpa2UgYSBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXIsIGJlY2F1c2UgaWYgc28sIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGV4Y2x1ZGVkIGZyb20gZnV6emluZy4gQnV0IG5vLCBpdCYjMzk7cyBqdXN0IGFuIFNvQy1pbnRlZ3JhdGVkIEV0aGVybmV0IGRyaXZlci4gVGhhdCYjMzk7cyBrZXkuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgY29kZSBmYWxscyB1bmRlciBzZXZlcmFsIGNhdGVnb3JpZXMsIGluY2x1ZGluZyBjb2RlIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIEFpcm9oYSBFdGhlcm5ldCBhIFBDSWUgY2FyZD8gTm8sIGl0JiMzOTtzIGJ1aWx0IGludG8gdGhlIFNvQy4KCkNhbiBTeXprYWxsZXIgZnV6eiB0aGlzPyBTeXprYWxsZXIgKmNhbiogZnV6eiBwbGF0Zm9ybSBkcml2ZXJzIGlmIHRoZXkgY2FuIGJlIGluc3RhbnRpYXRlZC4gU29tZXRpbWVzIHRoaXMgaGFwcGVucyB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHBzZXVkby1kZXZpY2VzLiBUaGUgcHJvbXB0IGlzIGNsZWFyLCB0aG91Z2g6IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGNvZGUgKmNhbiogYmUgZXhlY3V0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCBpcywgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCBtZWFuIEkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKSGVyZSYjMzk7cyB0aGUgcHJvYmxlbTogU29DLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlcnMsIGxpa2UgQWlyb2hhIChhbG9uZyB3aXRoIE1lZGlhVGVrIGFuZCBRdWFsY29tbSBJUFEpLCBhcmUgKm5vdCogdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXkgdXN1YWxseSByZXF1aXJlIHZlcnkgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgd2hpY2ggaXNuJiMzOTt0IHByZXNlbnQgaW4gc3RhbmRhcmQgc3l6a2FsbGVyIFFFTVUgaW1hZ2VzIHRoYXQgdXNlIGBxMzVgIG9yIGB2aXJ0YCBtYWNoaW5lIHR5cGVzLgoKSSBrbm93IFN5emthbGxlciBoYXMgYmVlbiBldm9sdmluZywgYW5kIEkmIzM5O20gYXdhcmUgdGhhdCBpdCYjMzk7cyBhZGRlZCBzdXBwb3J0IGZvciBwbGF0Zm9ybSBkcml2ZXJzIHRocm91Z2ggbWVjaGFuaXNtcyBsaWtlIGBzeXpfZGV2cmVzYCBvciBzaW1pbGFyLCBidXQgdGhlIGNvcmUgaXNzdWUgcmVtYWlucyBNTUlPLiBJZiB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IHRoZXJlLCBhbnkgYXR0ZW1wdCB0byByZWFkIG9yIHdyaXRlIHRvIE1NSU8gYWRkcmVzc2VzIHdpbGwgcmVzdWx0IGluIGEgY3Jhc2gsIGEgcHJvYmUgZmFpbHVyZSwgb3IganVzdCBnYXJiYWdlIGRhdGEuIEkgcmVtZW1iZXIgdGhlIGBzeXpfcGxhdGZvcm1fZGV2aWNlX2FkZGAgcHNldWRvLXN5c2NhbGwsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IGV4aXN0LiBTeXprYWxsZXIgdXNlcyBgc3l6X21vdW50X2ltYWdlYCBhbmQgY3JhZnRlZCBmaWxlc3lzdGVtcyB0byBsb2FkIHRoaW5ncywgbWF5YmUgaW5jbHVkaW5nIGRldmljZSB0cmVlIG92ZXJsYXlzLiBUaGUgbGF0ZXN0IGFkZGl0aW9ucyB0byBmdXp6aW5nIHBsYXRmb3JtIGRyaXZlcnMgZGVwZW5kIG9uIHdoYXQgdGhvc2Ugb3ZlcmxheXMgZG8uCgpJZiBhIERUIG92ZXJsYXkgaXMgdXNlZCB0byByZWdpc3RlciB0aGlzIGhhcmR3YXJlLCB0aGUgZHJpdmVyIHdpbGwgdHJ5IHRvIGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMClgLiBUaGUgb3ZlcmxheSB3aWxsIHNwZWNpZnkgc29tZSBwaHlzaWNhbCBhZGRyZXNzLiBJZiB0aGF0IGFkZHJlc3MgaXMgbm90IGJhY2tlZCBieSBSQU0gb3IgYSByZWFsIE1NSU8gZGV2aWNlIGluIFFFTVUsIGBpb3JlbWFwYCAqbWlnaHQqIHN1Y2NlZWQsIGJ1dCBhY3R1YWxseSByZWFkaW5nIG9yIHdyaXRpbmcgdG8gaXQgd2lsbCBjYXVzZSBhIHN5bmNocm9ub3VzIGV4dGVybmFsIGFib3J0IG9yIHBhZ2UgZmF1bHQgaWYgdGhlIGFkZHJlc3MgaXMgbm90IG1hcHBlZC4gT3IsIEkgbWlnaHQganVzdCBnZXQgYWxsIDB4RkZzLCB3aGljaCB3aWxsIGxpa2VseSBjYXVzZSBhIHByb2JlIGZhaWx1cmUuCgpMZXQmIzM5O3MgbG9vayBjbG9zZWx5IGF0IGBhaXJvaGFfbnB1X3Byb2JlYDogaXQgY2FsbHMgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZSgpYCB0byBtYXAgdGhlIE1NSU8gcmVnaW9uLiBUaGVuIGl0IHVzZXMgYGRldm1fcmVnbWFwX2luaXRfbW1pb2AgdG8gaW5pdGlhbGl6ZSBhIGByZWdtYXBgLiBDcnVjaWFsbHksIGl0IHRoZW4gY2FsbHMgYGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKClgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZSgpYC4gVGhpcyBmdW5jdGlvbiByZXF1ZXN0cyBmaXJtd2FyZSwgYW5kIGlmIHRoYXQgZmlybXdhcmUgaXNuJiMzOTt0IGZvdW5kLCBpdCBmYWlscy4gSWYgdGhlIHByb2JlIGZhaWxzLCBldmVyeXRoaW5nIGFmdGVyIGl0LCBsaWtlIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCwgaXMgbmV2ZXIgcmVhY2hlZC4KClRoZSByZWFjaGFiaWxpdHkgb2YgYGFpcm9oYV9ucHVfc2VuZF9tc2dgIGRlcGVuZHMgb24gc3VjY2Vzc2Z1bGx5IHByb2JpbmcgdGhlIGRyaXZlci4gYGFpcm9oYV9ucHVfc2VuZF9tc2dgIGlzIGNhbGxlZCBieSBgYWlyb2hhX25wdV9wcGVfaW5pdGAsIGBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmRgLCBldGMuLCB3aGljaCBhcmUgcmVhY2hlZCB0aHJvdWdoIGZ1bmN0aW9uIHBvaW50ZXJzIHZpYSBgbnB1LSZndDtvcHMucHBlX2luaXRgIGV0Yy4gVGhpcyBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgIGluIGBhaXJvaGFfcHBlLmNgLCB3aGljaCBpcyB1bHRpbWF0ZWx5IGNhbGxlZCBmcm9tIGBhaXJvaGFfZXRoX3Byb2JlYC4gVGhlcmVmb3JlLCBpdCByZXF1aXJlcyB0aGUgYGFpcm9oYV9ldGhgIGRyaXZlciB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIGBhaXJvaGFfZXRoYCBpcyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyLiBJZiB0aGVyZSBpcyBubyBBaXJvaGEgaGFyZHdhcmUsIHRoaXMgcHJvYmUgd2lsbCBmYWlsLgoKSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBmYWN0Cgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthaXJvaGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNjg5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSAmIzQzOz0gYWlyb2hhLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjg6YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgJiM0Mzs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICYjNDM7PSBhaXJvaGFfbnB1Lm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzojaW5jbHVkZSBcJiMzNDthaXJvaGFfcmVncy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4OiNpbmNsdWRlIFwmIzM0O2Fpcm9oYV9ldGguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA6dTMyIGFpcm9oYV9ycih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcdTAwMjYgfm1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4OnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKHN0cnVjdCBhaXJvaGFfaXJxX2JhbmsgKmlycV9iYW5rLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cdFx0XHRcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFx1MDAyNnFkbWEtXHUwMDNlaXJxX2JhbmtzWzBdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEtXHRpcnFfYmFuay1cdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyOlx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cdFx0ICAgICAgIGlycV9iYW5rLVx1MDAzZWlycW1hc2tbaW5kZXhdKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3Olx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjI6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMtXHRcdFx0XHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY1Olx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVx0XHRcdFx0ICAgIGludCBpbmRleCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzE6XHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIG1hc2ssIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NDpzdGF0aWMgaW50IGFpcm9oYV9zZXRfbWFjYWRkcihzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgY29uc3QgdTggKmFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzYtXHR1OCByZWZfYWRkcltFVEhfQUxFTl0gX19hbGlnbmVkKDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXHUwMDNlZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShldGgtXHUwMDNlcG9ydHMpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo4NjpcdFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cdTAwM2Vwb3J0c1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXHRcdGludCBqO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTItXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cdTAwM2VkZXZzKTsgaiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTM6XHRcdFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTQtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDA6XHRcdFx0aWYgKGFpcm9oYV9pc19sYW5fZ2RtX2RldihpdGVyX2RldikgIT1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlx0XHRcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTAyLVx0XHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzNDpcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cdHZhbCA9IChhZGRyWzBdIFx1MDAzY1x1MDAzYyAxNikgfCAoYWRkclsxXSBcdTAwM2NcdTAwM2MgOCkgfCBhZGRyWzJdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCByZWcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUlOKHJlZyksIGxtaW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNQVgocmVnKSwgbG1heCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlx0YWlyb2hhX3BwZV9pbml0X3VwZF9tZW0oZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDY6c3RhdGljIHZvaWQgYWlyb2hhX3NldF9nZG1fcG9ydF9md2RfY2ZnKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXHRcdFx0XHRcdHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0OTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fT0NGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX09DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fTUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTItXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX01DRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fVUNGUV9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXHRcdCAgICAgIEZJRUxEX1BSRVAoR0RNX1VDRlFfTUFTSywgdmFsKSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1OTpzdGF0aWMgaW50IGFpcm9oYV9zZXRfdmlwX2Zvcl9nZG1fcG9ydChzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldiwgYm9vbCBlbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYyOlx0c3RydWN0IGFpcm9oYV9ldGggKmV0aCA9IGRldi1cdTAwM2VldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2My1cdHUzMiB2aXBfcG9ydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2Ni1cdGlmIChlbmFibGUpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3Olx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX1ZJUF9QT1JUX0VOLCB2aXBfcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcdFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzA6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzE6XHRcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVx0Zm9yIChwID0gMTsgcCBcdTAwM2M9IEFSUkFZX1NJWkUoZXRoLVx1MDAzZXBvcnRzKTsgcCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTgyOlx0XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKHApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODMtXHRcdFx0ICAgICAgR0RNX1RDUF9DS1NVTV9NQVNLIHwgR0RNX1VEUF9DS1NVTV9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVx0XHRcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NTpcdFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg2LVx0XHRcdCAgICAgIEdETV9TSE9SVF9MRU5fTUFTSyB8IEdETV9MT05HX0xFTl9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9WTEFOX0NUUkwoMSksIENETV9WTEFOX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fVkxBTl9NQVNLLCAweDgxMDApKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTQ6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUEFEKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTc6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3ZpcF9zZXR1cChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMyksIEVUSF9QX1BQUF9ESVNDKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigzKSwgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig0KSwgUFBQX0xDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDYpLCBQUFBfSVBDUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOS1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDcpLCBQUFBfQ0hBUCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxMzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNy1cdC8qIEJPT1RQICgweDQzKSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTg6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oOCksIDB4NDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjAtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVx0LyogQk9PVFAgKDB4NDQpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNDpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjktXHQvKiBJU0FLTVAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEwKSwgMHgxZjQwMWY0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMxOlx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMi1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMSksIFBQUF9JUFY2Q1ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM3LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQwLVx0LyogREhDUHY2ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MTpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMiksIDB4MjIyMDIyMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDMtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDY6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTkpLCBQUFBfUEFQKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxOSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0OC1cdFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cdC8qIEVUSC1cdTAwM2VFVEhfUF8xOTA1ICgweDg5M2EpICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMCksIDB4ODkzYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTQtXHRcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1NjpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTc6XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDIxKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVx0XHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjYxOnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKHN0cnVjdCBhaXJvaGFfZXRoICpldGgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cdFx0XHRcdFx0ICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cdFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2OTpcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzAtXHRcdFx0ICAgICBQU0VfQ0ZHX09RX1JTVl9NQVNLKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjczOnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzQtXHRcdFx0XHRcdCAgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsIFBTRV9DRkdfT1FfUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Ny1cdFx0ICAgICAgRklFTERfUFJFUChQU0VfQ0ZHX09RX1JTVl9NQVNLLCB2YWwpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc4Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXHRcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODg6XHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVx0XHRcdFx0ICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NDpcdHUzMiBvcmlnX3ZhbCA9IGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVx0dTMyIHRtcCwgYWxsX3JzdiwgZnFfbGltaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3Olx0YWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVx0LyogbW9kaWZ5IGFsbCByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAwOlx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAxLVx0YWxsX3JzdiAmIzQzOz0gKHZhbCAtIG9yaWdfdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzAyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDUtXHQvKiBtb2RpZnkgaHRoZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDY6XHRmcV9saW1pdCA9IGFpcm9oYV9mZV9nZXQoZXRoLCBQU0VfRlFfQ0ZHLCBQU0VfRlFfTElNSVRfTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MjA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwODpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXHRcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMi1cdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9TSEFSRV9VU0VEX1RIRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVx0XHQgICAgICBQU0VfU0hBUkVfVVNFRF9NVEhEX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTYtXHR0bXAgPSAoMyAqIHRtcCkgXHUwMDNlXHUwMDNlIDI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxNzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cdFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0MTpcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXHRcdHUzMiBhbGxfcnN2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVx0XHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ1Olx0XHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXHRcdGFsbF9yc3YgJiM0Mzs9IFBTRV9SU1ZfUEFHRVMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXHRcdFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ4Olx0XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OS1cdFx0XHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVx0Zm9yIChxID0gMDsgcSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0xXTsgcSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1NDpcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU1LVx0XHRcdFx0XHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTctXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTFdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0xLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2MS1cdGZvciAocSA9IDY7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjI6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTIsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjMtXHQvKiBHRE0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2NC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNjU6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTMsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2Ni1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVx0XHRpZiAocSBcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3MDpcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzEtXHRcdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXHRcdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlx0XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzYtXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzc3Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0yLCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzgtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNM10gLSAxOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzgxOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgyLVx0LyogQ0RNNCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXHRmb3IgKHEgPSA0OyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg0Olx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODUtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg2Olx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cdFx0LyogUFBFMiAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg5LVx0XHRcdGlmIChxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdIC8gMilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlx0XHRcdFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkxLVx0XHRcdFx0XHRcdFx0IHEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTMtXHRcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XHRcdFx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTUtXHRcdFx0XHRcdFx0XHQgcSwgMCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTktXHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTRdOyBxJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlx0XHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE00LCBxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXHRcdFx0XHRcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMy1cdGZvciAocSA9IDA7IHEgXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHEmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDQ6XHRcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTUsIHEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwNS1cdFx0XHRcdFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDg6c3RhdGljIGludCBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTY6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cdFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjA6XHRcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIxOlx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIyLVx0XHRcdFx0XHR2YWwgXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Mjk6XHRcdFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fREFUQSwgMHgwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMzLVx0XHRcdCAgICAgIE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcdFx0XHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNTpcdFx0XHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDM2LVx0XHRcdFx0XHRcdHZhbCBcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTAtXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yMiBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1Mi1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ1NTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMDgpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU4LVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjEgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjItXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMSwgQ1JTTl8yNCBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2NC1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ2NzpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDcxLVx0LyogQ0RNMl9DUlNOX1FTRUwgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMDggXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzUtXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzY6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yMSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3Ny1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cdFx0XHRcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ4MDpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFx1MDAzZVx1MDAzZSAyKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVx0XHQgICAgICBDRE1fQ1JTTl9RU0VMX1JFQVNPTl9NQVNLKENSU05fMjIpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgzLVx0XHRcdFx0IENETV9DUlNOX1FTRUxfUTEpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjQgXHUwMDNlXHUwMDNlIDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXHRcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODctXHRcdFx0XHQgQ0RNX0NSU05fUVNFTF9RNikpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9DUlNOX1FTRUwoMiwgQ1JTTl8yNSBcdTAwM2VcdTAwM2UgMiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4OS1cdFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk0OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2Olx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTk6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDAtXHRcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXHRcdCAgICAgIFBTRV9JUV9SRVMyX1A1X01BU0sgfCBQU0VfSVFfUkVTMl9QNF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA2LVx0LyogZW5hYmxlIEZFIGNvcHkgZW5naW5lIGZvciBLQS9EUEkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1BDRV9DRkcsIFBDRV9EUElfRU5fTUFTSyB8IFBDRV9LQV9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA4LVx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMSksIENETV9WSVBfUVNFTF9NQVNLLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXHRcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZJUF9RU0VMX01BU0ssIDB4NCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fVklQX1FTRUxfTUFTSyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEyLVx0XHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTEzLVx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTQ6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9TUkNfUE9SVF9TRVQoNCksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cdFx0ICAgICAgR0RNX1NQT1JUX09GRjJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjItXHQvKiBzZXQgUFNFIFBhZ2UgYXMgMTI4QiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX0RNQV9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjQtXHRcdCAgICAgIEZFX0RNQV9HTE9fTDJfU1BBQ0VfTUFTSyB8IEZFX0RNQV9HTE9fUEdfU1pfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cdFx0ICAgICAgRkVfRE1BX0dMT19QR19TWl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1JTVF9HTE9fQ0ZHLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjgtXHRcdCAgICAgRkVfUlNUX0NPUkVfTUFTSyB8IEZFX1JTVF9HRE0zX01CSV9BUkJfTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM1Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM2Olx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMSwgQklUKDI4KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDIsIEJJVCg0KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzODpcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MDpcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQxOlx0YWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KGV0aCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQzOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fTUlTQ19DRkcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cdFx0ICAgICAgR0RNMl9SRE1fQUNLX1dBSVRfUFJFRl9NQVNLIHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVx0XHQgICAgICBHRE0yX0NITl9WTERfTU9ERV9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2Olx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX09BTV9RU0VMX01BU0ssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Ny1cdFx0ICAgICAgRklFTERfUFJFUChDRE1fT0FNX1FTRUxfTUFTSywgMTUpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cdC8qIE5QVSBDb3JlLTMsIE5QVSBCcmlkZ2UgQ2hhbm5lbC0zICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1MTpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUyLVx0XHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1NS1cdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1NjpcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVx0XHQgICAgICBJUF9BU1NFTUJMRV9QT1JUX01BU0sgfCBJUF9BU1NFTUJMRV9OQlFfTUFTSyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYxOlx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjI6XHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE00X0lEWCksIEdETV9QQURfRU5fTUFTSyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY0LVx0LyogRW5hYmxlIHNwbGl0IGZvciBNSUIgY291bnRlcnMgZm9yIEdETTMgYW5kIEdETTQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNM19JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjYtXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ny1cdFx0ICAgICAgRkVfR0RNX1JYX01JQl9TUExJVF9FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY4Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXHRcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcdGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1FVRVVFX1hGQ19NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc1Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3Ny1cdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Nzg6XHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9DSE5fUkxTKDIpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXHRcdCAgICAgIE1CSV9SWF9BR0VfU0VMX01BU0sgfCBNQklfVFhfQUdFX1NFTF9NQVNLLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgzLVx0LyogZGlzYWJsZSBJRkMgYnkgZGVmYXVsdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1NSX0lGQ19DRkcsIEZFX0lGQ19FTl9NQVNLKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg3Olx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4OTpcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk0Olx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cdTAwM2VxZG1hO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTUtXHRpbnQgcWlkID0gcSAtIFx1MDAyNnFkbWEtXHUwMDNlcV9yeFswXTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5OC1cdHdoaWxlIChxLVx1MDAzZXF1ZXVlZCBcdTAwM2MgcS1cdTAwM2VuZGVzYyAtIDEpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5Olx0XHRzdHJ1Y3QgYWlyb2hhX3F1ZXVlX2VudHJ5ICplID0gXHUwMDI2cS1cdTAwM2VlbnRyeVtxLVx1MDAzZWhlYWRdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XHRcdHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjID0gXHUwMDI2cS1cdTAwM2VkZXNjW3EtXHUwMDNlaGVhZF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cdFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzAtXHRpZiAobmZyYW1lcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlx0XHRhaXJvaGFfcWRtYV9ybXcocWRtYSwgUkVHX1JYX0NQVV9JRFgocWlkKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVx0XHRcdFx0UlhfUklOR19DUFVfSURYX01BU0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzODpzdGF0aWMgc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjM5OmFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgsIHN0cnVjdCBhaXJvaGFfcWRtYV9kZXNjICpkZXNjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDE6XHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXHR1MTYgcCwgZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjYwOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cdTAwM2VwYWdlX3Bvb2wpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVx1MDAzZXFkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBxZG1hLVx1MDAzZWV0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVx0aW50IHFpZCA9IHEgLSBcdTAwMjZxZG1hLVx1MDAzZXFfcnhbMF07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjgtXHR3aGlsZSAoZG9uZSBcdTAwM2MgYnVkZ2V0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2OTpcdFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFx1MDAyNnEtXHUwMDNlZW50cnlbcS1cdTAwM2V0YWlsXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcwOlx0XHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFx1MDAyNnEtXHUwMDNlZGVzY1txLVx1MDAzZXRhaWxdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzEtXHRcdHUzMiBoYXNoLCByZWFzb24sIG1zZzEsIGRlc2NfY3RybDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjcyOlx0XHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjczLVx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2OTU6XHRcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5Ni1cdFx0aWYgKElTX0VSUihkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzI4LVx0XHRpZiAobmV0ZGV2X3VzZXNfZHNhKG5ldGRldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzI5Olx0XHRcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBkZXYtXHUwMDNlcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVx0XHRpZiAocmVhc29uID09IFBQRV9DUFVfUkVBU09OX0hJVF9VTkJJTkRfUkFURV9SRUFDSEVEKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XHRcdFx0YWlyb2hhX3BwZV9jaGVja19za2IoXHUwMDI2ZXRoLVx1MDAzZXBwZS1cdTAwM2VkZXYsIHEtXHUwMDNlc2tiLCBoYXNoLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE2MTgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBXb3J0aEZ1enppbmcgQ3JpdGVyaWEqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJJiMzOTt2ZSBzcG90dGVkIGBhaXJvaGFfZXRoLmNgLCBgYWlyb2hhX3BwZS5jYCwgYW5kIGBhaXJvaGFfbnB1LmNgIGluIHRoZSBwYXRjaC4gTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhpcyBhZ2FpbnN0IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjb2RlIHBhdGhzIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLgoKVGhlIGtleSBxdWVzdGlvbiBpczogSXMgYGFpcm9oYV9ucHUuY2AgcmVhY2hhYmxlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IENvbnNpZGVyaW5nIG15IHVuZGVyc3RhbmRpbmcsIG5vLCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciB0YWlsb3JlZCBmb3IgYSBwYXJ0aWN1bGFyIFN5c3RlbS1vbi1hLUNoaXAgKFNvQykuIFRoaXMgZHJpdmVyIG5lY2Vzc2l0YXRlcyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBvciBhdCBsZWFzdCBpdHMgYWNjdXJhdGUgZW11bGF0aW9uLCB3aGljaCwgSSYjMzk7bSBwcmV0dHkgc3VyZSwgUUVNVSBkb2VzbiYjMzk7dCBvZmZlciBmb3IgdGhpcyBzcGVjaWZpYyBTb0MuCgpJIHJlY2FsbCBTeXprYWxsZXIgaGFzIG1lY2hhbmlzbXMgZm9yIGV2YWx1YXRpbmcgcGF0Y2hlcyBldmVuIGlmIHRoZXkgY2FuJiMzOTt0IGJlIGZ1bGx5IGZ1enplZC4gSXQmIzM5O2xsIGF0dGVtcHQgdG8gYXBwbHkgdGhlIHBhdGNoLCBjaGVjayBjb21waWxhdGlvbiwgb3IgdHJ5IGEgZnV6emluZyBydW4gdG8gZGV0ZXJtaW5lIGlmIGl0IGNhbiBmaW5kIGFueXRoaW5nLiBCdXQgdGhhdCYjMzk7cyBub3QgdGhlIHByaW1hcnkgY29uY2VybiBoZXJlLgoKVGhlIHByb21wdCBpcyBjcnlzdGFsIGNsZWFyOiBpZiBpdCBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSByZWFjaGFibGUsIGl0JiMzOTtzIHdvcnRoIGZ1enppbmcuIElmIGl0JiMzOTtzIGluYWNjZXNzaWJsZSwgdGhlbiBpdCYjMzk7cyBub3QuIEdpdmVuIG15IGFzc2Vzc21lbnQgdGhhdCBgYWlyb2hhX25wdS5jYCAqaXMqIGluYWNjZXNzaWJsZSBpbiBRRU1VIGJlY2F1c2UgaXQmIzM5O3MgaGFyZHdhcmUtc3BlY2lmaWMsIGl0IGxvb2tzIGxpa2UgYSBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyB0aGUgY29ycmVjdCBkZXRlcm1pbmF0aW9uLgoKSG93ZXZlciwgSSBzaG91bGQgZG91YmxlLWNoZWNrLiBJJiMzOTtsbCBzZWFyY2ggdGhlIGB0b29scy9gIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2AgZGlyZWN0b3JpZXMgZm9yIGFueSBtb2NrIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBzdXBwb3J0IGZvciBBaXJvaGEgaGFyZHdhcmUuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gYXZvaWQgbWFraW5nIGFueSBhc3N1bXB0aW9ucy4gSWYgSSBmaW5kIHNvbWV0aGluZywgbXkgYXNzZXNzbWVudCBtaWdodCBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9jayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQyOQoJCQkJCQkJb3V0cHV0OiA5NwoJCQkJCQkJdGhvdWdodHM6IDE1NDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIG5vIG1vY2t1cHMgYXJlIG5lZWRlZC4gSSYjMzk7bSBmb2N1c2luZyBvbiByZWFjaGFiaWxpdHkgaW4gYSBmdXp6aW5nIGNvbnRleHQsIGFuZCB0aGF0IG1lYW5zIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYXJlIHRoZSBrZXkgY29uc2lkZXJhdGlvbi4gIElzIGBDT05GSUdfTkVUX0FJUk9IQV9OUFVgIGV2ZW4gZW5hYmxlZCBpbiBzeXprYWxsZXI/ICBFdmVuIGlmIGl0ICppcyosIHRoaXMgZHJpdmVyLCBhIGBwbGF0Zm9ybV9kcml2ZXJgLCBpcyBnb2luZyB0byBuZWVkIGEgY29ycmVzcG9uZGluZyBgcGxhdGZvcm1fZGV2aWNlYCB0byB0cmlnZ2VyIHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiAgU3l6a2FsbGVyIG1pZ2h0ICp0cnkqIHRvIGNyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB1c2luZyBgc3l6X2RldnJlc2Agb3Igc2ltaWxhciwgYnV0IGV2ZW4gdGhlbiB0aGUgYHByb2JlYCBmdW5jdGlvbiBpcyBnb2luZyB0byB0cnkgdG8gYGlvcmVtYXBgIHRoZSBwaHlzaWNhbCBhZGRyZXNzLiBBbmQgaWYgdGhhdCBoYXJkd2FyZSBpc24mIzM5O3QgKmFjdHVhbGx5KiB0aGVyZSwgdGhhdCYjMzk7cyBqdXN0IGdvaW5nIHRvIGNyYXNoIG9yIGZhaWwuCgpIb2xkIG9uLCBJIHRob3VnaHQgbWF5YmUgc3l6a2FsbGVyIGhhcyBzb21lIGtpbmQgb2YgcHNldWRvLXN5c2NhbGwgbGlrZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgPyBObywgdGhhdCBkb2VzbiYjMzk7dCBleGlzdC4gTm93LCB3aGF0IGlmIGl0IHdhcyBhIFBDSSBkcml2ZXI/IE5vLCBpdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgc28gdGhhdCYjMzk7cyBpcnJlbGV2YW50LgoKQWxyaWdodCwgYmFjayB0byB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IGBhaXJvaGFfbnB1LmNgLgoKYGBgYwpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7Cgl7IC5jb21wYXRpYmxlID0gJiMzNDthaXJvaGEsZW43NTgxLW5wdSYjMzQ7LCAuZGF0YSA9ICZhbXA7ZW43NTgxX25wdV9zb2NfZGF0YSB9LAoJeyAuY29tcGF0aWJsZSA9ICYjMzQ7YWlyb2hhLGFuNzU4My1ucHUmIzM0OywgLmRhdGEgPSAmYW1wO2FuNzU4M19ucHVfc29jX2RhdGEgfSwKCXsgLyogc2VudGluZWwgKi8gfQp9OwpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9haXJvaGFfbnB1X21hdGNoKTsKCnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0gewoJLnByb2JlID0gYWlyb2hhX25wdV9wcm9iZSwKCS5yZW1vdmUgPSBhaXJvaGFfbnB1X3JlbW92ZSwKCS5kcml2ZXIgPSB7CgkJLm5hbWUgPSAmIzM0O2Fpcm9oYS1ucHUmIzM0OywKCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9haXJvaGFfbnB1X21hdGNoLAoJfSwKfTsKbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7CmBgYAoKT2theSwgaXQmIzM5O3MgYSBzdGFuZGFyZCBEZXZpY2UgVHJlZSBiYXNlZCBwbGF0Zm9ybSBkcml2ZXIuIEluIFFFTVUsIHRoZSBkZXZpY2UgdHJlZSBpcyBwcm92aWRlZCBieSB0aGUgbWFjaGluZSB0eXBlLCBlLmcuLCAmIzM5O3ZpcnQmIzM5Oy4gQW5kIHRoZSAmIzM5O3ZpcnQmIzM5OyBtYWNoaW5lIHR5cGUgKipkb2VzbiYjMzk7dCoqIGluY2x1ZGUgc29tZXRoaW5nIGxpa2UgJiMzNDthaXJvaGEsZW43NTgxLW5wdSYjMzQ7LiBCb29tLiAgVGhlIGRldmljZSB3b24mIzM5O3QgYmUgaW5zdGFudGlhdGVkLCBhbmQgYHByb2JlYCB3b24mIzM5O3QgYmUgY2FsbGVkLiAgSXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gaGFwcGVuIGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkNvdWxkIHN5emthbGxlciB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IEV2ZW4gaWYgaXQgZGlkLCB0aGF0IGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VgIGNhbGwgd2lsbCBtYXAgYSBwaHlzaWNhbCBhZGRyZXNzLiAgUUVNVSBpc24mIzM5O3QgZW11bGF0aW5nIEFpcm9oYSBOUFUgcmVnaXN0ZXJzIGF0IHRoYXQgYWRkcmVzcy4gIFJlYWRpbmcgZnJvbSB0aGF0IGFkZHJlc3Mgd2lsbCBwcm9iYWJseSBjYXVzZSBhIGJ1cyBlcnJvciwgb3IgcmV0dXJuIGdhcmJhZ2UuIEVpdGhlciB3YXksIGl0JiMzOTtzIGEgZGVhZCBlbmQuCgpTcGVjaWZpY2FsbHkgaW4gYGFpcm9oYV9ucHVfcHJvYmVgOgoKYGBgYwoJZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCAmYW1wO3Jlcyk7CmBgYAoKSW5zaWRlIGBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZWA6CgpgYGBjCgkvKiBMb2FkIHJ2MzIgbnB1IGZpcm13YXJlICovCglyZXQgPSBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBhZGRyLCBzb2MtJmd0O2Z3X3J2MzIubmFtZSwKCQkJCSAgICAgICBzb2MtJmd0O2Z3X3J2MzIubWF4X3NpemUpOwpgYGAKCklmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgaW4gdGhlIHJvb3RmcywgaXQmIzM5O3MgZ29pbmcgdG8gZmFpbCAqdGhlcmUqLCBidXQgZXZlbiBpZiBpdCYjMzk7cyB0aGVyZSBpdCBpcyB3cml0aW5nIHJlZ2lzdGVycyBhbmQgd2FpdGluZzoKCmBgYGMKCWlmICghYWlyb2hhX25wdV93bGFuX21zZ19nZXQobnB1LCAwLCBXTEFOX0ZVTkNfR0VUX1dBSVRfTlBVX1ZFUlNJT04sCgkJCQkgICAgICZhbXA7dmFsLCBzaXplb2YodmFsKSwgR0ZQX0tFUk5FTCkpCgkJZGV2X2luZm8oZGV2LCAmIzM0O05QVSB2ZXJzaW9uOiAlZFxuJiMzNDssIHZhbCk7CmBgYAoKYGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0YCB0aGVuIGNhbGxzIGBfX2Fpcm9oYV9ucHVfc2VuZF9tc2dgLCB3aGVyZSB3ZSBzZWU6CgpgYGBjCglyZWdtYXBfd3JpdGUobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMCkgJiM0Mzsgb2Zmc2V0LCBkbWFfYWRkcik7CglyZWdtYXBfd3JpdGUobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMSkgJiM0Mzsgb2Zmc2V0LCBsZW4pOwoJcmVnbWFwX3JlYWQobnB1LSZndDtyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgJiM0Mzsgb2Zmc2V0LCAmYW1wO3ZhbCk7CglyZWdtYXBfCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTI6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQWlyb2hhIE5QVSBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgU29DIGRyaXZlciBmb3IgQWlyb2hhIEVONzU4MS9BTjc1ODMgcm91dGVycy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBwYXRocyBpbXBvc3NpYmxlIHRvIHJlYWNoIGFuZCB0ZXN0IGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDEyOjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo0NS41NTA5MjIxOTJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTc4ODE2MTI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgTlBVIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgZHJpdmVyIGZvciBBaXJvaGEgRU43NTgxL0FONzU4MyByb3V0ZXJzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo0NS41NTA5MjgyNDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzczMDA3NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ODFjYjhmYWZmZDUxZTlmZWI5MTZmMGNhMjY2M2ZkY2ExMWQ3OTI0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDEyOjA2OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXFxuaW5kZXggYjY3OWJlZDk1MmRlMy4uMmJhNzhiZjBlOTdiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZjb3JlZHVtcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mX25ldC5oXFx1MDAzZVxcbkBAIC0yMyw2ICsyNCw4IEBAXFxuICNkZWZpbmUgTlBVX0VONzU4MV9GSVJNV0FSRV9SVjMyX01BWF9TSVpFXFx0MHgyMDAwMDBcXG4gI2RlZmluZSBOUFVfRU43NTgxX0ZJUk1XQVJFX0RBVEFfTUFYX1NJWkVcXHQweDEwMDAwXFxuICNkZWZpbmUgTlBVX0RVTVBfU0laRVxcdFxcdFxcdFxcdDUxMlxcbisvKiBNYXhpbXVtIG1haWxib3ggRE1BIHBheWxvYWQgKFBQRSB+MjggYnl0ZXMsIFdMQU4gVExWIHVwIHRvIDI0KS4gKi9cXG4rI2RlZmluZSBBSVJPSEFfTlBVX01CT1hfU0laRVxcdFxcdFxcdDI1NlxcbiBcXG4gI2RlZmluZSBSRUdfTlBVX0xPQ0FMX1NSQU1cXHRcXHQweDBcXG4gXFxuQEAgLTE2MCwyMyArMTYzLDMzIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XFxuIFxcdERFQ0xBUkVfRkxFWF9BUlJBWSh1OCwgZCk7XFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IGFpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuLVxcdFxcdFxcdCAgICAgICB2b2lkICpwLCBpbnQgc2l6ZSlcXG4rc3RhdGljIGludCBfX2Fpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuK1xcdFxcdFxcdFxcdCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLCB2b2lkICpyZXBseSxcXG4rXFx0XFx0XFx0XFx0IHUxNiByZXBseV9sZW4pXFxuIHtcXG4tXFx0dTE2IGNvcmUgPSAwOyAvKiBGSVhNRSAqL1xcbi1cXHR1MzIgdmFsLCBvZmZzZXQgPSBjb3JlIFxcdTAwM2NcXHUwMDNjIDQ7XFxuK1xcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi9cXG4gXFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcXG4rXFx0dW5zaWduZWQgaW50IG1hcF9sZW4gPSBBTElHTihsZW4sIFNNUF9DQUNIRV9CWVRFUyk7XFxuK1xcdHUzMiB2YWwsIG9mZnNldCA9IDA7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cXHUwMDNlZGV2LCBwLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCk7XFxuK1xcdGlmIChsZW4gXFx1MDAzYz0gMCB8fCBsZW4gXFx1MDAzZSBBSVJPSEFfTlBVX01CT1hfU0laRSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbitcXHRpZiAocmVwbHkgXFx1MDAyNlxcdTAwMjYgcmVwbHlfbGVuIFxcdTAwM2UgbGVuKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2Y29yZS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRtZW1jcHkoY29yZS1cXHUwMDNlYnVmLCBkYXRhLCBsZW4pO1xcbitcXG4rXFx0ZG1hX2FkZHIgPSBkbWFfbWFwX3NpbmdsZShucHUtXFx1MDAzZWRldiwgY29yZS1cXHUwMDNlYnVmLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcdHJldCA9IGRtYV9tYXBwaW5nX2Vycm9yKG5wdS1cXHUwMDNlZGV2LCBkbWFfYWRkcik7XFxuIFxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbY29yZV0ubG9jayk7XFxuK1xcdFxcdGdvdG8gdW5sb2NrO1xcbiBcXG4gXFx0cmVnbWFwX3dyaXRlKG5wdS1cXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDApICsgb2Zmc2V0LCBkbWFfYWRkcik7XFxuLVxcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgc2l6ZSk7XFxuK1xcdHJlZ21hcF93cml0ZShucHUtXFx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgbGVuKTtcXG4gXFx0cmVnbWFwX3JlYWQobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgKyBvZmZzZXQsIFxcdTAwMjZ2YWwpO1xcbiBcXHRyZWdtYXBfd3JpdGUobnB1LVxcdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgKyBvZmZzZXQsIHZhbCArIDEpO1xcbiBcXHR2YWwgPSBGSUVMRF9QUkVQKE1CT1hfTVNHX0ZVTkNfSUQsIGZ1bmNfaWQpIHwgTUJPWF9NU0dfV0FJVF9SU1A7XFxuQEAgLTE4OSwxMyArMjAyLDIzIEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcXG4gXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgRklFTERfR0VUKE1CT1hfTVNHX1NUQVRVUywgdmFsKSAhPSBOUFVfTUJPWF9TVUNDRVNTKVxcbiBcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiBcXG4tXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbY29yZV0ubG9jayk7XFxuK1xcdGRtYV91bm1hcF9zaW5nbGUobnB1LVxcdTAwM2VkZXYsIGRtYV9hZGRyLCBtYXBfbGVuLCBETUFfQklESVJFQ1RJT05BTCk7XFxuIFxcbi1cXHRkbWFfdW5tYXBfc2luZ2xlKG5wdS1cXHUwMDNlZGV2LCBkbWFfYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwpO1xcbitcXHQvKiBDb3B5IHRoZSB0cmFpbGluZyByZXBseV9sZW4gYnl0ZXMgb2YgdGhlIHJlc3BvbnNlLiAqL1xcbitcXHRpZiAoIXJldCBcXHUwMDI2XFx1MDAyNiByZXBseSlcXG4rXFx0XFx0bWVtY3B5KHJlcGx5LCBjb3JlLVxcdTAwM2VidWYgKyBsZW4gLSByZXBseV9sZW4sIHJlcGx5X2xlbik7XFxuK3VubG9jazpcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNvcmUtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxcbitcXHRcXHRcXHQgICAgICAgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4re1xcbitcXHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcXG4gXFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKmZ3X25hbWUsIGludCBmd19tYXhfc2l6ZSlcXG4ge1xcbkBAIC00OTcsOSArNTIwLDggQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgaWZpbmRleCxcXG4gXFx0d2xhbl9kYXRhLVxcdTAwM2VmdW5jX3R5cGUgPSBOUFVfT1BfR0VUO1xcbiBcXHR3bGFuX2RhdGEtXFx1MDAzZWZ1bmNfaWQgPSBmdW5jX2lkO1xcbiBcXG4tXFx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuKTtcXG4tXFx0aWYgKCFlcnIpXFxuLVxcdFxcdG1lbWNweShkYXRhLCB3bGFuX2RhdGEtXFx1MDAzZWQsIGRhdGFfbGVuKTtcXG4rXFx0ZXJyID0gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4sXFxuK1xcdFxcdFxcdFxcdCAgICBkYXRhLCBkYXRhX2xlbik7XFxuIFxcdGtmcmVlKHdsYW5fZGF0YSk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbkBAIC03NzAsNiArNzkyLDE4IEBAIHN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3Jlcyk7IGkrKykge1xcbitcXHRcXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbaV07XFxuK1xcdFxcdHZvaWQgKnJhdztcXG4rXFxuK1xcdFxcdHJhdyA9IGRldm1fa21hbGxvYyhkZXYsIEFJUk9IQV9OUFVfTUJPWF9TSVpFICsgU01QX0NBQ0hFX0JZVEVTLFxcbitcXHRcXHRcXHRcXHQgICBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0aWYgKCFyYXcpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0Y29yZS1cXHUwMDNlYnVmID0gUFRSX0FMSUdOKHJhdywgU01QX0NBQ0hFX0JZVEVTKTtcXG4rXFx0fVxcbitcXG4gXFx0ZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCBcXHUwMDI2cmVzKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsIFxcXCJmYWlsZWQgdG8gcnVuIG5wdSBmaXJtd2FyZVxcXFxuXFxcIik7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcXG5pbmRleCA3NTg5ZmNjZmVlZjZkLi5mNjM1NzY2ZTNkYmEyIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcXG5AQCAtMTczLDYgKzE3Myw3IEBAIHN0cnVjdCBhaXJvaGFfbnB1IHtcXG4gXFx0XFx0LyogcHJvdGVjdCBjb25jdXJyZW50IG5wdSBtZW1vcnkgYWNjZXNzZXMgKi9cXG4gXFx0XFx0c3BpbmxvY2tfdCBsb2NrO1xcbiBcXHRcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd2R0X3dvcms7XFxuK1xcdFxcdHZvaWQgKmJ1ZjsgLyogbWFpbGJveCBETUEgYm91bmNlIGJ1ZmZlciAqL1xcbiBcXHR9IGNvcmVzW05QVV9OVU1fQ09SRVNdO1xcbiBcXG4gXFx0aW50IGlycXNbTlBVX05VTV9JUlFdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo0Ni45ODkwNDY4NDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NDM1MDAxOTk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ4MWNiOGZhZmZkNTFlOWZlYjkxNmYwY2EyNjYzZmRjYTExZDc5MjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxMjowNjo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jXG5pbmRleCBiNjc5YmVkOTUyZGUzLi4yYmE3OGJmMGU5N2I0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuY1xuQEAgLTUsNiArNSw3IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2Y29yZWR1bXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXBwaW5nLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9vZl9uZXQuaFx1MDAzZVxuQEAgLTIzLDYgKzI0LDggQEBcbiAjZGVmaW5lIE5QVV9FTjc1ODFfRklSTVdBUkVfUlYzMl9NQVhfU0laRVx0MHgyMDAwMDBcbiAjZGVmaW5lIE5QVV9FTjc1ODFfRklSTVdBUkVfREFUQV9NQVhfU0laRVx0MHgxMDAwMFxuICNkZWZpbmUgTlBVX0RVTVBfU0laRVx0XHRcdFx0NTEyXG4rLyogTWF4aW11bSBtYWlsYm94IERNQSBwYXlsb2FkIChQUEUgfjI4IGJ5dGVzLCBXTEFOIFRMViB1cCB0byAyNCkuICovXG4rI2RlZmluZSBBSVJPSEFfTlBVX01CT1hfU0laRVx0XHRcdDI1NlxuIFxuICNkZWZpbmUgUkVHX05QVV9MT0NBTF9TUkFNXHRcdDB4MFxuIFxuQEAgLTE2MCwyMyArMTYzLDMzIEBAIHN0cnVjdCB3bGFuX21ib3hfZGF0YSB7XG4gXHRERUNMQVJFX0ZMRVhfQVJSQVkodTgsIGQpO1xuIH07XG4gXG4tc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuLVx0XHRcdCAgICAgICB2b2lkICpwLCBpbnQgc2l6ZSlcbitzdGF0aWMgaW50IF9fYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbitcdFx0XHRcdCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLCB2b2lkICpyZXBseSxcbitcdFx0XHRcdCB1MTYgcmVwbHlfbGVuKVxuIHtcbi1cdHUxNiBjb3JlID0gMDsgLyogRklYTUUgKi9cbi1cdHUzMiB2YWwsIG9mZnNldCA9IGNvcmUgXHUwMDNjXHUwMDNjIDQ7XG4rXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzWzBdOyAvKiBGSVhNRTogY29yZSAqL1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbitcdHVuc2lnbmVkIGludCBtYXBfbGVuID0gQUxJR04obGVuLCBTTVBfQ0FDSEVfQllURVMpO1xuK1x0dTMyIHZhbCwgb2Zmc2V0ID0gMDtcbiBcdGludCByZXQ7XG4gXG4tXHRkbWFfYWRkciA9IGRtYV9tYXBfc2luZ2xlKG5wdS1cdTAwM2VkZXYsIHAsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbitcdGlmIChsZW4gXHUwMDNjPSAwIHx8IGxlbiBcdTAwM2UgQUlST0hBX05QVV9NQk9YX1NJWkUpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0aWYgKHJlcGx5IFx1MDAyNlx1MDAyNiByZXBseV9sZW4gXHUwMDNlIGxlbilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbitcbitcdG1lbWNweShjb3JlLVx1MDAzZWJ1ZiwgZGF0YSwgbGVuKTtcbitcbitcdGRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgY29yZS1cdTAwM2VidWYsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTtcbiBcdHJldCA9IGRtYV9tYXBwaW5nX2Vycm9yKG5wdS1cdTAwM2VkZXYsIGRtYV9hZGRyKTtcbiBcdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRzcGluX2xvY2tfYmgoXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2NvcmVdLmxvY2spO1xuK1x0XHRnb3RvIHVubG9jaztcbiBcbiBcdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDApICsgb2Zmc2V0LCBkbWFfYWRkcik7XG4tXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgc2l6ZSk7XG4rXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgxKSArIG9mZnNldCwgbGVuKTtcbiBcdHJlZ21hcF9yZWFkKG5wdS1cdTAwM2VyZWdtYXAsIFJFR19DUl9NQlEwX0NUUkwoMikgKyBvZmZzZXQsIFx1MDAyNnZhbCk7XG4gXHRyZWdtYXBfd3JpdGUobnB1LVx1MDAzZXJlZ21hcCwgUkVHX0NSX01CUTBfQ1RSTCgyKSArIG9mZnNldCwgdmFsICsgMSk7XG4gXHR2YWwgPSBGSUVMRF9QUkVQKE1CT1hfTVNHX0ZVTkNfSUQsIGZ1bmNfaWQpIHwgTUJPWF9NU0dfV0FJVF9SU1A7XG5AQCAtMTg5LDEzICsyMDIsMjMgQEAgc3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxuIFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IEZJRUxEX0dFVChNQk9YX01TR19TVEFUVVMsIHZhbCkgIT0gTlBVX01CT1hfU1VDQ0VTUylcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcbi1cdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5wdS1cdTAwM2Vjb3Jlc1tjb3JlXS5sb2NrKTtcbitcdGRtYV91bm1hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIsIG1hcF9sZW4sIERNQV9CSURJUkVDVElPTkFMKTtcbiBcbi1cdGRtYV91bm1hcF9zaW5nbGUobnB1LVx1MDAzZWRldiwgZG1hX2FkZHIsIHNpemUsIERNQV9CSURJUkVDVElPTkFMKTtcbitcdC8qIENvcHkgdGhlIHRyYWlsaW5nIHJlcGx5X2xlbiBieXRlcyBvZiB0aGUgcmVzcG9uc2UuICovXG4rXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcmVwbHkpXG4rXHRcdG1lbWNweShyZXBseSwgY29yZS1cdTAwM2VidWYgKyBsZW4gLSByZXBseV9sZW4sIHJlcGx5X2xlbik7XG4rdW5sb2NrOlxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29yZS1cdTAwM2Vsb2NrKTtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuK3N0YXRpYyBpbnQgYWlyb2hhX25wdV9zZW5kX21zZyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgZnVuY19pZCxcbitcdFx0XHQgICAgICAgdm9pZCAqZGF0YSwgaW50IGxlbilcbit7XG4rXHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xuK31cbitcbiBzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcbiBcdFx0XHRcdCAgICBjb25zdCBjaGFyICpmd19uYW1lLCBpbnQgZndfbWF4X3NpemUpXG4ge1xuQEAgLTQ5Nyw5ICs1MjAsOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxuIFx0d2xhbl9kYXRhLVx1MDAzZWZ1bmNfdHlwZSA9IE5QVV9PUF9HRVQ7XG4gXHR3bGFuX2RhdGEtXHUwMDNlZnVuY19pZCA9IGZ1bmNfaWQ7XG4gXG4tXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pO1xuLVx0aWYgKCFlcnIpXG4tXHRcdG1lbWNweShkYXRhLCB3bGFuX2RhdGEtXHUwMDNlZCwgZGF0YV9sZW4pO1xuK1x0ZXJyID0gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4sXG4rXHRcdFx0XHQgICAgZGF0YSwgZGF0YV9sZW4pO1xuIFx0a2ZyZWUod2xhbl9kYXRhKTtcbiBcbiBcdHJldHVybiBlcnI7XG5AQCAtNzcwLDYgKzc5MiwxOCBAQCBzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKG5wdS1cdTAwM2Vjb3Jlcyk7IGkrKykge1xuK1x0XHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXHUwMDI2bnB1LVx1MDAzZWNvcmVzW2ldO1xuK1x0XHR2b2lkICpyYXc7XG4rXG4rXHRcdHJhdyA9IGRldm1fa21hbGxvYyhkZXYsIEFJUk9IQV9OUFVfTUJPWF9TSVpFICsgU01QX0NBQ0hFX0JZVEVTLFxuK1x0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghcmF3KVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0XHRjb3JlLVx1MDAzZWJ1ZiA9IFBUUl9BTElHTihyYXcsIFNNUF9DQUNIRV9CWVRFUyk7XG4rXHR9XG4rXG4gXHRlcnIgPSBhaXJvaGFfbnB1X3J1bl9maXJtd2FyZShkZXYsIGJhc2UsIFx1MDAyNnJlcyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgXCJmYWlsZWQgdG8gcnVuIG5wdSBmaXJtd2FyZVxcblwiKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NvYy9haXJvaGEvYWlyb2hhX29mZmxvYWQuaCBiL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oXG5pbmRleCA3NTg5ZmNjZmVlZjZkLi5mNjM1NzY2ZTNkYmEyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zb2MvYWlyb2hhL2Fpcm9oYV9vZmZsb2FkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oXG5AQCAtMTczLDYgKzE3Myw3IEBAIHN0cnVjdCBhaXJvaGFfbnB1IHtcbiBcdFx0LyogcHJvdGVjdCBjb25jdXJyZW50IG5wdSBtZW1vcnkgYWNjZXNzZXMgKi9cbiBcdFx0c3BpbmxvY2tfdCBsb2NrO1xuIFx0XHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd2R0X3dvcms7XG4rXHRcdHZvaWQgKmJ1ZjsgLyogbWFpbGJveCBETUEgYm91bmNlIGJ1ZmZlciAqL1xuIFx0fSBjb3Jlc1tOUFVfTlVNX0NPUkVTXTtcbiBcbiBcdGludCBpcnFzW05QVV9OVU1fSVJRXTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA2OjQ2Ljk4OTA0ODExN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDI3OTczOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBhdGNoOiBBaXJvaGEgTlBVIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jYCBhbmQgYGluY2x1ZGUvbGludXgvc29jL2Fpcm9oYS9haXJvaGFfb2ZmbG9hZC5oYC4gSXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGhvdyBtZXNzYWdlcyBhcmUgc2VudCB0byB0aGUgTlBVIG9uIEFpcm9oYSBTb0NzLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIGEgRE1BIGJvdW5jZSBidWZmZXIgKGBjb3JlLVx1MDAzZWJ1ZmApIGFuZCByZW5hbWluZyBgYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gYF9fYWlyb2hhX25wdV9zZW5kX21zZ2AgdG8gdXNlIGl0LiBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXJseSB0byByZXNvbHZlIHBvdGVudGlhbCBETUEgbWFwcGluZyBwcm9ibGVtcywgd2hpY2ggbWFrZXMgc2Vuc2U7IGRlYWxpbmcgd2l0aCBzdGFjayBtZW1vcnkgb3IgdW5hbGlnbmVkIG1lbW9yeSBpbiBETUEgb3BlcmF0aW9ucyBpcyBhbHdheXMgYSBwYWluLlxuXG5CdXQgaG9sZCBvbiwgdGhlcmUncyBhIHNwZWNpZmljIHF1ZXN0aW9uIEkgbmVlZCB0byBhbnN3ZXIuIFRoZSBwcm9tcHQgc2F5cyBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgdGhhdCAqcmVxdWlyZXMqIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQncyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0J3MgYSBjcml0aWNhbCBwb2ludC4gSXMgdGhpcyBBaXJvaGEgTlBVIGRyaXZlciBvbmUgb2YgKnRob3NlKj9cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGlmIGBhaXJvaGFfbnB1YCBmaXRzIHRoaXMgY3JpdGVyaWEuIEkga25vdyBpdCdzIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYCwgc28gYXQgbGVhc3QgaXQncyBhIG5ldHdvcmsgZHJpdmVyIGFuZCB2ZW5kb3Itc3BlY2lmaWMgdG8gQWlyb2hhLiBCdXQgaXMgdGhlIGhhcmR3YXJlIGRlcGVuZGVudCBvbiBhIFBDSWUgZGV2aWNlLCBvciBzb21ldGhpbmcgZWxzZSB0aGF0IFFFTVUgbWlnaHQgbm90IGhhbmRsZT8gVGltZSB0byBkbyBhIHF1aWNrIHNlYXJjaCB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlIHRvIGdldCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZyBvZiB0aGlzIGBhaXJvaGFfbnB1YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaXMgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIG9yIGlmIGl0J3MgcG90ZW50aWFsbHkgZW11bGF0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgxMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA2OjU4LjAxNzAzMDExOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMyMzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhaXJvaGFfbnB1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlPTg9YWlyb2hhLWV0aC0kKENPTkZJR19ERUJVR19GUykgKz0gYWlyb2hhX3BwZV9kZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX0FJUk9IQV9OUFUpICs9IGFpcm9oYV9ucHUub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02NDU9c3RydWN0IGFpcm9oYV9ldGgge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaC02NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaDo2NTM6XFx0c3RydWN0IGFpcm9oYV9ucHUgX19yY3UgKm5wdTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTY1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM9MTA4PWVudW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xMTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoxMTM6c3RydWN0IGFpcm9oYV9ucHVfZncge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTE0LVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjExODpzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoxMTk6XFx0c3RydWN0IGFpcm9oYV9ucHVfZncgZndfcnYzMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjEyMDpcXHRzdHJ1Y3QgYWlyb2hhX25wdV9mdyBmd19kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMTIxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTE1OT1zdHJ1Y3Qgd2xhbl9tYm94X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoxNjY6c3RhdGljIGludCBfX2Fpcm9oYV9ucHVfc2VuZF9tc2coc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGZ1bmNfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjctXFx0XFx0XFx0XFx0IGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKnJlcGx5LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0xNjkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MTcwOlxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1swXTsgLyogRklYTUU6IGNvcmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTE3MS1cXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyMTY6c3RhdGljIGludCBhaXJvaGFfbnB1X3NlbmRfbXNnKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBmdW5jX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjE3LVxcdFxcdFxcdCAgICAgICB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjE4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjIxOTpcXHRyZXR1cm4gX19haXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgZnVuY19pZCwgZGF0YSwgbGVuLCBkYXRhLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjIwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjIyMjpzdGF0aWMgaW50IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTIyMy1cXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqZndfbmFtZSwgaW50IGZ3X21heF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz0yNDY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjQ3OmFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZV9mcm9tX2R0cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI0OC1cXHRcXHRcXHRcXHQgIHZvaWQgX19pb21lbSAqYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjU4OlxcdHJldCA9IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGFkZHIsIGZ3X25hbWVzWzBdLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjU5LVxcdFxcdFxcdFxcdCAgICAgICBOUFVfRU43NTgxX0ZJUk1XQVJFX1JWMzJfTUFYX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzoyNjM6XFx0cmV0dXJuIGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGJhc2UgKyBSRUdfTlBVX0xPQ0FMX1NSQU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yNjQtXFx0XFx0XFx0XFx0XFx0ZndfbmFtZXNbMV0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTI2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI2ODpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCBfX2lvbWVtICpiYXNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjY5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCByZXNvdXJjZSAqcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjcwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI3MTpcXHRjb25zdCBzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSAqc29jO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjcyLVxcdHZvaWQgX19pb21lbSAqYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjg2LVxcdGlmIChvZl9maW5kX3Byb3BlcnR5KGRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcImZpcm13YXJlLW5hbWVcXFwiLCBOVUxMKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjI4NzpcXHRcXHRyZXR1cm4gYWlyb2hhX25wdV9sb2FkX2Zpcm13YXJlX2Zyb21fZHRzKGRldiwgYWRkciwgYmFzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yODktXFx0LyogTG9hZCBydjMyIG5wdSBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MjkwOlxcdHJldCA9IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGFkZHIsIHNvYy1cXHUwMDNlZndfcnYzMi5uYW1lLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjkxLVxcdFxcdFxcdFxcdCAgICAgICBzb2MtXFx1MDAzZWZ3X3J2MzIubWF4X3NpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0yOTUtXFx0LyogTG9hZCBkYXRhIG5wdSBmaXJtd2FyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mjk2OlxcdHJldHVybiBhaXJvaGFfbnB1X2xvYWRfZmlybXdhcmUoZGV2LCBiYXNlICsgUkVHX05QVV9MT0NBTF9TUkFNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMjk3LVxcdFxcdFxcdFxcdFxcdHNvYy1cXHUwMDNlZndfZGF0YS5uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMDE6c3RhdGljIGlycXJldHVybl90IGFpcm9oYV9ucHVfbWJveF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKm5wdV9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMwMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozMDM6XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IG5wdV9pbnN0YW5jZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTMwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE2OnN0YXRpYyB2b2lkIGFpcm9oYV9ucHVfd2R0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzE3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjMxODpcXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzE5OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zMjAtXFx0dm9pZCAqZHVtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzI0OlxcdGNvcmUgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGFpcm9oYV9ucHVfY29yZSwgd2R0X3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzI1LVxcdG5wdSA9IGNvcmUtXFx1MDAzZW5wdTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzM5OnN0YXRpYyBpcnFyZXR1cm5fdCBhaXJvaGFfbnB1X3dkdF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmNvcmVfaW5zdGFuY2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzQxOlxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBjb3JlX2luc3RhbmNlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6MzQyOlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBjb3JlLVxcdTAwM2VucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNDMtXFx0aW50IGMgPSBjb3JlIC0gXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM1NDpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM2ODpcXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfUFBFLCBwcGVfZGF0YSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM2OS1cXHRcXHRcXHRcXHQgIHNpemVvZigqcHBlX2RhdGEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Mzc1OnN0YXRpYyBpbnQgYWlyb2hhX25wdV9wcGVfZGVpbml0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzozODc6XFx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1BQRSwgcHBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy0zODgtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTM5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjM5NDpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX2ZsdXNoX3NyYW1fZW50cmllcyhzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtMzk1LVxcdFxcdFxcdFxcdFxcdCAgICAgZG1hX2FkZHJfdCBmb2VfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDExOlxcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDEyLVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0MTg6c3RhdGljIGludCBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQxOS1cXHRcXHRcXHRcXHQgICAgICAgZG1hX2FkZHJfdCBmb2VfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDM2OlxcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDM3LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0NDU6XFx0ZXJyID0gYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1BQRSwgcHBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NDYtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnBwZV9kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjQ1MzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHBlX3N0YXRzX3NldHVwKHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00NTQtXFx0XFx0XFx0XFx0ICAgICAgZG1hX2FkZHJfdCBmb2Vfc3RhdHNfYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NDY4OlxcdGVyciA9IGFpcm9oYV9ucHVfc2VuZF9tc2cobnB1LCBOUFVfRlVOQ19QUEUsIHBwZV9kYXRhLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNDY5LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwcGVfZGF0YSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy00ODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0ODQ6c3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5fbXNnX3NlbmQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IGlmaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo0ODU6XFx0XFx0XFx0XFx0ICAgIGVudW0gYWlyb2hhX25wdV93bGFuX3NldF9jbWQgZnVuY19pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTQ4Ni1cXHRcXHRcXHRcXHQgICAgdm9pZCAqZGF0YSwgaW50IGRhdGFfbGVuLCBnZnBfdCBnZnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwMTpcXHRlcnIgPSBhaXJvaGFfbnB1X3NlbmRfbXNnKG5wdSwgTlBVX0ZVTkNfV0lGSSwgd2xhbl9kYXRhLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTAyLVxcdGtmcmVlKHdsYW5fZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjUwNzpzdGF0aWMgaW50IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBpZmluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTA4OlxcdFxcdFxcdFxcdCAgIGVudW0gYWlyb2hhX25wdV93bGFuX2dldF9jbWQgZnVuY19pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUwOS1cXHRcXHRcXHRcXHQgICB2b2lkICpkYXRhLCBpbnQgZGF0YV9sZW4sIGdmcF90IGdmcClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTIzOlxcdGVyciA9IF9fYWlyb2hhX25wdV9zZW5kX21zZyhucHUsIE5QVV9GVU5DX1dJRkksIHdsYW5fZGF0YSwgbGVuLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTI0LVxcdFxcdFxcdFxcdCAgICBkYXRhLCBkYXRhX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jPTUzMD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MzE6YWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUzMi1cXHRcXHRcXHRcXHQgICAgaW50IGlmaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1MzM6XFx0XFx0XFx0XFx0ICAgIGVudW0gYWlyb2hhX25wdV93bGFuX3NldF9jbWQgZnVuY19pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU0NS1cXHR2YWwgPSByZXMuc3RhcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NDY6XFx0cmV0dXJuIGFpcm9oYV9ucHVfd2xhbl9tc2dfc2VuZChucHUsIGlmaW5kZXgsIGZ1bmNfaWQsIFxcdTAwMjZ2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NDctXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKHZhbCksIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTA6c3RhdGljIGludCBhaXJvaGFfbnB1X3dsYW5faW5pdF9tZW1vcnkoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTI6XFx0ZW51bSBhaXJvaGFfbnB1X3dsYW5fc2V0X2NtZCBjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfTlBVX0JBTkQwX09OQ1BVO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTUzLVxcdHUzMiB2YWwgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NTY6XFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKG5wdSwgMSwgY21kLCBcXHUwMDI2dmFsLCBzaXplb2YodmFsKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU1Ny1cXHRcXHRcXHRcXHQgICAgICAgR0ZQX0tFUk5FTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU2MS1cXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfVFhfQlVGX0NIRUNLX0FERFI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NjI6XFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkobnB1LCAwLCBcXFwidHgtYnVmaWRcXFwiLCBjbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTYzLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU2Ni1cXHRjbWQgPSBXTEFOX0ZVTkNfU0VUX1dBSVRfUEtUX0JVRl9BRERSO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTY3OlxcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXFxcInBrdFxcXCIsIGNtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NjgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTcxLVxcdGNtZCA9IFdMQU5fRlVOQ19TRVRfV0FJVF9UWF9QS1RfQlVGX0FERFI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo1NzI6XFx0ZXJyID0gYWlyb2hhX25wdV93bGFuX3NldF9yZXNlcnZlZF9tZW1vcnkobnB1LCAwLCBcXFwidHgtcGt0XFxcIiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU3My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01NzgtXFx0XFx0Y21kID0gV0xBTl9GVU5DX1NFVF9XQUlUX0RSQU1fQkFfTk9ERV9BRERSO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTc5OlxcdFxcdGVyciA9IGFpcm9oYV9ucHVfd2xhbl9zZXRfcmVzZXJ2ZWRfbWVtb3J5KG5wdSwgMCwgXFxcImJhXFxcIiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU4MC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01ODQtXFx0Y21kID0gV0xBTl9GVU5DX1NFVF9XQUlUX0lTX0ZPUkNFX1RPX0NQVTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU4NTpcXHRyZXR1cm4gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kKG5wdSwgMCwgY21kLCBcXHUwMDI2dmFsLCBzaXplb2YodmFsKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU4Ni1cXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NTg5OnN0YXRpYyB1MzIgYWlyb2hhX25wdV93bGFuX3F1ZXVlX2FkZHJfZ2V0KHN0cnVjdCBhaXJvaGFfbnB1ICpucHUsIGludCBxaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy01OTAtXFx0XFx0XFx0XFx0XFx0ICBib29sIHhtaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjU5ODpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX3N0YXR1c19zZXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTU5OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYwMzpzdGF0aWMgdTMyIGFpcm9oYV9ucHVfd2xhbl9pcnFfc3RhdHVzX2dldChzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYxMTpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LCBpbnQgcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjYxNjpzdGF0aWMgdm9pZCBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSwgaW50IHEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2MjE6c3RydWN0IGFpcm9oYV9ucHUgKmFpcm9oYV9ucHVfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTYyNC1cXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjI1OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02MjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY2OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2Njk6RVhQT1JUX1NZTUJPTF9HUEwoYWlyb2hhX25wdV9nZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NjcxOnZvaWQgYWlyb2hhX25wdV9wdXQoc3RydWN0IGFpcm9oYV9ucHUgKm5wdSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY3NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2NzY6RVhQT1JUX1NZTUJPTF9HUEwoYWlyb2hhX25wdV9wdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Njc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYWlyb2hhX25wdV9zb2NfZGF0YSBlbjc1ODFfbnB1X3NvY19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNjc5LVxcdC5md19ydjMyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo2ODk6c3RhdGljIGNvbnN0IHN0cnVjdCBhaXJvaGFfbnB1X3NvY19kYXRhIGFuNzU4M19ucHVfc29jX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy02OTAtXFx0LmZ3X3J2MzIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTY5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcwMDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MDEtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJhaXJvaGEsZW43NTgxLW5wdVxcXCIsIC5kYXRhID0gXFx1MDAyNmVuNzU4MV9ucHVfc29jX2RhdGEgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzA0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MDU6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX25wdV9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYz03MDc9c3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHJlZ21hcF9jb25maWcgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTcxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxNTpzdGF0aWMgaW50IGFpcm9oYV9ucHVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTcxNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03MTctXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjcxODpcXHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzE5LVxcdHN0cnVjdCByZXNvdXJjZSByZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTczMi1cXHRucHUtXFx1MDAzZWRldiA9IGRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczMzpcXHRucHUtXFx1MDAzZW9wcy5wcGVfaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2luaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3MzQ6XFx0bnB1LVxcdTAwM2VvcHMucHBlX2RlaW5pdCA9IGFpcm9oYV9ucHVfcHBlX2RlaW5pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczNTpcXHRucHUtXFx1MDAzZW9wcy5wcGVfaW5pdF9zdGF0cyA9IGFpcm9oYV9ucHVfcHBlX3N0YXRzX3NldHVwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzM2OlxcdG5wdS1cXHUwMDNlb3BzLnBwZV9mbHVzaF9zcmFtX2VudHJpZXMgPSBhaXJvaGFfbnB1X3BwZV9mbHVzaF9zcmFtX2VudHJpZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3Mzc6XFx0bnB1LVxcdTAwM2VvcHMucHBlX2ZvZV9jb21taXRfZW50cnkgPSBhaXJvaGFfbnB1X2ZvZV9jb21taXRfZW50cnk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3Mzg6XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9pbml0X3Jlc2VydmVkX21lbW9yeSA9IGFpcm9oYV9ucHVfd2xhbl9pbml0X21lbW9yeTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjczOTpcXHRucHUtXFx1MDAzZW9wcy53bGFuX3NlbmRfbXNnID0gYWlyb2hhX25wdV93bGFuX21zZ19zZW5kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQwOlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZ2V0X21zZyA9IGFpcm9oYV9ucHVfd2xhbl9tc2dfZ2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQxOlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZ2V0X3F1ZXVlX2FkZHIgPSBhaXJvaGFfbnB1X3dsYW5fcXVldWVfYWRkcl9nZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo3NDI6XFx0bnB1LVxcdTAwM2VvcHMud2xhbl9zZXRfaXJxX3N0YXR1cyA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfc3RhdHVzX3NldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc0MzpcXHRucHUtXFx1MDAzZW9wcy53bGFuX2dldF9pcnFfc3RhdHVzID0gYWlyb2hhX25wdV93bGFuX2lycV9zdGF0dXNfZ2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQ0OlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZW5hYmxlX2lycSA9IGFpcm9oYV9ucHVfd2xhbl9pcnFfZW5hYmxlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzQ1OlxcdG5wdS1cXHUwMDNlb3BzLndsYW5fZGlzYWJsZV9pcnEgPSBhaXJvaGFfbnB1X3dsYW5faXJxX2Rpc2FibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc1OTpcXHRlcnIgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhaXJvaGFfbnB1X21ib3hfaGFuZGxlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc2MC1cXHRcXHRcXHQgICAgICAgSVJRRl9TSEFSRUQsIFxcXCJhaXJvaGEtbnB1LW1ib3hcXFwiLCBucHUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NjQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUobnB1LVxcdTAwM2Vjb3Jlcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6NzY1OlxcdFxcdHN0cnVjdCBhaXJvaGFfbnB1X2NvcmUgKmNvcmUgPSBcXHUwMDI2bnB1LVxcdTAwM2Vjb3Jlc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTc2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc0OlxcdFxcdGVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGFpcm9oYV9ucHVfd2R0X2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03NzUtXFx0XFx0XFx0XFx0ICAgICAgIElSUUZfU0hBUkVELCBcXFwiYWlyb2hhLW5wdS13ZHRcXFwiLCBjb3JlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6Nzc5OlxcdFxcdElOSVRfV09SSyhcXHUwMDI2Y29yZS1cXHUwMDNld2R0X3dvcmssIGFpcm9oYV9ucHVfd2R0X3dvcmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzgwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtNzk1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKG5wdS1cXHUwMDNlY29yZXMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jOjc5NjpcXHRcXHRzdHJ1Y3QgYWlyb2hhX25wdV9jb3JlICpjb3JlID0gXFx1MDAyNm5wdS1cXHUwMDNlY29yZXNbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy03OTctXFx0XFx0dm9pZCAqcmF3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4MDc6XFx0ZXJyID0gYWlyb2hhX25wdV9ydW5fZmlybXdhcmUoZGV2LCBiYXNlLCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgwOC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4Mjg6XFx0aWYgKCFhaXJvaGFfbnB1X3dsYW5fbXNnX2dldChucHUsIDAsIFdMQU5fRlVOQ19HRVRfV0FJVF9OUFVfVkVSU0lPTixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTgyOS1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ2YWwsIHNpemVvZih2YWwpLCBHRlBfS0VSTkVMKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODM4OnN0YXRpYyB2b2lkIGFpcm9oYV9ucHVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04Mzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQwOlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg0MS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQ3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmM6ODQ4OlxcdC5wcm9iZSA9IGFpcm9oYV9ucHVfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NDk6XFx0LnJlbW92ZSA9IGFpcm9oYV9ucHVfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODUwLVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04NTEtXFx0XFx0Lm5hbWUgPSBcXFwiYWlyb2hhLW5wdVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTI6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gb2ZfYWlyb2hhX25wdV9tYXRjaCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX25wdS5jLTg1My1cXHR9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmMtODU0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYzo4NTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihhaXJvaGFfbnB1X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ucHUuYy04NTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTYwNz1zdGF0aWMgdm9pZCBhaXJvaGFfcHBlX2ZvZV9mbG93X3N0YXRfZW50cnlfcmVzZXQoc3RydWN0IGFpcm9oYV9wcGUgKnBwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjYwODpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGFpcm9oYV9ucHUgKm5wdSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTYwOS1cXHRcXHRcXHRcXHRcXHRcXHQgaW50IGluZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz02MTU9c3RhdGljIHZvaWQgYWlyb2hhX3BwZV9mb2VfZmxvd19zdGF0c19yZXNldChzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6NjE2OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9NjI4PXN0YXRpYyB2b2lkIGFpcm9oYV9wcGVfZm9lX2Zsb3dfc3RhdHNfdXBkYXRlKHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzo2Mjk6XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtNjMwLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGFpcm9oYV9mb2VfZW50cnkgKmh3ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9NzY1PXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9mb2VfY29tbWl0X2VudHJ5KHN0cnVjdCBhaXJvaGFfcHBlICpwcGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTc3Mi1cXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcHBlLVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzo3NzM6XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTc3NC1cXHRpbnQgZXJyID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTMwMT12b2lkIGFpcm9oYV9wcGVfZm9lX2VudHJ5X2dldF9zdGF0cyhzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlLCB1MzIgaGFzaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTMwNS1cXHRpbnQgcHBlX251bV9zdGF0c19lbnRyaWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTMwNjpcXHRzdHJ1Y3QgYWlyb2hhX25wdSAqbnB1O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTMwNy1cXHR1MzIgaW5kZXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTEzNzk9c3RhdGljIGludCBhaXJvaGFfcHBlX2ZsdXNoX3NyYW1fZW50cmllcyhzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xMzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM6MTM5NzpzdGF0aWMgc3RydWN0IGFpcm9oYV9ucHUgKmFpcm9oYV9wcGVfbnB1X2dldChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTM5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxMzk5OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHUgPSBhaXJvaGFfbnB1X2dldChldGgtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDAyLVxcdFxcdHJlcXVlc3RfbW9kdWxlKFxcXCJhaXJvaGEtbnB1XFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNDAzOlxcdFxcdG5wdSA9IGFpcm9oYV9ucHVfZ2V0KGV0aC1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0MDQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xNDMyPXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0MzQ6XFx0c3RydWN0IGFpcm9oYV9ucHUgKm5wdSA9IGFpcm9oYV9wcGVfbnB1X2dldChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQzNS1cXHRzdHJ1Y3QgYWlyb2hhX3BwZSAqcHBlID0gZXRoLVxcdTAwM2VwcGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NjYtZXJyb3JfbnB1X3B1dDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0Njc6XFx0YWlyb2hhX25wdV9wdXQobnB1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTE2NjI9dm9pZCBhaXJvaGFfcHBlX2RlaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTY2My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNjY0OlxcdHN0cnVjdCBhaXJvaGFfbnB1ICpucHU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNjcyLVxcdFxcdG5wdS1cXHUwMDNlb3BzLnBwZV9kZWluaXQobnB1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE2NzM6XFx0XFx0YWlyb2hhX25wdV9wdXQobnB1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE2NzQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNjo1OC4wNjQzNjMyMjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE5MDg3MTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBBaXJvaGEgTlBVIERyaXZlciBhbmQgV29ydGhGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgYWlyb2hhX25wdWAgZHJpdmVyLCBwYXJ0IG9mIHRoZSBBaXJvaGEgRXRoZXJuZXQgZHJpdmVyIHN1aXRlLiBJdCBzZWVtcyB0byBiZSBhbiBOUFUgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgQWlyb2hhJ3MgRU43NTgxIFNvQ3MuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIGFuZCBpcyB0aGVyZWZvcmUgYSBuby1nbyBmb3Igc3RhbmRhcmQgUUVNVSBlbXVsYXRpb24/XG5cblRoZSBFTjc1ODEgKmlzKiBhIHJvdXRlci9nYXRld2F5IFNvQywgY29uZmlybWluZyB0aGF0IGl0J3MgcHJvYmFibHkgdmVuZG9yLXNwZWNpZmljIHNpbGljb24uIFRoZSBjb2RlJ3MgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfbnB1LmNgLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyBza2lwcGluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lZWQgcmVhbCBQQ0llIGhhcmR3YXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGZpdHMgdGhhdCBkZXNjcmlwdGlvbi5cblxuQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIHJldmVhbHMgaXQncyByZWdpc3RlcmVkIGFzIGEgYHBsYXRmb3JtX2RyaXZlcmAuIFRoYXQgbWVhbnMgaXQncyBhbiBJUCBibG9jayAqd2l0aGluKiB0aGUgU29DLCBhbmQgbm90IGEgUENJZSBkZXZpY2UsIHdoaWNoIGNoYW5nZXMgdGhpbmdzIGEgYml0ISBQbGF0Zm9ybSBkcml2ZXJzIGFyZSBvZnRlbiBTb0Mtc3BlY2lmaWMsIHJlbHlpbmcgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIG1lbW9yeS1tYXBwZWQgSS9PIHJlZ2lvbnMuIFRoZSBsaWtlbGlob29kIG9mIHN0YW5kYXJkIFFFTVUgcGVyZmVjdGx5IGVtdWxhdGluZyB0aGUgRU43NTgxJ3MgcGxhdGZvcm0gc3BlY2lmaWNzIGlzIHZhbmlzaGluZ2x5IHNtYWxsLCB1bmxlc3MgdGhlcmUncyBzb21lIG9ic2N1cmUgbWFjaGluZSB0eXBlIGZvciBpdC5cblxuSG93ZXZlciwgU3l6a2FsbGVyICpjYW4qIHNvbWV0aW1lcyBnZXQgYXQgcGxhdGZvcm0gZHJpdmVycy4gSXQgY2FuIGluamVjdCBkZXZpY2UgdHJlZSBub2RlcywgdXNlIGBzeXpfbW91bnRfaW1hZ2VgLCBvciBmYWtlIHBsYXRmb3JtIGRldmljZXMuIEJ1dCBoZXJlJ3MgdGhlIGtpY2tlcjogYGFpcm9oYV9ucHVfcHJvYmVgIGRvZXMgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKWAsIHdoaWNoIG1lYW5zIGl0J3MgZGlyZWN0bHkgYWNjZXNzaW5nIGhhcmR3YXJlIHJlZ2lzdGVycyB0aHJvdWdoIE1NSU8uIElmIHRoZSBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCwgdGhhdCdzIGp1c3QgZ29pbmcgdG8gY3Jhc2ggb3IgZmFpbCB0aGUgcHJvYmUuXG5cbk5vdywgd2hpbGUgU3l6a2FsbGVyIGNhbiBzb21ldGltZXMgcG9rZSBhcm91bmQgdmlhIGAvZGV2L2Agbm9kZXMgb3IgcHNldWRvLWRldmljZSBmcmFtZXdvcmtzLCBkaXJlY3QgTU1JTyBvbiBhIHBsYXRmb3JtIGRyaXZlciB3aXRob3V0IGVtdWxhdGlvbiBpcyBhIGRlYWQgZW5kLiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUncyBzb21lIHdheSBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIHRoaXMgZHJpdmVyLCBidXQgaW4gdGhpcyBjYXNlLCBJJ2QgbmVlZCBhbiBlbXVsYXRvciBvZiB0aGUgaGFyZHdhcmUuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVyZSdzIGV4aXN0aW5nIFN5emthbGxlciBzdXBwb3J0IGZvciBBaXJvaGEncyBOUFUuIEkgbmVlZCB0byByZXNlYXJjaCB0aGlzIGJlZm9yZSBJIG1ha2UgYSBmaW5hbCBjYWxsLCBidXQgbXkgZ3V0IHRlbGxzIG1lIGl0J3MgbGlrZWx5IG5vdCBmdXp6YWJsZSB3aXRob3V0IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDgzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA3OjA4LjI1NTIzNjg4N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAzMzczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhaXJvaGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM2ODkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19ORVRfQUlST0hBKSArPSBhaXJvaGEtZXRoLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NzphaXJvaGEtZXRoLXkgOj0gYWlyb2hhX2V0aC5vIGFpcm9oYV9wcGUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo4OmFpcm9oYS1ldGgtJChDT05GSUdfREVCVUdfRlMpICs9IGFpcm9oYV9wcGVfZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9BSVJPSEFfTlBVKSArPSBhaXJvaGFfbnB1Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNzojaW5jbHVkZSBcXFwiYWlyb2hhX3JlZ3MuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4OiNpbmNsdWRlIFxcXCJhaXJvaGFfZXRoLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwOnUzMiBhaXJvaGFfcnIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1OnZvaWQgYWlyb2hhX3dyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldCwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDp1MzIgYWlyb2hhX3Jtdyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiBtYXNrLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzI6XFx0dmFsIHw9IChhaXJvaGFfcnIoYmFzZSwgb2Zmc2V0KSBcXHUwMDI2IH5tYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMzOlxcdGFpcm9oYV93cihiYXNlLCBvZmZzZXQsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozODpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5LVxcdFxcdFxcdFxcdCAgICBpbnQgaW5kZXgsIHUzMiBjbGVhciwgdTMyIHNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxOlxcdHN0cnVjdCBhaXJvaGFfcWRtYSAqcWRtYSA9IGlycV9iYW5rLVxcdTAwM2VxZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDItXFx0aW50IGJhbmsgPSBpcnFfYmFuayAtIFxcdTAwMjZxZG1hLVxcdTAwM2VpcnFfYmFua3NbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxLVxcdGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSB8PSBzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjpcXHRhaXJvaGFfcWRtYV93cihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01My1cXHRcXHQgICAgICAgaXJxX2JhbmstXFx1MDAzZWlycW1hc2tbaW5kZXhdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzpcXHRhaXJvaGFfcWRtYV9ycihxZG1hLCBSRUdfSU5UX0VOQUJMRShiYW5rLCBpbmRleCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjI6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2VuYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzLVxcdFxcdFxcdFxcdCAgIGludCBpbmRleCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NTpcXHRhaXJvaGFfcWRtYV9zZXRfaXJxbWFzayhpcnFfYmFuaywgaW5kZXgsIDAsIG1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2ODpzdGF0aWMgdm9pZCBhaXJvaGFfcWRtYV9pcnFfZGlzYWJsZShzdHJ1Y3QgYWlyb2hhX2lycV9iYW5rICppcnFfYmFuayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5LVxcdFxcdFxcdFxcdCAgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzE6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCBtYXNrLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NzQ6c3RhdGljIGludCBhaXJvaGFfc2V0X21hY2FkZHIoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYsIGNvbnN0IHU4ICphZGRyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzYtXFx0dTggcmVmX2FkZHJbRVRIX0FMRU5dIF9fYWxpZ25lZCgyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc3OlxcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXFx1MDAzZWV0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc4LVxcdHUzMiByZWcsIHZhbCwgbG1pbiwgbG1heDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoZXRoLVxcdTAwM2Vwb3J0cyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6ODY6XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGV0aC1cXHUwMDNlcG9ydHNbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy04Ny1cXHRcXHRpbnQgajtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtOTItXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFSUkFZX1NJWkUocG9ydC1cXHUwMDNlZGV2cyk7IGorKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6OTM6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICppdGVyX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk0LVxcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAwOlxcdFxcdFxcdGlmIChhaXJvaGFfaXNfbGFuX2dkbV9kZXYoaXRlcl9kZXYpICE9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMDE6XFx0XFx0XFx0ICAgIGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTAyLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzQ6XFx0cmVnID0gYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGRldikgPyBSRUdfRkVfTEFOX01BQ19IIDogUkVHX0ZFX1dBTl9NQUNfSDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNS1cXHR2YWwgPSAoYWRkclswXSBcXHUwMDNjXFx1MDAzYyAxNikgfCAoYWRkclsxXSBcXHUwMDNjXFx1MDAzYyA4KSB8IGFkZHJbMl07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzY6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9NQUNfTE1JTihyZWcpLCBsbWluKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNQVgocmVnKSwgbG1heCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDE6XFx0YWlyb2hhX3BwZV9pbml0X3VwZF9tZW0oZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQ2OnN0YXRpYyB2b2lkIGFpcm9oYV9zZXRfZ2RtX3BvcnRfZndkX2NmZyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCB1MzIgYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0Ny1cXHRcXHRcXHRcXHRcXHR1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX09DRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1MC1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9PQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fTUNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTUyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX01DRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9CQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTQtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fQkNGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1NTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX1VDRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Ni1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9VQ0ZRX01BU0ssIHZhbCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTk6c3RhdGljIGludCBhaXJvaGFfc2V0X3ZpcF9mb3JfZ2RtX3BvcnQoc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXYsIGJvb2wgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTYwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MTpcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTYyOlxcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBkZXYtXFx1MDAzZWV0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2My1cXHR1MzIgdmlwX3BvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2Ni1cXHRpZiAoZW5hYmxlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjc6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY4OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2OS1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTcwOlxcdFxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9WSVBfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTcxOlxcdFxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9JRkNfUE9SVF9FTiwgdmlwX3BvcnQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTcyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc3OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9tYWNjcl9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODEtXFx0Zm9yIChwID0gMTsgcCBcXHUwMDNjPSBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBwKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4MjpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgzLVxcdFxcdFxcdCAgICAgIEdETV9UQ1BfQ0tTVU1fTUFTSyB8IEdETV9VRFBfQ0tTVU1fTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xODQtXFx0XFx0XFx0ICAgICAgR0RNX0lQNF9DS1NVTV9NQVNLIHwgR0RNX0RST1BfQ1JDX0VSUl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE4NTpcXHRcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0dETV9MRU5fQ0ZHKHApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg2LVxcdFxcdFxcdCAgICAgIEdETV9TSE9SVF9MRU5fTUFTSyB8IEdETV9MT05HX0xFTl9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fVkxBTl9DVFJMKDEpLCBDRE1fVkxBTl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkyLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX1ZMQU5fTUFTSywgMHg4MTAwKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTQ6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BBRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk3OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV92aXBfc2V0dXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxOTk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDMpLCBFVEhfUF9QUFBfRElTQyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDA6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigzKSwgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig0KSwgUFBQX0xDUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDM6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwNC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDYpLCBQUFBfSVBDUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwOS1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTI6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDcpLCBQUFBfQ0hBUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTM6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig3KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxNC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTctXFx0LyogQk9PVFAgKDB4NDMpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDgpLCAweDQzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIxOTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIwLVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjMtXFx0LyogQk9PVFAgKDB4NDQpICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjQ6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDkpLCAweDQ0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIyNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI2LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMjktXFx0LyogSVNBS01QICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzA6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEwKSwgMHgxZjQwMWY0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzMTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzMi1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM1OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMSksIFBQUF9JUFY2Q1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjM2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTEpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjM3LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0MC1cXHQvKiBESENQdjYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTIpLCAweDIyMjAyMjMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQzLVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0RQX0VOX01BU0sgfCBQQVROX1NQX0VOX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDY6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDE5KSwgUFBQX1BBUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxOSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDgtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjUxLVxcdC8qIEVUSC1cXHUwMDNlRVRIX1BfMTkwNSAoMHg4OTNhKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMCksIDB4ODkzYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTM6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTY6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDIxKSwgRVRIX1BfTExEUCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigyMSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNTgtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRU5fTUFTSyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI2MTpzdGF0aWMgdTMyIGFpcm9oYV9mZV9nZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjYyLVxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjQ6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY1LVxcdFxcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjk6XFx0cmV0dXJuIGFpcm9oYV9mZV9nZXQoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzAtXFx0XFx0XFx0ICAgICBQU0VfQ0ZHX09RX1JTVl9NQVNLKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjczOnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc0LVxcdFxcdFxcdFxcdFxcdCAgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjc2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19WQUwsIFBTRV9DRkdfT1FfUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzctXFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQ0ZHX09RX1JTVl9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3ODpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfV1IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNzktXFx0XFx0ICAgICAgUFNFX0NGR19QT1JUX0lEX01BU0sgfCBQU0VfQ0ZHX1FVRVVFX0lEX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyODY6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yODcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg4OlxcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5MTpzdGF0aWMgaW50IGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkyLVxcdFxcdFxcdFxcdCAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NDpcXHR1MzIgb3JpZ192YWwgPSBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoZXRoLCBwb3J0LCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTUtXFx0dTMyIHRtcCwgYWxsX3JzdiwgZnFfbGltaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTc6XFx0YWlyb2hhX2ZlX3NldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTktXFx0LyogbW9kaWZ5IGFsbCByc3YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwMDpcXHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAxLVxcdGFsbF9yc3YgKz0gKHZhbCAtIG9yaWdfdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMwMjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDMtXFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA1LVxcdC8qIG1vZGlmeSBodGhkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDY6XFx0ZnFfbGltaXQgPSBhaXJvaGFfZmVfZ2V0KGV0aCwgUFNFX0ZRX0NGRywgUFNFX0ZRX0xJTUlUX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA3LVxcdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MjA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMDktXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfSFRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTItXFx0dG1wID0gZnFfbGltaXQgLSBhbGxfcnN2IC0gMHgxMDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfU0hBUkVfVVNFRF9USEQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTQtXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTVRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTYtXFx0dG1wID0gKDMgKiB0bXApIFxcdTAwM2VcXHUwMDNlIDI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTc6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxOC1cXHRcXHQgICAgICBQU0VfU0hBUkVfVVNFRF9MVEhEX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyNDpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0MTpcXHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Mi1cXHRcXHR1MzIgYWxsX3JzdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ0LVxcdFxcdC8qIGh3IG1pc3NlcyBQUEUyIG9xIHJzdiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ1OlxcdFxcdGFsbF9yc3YgPSBhaXJvaGFfZmVfZ2V0X3BzZV9hbGxfcnN2KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDYtXFx0XFx0YWxsX3JzdiArPSBQU0VfUlNWX1BBR0VTICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0Ny1cXHRcXHRcXHQgICBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzQ4OlxcdFxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsIFBTRV9BTExSU1ZfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0OS1cXHRcXHRcXHQgICAgICBGSUVMRF9QUkVQKFBTRV9BTExSU1ZfTUFTSywgYWxsX3JzdikpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTMtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM1NDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0xLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzU3LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTFdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTg6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1OS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2MS1cXHRmb3IgKHEgPSA2OyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0yXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzYyOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTIsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzYzLVxcdC8qIEdETTMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2NC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0zXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzY1OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTMsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjYtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjktXFx0XFx0aWYgKHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX1BQRTFdIC8gMilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3MDpcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUxLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzcxLVxcdFxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3Mi1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzM6XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzYtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNMl07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM3NzpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0yLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc4LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgwLVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTNdIC0gMTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzgxOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTMsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzgyLVxcdC8qIENETTQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4My1cXHRmb3IgKHEgPSA0OyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE00XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg0OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTQsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODUtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg2OlxcdGlmIChhaXJvaGFfcHBlX2lzX2VuYWJsZWQoZXRoLCAxKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg3LVxcdFxcdC8qIFBQRTIgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg5LVxcdFxcdFxcdGlmIChxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXSAvIDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTA6XFx0XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzkzLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM5NDpcXHRcXHRcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9QUEUyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk1LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBxLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzk5LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0dETTRdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDA6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfR0RNNCwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwMy1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE01XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA0OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0NETTUsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDUtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MDg6c3RhdGljIGludCBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDE2OlxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxOS1cXHRcXHQgICAgICBNQ19WTEFOX0NGR19UQUJMRV9TRUxfTUFTSyB8IE1DX1ZMQU5fQ0ZHX1JXX01BU0s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MjA6XFx0XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX01DX1ZMQU5fQ0ZHLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIxOlxcdFxcdGVyciA9IHJlYWRfcG9sbF90aW1lb3V0KGFpcm9oYV9mZV9yciwgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDIyLVxcdFxcdFxcdFxcdFxcdHZhbCBcXHUwMDI2IE1DX1ZMQU5fQ0ZHX0NNRF9ET05FX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyOC1cXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgQUlST0hBX0ZFX01DX01BWF9WTEFOX1BPUlQ7IGorKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDI5OlxcdFxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0RBVEEsIDB4MCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzMy1cXHRcXHRcXHQgICAgICBNQ19WTEFOX0NGR19SV19NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDM0OlxcdFxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNTpcXHRcXHRcXHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQzNi1cXHRcXHRcXHRcXHRcXHRcXHR2YWwgXFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NDg6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX2Nyc25fcXNlbF9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUwLVxcdC8qIENETTFfQ1JTTl9RU0VMICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjIgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTItXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU0LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTU6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMDggXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NTYtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU4LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NTk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjEgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjAtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYyLVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NjM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjQgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjQtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY2LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0Njc6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDEsIENSU05fMjUgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NjgtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDcxLVxcdC8qIENETTJfQ1JTTl9RU0VMICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzI6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMDggXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzMtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzA4KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc1LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0NzY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjEgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00NzctXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIxKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc5LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODA6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjIgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODEtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzIyKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgzLVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1ExKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODQ6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjQgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODUtXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI0KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg3LVxcdFxcdFxcdFxcdCBDRE1fQ1JTTl9RU0VMX1E2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0ODg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fQ1JTTl9RU0VMKDIsIENSU05fMjUgXFx1MDAzZVxcdTAwM2UgMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00ODktXFx0XFx0ICAgICAgQ0RNX0NSU05fUVNFTF9SRUFTT05fTUFTSyhDUlNOXzI1KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk0OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0OTY6XFx0YWlyb2hhX2ZlX21hY2NyX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5OC1cXHQvKiBQU0UgSVEgcmVzZXJ2ZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk5OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjEsIFBTRV9JUV9SRVMxX1AyX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDAtXFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfSVFfUkVTMV9QMl9NQVNLLCAweDEwKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19QU0VfSVFfUkVWMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwMi1cXHRcXHQgICAgICBQU0VfSVFfUkVTMl9QNV9NQVNLIHwgUFNFX0lRX1JFUzJfUDRfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTA2LVxcdC8qIGVuYWJsZSBGRSBjb3B5IGVuZ2luZSBmb3IgS0EvRFBJICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1BDRV9DRkcsIFBDRV9EUElfRU5fTUFTSyB8IFBDRV9LQV9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwOC1cXHQvKiBzZXQgdmlwIHF1ZXVlIHNlbGVjdGlvbiB0byByaW5nIDEgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUwOTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDEpLCBDRE1fVklQX1FTRUxfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMC1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUxMTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0NETV9GV0RfQ0ZHKDIpLCBDRE1fVklQX1FTRUxfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WSVBfUVNFTF9NQVNLLCAweDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxMy1cXHQvKiBzZXQgR0RNNCBzb3VyY2UgaW50ZXJmYWNlIG9mZnNldCB0byA4ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTQ6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fU1JDX1BPUlRfU0VUKDQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTE1LVxcdFxcdCAgICAgIEdETV9TUE9SVF9PRkYyX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MjItXFx0Lyogc2V0IFBTRSBQYWdlIGFzIDEyOEIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUyMzpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX0RNQV9HTE9fQ0ZHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI0LVxcdFxcdCAgICAgIEZFX0RNQV9HTE9fTDJfU1BBQ0VfTUFTSyB8IEZFX0RNQV9HTE9fUEdfU1pfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI2LVxcdFxcdCAgICAgIEZFX0RNQV9HTE9fUEdfU1pfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mjc6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1JTVF9HTE9fQ0ZHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTI4LVxcdFxcdCAgICAgRkVfUlNUX0NPUkVfTUFTSyB8IEZFX1JTVF9HRE0zX01CSV9BUkJfTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUzNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAwLCBCSVQoNCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDEsIEJJVCgyOCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDIsIEJJVCg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Mzg6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMywgQklUKDI4KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDA6XFx0YWlyb2hhX2ZlX3ZpcF9zZXR1cChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQxOlxcdGFpcm9oYV9mZV9wc2VfcG9ydHNfaW5pdChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQzOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX01JU0NfQ0ZHLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ0LVxcdFxcdCAgICAgIEdETTJfUkRNX0FDS19XQUlUX1BSRUZfTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDUtXFx0XFx0ICAgICAgR0RNMl9DSE5fVkxEX01PREVfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NDY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX09BTV9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NDctXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fT0FNX1FTRUxfTUFTSywgMTUpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUwLVxcdC8qIE5QVSBDb3JlLTMsIE5QVSBCcmlkZ2UgQ2hhbm5lbC0zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTUyLVxcdFxcdCAgICAgIElQX0ZSQUdNRU5UX1BPUlRfTUFTSyB8IElQX0ZSQUdNRU5UX05CUV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTUtXFx0LyogUURNQSBMQU4sIFJYIFJpbmctMjIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU1NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0lQX0ZSQUdfRlAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NTctXFx0XFx0ICAgICAgSVBfQVNTRU1CTEVfUE9SVF9NQVNLIHwgSVBfQVNTRU1CTEVfTkJRX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2MTpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9GV0RfQ0ZHKEFJUk9IQV9HRE0zX0lEWCksIEdETV9QQURfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjI6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNNF9JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTYzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY0LVxcdC8qIEVuYWJsZSBzcGxpdCBmb3IgTUlCIGNvdW50ZXJzIGZvciBHRE0zIGFuZCBHRE00ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNM19JRFgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY2LVxcdFxcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjctXFx0XFx0ICAgICAgRkVfR0RNX1JYX01JQl9TUExJVF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU2ODpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0dETV9NSUJfQ0ZHKEFJUk9IQV9HRE00X0lEWCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjktXFx0XFx0ICAgICAgRkVfR0RNX1RYX01JQl9TUExJVF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTcyOlxcdGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc0OlxcdGFpcm9oYV9mZV9jbGVhcihldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1FVRVVFX1hGQ19NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NTpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0NQT1JUX0NGRywgRkVfQ1BPUlRfUE9SVF9YRkNfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzctXFx0LyogZGVmYXVsdCBhZ2luZyBtb2RlIGZvciBtYmkgdW5sb2NrIGlzc3VlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Nzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fQ0hOX1JMUygyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3OS1cXHRcXHQgICAgICBNQklfUlhfQUdFX1NFTF9NQVNLIHwgTUJJX1RYX0FHRV9TRUxfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTgzLVxcdC8qIGRpc2FibGUgSUZDIGJ5IGRlZmF1bHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4NDpcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1NSX0lGQ19DRkcsIEZFX0lGQ19FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4Ni1cXHQvKiBlbmFibGUgMTpOIHZsYW4gYWN0aW9uLCBpbml0IHZsYW4gdGFibGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU4NzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX01DX1ZMQU5fRU4sIE1DX1ZMQU5fRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODk6XFx0cmV0dXJuIGFpcm9oYV9mZV9tY192bGFuX2NsZWFyKGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTkyOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfZmlsbF9yeF9xdWV1ZShzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5NDpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVxcdTAwM2VxZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTk1LVxcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5OC1cXHR3aGlsZSAocS1cXHUwMDNlcXVldWVkIFxcdTAwM2MgcS1cXHUwMDNlbmRlc2MgLSAxKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTk6XFx0XFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFxcdTAwMjZxLVxcdTAwM2VlbnRyeVtxLVxcdTAwM2VoZWFkXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYwMDpcXHRcXHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFxcdTAwMjZxLVxcdTAwM2VkZXNjW3EtXFx1MDAzZWhlYWRdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjAxLVxcdFxcdHN0cnVjdCBwYWdlICpwYWdlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzAtXFx0aWYgKG5mcmFtZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MzE6XFx0XFx0YWlyb2hhX3FkbWFfcm13KHFkbWEsIFJFR19SWF9DUFVfSURYKHFpZCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzItXFx0XFx0XFx0XFx0UlhfUklOR19DUFVfSURYX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzODpzdGF0aWMgc3RydWN0IGFpcm9oYV9nZG1fZGV2ICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYzOTphaXJvaGFfcWRtYV9nZXRfZ2RtX2RldihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoLCBzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NDE6XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY0Mi1cXHR1MTYgcCwgZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjYwOnN0YXRpYyBpbnQgYWlyb2hhX3FkbWFfcnhfcHJvY2VzcyhzdHJ1Y3QgYWlyb2hhX3F1ZXVlICpxLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2Mi1cXHRlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIgPSBwYWdlX3Bvb2xfZ2V0X2RtYV9kaXIocS1cXHUwMDNlcGFnZV9wb29sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MzpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBxLVxcdTAwM2VxZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY0OlxcdHN0cnVjdCBhaXJvaGFfZXRoICpldGggPSBxZG1hLVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjUtXFx0aW50IHFpZCA9IHEgLSBcXHUwMDI2cWRtYS1cXHUwMDNlcV9yeFswXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY4LVxcdHdoaWxlIChkb25lIFxcdTAwM2MgYnVkZ2V0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Njk6XFx0XFx0c3RydWN0IGFpcm9oYV9xdWV1ZV9lbnRyeSAqZSA9IFxcdTAwMjZxLVxcdTAwM2VlbnRyeVtxLVxcdTAwM2V0YWlsXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY3MDpcXHRcXHRzdHJ1Y3QgYWlyb2hhX3FkbWFfZGVzYyAqZGVzYyA9IFxcdTAwMjZxLVxcdTAwM2VkZXNjW3EtXFx1MDAzZXRhaWxdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjcxLVxcdFxcdHUzMiBoYXNoLCByZWFzb24sIG1zZzEsIGRlc2NfY3RybDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY3MjpcXHRcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9kZXYgKmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3My1cXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2OTU6XFx0XFx0ZGV2ID0gYWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoZXRoLCBkZXNjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY5Ni1cXHRcXHRpZiAoSVNfRVJSKGRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcyOC1cXHRcXHRpZiAobmV0ZGV2X3VzZXNfZHNhKG5ldGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjcyOTpcXHRcXHRcXHRzdHJ1Y3QgYWlyb2hhX2dkbV9wb3J0ICpwb3J0ID0gZGV2LVxcdTAwM2Vwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03NTItXFx0XFx0aWYgKHJlYXNvbiA9PSBQUEVfQ1BVX1JFQVNPTl9ISVRfVU5CSU5EX1JBVEVfUkVBQ0hFRClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc1MzpcXHRcXHRcXHRhaXJvaGFfcHBlX2NoZWNrX3NrYihcXHUwMDI2ZXRoLVxcdTAwM2VwcGUtXFx1MDAzZWRldiwgcS1cXHUwMDNlc2tiLCBoYXNoLFxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNzowOC4zMDQyNzYzNDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDY0NDgzNTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgQWlyb2hhIE5QVSBEcml2ZXIgZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGFpcm9oYV9ucHVgIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jYCBkcml2ZXIuIEkgc2VlIHRoYXQgYGFpcm9oYV9ucHVgIGlzIGluaXRpYWxpemVkIHZpYSBgYWlyb2hhX3BwZV9ucHVfZ2V0KClgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgLiBBbmQsIGBhaXJvaGFfcHBlX29mZmxvYWRfc2V0dXAoKWAgaXRzZWxmIGlzIGNhbGxlZCBieSBmdW5jdGlvbnMgaW4gYGFpcm9oYV9ldGguY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIGBhaXJvaGFfZXRoLmNgIGlzIGEgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVyLiBZZXMsIGl0IHNlZW1zIHRvIGJlIGFuIEV0aGVybmV0IGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIEFpcm9oYSBTb0NzLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyBzb21lIHNwZWNpYWwtcHVycG9zZSBoYXJkd2FyZSwgbGlrZSBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlciwgYmVjYXVzZSBpZiBzbywgaXQncyBpbW1lZGlhdGVseSBleGNsdWRlZCBmcm9tIGZ1enppbmcuIEJ1dCBubywgaXQncyBqdXN0IGFuIFNvQy1pbnRlZ3JhdGVkIEV0aGVybmV0IGRyaXZlci4gVGhhdCdzIGtleS5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNvZGUgZmFsbHMgdW5kZXIgc2V2ZXJhbCBjYXRlZ29yaWVzLCBpbmNsdWRpbmcgY29kZSB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBJcyBBaXJvaGEgRXRoZXJuZXQgYSBQQ0llIGNhcmQ/IE5vLCBpdCdzIGJ1aWx0IGludG8gdGhlIFNvQy5cblxuQ2FuIFN5emthbGxlciBmdXp6IHRoaXM/IFN5emthbGxlciAqY2FuKiBmdXp6IHBsYXRmb3JtIGRyaXZlcnMgaWYgdGhleSBjYW4gYmUgaW5zdGFudGlhdGVkLiBTb21ldGltZXMgdGhpcyBoYXBwZW5zIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgcHNldWRvLWRldmljZXMuIFRoZSBwcm9tcHQgaXMgY2xlYXIsIHRob3VnaDogSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY29kZSAqY2FuKiBiZSBleGVjdXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0IGlzLCBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIG1lYW4gSSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhlcmUncyB0aGUgcHJvYmxlbTogU29DLXNwZWNpZmljIEV0aGVybmV0IGRyaXZlcnMsIGxpa2UgQWlyb2hhIChhbG9uZyB3aXRoIE1lZGlhVGVrIGFuZCBRdWFsY29tbSBJUFEpLCBhcmUgKm5vdCogdHlwaWNhbGx5IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZXkgdXN1YWxseSByZXF1aXJlIHZlcnkgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiwgd2hpY2ggaXNuJ3QgcHJlc2VudCBpbiBzdGFuZGFyZCBzeXprYWxsZXIgUUVNVSBpbWFnZXMgdGhhdCB1c2UgYHEzNWAgb3IgYHZpcnRgIG1hY2hpbmUgdHlwZXMuXG5cbkkga25vdyBTeXprYWxsZXIgaGFzIGJlZW4gZXZvbHZpbmcsIGFuZCBJJ20gYXdhcmUgdGhhdCBpdCdzIGFkZGVkIHN1cHBvcnQgZm9yIHBsYXRmb3JtIGRyaXZlcnMgdGhyb3VnaCBtZWNoYW5pc21zIGxpa2UgYHN5el9kZXZyZXNgIG9yIHNpbWlsYXIsIGJ1dCB0aGUgY29yZSBpc3N1ZSByZW1haW5zIE1NSU8uIElmIHRoZSBoYXJkd2FyZSBpc24ndCB0aGVyZSwgYW55IGF0dGVtcHQgdG8gcmVhZCBvciB3cml0ZSB0byBNTUlPIGFkZHJlc3NlcyB3aWxsIHJlc3VsdCBpbiBhIGNyYXNoLCBhIHByb2JlIGZhaWx1cmUsIG9yIGp1c3QgZ2FyYmFnZSBkYXRhLiBJIHJlbWVtYmVyIHRoZSBgc3l6X3BsYXRmb3JtX2RldmljZV9hZGRgIHBzZXVkby1zeXNjYWxsLCBidXQgdGhhdCBkb2Vzbid0IGV4aXN0LiBTeXprYWxsZXIgdXNlcyBgc3l6X21vdW50X2ltYWdlYCBhbmQgY3JhZnRlZCBmaWxlc3lzdGVtcyB0byBsb2FkIHRoaW5ncywgbWF5YmUgaW5jbHVkaW5nIGRldmljZSB0cmVlIG92ZXJsYXlzLiBUaGUgbGF0ZXN0IGFkZGl0aW9ucyB0byBmdXp6aW5nIHBsYXRmb3JtIGRyaXZlcnMgZGVwZW5kIG9uIHdoYXQgdGhvc2Ugb3ZlcmxheXMgZG8uXG5cbklmIGEgRFQgb3ZlcmxheSBpcyB1c2VkIHRvIHJlZ2lzdGVyIHRoaXMgaGFyZHdhcmUsIHRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKWAuIFRoZSBvdmVybGF5IHdpbGwgc3BlY2lmeSBzb21lIHBoeXNpY2FsIGFkZHJlc3MuIElmIHRoYXQgYWRkcmVzcyBpcyBub3QgYmFja2VkIGJ5IFJBTSBvciBhIHJlYWwgTU1JTyBkZXZpY2UgaW4gUUVNVSwgYGlvcmVtYXBgICptaWdodCogc3VjY2VlZCwgYnV0IGFjdHVhbGx5IHJlYWRpbmcgb3Igd3JpdGluZyB0byBpdCB3aWxsIGNhdXNlIGEgc3luY2hyb25vdXMgZXh0ZXJuYWwgYWJvcnQgb3IgcGFnZSBmYXVsdCBpZiB0aGUgYWRkcmVzcyBpcyBub3QgbWFwcGVkLiBPciwgSSBtaWdodCBqdXN0IGdldCBhbGwgMHhGRnMsIHdoaWNoIHdpbGwgbGlrZWx5IGNhdXNlIGEgcHJvYmUgZmFpbHVyZS5cblxuTGV0J3MgbG9vayBjbG9zZWx5IGF0IGBhaXJvaGFfbnB1X3Byb2JlYDogaXQgY2FsbHMgYGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZSgpYCB0byBtYXAgdGhlIE1NSU8gcmVnaW9uLiBUaGVuIGl0IHVzZXMgYGRldm1fcmVnbWFwX2luaXRfbW1pb2AgdG8gaW5pdGlhbGl6ZSBhIGByZWdtYXBgLiBDcnVjaWFsbHksIGl0IHRoZW4gY2FsbHMgYGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKClgLCB3aGljaCwgaW4gdHVybiwgY2FsbHMgYGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZSgpYC4gVGhpcyBmdW5jdGlvbiByZXF1ZXN0cyBmaXJtd2FyZSwgYW5kIGlmIHRoYXQgZmlybXdhcmUgaXNuJ3QgZm91bmQsIGl0IGZhaWxzLiBJZiB0aGUgcHJvYmUgZmFpbHMsIGV2ZXJ5dGhpbmcgYWZ0ZXIgaXQsIGxpa2UgYGFpcm9oYV9ucHVfc2VuZF9tc2dgLCBpcyBuZXZlciByZWFjaGVkLlxuXG5UaGUgcmVhY2hhYmlsaXR5IG9mIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCBkZXBlbmRzIG9uIHN1Y2Nlc3NmdWxseSBwcm9iaW5nIHRoZSBkcml2ZXIuIGBhaXJvaGFfbnB1X3NlbmRfbXNnYCBpcyBjYWxsZWQgYnkgYGFpcm9oYV9ucHVfcHBlX2luaXRgLCBgYWlyb2hhX25wdV93bGFuX21zZ19zZW5kYCwgZXRjLiwgd2hpY2ggYXJlIHJlYWNoZWQgdGhyb3VnaCBmdW5jdGlvbiBwb2ludGVycyB2aWEgYG5wdS1cdTAwM2VvcHMucHBlX2luaXRgIGV0Yy4gVGhpcyBpcyBjYWxsZWQgZnJvbSBgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKClgIGluIGBhaXJvaGFfcHBlLmNgLCB3aGljaCBpcyB1bHRpbWF0ZWx5IGNhbGxlZCBmcm9tIGBhaXJvaGFfZXRoX3Byb2JlYC4gVGhlcmVmb3JlLCBpdCByZXF1aXJlcyB0aGUgYGFpcm9oYV9ldGhgIGRyaXZlciB0byBwcm9iZSBzdWNjZXNzZnVsbHkuIGBhaXJvaGFfZXRoYCBpcyBhbHNvIGEgcGxhdGZvcm0gZHJpdmVyLiBJZiB0aGVyZSBpcyBubyBBaXJvaGEgaGFyZHdhcmUsIHRoaXMgcHJvYmUgd2lsbCBmYWlsLlxuXG5JIGhhdmUgdG8gY29uc2lkZXIgdGhlIGZhY3RcblxuIiwiSW5wdXRUb2tlbnMiOjMyNTI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowNzoyOC45NDkxMTU1MzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ3ODQzNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyb2hhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNjg5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTkVUX0FJUk9IQSkgKz0gYWlyb2hhLWV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL01ha2VmaWxlOjc6YWlyb2hhLWV0aC15IDo9IGFpcm9oYV9ldGgubyBhaXJvaGFfcHBlLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvTWFrZWZpbGU6ODphaXJvaGEtZXRoLSQoQ09ORklHX0RFQlVHX0ZTKSArPSBhaXJvaGFfcHBlX2RlYnVnZnMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19ORVRfQUlST0hBX05QVSkgKz0gYWlyb2hhX25wdS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTc6I2luY2x1ZGUgXFxcImFpcm9oYV9yZWdzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODojaW5jbHVkZSBcXFwiYWlyb2hhX2V0aC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMDp1MzIgYWlyb2hhX3JyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNTp2b2lkIGFpcm9oYV93cih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA6dTMyIGFpcm9oYV9ybXcodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMyOlxcdHZhbCB8PSAoYWlyb2hhX3JyKGJhc2UsIG9mZnNldCkgXFx1MDAyNiB+bWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMzpcXHRhaXJvaGFfd3IoYmFzZSwgb2Zmc2V0LCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mzg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfc2V0X2lycW1hc2soc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgY2xlYXIsIHUzMiBzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MTpcXHRzdHJ1Y3QgYWlyb2hhX3FkbWEgKnFkbWEgPSBpcnFfYmFuay1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyLVxcdGludCBiYW5rID0gaXJxX2JhbmsgLSBcXHUwMDI2cWRtYS1cXHUwMDNlaXJxX2JhbmtzWzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MS1cXHRpcnFfYmFuay1cXHUwMDNlaXJxbWFza1tpbmRleF0gfD0gc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI6XFx0YWlyb2hhX3FkbWFfd3IocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTMtXFx0XFx0ICAgICAgIGlycV9iYW5rLVxcdTAwM2VpcnFtYXNrW2luZGV4XSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc6XFx0YWlyb2hhX3FkbWFfcnIocWRtYSwgUkVHX0lOVF9FTkFCTEUoYmFuaywgaW5kZXgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjYyOnN0YXRpYyB2b2lkIGFpcm9oYV9xZG1hX2lycV9lbmFibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02My1cXHRcXHRcXHRcXHQgICBpbnQgaW5kZXgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjU6XFx0YWlyb2hhX3FkbWFfc2V0X2lycW1hc2soaXJxX2JhbmssIGluZGV4LCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njg6c3RhdGljIHZvaWQgYWlyb2hhX3FkbWFfaXJxX2Rpc2FibGUoc3RydWN0IGFpcm9oYV9pcnFfYmFuayAqaXJxX2JhbmssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OS1cXHRcXHRcXHRcXHQgICAgaW50IGluZGV4LCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTcwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjcxOlxcdGFpcm9oYV9xZG1hX3NldF9pcnFtYXNrKGlycV9iYW5rLCBpbmRleCwgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjc0OnN0YXRpYyBpbnQgYWlyb2hhX3NldF9tYWNhZGRyKHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBjb25zdCB1OCAqYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTc2LVxcdHU4IHJlZl9hZGRyW0VUSF9BTEVOXSBfX2FsaWduZWQoMik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NzpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03OC1cXHR1MzIgcmVnLCB2YWwsIGxtaW4sIGxtYXg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTg1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKGV0aC1cXHUwMDNlcG9ydHMpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjg2OlxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQgPSBldGgtXFx1MDAzZXBvcnRzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtODctXFx0XFx0aW50IGo7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTkyLVxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBBUlJBWV9TSVpFKHBvcnQtXFx1MDAzZWRldnMpOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjkzOlxcdFxcdFxcdHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqaXRlcl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05NC1cXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEwMDpcXHRcXHRcXHRpZiAoYWlyb2hhX2lzX2xhbl9nZG1fZGV2KGl0ZXJfZGV2KSAhPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTAxOlxcdFxcdFxcdCAgICBhaXJvaGFfaXNfbGFuX2dkbV9kZXYoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEwMi1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM0OlxcdHJlZyA9IGFpcm9oYV9pc19sYW5fZ2RtX2RldihkZXYpID8gUkVHX0ZFX0xBTl9NQUNfSCA6IFJFR19GRV9XQU5fTUFDX0g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xMzUtXFx0dmFsID0gKGFkZHJbMF0gXFx1MDAzY1xcdTAwM2MgMTYpIHwgKGFkZHJbMV0gXFx1MDAzY1xcdTAwM2MgOCkgfCBhZGRyWzJdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTM2OlxcdGFpcm9oYV9mZV93cihldGgsIHJlZywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjEzODpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfTUFDX0xNSU4ocmVnKSwgbG1pbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxMzk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX01BQ19MTUFYKHJlZyksIGxtYXgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTQxOlxcdGFpcm9oYV9wcGVfaW5pdF91cGRfbWVtKGRldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE0NjpzdGF0aWMgdm9pZCBhaXJvaGFfc2V0X2dkbV9wb3J0X2Z3ZF9jZmcoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNDctXFx0XFx0XFx0XFx0XFx0dTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE0OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9PQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fT0NGUV9NQVNLLCB2YWwpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE1MTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgYWRkciwgR0RNX01DRlFfTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE1Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKEdETV9NQ0ZRX01BU0ssIHZhbCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTUzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBhZGRyLCBHRE1fQkNGUV9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU0LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoR0RNX0JDRlFfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNTU6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIGFkZHIsIEdETV9VQ0ZRX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNTYtXFx0XFx0ICAgICAgRklFTERfUFJFUChHRE1fVUNGUV9NQVNLLCB2YWwpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTU5OnN0YXRpYyBpbnQgYWlyb2hhX3NldF92aXBfZm9yX2dkbV9wb3J0KHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqZGV2LCBib29sIGVuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxNjE6XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2MjpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gZGV2LVxcdTAwM2VldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjMtXFx0dTMyIHZpcF9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjYtXFx0aWYgKGVuYWJsZSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTY3OlxcdFxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE2ODpcXHRcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0ZFX0lGQ19QT1JUX0VOLCB2aXBfcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xNjktXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MDpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfVklQX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3MTpcXHRcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfSUZDX1BPUlRfRU4sIHZpcF9wb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE3NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfbWFjY3JfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTgxLVxcdGZvciAocCA9IDE7IHAgXFx1MDAzYz0gQVJSQVlfU0laRShldGgtXFx1MDAzZXBvcnRzKTsgcCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODI6XFx0XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4My1cXHRcXHRcXHQgICAgICBHRE1fVENQX0NLU1VNX01BU0sgfCBHRE1fVURQX0NLU1VNX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTg0LVxcdFxcdFxcdCAgICAgIEdETV9JUDRfQ0tTVU1fTUFTSyB8IEdETV9EUk9QX0NSQ19FUlJfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoxODU6XFx0XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19HRE1fTEVOX0NGRyhwKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE4Ni1cXHRcXHRcXHQgICAgICBHRE1fU0hPUlRfTEVOX01BU0sgfCBHRE1fTE9OR19MRU5fTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTkxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX1ZMQU5fQ1RSTCgxKSwgQ0RNX1ZMQU5fTUFTSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Mi1cXHRcXHQgICAgICBGSUVMRF9QUkVQKENETV9WTEFOX01BU0ssIDB4ODEwMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk0OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9QQUQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMTk1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTE5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjE5NzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfdmlwX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0xOTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MTk5OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigzKSwgRVRIX1BfUFBQX0RJU0MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMyksIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIwMjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oNCksIFBQUF9MQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjAzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig2KSwgUFBQX0lQQ1ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjA4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMDktXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEyOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig3KSwgUFBQX0NIQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjEzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oNyksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMTQtXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IEZJRUxEX1BSRVAoUEFUTl9UWVBFX01BU0ssIDEpIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjE3LVxcdC8qIEJPT1RQICgweDQzKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjE4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig4KSwgMHg0Myk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMTk6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig4KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyMC1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjIzLVxcdC8qIEJPT1RQICgweDQ0KSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjI0OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTig5KSwgMHg0NCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMjU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTig5KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIyNi1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjI5LVxcdC8qIElTQUtNUCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjMwOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxMCksIDB4MWY0MDFmNCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyMzE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9FTigxMCksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yMzItXFx0XFx0ICAgICBQQVROX0ZDUFVfRU5fTUFTSyB8IFBBVE5fRFBfRU5fTUFTSyB8IFBBVE5fU1BfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNTpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMTEpLCBQUFBfSVBWNkNQKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjIzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDExKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTIzNy1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgRklFTERfUFJFUChQQVROX1RZUEVfTUFTSywgMSkgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNDAtXFx0LyogREhDUHY2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNDE6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX1ZJUF9QQVROKDEyKSwgMHgyMjIwMjIzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI0MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX0VOKDEyKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI0My1cXHRcXHQgICAgIFBBVE5fRkNQVV9FTl9NQVNLIHwgUEFUTl9EUF9FTl9NQVNLIHwgUEFUTl9TUF9FTl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigxOSksIFBQUF9QQVApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjQ3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMTkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjQ4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBGSUVMRF9QUkVQKFBBVE5fVFlQRV9NQVNLLCAxKSB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI1MS1cXHQvKiBFVEgtXFx1MDAzZUVUSF9QXzE5MDUgKDB4ODkzYSkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI1MjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfVklQX1BBVE4oMjApLCAweDg5M2EpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjUzOlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU0LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU2OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfUEFUTigyMSksIEVUSF9QX0xMRFApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjU3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9WSVBfRU4oMjEpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjU4LVxcdFxcdCAgICAgUEFUTl9GQ1BVX0VOX01BU0sgfCBQQVROX0VOX01BU0spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNjE6c3RhdGljIHUzMiBhaXJvaGFfZmVfZ2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2Mi1cXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBwb3J0LCB1MzIgcXVldWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yNjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX1FVRVVFX0NGR19XUixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI2NS1cXHRcXHQgICAgICBQU0VfQ0ZHX1BPUlRfSURfTUFTSyB8IFBTRV9DRkdfUVVFVUVfSURfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MjY5OlxcdHJldHVybiBhaXJvaGFfZmVfZ2V0KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjcwLVxcdFxcdFxcdCAgICAgUFNFX0NGR19PUV9SU1ZfTUFTSyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3MzpzdGF0aWMgdm9pZCBhaXJvaGFfZmVfc2V0X3BzZV9xdWV1ZV9yc3ZfcGFnZXMoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI3NC1cXHRcXHRcXHRcXHRcXHQgICAgICB1MzIgcG9ydCwgdTMyIHF1ZXVlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI3NjpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9RVUVVRV9DRkdfVkFMLCBQU0VfQ0ZHX09RX1JTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0NGR19PUV9SU1ZfTUFTSywgdmFsKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyNzg6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfUVVFVUVfQ0ZHX1dSLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjc5LVxcdFxcdCAgICAgIFBTRV9DRkdfUE9SVF9JRF9NQVNLIHwgUFNFX0NGR19RVUVVRV9JRF9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjg2OnN0YXRpYyB1MzIgYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjg3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI4ODpcXHRyZXR1cm4gYWlyb2hhX2ZlX2dldChldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI4OS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTE6c3RhdGljIGludCBhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3Yoc3RydWN0IGFpcm9oYV9ldGggKmV0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5Mi1cXHRcXHRcXHRcXHQgICAgdTMyIHBvcnQsIHUzMiBxdWV1ZSwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTQ6XFx0dTMyIG9yaWdfdmFsID0gYWlyb2hhX2ZlX2dldF9wc2VfcXVldWVfcnN2X3BhZ2VzKGV0aCwgcG9ydCwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1LVxcdHUzMiB0bXAsIGFsbF9yc3YsIGZxX2xpbWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3OlxcdGFpcm9oYV9mZV9zZXRfcHNlX3F1ZXVlX3Jzdl9wYWdlcyhldGgsIHBvcnQsIHF1ZXVlLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk5LVxcdC8qIG1vZGlmeSBhbGwgcnN2ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDA6XFx0YWxsX3JzdiA9IGFpcm9oYV9mZV9nZXRfcHNlX2FsbF9yc3YoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwMS1cXHRhbGxfcnN2ICs9ICh2YWwgLSBvcmlnX3ZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMDI6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9QU0VfQlVGX1NFVCwgUFNFX0FMTFJTVl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzAzLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0FMTFJTVl9NQVNLLCBhbGxfcnN2KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNS1cXHQvKiBtb2RpZnkgaHRoZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA2OlxcdGZxX2xpbWl0ID0gYWlyb2hhX2ZlX2dldChldGgsIFBTRV9GUV9DRkcsIFBTRV9GUV9MSU1JVF9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMwNy1cXHR0bXAgPSBmcV9saW1pdCAtIGFsbF9yc3YgLSAweDIwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzA4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzA5LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX0hUSERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyLVxcdHRtcCA9IGZxX2xpbWl0IC0gYWxsX3JzdiAtIDB4MTAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX1NIQVJFX1VTRURfVEhELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE0LVxcdFxcdCAgICAgIFBTRV9TSEFSRV9VU0VEX01USERfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzE2LVxcdHRtcCA9ICgzICogdG1wKSBcXHUwMDNlXFx1MDAzZSAyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzE3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfRkVfUFNFX0JVRl9TRVQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTgtXFx0XFx0ICAgICAgUFNFX1NIQVJFX1VTRURfTFRIRF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMjQ6c3RhdGljIHZvaWQgYWlyb2hhX2ZlX3BzZV9wb3J0c19pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNDE6XFx0aWYgKGFpcm9oYV9wcGVfaXNfZW5hYmxlZChldGgsIDEpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDItXFx0XFx0dTMyIGFsbF9yc3Y7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM0NC1cXHRcXHQvKiBodyBtaXNzZXMgUFBFMiBvcSByc3YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0NTpcXHRcXHRhbGxfcnN2ID0gYWlyb2hhX2ZlX2dldF9wc2VfYWxsX3JzdihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzQ2LVxcdFxcdGFsbF9yc3YgKz0gUFNFX1JTVl9QQUdFUyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDctXFx0XFx0XFx0ICAgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM0ODpcXHRcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX0ZFX1BTRV9CVUZfU0VULCBQU0VfQUxMUlNWX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNDktXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChQU0VfQUxMUlNWX01BU0ssIGFsbF9yc3YpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzUzLVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTFdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNTQ6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1NS1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM1Ny1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE0xXTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzU4OlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTEsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNTktXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjEtXFx0Zm9yIChxID0gNjsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNMl07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2MjpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0yLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM2My1cXHQvKiBHRE0zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNjQtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfR0RNM107IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM2NTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9HRE0zLCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY2LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzY5LVxcdFxcdGlmIChxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9QUEUxXSAvIDIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzA6XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMSwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3MS1cXHRcXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zNzItXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzczOlxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTEsIHEsIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzc2LVxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBwc2VfcG9ydF9udW1fcXVldWVzW0ZFX1BTRV9QT1JUX0NETTJdOyBxKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozNzc6XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfQ0RNMiwgcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM3OC1cXHRcXHRcXHRcXHRcXHQgUFNFX1FVRVVFX1JTVl9QQUdFUyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4MC1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9DRE0zXSAtIDE7IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4MTpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE0zLCBxLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Mi1cXHQvKiBDRE00ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zODMtXFx0Zm9yIChxID0gNDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNF07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE00LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzg1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjM4NjpcXHRpZiAoYWlyb2hhX3BwZV9pc19lbmFibGVkKGV0aCwgMSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4Ny1cXHRcXHQvKiBQUEUyICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM4OS1cXHRcXHRcXHRpZiAocSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfUFBFMl0gLyAyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzkwOlxcdFxcdFxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX1BQRTIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zOTEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5My1cXHRcXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozOTQ6XFx0XFx0XFx0XFx0YWlyb2hhX2ZlX3NldF9wc2Vfb3FfcnN2KGV0aCwgRkVfUFNFX1BPUlRfUFBFMixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgcSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTM5OS1cXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgcHNlX3BvcnRfbnVtX3F1ZXVlc1tGRV9QU0VfUE9SVF9HRE00XTsgcSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDAwOlxcdFxcdGFpcm9oYV9mZV9zZXRfcHNlX29xX3JzdihldGgsIEZFX1BTRV9QT1JUX0dETTQsIHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDEtXFx0XFx0XFx0XFx0XFx0IFBTRV9RVUVVRV9SU1ZfUEFHRVMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MDMtXFx0Zm9yIChxID0gMDsgcSBcXHUwMDNjIHBzZV9wb3J0X251bV9xdWV1ZXNbRkVfUFNFX1BPUlRfQ0RNNV07IHErKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQwNDpcXHRcXHRhaXJvaGFfZmVfc2V0X3BzZV9vcV9yc3YoZXRoLCBGRV9QU0VfUE9SVF9DRE01LCBxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA1LVxcdFxcdFxcdFxcdFxcdCBQU0VfUVVFVUVfUlNWX1BBR0VTKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDA4OnN0YXRpYyBpbnQgYWlyb2hhX2ZlX21jX3ZsYW5fY2xlYXIoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQxNjpcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MTktXFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfVEFCTEVfU0VMX01BU0sgfCBNQ19WTEFOX0NGR19SV19NQVNLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDIwOlxcdFxcdGFpcm9oYV9mZV93cihldGgsIFJFR19NQ19WTEFOX0NGRywgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyMTpcXHRcXHRlcnIgPSByZWFkX3BvbGxfdGltZW91dChhaXJvaGFfZmVfcnIsIHZhbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQyMi1cXHRcXHRcXHRcXHRcXHR2YWwgXFx1MDAyNiBNQ19WTEFOX0NGR19DTURfRE9ORV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MjgtXFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIEFJUk9IQV9GRV9NQ19NQVhfVkxBTl9QT1JUOyBqKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQyOTpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9EQVRBLCAweDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzMtXFx0XFx0XFx0ICAgICAgTUNfVkxBTl9DRkdfUldfTUFTSztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQzNDpcXHRcXHRcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfTUNfVkxBTl9DRkcsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo0MzU6XFx0XFx0XFx0ZXJyID0gcmVhZF9wb2xsX3RpbWVvdXQoYWlyb2hhX2ZlX3JyLCB2YWwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00MzYtXFx0XFx0XFx0XFx0XFx0XFx0dmFsIFxcdTAwMjYgTUNfVkxBTl9DRkdfQ01EX0RPTkVfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDQ4OnN0YXRpYyB2b2lkIGFpcm9oYV9mZV9jcnNuX3FzZWxfaW5pdChzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDQ5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1MC1cXHQvKiBDRE0xX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDUyLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1NC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU1OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDU2LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ1OC1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDU5OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDYwLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Mi1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDYzOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY0LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ2Ni1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDY3OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgxLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDY4LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3MS1cXHQvKiBDRE0yX0NSU05fUVNFTCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDcyOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzA4IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDczLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8wOCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3NS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDc2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIxIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDc3LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ3OS1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDgwOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzIyIFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDgxLVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yMiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4My1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RMSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI0IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg1LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ4Ny1cXHRcXHRcXHRcXHQgQ0RNX0NSU05fUVNFTF9RNikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDg4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0NSU05fUVNFTCgyLCBDUlNOXzI1IFxcdTAwM2VcXHUwMDNlIDIpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNDg5LVxcdFxcdCAgICAgIENETV9DUlNOX1FTRUxfUkVBU09OX01BU0soQ1JTTl8yNSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTQ5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5NDpzdGF0aWMgaW50IGFpcm9oYV9mZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NDk2OlxcdGFpcm9oYV9mZV9tYWNjcl9pbml0KGV0aCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy00OTgtXFx0LyogUFNFIElRIHJlc2VydmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjQ5OTpcXHRhaXJvaGFfZmVfcm13KGV0aCwgUkVHX1BTRV9JUV9SRVYxLCBQU0VfSVFfUkVTMV9QMl9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTAwLVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoUFNFX0lRX1JFUzFfUDJfTUFTSywgMHgxMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTAxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfUFNFX0lRX1JFVjIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDItXFx0XFx0ICAgICAgUFNFX0lRX1JFUzJfUDVfTUFTSyB8IFBTRV9JUV9SRVMyX1A0X01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUwNi1cXHQvKiBlbmFibGUgRkUgY29weSBlbmdpbmUgZm9yIEtBL0RQSSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTA3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9QQ0VfQ0ZHLCBQQ0VfRFBJX0VOX01BU0sgfCBQQ0VfS0FfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MDgtXFx0Lyogc2V0IHZpcCBxdWV1ZSBzZWxlY3Rpb24gdG8gcmluZyAxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MDk6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygxKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTAtXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MTE6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19DRE1fRldEX0NGRygyKSwgQ0RNX1ZJUF9RU0VMX01BU0ssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTItXFx0XFx0ICAgICAgRklFTERfUFJFUChDRE1fVklQX1FTRUxfTUFTSywgMHg0KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MTMtXFx0Lyogc2V0IEdETTQgc291cmNlIGludGVyZmFjZSBvZmZzZXQgdG8gOCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTE0OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX1NSQ19QT1JUX1NFVCg0KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUxNS1cXHRcXHQgICAgICBHRE1fU1BPUlRfT0ZGMl9NQVNLIHxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTIyLVxcdC8qIHNldCBQU0UgUGFnZSBhcyAxMjhCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MjM6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19GRV9ETUFfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNC1cXHRcXHQgICAgICBGRV9ETUFfR0xPX0wyX1NQQUNFX01BU0sgfCBGRV9ETUFfR0xPX1BHX1NaX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyNi1cXHRcXHQgICAgICBGRV9ETUFfR0xPX1BHX1NaX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTI3OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9SU1RfR0xPX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTUyOC1cXHRcXHQgICAgIEZFX1JTVF9DT1JFX01BU0sgfCBGRV9SU1RfR0RNM19NQklfQVJCX01BU0sgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01MzQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1MzU6XFx0YWlyb2hhX2ZlX3dyKGV0aCwgUkVHX0ZFX0NETTFfT1FfTUFQMCwgQklUKDQpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNjpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAxLCBCSVQoMjgpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjUzNzpcXHRhaXJvaGFfZmVfd3IoZXRoLCBSRUdfRkVfQ0RNMV9PUV9NQVAyLCBCSVQoNCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTM4OlxcdGFpcm9oYV9mZV93cihldGgsIFJFR19GRV9DRE0xX09RX01BUDMsIEJJVCgyOCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQwOlxcdGFpcm9oYV9mZV92aXBfc2V0dXAoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MTpcXHRhaXJvaGFfZmVfcHNlX3BvcnRzX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU0MzpcXHRhaXJvaGFfZmVfc2V0KGV0aCwgUkVHX0dETV9NSVNDX0NGRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU0NC1cXHRcXHQgICAgICBHRE0yX1JETV9BQ0tfV0FJVF9QUkVGX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ1LVxcdFxcdCAgICAgIEdETTJfQ0hOX1ZMRF9NT0RFX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTQ2OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfQ0RNX0ZXRF9DRkcoMiksIENETV9PQU1fUVNFTF9NQVNLLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTQ3LVxcdFxcdCAgICAgIEZJRUxEX1BSRVAoQ0RNX09BTV9RU0VMX01BU0ssIDE1KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1MC1cXHQvKiBOUFUgQ29yZS0zLCBOUFUgQnJpZGdlIENoYW5uZWwtMyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTUxOlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfSVBfRlJBR19GUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU1Mi1cXHRcXHQgICAgICBJUF9GUkFHTUVOVF9QT1JUX01BU0sgfCBJUF9GUkFHTUVOVF9OQlFfTUFTSyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU1LVxcdC8qIFFETUEgTEFOLCBSWCBSaW5nLTIyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NTY6XFx0YWlyb2hhX2ZlX3JtdyhldGgsIFJFR19JUF9GUkFHX0ZQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTU3LVxcdFxcdCAgICAgIElQX0FTU0VNQkxFX1BPUlRfTUFTSyB8IElQX0FTU0VNQkxFX05CUV9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NjE6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19HRE1fRldEX0NGRyhBSVJPSEFfR0RNM19JRFgpLCBHRE1fUEFEX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTYyOlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfR0RNX0ZXRF9DRkcoQUlST0hBX0dETTRfSURYKSwgR0RNX1BBRF9FTl9NQVNLKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2NC1cXHQvKiBFbmFibGUgc3BsaXQgZm9yIE1JQiBjb3VudGVycyBmb3IgR0RNMyBhbmQgR0RNNCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTY1OlxcdGFpcm9oYV9mZV9zZXQoZXRoLCBSRUdfRkVfR0RNX01JQl9DRkcoQUlST0hBX0dETTNfSURYKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU2Ni1cXHRcXHQgICAgICBGRV9HRE1fVFhfTUlCX1NQTElUX0VOX01BU0sgfFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY3LVxcdFxcdCAgICAgIEZFX0dETV9SWF9NSUJfU1BMSVRfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1Njg6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9HRE1fTUlCX0NGRyhBSVJPSEFfR0RNNF9JRFgpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTY5LVxcdFxcdCAgICAgIEZFX0dETV9UWF9NSUJfU1BMSVRfRU5fTUFTSyB8XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3MjpcXHRhaXJvaGFfZmVfY3Jzbl9xc2VsX2luaXQoZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU3NDpcXHRhaXJvaGFfZmVfY2xlYXIoZXRoLCBSRUdfRkVfQ1BPUlRfQ0ZHLCBGRV9DUE9SVF9RVUVVRV9YRkNfTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1NzU6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19GRV9DUE9SVF9DRkcsIEZFX0NQT1JUX1BPUlRfWEZDX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTc3LVxcdC8qIGRlZmF1bHQgYWdpbmcgbW9kZSBmb3IgbWJpIHVubG9jayBpc3N1ZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTc4OlxcdGFpcm9oYV9mZV9ybXcoZXRoLCBSRUdfR0RNX0NITl9STFMoMiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01NzktXFx0XFx0ICAgICAgTUJJX1JYX0FHRV9TRUxfTUFTSyB8IE1CSV9UWF9BR0VfU0VMX01BU0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU4My1cXHQvKiBkaXNhYmxlIElGQyBieSBkZWZhdWx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODQ6XFx0YWlyb2hhX2ZlX2NsZWFyKGV0aCwgUkVHX0ZFX0NTUl9JRkNfQ0ZHLCBGRV9JRkNfRU5fTUFTSyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01ODYtXFx0LyogZW5hYmxlIDE6TiB2bGFuIGFjdGlvbiwgaW5pdCB2bGFuIHRhYmxlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1ODc6XFx0YWlyb2hhX2ZlX3NldChldGgsIFJFR19NQ19WTEFOX0VOLCBNQ19WTEFOX0VOX01BU0spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTg5OlxcdHJldHVybiBhaXJvaGFfZmVfbWNfdmxhbl9jbGVhcihldGgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNTkwLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjU5MjpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX2ZpbGxfcnhfcXVldWUoc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo1OTQ6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTU5NS1cXHRpbnQgcWlkID0gcSAtIFxcdTAwMjZxZG1hLVxcdTAwM2VxX3J4WzBdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy01OTgtXFx0d2hpbGUgKHEtXFx1MDAzZXF1ZXVlZCBcXHUwMDNjIHEtXFx1MDAzZW5kZXNjIC0gMSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NTk5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNlaGVhZF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2MDA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2VoZWFkXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTYwMS1cXHRcXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMwLVxcdGlmIChuZnJhbWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjMxOlxcdFxcdGFpcm9oYV9xZG1hX3JtdyhxZG1hLCBSRUdfUlhfQ1BVX0lEWChxaWQpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjMyLVxcdFxcdFxcdFxcdFJYX1JJTkdfQ1BVX0lEWF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02MzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzg6c3RhdGljIHN0cnVjdCBhaXJvaGFfZ2RtX2RldiAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2Mzk6YWlyb2hhX3FkbWFfZ2V0X2dkbV9kZXYoc3RydWN0IGFpcm9oYV9ldGggKmV0aCwgc3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjQxOlxcdHN0cnVjdCBhaXJvaGFfZ2RtX3BvcnQgKnBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NDItXFx0dTE2IHAsIGQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2MDpzdGF0aWMgaW50IGFpcm9oYV9xZG1hX3J4X3Byb2Nlc3Moc3RydWN0IGFpcm9oYV9xdWV1ZSAqcSwgaW50IGJ1ZGdldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NjItXFx0ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyID0gcGFnZV9wb29sX2dldF9kbWFfZGlyKHEtXFx1MDAzZXBhZ2VfcG9vbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NjM6XFx0c3RydWN0IGFpcm9oYV9xZG1hICpxZG1hID0gcS1cXHUwMDNlcWRtYTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjY2NDpcXHRzdHJ1Y3QgYWlyb2hhX2V0aCAqZXRoID0gcWRtYS1cXHUwMDNlZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjY1LVxcdGludCBxaWQgPSBxIC0gXFx1MDAyNnFkbWEtXFx1MDAzZXFfcnhbMF07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY2OC1cXHR3aGlsZSAoZG9uZSBcXHUwMDNjIGJ1ZGdldCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6NjY5OlxcdFxcdHN0cnVjdCBhaXJvaGFfcXVldWVfZW50cnkgKmUgPSBcXHUwMDI2cS1cXHUwMDNlZW50cnlbcS1cXHUwMDNldGFpbF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzA6XFx0XFx0c3RydWN0IGFpcm9oYV9xZG1hX2Rlc2MgKmRlc2MgPSBcXHUwMDI2cS1cXHUwMDNlZGVzY1txLVxcdTAwM2V0YWlsXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTY3MS1cXHRcXHR1MzIgaGFzaCwgcmVhc29uLCBtc2cxLCBkZXNjX2N0cmw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo2NzI6XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fZGV2ICpkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02NzMtXFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNjk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Njk1OlxcdFxcdGRldiA9IGFpcm9oYV9xZG1hX2dldF9nZG1fZGV2KGV0aCwgZGVzYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy02OTYtXFx0XFx0aWYgKElTX0VSUihkZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy03MjgtXFx0XFx0aWYgKG5ldGRldl91c2VzX2RzYShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3Mjk6XFx0XFx0XFx0c3RydWN0IGFpcm9oYV9nZG1fcG9ydCAqcG9ydCA9IGRldi1cXHUwMDNlcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTczMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtNzUyLVxcdFxcdGlmIChyZWFzb24gPT0gUFBFX0NQVV9SRUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzo3NTM6XFx0XFx0XFx0YWlyb2hhX3BwZV9jaGVja19za2IoXFx1MDAyNmV0aC1cXHUwMDNlcHBlLVxcdTAwM2VkZXYsIHEtXFx1MDAzZXNrYiwgaGFzaCxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MDc6MjkuMDEzOTA3NTMxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU4NjAwMzE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFdvcnRoRnV6emluZyBDcml0ZXJpYSoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSd2ZSBzcG90dGVkIGBhaXJvaGFfZXRoLmNgLCBgYWlyb2hhX3BwZS5jYCwgYW5kIGBhaXJvaGFfbnB1LmNgIGluIHRoZSBwYXRjaC4gTm93LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhpcyBhZ2FpbnN0IHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9ucyByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoICpvbmx5KiBjb250YWlucyBjb2RlIHBhdGhzIGluYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzOiBJcyBgYWlyb2hhX25wdS5jYCByZWFjaGFibGUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD8gQ29uc2lkZXJpbmcgbXkgdW5kZXJzdGFuZGluZywgbm8sIGl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIgdGFpbG9yZWQgZm9yIGEgcGFydGljdWxhciBTeXN0ZW0tb24tYS1DaGlwIChTb0MpLiBUaGlzIGRyaXZlciBuZWNlc3NpdGF0ZXMgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgYXQgbGVhc3QgaXRzIGFjY3VyYXRlIGVtdWxhdGlvbiwgd2hpY2gsIEknbSBwcmV0dHkgc3VyZSwgUUVNVSBkb2Vzbid0IG9mZmVyIGZvciB0aGlzIHNwZWNpZmljIFNvQy5cblxuSSByZWNhbGwgU3l6a2FsbGVyIGhhcyBtZWNoYW5pc21zIGZvciBldmFsdWF0aW5nIHBhdGNoZXMgZXZlbiBpZiB0aGV5IGNhbid0IGJlIGZ1bGx5IGZ1enplZC4gSXQnbGwgYXR0ZW1wdCB0byBhcHBseSB0aGUgcGF0Y2gsIGNoZWNrIGNvbXBpbGF0aW9uLCBvciB0cnkgYSBmdXp6aW5nIHJ1biB0byBkZXRlcm1pbmUgaWYgaXQgY2FuIGZpbmQgYW55dGhpbmcuIEJ1dCB0aGF0J3Mgbm90IHRoZSBwcmltYXJ5IGNvbmNlcm4gaGVyZS5cblxuVGhlIHByb21wdCBpcyBjcnlzdGFsIGNsZWFyOiBpZiBpdCBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSByZWFjaGFibGUsIGl0J3Mgd29ydGggZnV6emluZy4gSWYgaXQncyBpbmFjY2Vzc2libGUsIHRoZW4gaXQncyBub3QuIEdpdmVuIG15IGFzc2Vzc21lbnQgdGhhdCBgYWlyb2hhX25wdS5jYCAqaXMqIGluYWNjZXNzaWJsZSBpbiBRRU1VIGJlY2F1c2UgaXQncyBoYXJkd2FyZS1zcGVjaWZpYywgaXQgbG9va3MgbGlrZSBhIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IGRldGVybWluYXRpb24uXG5cbkhvd2V2ZXIsIEkgc2hvdWxkIGRvdWJsZS1jaGVjay4gSSdsbCBzZWFyY2ggdGhlIGB0b29scy9gIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2AgZGlyZWN0b3JpZXMgZm9yIGFueSBtb2NrIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBzdXBwb3J0IGZvciBBaXJvaGEgaGFyZHdhcmUuIFRoaXMgaXMgYSBjcnVjaWFsIHN0ZXAgdG8gYXZvaWQgbWFraW5nIGFueSBhc3N1bXB0aW9ucy4gSWYgSSBmaW5kIHNvbWV0aGluZywgbXkgYXNzZXNzbWVudCBtaWdodCBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxNjE4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDEyOjA3OjM2LjU5OTkxMzU0NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMTE3NjksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MDc6MzYuNjYyOTQxNDA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0Njc2MDkxMTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgbm8gbW9ja3VwcyBhcmUgbmVlZGVkLiBJJ20gZm9jdXNpbmcgb24gcmVhY2hhYmlsaXR5IGluIGEgZnV6emluZyBjb250ZXh0LCBhbmQgdGhhdCBtZWFucyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFyZSB0aGUga2V5IGNvbnNpZGVyYXRpb24uICBJcyBgQ09ORklHX05FVF9BSVJPSEFfTlBVYCBldmVuIGVuYWJsZWQgaW4gc3l6a2FsbGVyPyAgRXZlbiBpZiBpdCAqaXMqLCB0aGlzIGRyaXZlciwgYSBgcGxhdGZvcm1fZHJpdmVyYCwgaXMgZ29pbmcgdG8gbmVlZCBhIGNvcnJlc3BvbmRpbmcgYHBsYXRmb3JtX2RldmljZWAgdG8gdHJpZ2dlciB0aGUgYHByb2JlYCBmdW5jdGlvbi4gIFN5emthbGxlciBtaWdodCAqdHJ5KiB0byBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdXNpbmcgYHN5el9kZXZyZXNgIG9yIHNpbWlsYXIsIGJ1dCBldmVuIHRoZW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgZ29pbmcgdG8gdHJ5IHRvIGBpb3JlbWFwYCB0aGUgcGh5c2ljYWwgYWRkcmVzcy4gQW5kIGlmIHRoYXQgaGFyZHdhcmUgaXNuJ3QgKmFjdHVhbGx5KiB0aGVyZSwgdGhhdCdzIGp1c3QgZ29pbmcgdG8gY3Jhc2ggb3IgZmFpbC5cblxuSG9sZCBvbiwgSSB0aG91Z2h0IG1heWJlIHN5emthbGxlciBoYXMgc29tZSBraW5kIG9mIHBzZXVkby1zeXNjYWxsIGxpa2UgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYD8gTm8sIHRoYXQgZG9lc24ndCBleGlzdC4gTm93LCB3aGF0IGlmIGl0IHdhcyBhIFBDSSBkcml2ZXI/IE5vLCBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyB0aGF0J3MgaXJyZWxldmFudC5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IGBhaXJvaGFfbnB1LmNgLlxuXG5gYGBjXG5zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9haXJvaGFfbnB1X21hdGNoW10gPSB7XG5cdHsgLmNvbXBhdGlibGUgPSBcImFpcm9oYSxlbjc1ODEtbnB1XCIsIC5kYXRhID0gXHUwMDI2ZW43NTgxX25wdV9zb2NfZGF0YSB9LFxuXHR7IC5jb21wYXRpYmxlID0gXCJhaXJvaGEsYW43NTgzLW5wdVwiLCAuZGF0YSA9IFx1MDAyNmFuNzU4M19ucHVfc29jX2RhdGEgfSxcblx0eyAvKiBzZW50aW5lbCAqLyB9XG59O1xuTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2ZfYWlyb2hhX25wdV9tYXRjaCk7XG5cbnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFpcm9oYV9ucHVfZHJpdmVyID0ge1xuXHQucHJvYmUgPSBhaXJvaGFfbnB1X3Byb2JlLFxuXHQucmVtb3ZlID0gYWlyb2hhX25wdV9yZW1vdmUsXG5cdC5kcml2ZXIgPSB7XG5cdFx0Lm5hbWUgPSBcImFpcm9oYS1ucHVcIixcblx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9haXJvaGFfbnB1X21hdGNoLFxuXHR9LFxufTtcbm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWlyb2hhX25wdV9kcml2ZXIpO1xuYGBgXG5cbk9rYXksIGl0J3MgYSBzdGFuZGFyZCBEZXZpY2UgVHJlZSBiYXNlZCBwbGF0Zm9ybSBkcml2ZXIuIEluIFFFTVUsIHRoZSBkZXZpY2UgdHJlZSBpcyBwcm92aWRlZCBieSB0aGUgbWFjaGluZSB0eXBlLCBlLmcuLCAndmlydCcuIEFuZCB0aGUgJ3ZpcnQnIG1hY2hpbmUgdHlwZSAqKmRvZXNuJ3QqKiBpbmNsdWRlIHNvbWV0aGluZyBsaWtlIFwiYWlyb2hhLGVuNzU4MS1ucHVcIi4gQm9vbS4gIFRoZSBkZXZpY2Ugd29uJ3QgYmUgaW5zdGFudGlhdGVkLCBhbmQgYHByb2JlYCB3b24ndCBiZSBjYWxsZWQuICBJdCdzIGp1c3Qgbm90IGdvaW5nIHRvIGhhcHBlbiBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG5cbkNvdWxkIHN5emthbGxlciB1c2UgZGV2aWNlIHRyZWUgb3ZlcmxheXM/IEV2ZW4gaWYgaXQgZGlkLCB0aGF0IGBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VgIGNhbGwgd2lsbCBtYXAgYSBwaHlzaWNhbCBhZGRyZXNzLiAgUUVNVSBpc24ndCBlbXVsYXRpbmcgQWlyb2hhIE5QVSByZWdpc3RlcnMgYXQgdGhhdCBhZGRyZXNzLiAgUmVhZGluZyBmcm9tIHRoYXQgYWRkcmVzcyB3aWxsIHByb2JhYmx5IGNhdXNlIGEgYnVzIGVycm9yLCBvciByZXR1cm4gZ2FyYmFnZS4gRWl0aGVyIHdheSwgaXQncyBhIGRlYWQgZW5kLlxuXG5TcGVjaWZpY2FsbHkgaW4gYGFpcm9oYV9ucHVfcHJvYmVgOlxuXG5gYGBjXG5cdGVyciA9IGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlKGRldiwgYmFzZSwgXHUwMDI2cmVzKTtcbmBgYFxuXG5JbnNpZGUgYGFpcm9oYV9ucHVfcnVuX2Zpcm13YXJlYDpcblxuYGBgY1xuXHQvKiBMb2FkIHJ2MzIgbnB1IGZpcm13YXJlICovXG5cdHJldCA9IGFpcm9oYV9ucHVfbG9hZF9maXJtd2FyZShkZXYsIGFkZHIsIHNvYy1cdTAwM2Vmd19ydjMyLm5hbWUsXG5cdFx0XHRcdCAgICAgICBzb2MtXHUwMDNlZndfcnYzMi5tYXhfc2l6ZSk7XG5gYGBcblxuSWYgdGhlIGZpcm13YXJlIGlzbid0IGluIHRoZSByb290ZnMsIGl0J3MgZ29pbmcgdG8gZmFpbCAqdGhlcmUqLCBidXQgZXZlbiBpZiBpdCdzIHRoZXJlIGl0IGlzIHdyaXRpbmcgcmVnaXN0ZXJzIGFuZCB3YWl0aW5nOlxuXG5gYGBjXG5cdGlmICghYWlyb2hhX25wdV93bGFuX21zZ19nZXQobnB1LCAwLCBXTEFOX0ZVTkNfR0VUX1dBSVRfTlBVX1ZFUlNJT04sXG5cdFx0XHRcdCAgICAgXHUwMDI2dmFsLCBzaXplb2YodmFsKSwgR0ZQX0tFUk5FTCkpXG5cdFx0ZGV2X2luZm8oZGV2LCBcIk5QVSB2ZXJzaW9uOiAlZFxcblwiLCB2YWwpO1xuYGBgXG5cbmBhaXJvaGFfbnB1X3dsYW5fbXNnX2dldGAgdGhlbiBjYWxscyBgX19haXJvaGFfbnB1X3NlbmRfbXNnYCwgd2hlcmUgd2Ugc2VlOlxuXG5gYGBjXG5cdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDApICsgb2Zmc2V0LCBkbWFfYWRkcik7XG5cdHJlZ21hcF93cml0ZShucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDEpICsgb2Zmc2V0LCBsZW4pO1xuXHRyZWdtYXBfcmVhZChucHUtXHUwMDNlcmVnbWFwLCBSRUdfQ1JfTUJRMF9DVFJMKDIpICsgb2Zmc2V0LCBcdTAwMjZ2YWwpO1xuXHRyZWdtYXBfXG5cbiIsIklucHV0VG9rZW5zIjo1MjQyOSwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTI6MDg6MDEuMzM5MDM1ODExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFpcm9oYSBOUFUgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFNvQyBkcml2ZXIgZm9yIEFpcm9oYSBFTjc1ODEvQU43NTgzIHJvdXRlcnMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgcGF0aHMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBaXJvaGEgTlBVIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBTb0MgZHJpdmVyIGZvciBBaXJvaGEgRU43NTgxL0FONzU4MyByb3V0ZXJzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHBhdGhzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxMjowODowMS4zMzkwNjg5NzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowch7hj[1] Phase: Running StartedAt: 2026-08-14 12:08:12 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowch7hj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 12:08:12 +0000 UTC FinishedAt: 2026-08-14 12:08:16 +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,}