Name: series-workflowdqzqz Phase: Failed StartedAt: 2026-08-24 22:03:04 +0000 UTC FinishedAt: 2026-08-24 22:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqzqz[0] Phase: Succeeded StartedAt: 2026-08-24 22:03:04 +0000 UTC FinishedAt: 2026-08-24 22:08:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqzqz[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 22:03:04 +0000 UTC FinishedAt: 2026-08-24 22:08:17 +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+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYmI4N2FkMWYwYTU4ZGU1MzY4NjY2ZjM2ZDQwMDA4ZDBiODFkNWExOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDIyOjA2OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDg3MmM0ODgwNmQwOTEuLjZhOTdiZTMxNDlmYzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC0yMTEyLDkgJiM0MzsyMTEyLDExIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRzMzIgdmFsO1xuIFx0czMyIGVycjtcbiYjNDM7XHRzMzIgb2tjX2VuYWJsZTtcbiBcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcbiBcdGNvbnN0IHU4ICppZTtcbiBcdHUzMiBpZV9sZW47XG4mIzQzO1x0Ym9vbCBmd3N1cF9yb2FtO1xuIFx0dTMyIG9mZnNldDtcbiBcdHUxNiByc25fY2FwO1xuIFx0dTMyIG1mcDtcbkBAIC0yMTIyLDYgJiM0MzsyMTI0LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcbiBcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FO1xuIFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IGZhbHNlO1xuJiM0MztcdHByb2ZpbGUtXHUwMDNlaXNfb2tjID0gZmFsc2U7XG4mIzQzO1x0ZndzdXBfcm9hbSA9IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fFxuJiM0MztcdFx0ICAgICBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX09LQyk7XG4gXG4gXHRpZiAoIXNtZS1cdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0yMTM4LDYgJiM0MzsyMTQzLDggQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHR2YWwgPSBXUEFfQVVUSF9VTlNQRUNJRklFRDtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4mIzQzO1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOlxuIFx0XHRcdHZhbCA9IFdQQV9BVVRIX1BTSztcbkBAIC0yMTUzLDExICYjNDM7MjE2MCwxNSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9VTlNQRUNJRklFRDtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4mIzQzO1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfODAyMVhfU0hBMjU2OlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4gXHRcdFx0aWYgKHNtZS1cdTAwM2V3YW50XzF4KVxuIFx0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYO1xuJiM0MztcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuJiM0MztcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1BTS19TSEEyNTY6XG4gXHRcdFx0dmFsID0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG5AQCAtMjE3MCwxMCAmIzQzOzIxODEsMTYgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHRwcm9maWxlLVx1MDAzZWlzX2Z0ID0gdHJ1ZTtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4mIzQzO1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfRlRfUFNLOlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XG4gXHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IHRydWU7XG4mIzQzO1x0XHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSlcbiYjNDM7XHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xuJiM0MztcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuJiM0MztcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6XG4gXHRcdFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xuQEAgLTIyMDQsOCAmIzQzOzIyMjEsMjIgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcbiBcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYKVxuIFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgMVggb2ZmbG9hZFxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIHx8XG4mIzQzO1x0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTSkge1xuJiM0MztcdFx0ZXJyID0gYnJjbWZfZmlsX2Jzc2NmZ19pbnRfZ2V0KGlmcCwgXCYjMzQ7b2tjX2VuYWJsZVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBcdTAwMjZva2NfZW5hYmxlKTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7Z2V0IG9rY19lbmFibGUgZmFpbGVkICglZClcXG5cJiMzNDssIGVycik7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7b2tjX2VuYWJsZSAoJWQpXFxuXCYjMzQ7LCBva2NfZW5hYmxlKTtcbiYjNDM7XHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19va2MgPSBva2NfZW5hYmxlO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiBcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSlcbiBcdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIFNBRSBvZmZsb2FkXFxuXCYjMzQ7KTtcbiYjNDM7XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKVxuJiM0MztcdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIHJvYW1pbmcgb2ZmbG9hZFxcblwmIzM0Oyk7XG4gXG4gXHRpZiAoIWJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfTUZQKSlcbiBcdFx0Z290byBza2lwX21mcF9jb25maWc7XG5AQCAtMjQ5NCwxMyAmIzQzOzI1MjUsMTQgQEAgYnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcbiBcdFx0aWYgKHNtZS1cdTAwM2VjcnlwdG8ucHNrIFx1MDAyNlx1MDAyNiAhaXNfc2FlX2FrbSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4tXHRcdFx0aWYgKFdBUk5fT04ocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT1cbi1cdFx0XHRcdCAgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4mIzQzO1x0XHRcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4mIzQzO1x0XHRcdH0gZWxzZSBpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuJiM0MztcdFx0XHRcdFx0ICAgQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spKSB7XG4gXHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRcdFx0Z290byBkb25lO1xuIFx0XHRcdH1cbi1cdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcXG5cJiMzNDspO1xuLVx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4gXHRcdH1cbiBcdFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xuIFx0XHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuQEAgLTU5NTMsMTcgJiM0Mzs1OTg1LDI5IEBAIHN0YXRpYyBpbnQgYnJjbWZfY2ZnODAyMTFfc2V0X3BtayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1rX2NvbmYgKmNvbmYpXG4ge1xuIFx0c3RydWN0IGJyY21mX2lmICppZnA7XG4mIzQzO1x0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtlbnRlclxcblwmIzM0Oyk7XG4gXG4tXHQvKiBleHBlY3QgdXNpbmcgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgMVggKi9cbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRpZiAoV0FSTl9PTihpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpKVxuJiM0MztcdGRydnIgPSBpZnAtXHUwMDNlZHJ2cjtcbiYjNDM7XHRpZiAoV0FSTl9PTihpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgIWlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZS5pc19mdCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhaWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlLmlzX29rYykpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0aWYgKGNvbmYtXHUwMDNlcG1rX2xlbiBcdTAwM2UgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTilcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXG4mIzQzO1x0aWYgKGlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZS5pc19va2MpIHtcbiYjNDM7XHRcdHJldCA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwmIzM0O29rY19pbmZvX3Bta1wmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBjb25mLVx1MDAzZXBtaywgY29uZi1cdTAwM2VwbWtfbGVuKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O29rY19pbmZvX3BtayBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgcmV0KTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0dXJuIGJyY21mX3NldF9wbWsoaWZwLCBjb25mLVx1MDAzZXBtaywgY29uZi1cdTAwM2VwbWtfbGVuKTtcbiB9XG4gXG5AQCAtNjQyMiw2ICYjNDM7NjQ2Niw0NyBAQCBzdGF0aWMgczMyIGJyY21mX2dldF9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBicmNtZl9oYXNfcG1raWQoY29uc3QgdTggKnBhcnNlLCB1MzIgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJyY21mX3RsdiAqcnNuX2llO1xuJiM0MztcdGNvbnN0IHU4ICppZTtcbiYjNDM7XHR1MzIgaWVfbGVuO1xuJiM0MztcdHUzMiBvZmZzZXQ7XG4mIzQzO1x0dTE2IGNvdW50O1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhcnNlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyc25faWUgPSBicmNtZl9wYXJzZV90bHZzKHBhcnNlLCBsZW4sIFdMQU5fRUlEX1JTTik7XG4mIzQzO1x0aWYgKCFyc25faWUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGllID0gKGNvbnN0IHU4ICopcnNuX2llO1xuJiM0MztcdGllX2xlbiA9IHJzbl9pZS1cdTAwM2VsZW4gJiM0MzsgVExWX0hEUl9MRU47XG4mIzQzO1xuJiM0MztcdG9mZnNldCA9IFRMVl9IRFJfTEVOICYjNDM7IFdQQV9JRV9WRVJTSU9OX0xFTiAmIzQzOyBXUEFfSUVfTUlOX09VSV9MRU47XG4mIzQzO1x0aWYgKG9mZnNldCAmIzQzOyBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOIFx1MDAzZT0gaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRjb3VudCA9IGllW29mZnNldF0gJiM0MzsgKGllW29mZnNldCAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1x0b2Zmc2V0ICYjNDM7PSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICYjNDM7IGNvdW50ICogV1BBX0lFX01JTl9PVUlfTEVOO1xuJiM0MztcdGlmIChvZmZzZXQgJiM0MzsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcdTAwM2U9IGllX2xlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gXHUwMDNjXHUwMDNjIDgpO1xuJiM0MztcdG9mZnNldCAmIzQzOz0gV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiAmIzQzOyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjtcbiYjNDM7XHRpZiAob2Zmc2V0ICYjNDM7IFJTTl9DQVBfTEVOIFx1MDAzZT0gaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRvZmZzZXQgJiM0Mzs9IFJTTl9DQVBfTEVOO1xuJiM0MztcdGlmIChvZmZzZXQgJiM0MzsgUlNOX1BNS0lEX0NPVU5UX0xFTiBcdTAwM2UgaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRjb3VudCA9IGllW29mZnNldF0gJiM0MzsgKGllW29mZnNldCAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb3VudCBcdTAwM2UgMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgczMyXG4gYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5AQCAtNjQzNiw2ICYjNDM7NjUyMSw3IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHN0cnVjdCBicmNtZl9ic3NfaW5mb19sZSAqYmk7XG4gXHRzdHJ1Y3QgYnJjbXVfY2hhbiBjaDtcbiBcdHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gcm9hbV9pbmZvID0ge307XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkID0gZmFsc2U7XG4gXHR1MzIgZnJlcTtcbiBcdHMzMiBlcnIgPSAwO1xuIFx0dTggKmJ1ZjtcbkBAIC02NDgyLDE0ICYjNDM7NjU2OCwxOCBAQCBicmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRyb2FtX2luZm8ucmVzcF9pZSA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llO1xuIFx0cm9hbV9pbmZvLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVx1MDAzZXJlc3BfaWVfbGVuO1xuIFxuJiM0MztcdGlmICgocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxuJiM0MztcdCAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgKGJyY21mX2hhc19wbWtpZChyb2FtX2luZm8ucmVxX2llLCByb2FtX2luZm8ucmVxX2llX2xlbikgfHxcbiYjNDM7XHQgICAgIHByb2ZpbGUtXHUwMDNlaXNfZnQgfHwgcHJvZmlsZS1cdTAwM2Vpc19va2MpKVxuJiM0MztcdFx0YXV0aG9yaXplZCA9IHRydWU7XG4mIzQzO1xuIFx0Y2ZnODAyMTFfcm9hbWVkKG5kZXYsIFx1MDAyNnJvYW1faW5mbywgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKGF1dGhvcml6ZWQpXG4mIzQzO1x0XHRjZmc4MDIxMV9wb3J0X2F1dGhvcml6ZWQobmRldiwgcHJvZmlsZS1cdTAwM2Vic3NpZCwgTlVMTCwgMCxcbiYjNDM7XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbiBcdGJyY21mX2RiZyhDT05OLCBcJiMzNDtSZXBvcnQgcm9hbWluZyByZXN1bHRcXG5cJiMzNDspO1xuIFxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXHUwMDI2XHUwMDI2IHByb2ZpbGUtXHUwMDNlaXNfZnQpIHtcbi1cdFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXHUwMDNlYnNzaWQsIE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuLVx0XHRicmNtZl9kYmcoQ09OTiwgXCYjMzQ7UmVwb3J0IHBvcnQgYXV0aG9yaXplZFxcblwmIzM0Oyk7XG4tXHR9XG4tXG4gXHRzZXRfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQ09OTkVDVEVELCBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXNtZV9zdGF0ZSk7XG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O0V4aXRcXG5cJiMzNDspO1xuIFx0cmV0dXJuIGVycjtcbkBAIC02NTA0LDYgJiM0Mzs2NTk0LDcgQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGU7XG4gXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xuIFx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkO1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gXG5AQCAtNjUyOCw3ICYjNDM7NjYxOSwxNSBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdGNvbm5fcGFyYW1zLnJlcV9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVxX2llX2xlbjtcbiBcdFx0Y29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llO1xuIFx0XHRjb25uX3BhcmFtcy5yZXNwX2llX2xlbiA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llX2xlbjtcbiYjNDM7XHRcdGF1dGhvcml6ZWQgPSBjb21wbGV0ZWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHxcbiYjNDM7XHRcdFx0ICAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgICBicmNtZl9oYXNfcG1raWQoY29ubl9wYXJhbXMucmVxX2llLFxuJiM0MztcdFx0XHRcdFx0ICAgICBjb25uX3BhcmFtcy5yZXFfaWVfbGVuKTtcbiBcdFx0Y2ZnODAyMTFfY29ubmVjdF9kb25lKG5kZXYsIFx1MDAyNmNvbm5fcGFyYW1zLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmIChhdXRob3JpemVkKVxuJiM0MztcdFx0XHRjZmc4MDIxMV9wb3J0X2F1dGhvcml6ZWQobmRldiwgcHJvZmlsZS1cdTAwM2Vic3NpZCwgTlVMTCwgMCxcbiYjNDM7XHRcdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuIFx0XHRicmNtZl9kYmcoQ09OTiwgXCYjMzQ7UmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xcblwmIzM0OyxcbiBcdFx0XHQgIGNvbXBsZXRlZCA/IFwmIzM0O3N1Y2NlZWRlZFwmIzM0OyA6IFwmIzM0O2ZhaWxlZFwmIzM0Oyk7XG4gXHR9XG5AQCAtNzczMSw2ICYjNDM7NzgzMCwxMCBAQCBzdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFx0fVxuIFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFX0VYVCkpXG4gXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XG4mIzQzO1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fFxuJiM0MztcdCAgICBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX09LQykpXG4mIzQzO1x0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXG4mIzQzO1x0XHRcdFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQpO1xuIFx0d2lwaHktXHUwMDNlbWdtdF9zdHlwZXMgPSBicmNtZl90eHJ4X3N0eXBlcztcbiBcdHdpcGh5LVx1MDAzZW1heF9yZW1haW5fb25fY2hhbm5lbF9kdXJhdGlvbiA9IDUwMDA7XG4gXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9QTk8pKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuaW5kZXggNjNlNTM0NTIzZjUxOC4uMWFhOTkzOTBhOTUxMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuQEAgLTEyNyw3ICYjNDM7MTI3LDggQEAgZW51bSBicmNtZl9wcm9maWxlX2Z3c3VwIHtcbiBcdEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSxcbiBcdEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLLFxuIFx0QlJDTUZfUFJPRklMRV9GV1NVUF8xWCxcbi1cdEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFXG4mIzQzO1x0QlJDTUZfUFJPRklMRV9GV1NVUF9TQUUsXG4mIzQzO1x0QlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNXG4gfTtcbiBcbiAvKipcbkBAIC0xNjQsNiAmIzQzOzE2NSw3IEBAIGVudW0gYnJjbWZfbWdtdF90eF9zdGF0dXMge1xuICAqIEBic3NpZDogYnNzaWQgb2Ygam9pbmVkL2pvaW5pbmcgaWJzcy5cbiAgKiBAc2VjOiBzZWN1cml0eSBpbmZvcm1hdGlvbi5cbiAgKiBAa2V5OiBrZXkgaW5mb3JtYXRpb25cbiYjNDM7ICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgKi9cbiBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSB7XG4gXHR1OCBic3NpZFtFVEhfQUxFTl07XG5AQCAtMTcyLDYgJiM0MzsxNzQsNyBAQCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSB7XG4gXHRlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAgdXNlX2Z3c3VwO1xuIFx0dTE2IHVzZV9md2F1dGg7XG4gXHRib29sIGlzX2Z0O1xuJiM0MztcdGJvb2wgaXNfb2tjO1xuIH07XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmNcbmluZGV4IDQ4ODM2NGVmOGZmMmEuLmNjMTllNWU3ZWJmNTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXG5AQCAtNDUsNiAmIzQzOzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0ge1xuIFx0eyBCUkNNRl9GRUFUX1NBRSwgXCYjMzQ7c2FlIFwmIzM0OyB9LFxuIFx0eyBCUkNNRl9GRUFUX0ZXQVVUSCwgXCYjMzQ7aWRhdXRoXCYjMzQ7IH0sXG4gXHR7IEJSQ01GX0ZFQVRfU0FFX0VYVCwgXCYjMzQ7c2FlX2V4dFwmIzM0OyB9LFxuJiM0MztcdHsgQlJDTUZfRkVBVF9GQlQsIFwmIzM0O2ZidCBcJiMzNDsgfSxcbiYjNDM7XHR7IEJSQ01GX0ZFQVRfT0tDLCBcJiMzNDtva2NcJiMzNDsgfSxcbiB9O1xuIFxuICNpZmRlZiBERUJVR1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oXG5pbmRleCAzMWY4Njk1Y2E0MTc2Li44MTY1YTI4NmI2MzA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuQEAgLTU5LDcgJiM0Mzs1OSw5IEBAXG4gXHRCUkNNRl9GRUFUX0RFRihTQ0FOX1YyKSBcXFxuIFx0QlJDTUZfRkVBVF9ERUYoUE1LSURfVjIpIFxcXG4gXHRCUkNNRl9GRUFUX0RFRihQTUtJRF9WMykgXFxcbi1cdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpXG4mIzQzO1x0QlJDTUZfRkVBVF9ERUYoU0FFX0VYVCkgXFxcbiYjNDM7XHRCUkNNRl9GRUFUX0RFRihGQlQpIFxcXG4mIzQzO1x0QlJDTUZfRkVBVF9ERUYoT0tDKVxuIFxuIC8qXG4gICogUXVpcmtzOlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5pbmRleCAwMjAzODdkNzY0MTIyLi45ZjhkOWUzZDU5OTBiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuQEAgLTcxMTAsNiAmIzQzOzcxMTAsOSBAQCBlbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXG4gICpcdGluIFNUQSBtb2RlIHVzaW5nIEBOTDgwMjExX0NNRF9QUk9CRV9QRUVSLlxuICAqXG4mIzQzOyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxuJiM0MzsgKlx0T3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyByb2FtaW5nIG9mZmxvYWQgaW4gc3RhdGlvbiBtb2RlLlxuJiM0MzsgKlxuICAqIEBOVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVM6IG51bWJlciBvZiBleHRlbmRlZCBmZWF0dXJlcy5cbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXG4gICovXG5AQCAtNzE5Miw2ICYjNDM7NzE5NSw3IEBAIGVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4gXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VUX0tFWV9MVEZfU0VFRCxcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVAsXG4mIzQzO1x0Tkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsXG4gXG4gXHQvKiBhZGQgbmV3IGZlYXR1cmVzIGJlZm9yZSB0aGUgZGVmaW5pdGlvbiBiZWxvdyAqL1xuIFx0TlVNX05MODAyMTFfRVhUX0ZFQVRVUkVTLFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA0NGYyYmFkMDg2NzA1Li4xNTczMTQ0MGM1N2E0IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE4NDM0LDYgJiM0MzsxODQzNCw3IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiA9IGluZm8tXHUwMDNldXNlcl9wdHJbMF07XG4mIzQzO1x0c3RydWN0IHdpcGh5ICp3aXBoeSA9IFx1MDAyNnJkZXYtXHUwMDNld2lwaHk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gaW5mby1cdTAwM2V1c2VyX3B0clsxXTtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtXHUwMDNlaWVlZTgwMjExX3B0cjtcbiBcdHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiBwbWtfY29uZiA9IHt9O1xuQEAgLTE4NDQyLDggJiM0MzsxODQ0MywxMCBAQCBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0ICAgIHdkZXYtXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbi1cdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKVxuJiM0MztcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQod2lwaHksXG4mIzQzO1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcbiYjNDM7XHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9NQUNdIHx8ICFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBwcmltYXJpbHkgbW9kaWZpZXMgdGhlIGJyY21mbWFjIGRyaXZlciAoYSB2ZW5kb3Itc3BlY2lmaWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyKSB0byBhZGQgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCBzdXBwb3J0LiBJdCBhbHNvIGFkZHMgYSBtaW5vciBjaGVjayBpbiB0aGUgY29yZSBubDgwMjExIGNvZGUgdG8gYWxsb3cgc2V0dGluZyBQTUsgaWYgdGhlIG5ldyBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmbGFnIGlzIHNldC4gSG93ZXZlciwgdGhpcyBmbGFnIGlzIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgYnJjbWZtYWMgZHJpdmVyLiBTaW5jZSBicmNtZm1hYyByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSBvciBmaXJtd2FyZSAoZXZlbiB3aGVuIHByb2JlZCB2aWEgVVNCIGdhZGdldCwgaXQgZmFpbHMgZHVyaW5nIHJlcXVlc3RfZmlybXdhcmUgaWYgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGlzIG1pc3NpbmcpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBib3RoIHRoZSBkcml2ZXIgYW5kIG5sODAyMTEgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiYjg3YWQxZjBhNThkZTUzNjg2NjZmMzZkNDAwMDhkMGI4MWQ1YTE5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMjQgMjI6MDY6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDg3MmM0ODgwNmQwOTEuLjZhOTdiZTMxNDlmYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCkBAIC0yMTEyLDkgJiM0MzsyMTEyLDExIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAJc3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IGlmcC0mZ3Q7ZHJ2cjsKIAlzMzIgdmFsOwogCXMzMiBlcnI7CiYjNDM7CXMzMiBva2NfZW5hYmxlOwogCWNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTsKIAljb25zdCB1OCAqaWU7CiAJdTMyIGllX2xlbjsKJiM0MzsJYm9vbCBmd3N1cF9yb2FtOwogCXUzMiBvZmZzZXQ7CiAJdTE2IHJzbl9jYXA7CiAJdTMyIG1mcDsKQEAgLTIxMjIsNiAmIzQzOzIxMjQsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKQogCiAJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FOwogCXByb2ZpbGUtJmd0O2lzX2Z0ID0gZmFsc2U7CiYjNDM7CXByb2ZpbGUtJmd0O2lzX29rYyA9IGZhbHNlOwomIzQzOwlmd3N1cF9yb2FtID0gYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GQlQpIHx8CiYjNDM7CQkgICAgIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfT0tDKTsKIAogCWlmICghc21lLSZndDtjcnlwdG8ubl9ha21fc3VpdGVzKQogCQlyZXR1cm4gMDsKQEAgLTIxMzgsNiAmIzQzOzIxNDMsOCBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKQogCQkJdmFsID0gV1BBX0FVVEhfVU5TUEVDSUZJRUQ7CiAJCQlpZiAoc21lLSZndDt3YW50XzF4KQogCQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7CiYjNDM7CQkJZWxzZSBpZiAoZndzdXBfcm9hbSkKJiM0MzsJCQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOgogCQkJdmFsID0gV1BBX0FVVEhfUFNLOwpAQCAtMjE1MywxMSAmIzQzOzIxNjAsMTUgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSkKIAkJCXZhbCA9IFdQQTJfQVVUSF9VTlNQRUNJRklFRDsKIAkJCWlmIChzbWUtJmd0O3dhbnRfMXgpCiAJCQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDsKJiM0MzsJCQllbHNlIGlmIChmd3N1cF9yb2FtKQomIzQzOwkJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0FLTV9TVUlURV84MDIxWF9TSEEyNTY6CiAJCQl2YWwgPSBXUEEyX0FVVEhfMVhfU0hBMjU2OwogCQkJaWYgKHNtZS0mZ3Q7d2FudF8xeCkKIAkJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYOwomIzQzOwkJCWVsc2UgaWYgKGZ3c3VwX3JvYW0pCiYjNDM7CQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fQUtNX1NVSVRFX1BTS19TSEEyNTY6CiAJCQl2YWwgPSBXUEEyX0FVVEhfUFNLX1NIQTI1NjsKQEAgLTIxNzAsMTAgJiM0MzsyMTgxLDE2IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAJCQlwcm9maWxlLSZndDtpc19mdCA9IHRydWU7CiAJCQlpZiAoc21lLSZndDt3YW50XzF4KQogCQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7CiYjNDM7CQkJZWxzZSBpZiAoZndzdXBfcm9hbSkKJiM0MzsJCQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9BS01fU1VJVEVfRlRfUFNLOgogCQkJdmFsID0gV1BBMl9BVVRIX1BTSyB8IFdQQTJfQVVUSF9GVDsKIAkJCXByb2ZpbGUtJmd0O2lzX2Z0ID0gdHJ1ZTsKJiM0MzsJCQlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpCiYjNDM7CQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLOwomIzQzOwkJCWVsc2UgaWYgKGZ3c3VwX3JvYW0pCiYjNDM7CQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6CiAJCQl2YWwgPSBXRkFfQVVUSF9EUFA7CkBAIC0yMjA0LDggJiM0MzsyMjIxLDIyIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAKIAlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpCiAJCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIDFYIG9mZmxvYWRcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIHx8CiYjNDM7CSAgICBwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSB7CiYjNDM7CQllcnIgPSBicmNtZl9maWxfYnNzY2ZnX2ludF9nZXQoaWZwLCAmIzM0O29rY19lbmFibGUmIzM0OywKJiM0MzsJCQkJCSAgICAgICAmYW1wO29rY19lbmFibGUpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWJwaHlfZXJyKGRydnIsICYjMzQ7Z2V0IG9rY19lbmFibGUgZmFpbGVkICglZClcbiYjMzQ7LCBlcnIpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlicmNtZl9kYmcoSU5GTywgJiMzNDtva2NfZW5hYmxlICglZClcbiYjMzQ7LCBva2NfZW5hYmxlKTsKJiM0MzsJCQlwcm9maWxlLSZndDtpc19va2MgPSBva2NfZW5hYmxlOwomIzQzOwkJfQomIzQzOwl9CiAJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkKIAkJYnJjbWZfZGJnKElORk8sICYjMzQ7dXNpbmcgU0FFIG9mZmxvYWRcbiYjMzQ7KTsKJiM0MzsJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU0pCiYjNDM7CQlicmNtZl9kYmcoSU5GTywgJiMzNDt1c2luZyByb2FtaW5nIG9mZmxvYWRcbiYjMzQ7KTsKIAogCWlmICghYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9NRlApKQogCQlnb3RvIHNraXBfbWZwX2NvbmZpZzsKQEAgLTI0OTQsMTMgJiM0MzsyNTI1LDE0IEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAKIAkJaWYgKHNtZS0mZ3Q7Y3J5cHRvLnBzayAmYW1wOyZhbXA7ICFpc19zYWVfYWttICZhbXA7JmFtcDsKIAkJICAgIHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewotCQkJaWYgKFdBUk5fT04ocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9Ci0JCQkJICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHsKJiM0MzsJCQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewomIzQzOwkJCQlicmNtZl9kYmcoSU5GTywgJiMzNDt1c2luZyBQU0sgb2ZmbG9hZFxuJiMzNDspOwomIzQzOwkJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKJiM0MzsJCQl9IGVsc2UgaWYgKFdBUk5fT04ocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9CiYjNDM7CQkJCQkgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSykpIHsKIAkJCQllcnIgPSAtRUlOVkFMOwogCQkJCWdvdG8gZG9uZTsKIAkJCX0KLQkJCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXG4mIzM0Oyk7Ci0JCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKIAkJfQogCQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewogCQkJLyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovCkBAIC01OTUzLDE3ICYjNDM7NTk4NSwyOSBAQCBzdGF0aWMgaW50IGJyY21mX2NmZzgwMjExX3NldF9wbWsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiAqY29uZikKIHsKIAlzdHJ1Y3QgYnJjbWZfaWYgKmlmcDsKJiM0MzsJc3RydWN0IGJyY21mX3B1YiAqZHJ2cjsKJiM0MzsJaW50IHJldDsKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtlbnRlclxuJiMzNDspOwogCi0JLyogZXhwZWN0IHVzaW5nIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIDFYICovCiAJaWZwID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlpZiAoV0FSTl9PTihpZnAtJmd0O3ZpZi0mZ3Q7cHJvZmlsZS51c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCkpCiYjNDM7CWRydnIgPSBpZnAtJmd0O2RydnI7CiYjNDM7CWlmIChXQVJOX09OKGlmcC0mZ3Q7dmlmLSZndDtwcm9maWxlLnVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhaWZwLSZndDt2aWYtJmd0O3Byb2ZpbGUuaXNfZnQgJmFtcDsmYW1wOwomIzQzOwkJICAgICFpZnAtJmd0O3ZpZi0mZ3Q7cHJvZmlsZS5pc19va2MpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChjb25mLSZndDtwbWtfbGVuICZndDsgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTikKIAkJcmV0dXJuIC1FUkFOR0U7CiAKJiM0MzsJaWYgKGlmcC0mZ3Q7dmlmLSZndDtwcm9maWxlLmlzX29rYykgewomIzQzOwkJcmV0ID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDtva2NfaW5mb19wbWsmIzM0OywKJiM0MzsJCQkJCSAgICAgICBjb25mLSZndDtwbWssIGNvbmYtJmd0O3Bta19sZW4pOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtva2NfaW5mb19wbWsgaW92YXIgZmFpbGVkOiByZXQ9JWRcbiYjMzQ7LAomIzQzOwkJCQkgcmV0KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiBicmNtZl9zZXRfcG1rKGlmcCwgY29uZi0mZ3Q7cG1rLCBjb25mLSZndDtwbWtfbGVuKTsKIH0KIApAQCAtNjQyMiw2ICYjNDM7NjQ2Niw0NyBAQCBzdGF0aWMgczMyIGJyY21mX2dldF9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfaGFzX3Bta2lkKGNvbnN0IHU4ICpwYXJzZSwgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTsKJiM0MzsJY29uc3QgdTggKmllOwomIzQzOwl1MzIgaWVfbGVuOwomIzQzOwl1MzIgb2Zmc2V0OwomIzQzOwl1MTYgY291bnQ7CiYjNDM7CiYjNDM7CWlmICghcGFyc2UpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJzbl9pZSA9IGJyY21mX3BhcnNlX3RsdnMocGFyc2UsIGxlbiwgV0xBTl9FSURfUlNOKTsKJiM0MzsJaWYgKCFyc25faWUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWllID0gKGNvbnN0IHU4ICopcnNuX2llOwomIzQzOwlpZV9sZW4gPSByc25faWUtJmd0O2xlbiAmIzQzOyBUTFZfSERSX0xFTjsKJiM0MzsKJiM0MzsJb2Zmc2V0ID0gVExWX0hEUl9MRU4gJiM0MzsgV1BBX0lFX1ZFUlNJT05fTEVOICYjNDM7IFdQQV9JRV9NSU5fT1VJX0xFTjsKJiM0MzsJaWYgKG9mZnNldCAmIzQzOyBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICZndDs9IGllX2xlbikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gJmx0OyZsdDsgOCk7CiYjNDM7CW9mZnNldCAmIzQzOz0gV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiAmIzQzOyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjsKJiM0MzsJaWYgKG9mZnNldCAmIzQzOyBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICZndDs9IGllX2xlbikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gJmx0OyZsdDsgOCk7CiYjNDM7CW9mZnNldCAmIzQzOz0gV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiAmIzQzOyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjsKJiM0MzsJaWYgKG9mZnNldCAmIzQzOyBSU05fQ0FQX0xFTiAmZ3Q7PSBpZV9sZW4pCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW9mZnNldCAmIzQzOz0gUlNOX0NBUF9MRU47CiYjNDM7CWlmIChvZmZzZXQgJiM0MzsgUlNOX1BNS0lEX0NPVU5UX0xFTiAmZ3Q7IGllX2xlbikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gJmx0OyZsdDsgOCk7CiYjNDM7CiYjNDM7CXJldHVybiBjb3VudCAmZ3Q7IDA7CiYjNDM7fQomIzQzOwogc3RhdGljIHMzMgogYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCQkgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCkBAIC02NDM2LDYgJiM0Mzs2NTIxLDcgQEAgYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCXN0cnVjdCBicmNtZl9ic3NfaW5mb19sZSAqYmk7CiAJc3RydWN0IGJyY211X2NoYW4gY2g7CiAJc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyByb2FtX2luZm8gPSB7fTsKJiM0MzsJYm9vbCBhdXRob3JpemVkID0gZmFsc2U7CiAJdTMyIGZyZXE7CiAJczMyIGVyciA9IDA7CiAJdTggKmJ1ZjsKQEAgLTY0ODIsMTQgJiM0Mzs2NTY4LDE4IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAlyb2FtX2luZm8ucmVzcF9pZSA9IGNvbm5faW5mby0mZ3Q7cmVzcF9pZTsKIAlyb2FtX2luZm8ucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tJmd0O3Jlc3BfaWVfbGVuOwogCiYjNDM7CWlmICgocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHwKJiM0MzsJICAgICBwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAoYnJjbWZfaGFzX3Bta2lkKHJvYW1faW5mby5yZXFfaWUsIHJvYW1faW5mby5yZXFfaWVfbGVuKSB8fAomIzQzOwkgICAgIHByb2ZpbGUtJmd0O2lzX2Z0IHx8IHByb2ZpbGUtJmd0O2lzX29rYykpCiYjNDM7CQlhdXRob3JpemVkID0gdHJ1ZTsKJiM0MzsKIAljZmc4MDIxMV9yb2FtZWQobmRldiwgJmFtcDtyb2FtX2luZm8sIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoYXV0aG9yaXplZCkKJiM0MzsJCWNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLSZndDtic3NpZCwgTlVMTCwgMCwKJiM0MzsJCQkJCSBHRlBfS0VSTkVMKTsKIAlicmNtZl9kYmcoQ09OTiwgJiMzNDtSZXBvcnQgcm9hbWluZyByZXN1bHRcbiYjMzQ7KTsKIAotCWlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCAmYW1wOyZhbXA7IHByb2ZpbGUtJmd0O2lzX2Z0KSB7Ci0JCWNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLSZndDtic3NpZCwgTlVMTCwgMCwgR0ZQX0tFUk5FTCk7Ci0JCWJyY21mX2RiZyhDT05OLCAmIzM0O1JlcG9ydCBwb3J0IGF1dGhvcml6ZWRcbiYjMzQ7KTsKLQl9Ci0KIAlzZXRfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQ09OTkVDVEVELCAmYW1wO2lmcC0mZ3Q7dmlmLSZndDtzbWVfc3RhdGUpOwogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFeGl0XG4mIzM0Oyk7CiAJcmV0dXJuIGVycjsKQEAgLTY1MDQsNiAmIzQzOzY1OTQsNyBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsCiAJc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSAmYW1wO2lmcC0mZ3Q7dmlmLSZndDtwcm9maWxlOwogCXN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7CiAJc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7CiYjNDM7CWJvb2wgYXV0aG9yaXplZDsKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwogCkBAIC02NTI4LDcgJiM0Mzs2NjE5LDE1IEBAIGJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAkJY29ubl9wYXJhbXMucmVxX2llX2xlbiA9IGNvbm5faW5mby0mZ3Q7cmVxX2llX2xlbjsKIAkJY29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby0mZ3Q7cmVzcF9pZTsKIAkJY29ubl9wYXJhbXMucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tJmd0O3Jlc3BfaWVfbGVuOwomIzQzOwkJYXV0aG9yaXplZCA9IGNvbXBsZXRlZCAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHwKJiM0MzsJCQkgICAgICBwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICBicmNtZl9oYXNfcG1raWQoY29ubl9wYXJhbXMucmVxX2llLAomIzQzOwkJCQkJICAgICBjb25uX3BhcmFtcy5yZXFfaWVfbGVuKTsKIAkJY2ZnODAyMTFfY29ubmVjdF9kb25lKG5kZXYsICZhbXA7Y29ubl9wYXJhbXMsIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKGF1dGhvcml6ZWQpCiYjNDM7CQkJY2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtJmd0O2Jzc2lkLCBOVUxMLCAwLAomIzQzOwkJCQkJCSBHRlBfS0VSTkVMKTsKIAkJYnJjbWZfZGJnKENPTk4sICYjMzQ7UmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xuJiMzNDssCiAJCQkgIGNvbXBsZXRlZCA/ICYjMzQ7c3VjY2VlZGVkJiMzNDsgOiAmIzM0O2ZhaWxlZCYjMzQ7KTsKIAl9CkBAIC03NzMxLDYgJiM0Mzs3ODMwLDEwIEBAIHN0YXRpYyBpbnQgYnJjbWZfc2V0dXBfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGJyY21mX2lmICppZnApCiAJfQogCWlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRV9FWFQpKQogCQl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX1NBRTsKJiM0MzsJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fAomIzQzOwkgICAgYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9PS0MpKQomIzQzOwkJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LAomIzQzOwkJCQkgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7CiAJd2lwaHktJmd0O21nbXRfc3R5cGVzID0gYnJjbWZfdHhyeF9zdHlwZXM7CiAJd2lwaHktJmd0O21heF9yZW1haW5fb25fY2hhbm5lbF9kdXJhdGlvbiA9IDUwMDA7CiAJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE5PKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAppbmRleCA2M2U1MzQ1MjNmNTE4Li4xYWE5OTM5MGE5NTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaApAQCAtMTI3LDcgJiM0MzsxMjcsOCBAQCBlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAgewogCUJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSwKIAlCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSywKIAlCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYLAotCUJSQ01GX1BST0ZJTEVfRldTVVBfU0FFCiYjNDM7CUJSQ01GX1BST0ZJTEVfRldTVVBfU0FFLAomIzQzOwlCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU0KIH07CiAKIC8qKgpAQCAtMTY0LDYgJiM0MzsxNjUsNyBAQCBlbnVtIGJyY21mX21nbXRfdHhfc3RhdHVzIHsKICAqIEBic3NpZDogYnNzaWQgb2Ygam9pbmVkL2pvaW5pbmcgaWJzcy4KICAqIEBzZWM6IHNlY3VyaXR5IGluZm9ybWF0aW9uLgogICogQGtleToga2V5IGluZm9ybWF0aW9uCiYjNDM7ICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi4KICAqLwogc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgewogCXU4IGJzc2lkW0VUSF9BTEVOXTsKQEAgLTE3Miw2ICYjNDM7MTc0LDcgQEAgc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgewogCWVudW0gYnJjbWZfcHJvZmlsZV9md3N1cCB1c2VfZndzdXA7CiAJdTE2IHVzZV9md2F1dGg7CiAJYm9vbCBpc19mdDsKJiM0MzsJYm9vbCBpc19va2M7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jCmluZGV4IDQ4ODM2NGVmOGZmMmEuLmNjMTllNWU3ZWJmNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuYwpAQCAtNDUsNiAmIzQzOzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0gewogCXsgQlJDTUZfRkVBVF9TQUUsICYjMzQ7c2FlICYjMzQ7IH0sCiAJeyBCUkNNRl9GRUFUX0ZXQVVUSCwgJiMzNDtpZGF1dGgmIzM0OyB9LAogCXsgQlJDTUZfRkVBVF9TQUVfRVhULCAmIzM0O3NhZV9leHQmIzM0OyB9LAomIzQzOwl7IEJSQ01GX0ZFQVRfRkJULCAmIzM0O2ZidCAmIzM0OyB9LAomIzQzOwl7IEJSQ01GX0ZFQVRfT0tDLCAmIzM0O29rYyYjMzQ7IH0sCiB9OwogCiAjaWZkZWYgREVCVUcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oCmluZGV4IDMxZjg2OTVjYTQxNzYuLjgxNjVhMjg2YjYzMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaApAQCAtNTksNyAmIzQzOzU5LDkgQEAKIAlCUkNNRl9GRUFUX0RFRihTQ0FOX1YyKSBcCiAJQlJDTUZfRkVBVF9ERUYoUE1LSURfVjIpIFwKIAlCUkNNRl9GRUFUX0RFRihQTUtJRF9WMykgXAotCUJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpCiYjNDM7CUJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpIFwKJiM0MzsJQlJDTUZfRkVBVF9ERUYoRkJUKSBcCiYjNDM7CUJSQ01GX0ZFQVRfREVGKE9LQykKIAogLyoKICAqIFF1aXJrczoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCmluZGV4IDAyMDM4N2Q3NjQxMjIuLjlmOGQ5ZTNkNTk5MGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaApAQCAtNzExMCw2ICYjNDM7NzExMCw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHsKICAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQOiBEcml2ZXIgc3VwcG9ydHMgcHJvYmluZyB0aGUgYXNzb2NpYXRlZCBBUAogICoJaW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuCiAgKgomIzQzOyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvcgomIzQzOyAqCU9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS4KJiM0MzsgKgogICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLgogICogQE1BWF9OTDgwMjExX0VYVF9GRUFUVVJFUzogaGlnaGVzdCBleHRlbmRlZCBmZWF0dXJlIGluZGV4LgogICovCkBAIC03MTkyLDYgJiM0Mzs3MTk1LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHsKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUiwKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9LRVlfTFRGX1NFRUQsCiAJTkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCwKJiM0MzsJTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsCiAKIAkvKiBhZGQgbmV3IGZlYXR1cmVzIGJlZm9yZSB0aGUgZGVmaW5pdGlvbiBiZWxvdyAqLwogCU5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUywKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDQ0ZjJiYWQwODY3MDUuLjE1NzMxNDQwYzU3YTQgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtMTg0MzQsNiAmIzQzOzE4NDM0LDcgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9tdWx0aWNhc3RfdG9fdW5pY2FzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSBpbmZvLSZndDt1c2VyX3B0clswXTsKJiM0MzsJc3RydWN0IHdpcGh5ICp3aXBoeSA9ICZhbXA7cmRldi0mZ3Q7d2lwaHk7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGluZm8tJmd0O3VzZXJfcHRyWzFdOwogCXN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtJmd0O2llZWU4MDIxMV9wdHI7CiAJc3RydWN0IGNmZzgwMjExX3Bta19jb25mIHBta19jb25mID0ge307CkBAIC0xODQ0Miw4ICYjNDM7MTg0NDMsMTAgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkgICAgd2Rldi0mZ3Q7aWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoJmFtcDtyZGV2LSZndDt3aXBoeSwKLQkJCQkgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSkKJiM0MzsJaWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSwKJiM0MzsJCQkJICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgJmFtcDsmYW1wOwomIzQzOwkgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LAomIzQzOwkJCQkgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKCFpbmZvLSZndDthdHRyc1tOTDgwMjExX0FUVFJfTUFDXSB8fCAhaW5mby0mZ3Q7YXR0cnNbTkw4MDIxMV9BVFRSX1BNS10pCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA0NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBGYXN0IFRyYW5zaXRpb24gKEZCVCkgYW5kIE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgKE9LQykgcm9hbWluZyBvZmZsb2FkIHRvIHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgYWxvbmdzaWRlIGEgbmV3IGZlYXR1cmUgZmxhZyBpbiBgbmw4MDIxMWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0NhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8mIzM0OyBUaGUgcHJvbXB0IGlzIHZlcnkgc3BlY2lmaWMgYWJvdXQgZXhjbHVkaW5nIHBhdGNoZXMgdGhhdCBoaXQgdW5yZWFjaGFibGUgY29kZSBwYXRocy4KCmBicmNtZm1hY2AgaXMgYSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyLCB3aGljaCByaW5ncyBhbGFybSBiZWxscy4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIHJlbHkgb24gc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgKFNESU8sIFBDSWUsIFVTQikuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGF0IGhhcmR3YXJlIGRpcmVjdGx5LCB1bmxpa2UsIHNheSwgYG1hYzgwMjExX2h3c2ltYC4gVGhpcyBpcyB0aGUgZmlyc3QgaHVyZGxlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBmbGFncyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBjYXJkcyBhcyB1bmludGVyZXN0aW5nIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJcyBgYnJjbWZtYWNgIG9uZSBvZiB0aG9zZT8gWWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHRpZWQgdG8gc3BlY2lmaWMgQnJvYWRjb20gY2hpcHMuCgpIb3dldmVyLCBtYXliZSB0aGVyZeKAmXMgYSB3b3JrYXJvdW5kLiBDb3VsZCBJIHBlcmhhcHMgdHJpZ2dlciB0aGUgVVNCIGludGVyZmFjZSBvZiBgYnJjbWZtYWNgIHRocm91Z2ggYSBVU0IgZ2FkZ2V0IHNldHVwPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAobGlrZSBgc3l6X3VzYl9jb25uZWN0YCkuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiBgYnJjbWZtYWNgIHN1cHBvcnRzIHByb2Jpbmcgb3IgYmVpbmcgY29udHJvbGxlZCB2aWEgVVNCLiBJZiB0aGF0JiMzOTtzIHBvc3NpYmxlLCBpdCBtaWdodCBwcm92aWRlIGEgd2F5IGluLCBldmVuIGlmIHRoZSBkcml2ZXIgdXN1YWxseSB3YW50cyBhIFBDSWUgb3IgU0RJTyBpbnRlcmZhY2UuIExldCYjMzk7cyBzZWUgaWYgVVNCIGlzIGEgdmlhYmxlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVx0XHRcdFx0ICAgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKmZ3cmVxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDUtXHRcdFx0ICAgICAgZW51bSBicmNtZl9md3ZlbmRvciBmd3ZpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzMDk6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMTAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEzNDQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzNDU6YnJjbWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTM0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTQ0NjpcdHJldCA9IGJyY21mX3VzYl9wcm9iZV9jYihkZXZpbmZvLCBpZC1cdTAwM2Vkcml2ZXJfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKFx1MDAyNnVzYi1cdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTU2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYnJjbWZfdXNiZHJ2ciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY5LVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTcwOlx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NzEtXHQuZGlzY29ubmVjdCA9IGJyY21mX3VzYl9kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjE3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBSZWxhdGVkIHRvIFdpLUZpIFBNSyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gZ29lcyBpbnRvIGFuYWx5c2lzIG1vZGUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IHRvdWNoZXMgYm90aCBhIGRyaXZlciBhbmQgY29yZSBrZXJuZWwgbG9naWMuIFNwZWNpZmljYWxseSwgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IsIHdoaWNoIG1lYW5zIGl0ICpjb3VsZCogYmUgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQgdmlhIGEgVVNCIGdhZGdldCBzZXR1cC4gQnV0IHRoZSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgc3BlY2lmaWNhbGx5IGBubDgwMjExX3NldF9wbWtgLgoKQWxyaWdodCwgdGhlIGNvZGUgbW9kaWZpZXMgYG5sODAyMTFfc2V0X3Bta2AsIGFuZCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBhbGxvd2luZyBgbmw4MDIxMV9zZXRfcG1rYCB0byBwcm9jZWVkIGV2ZW4gaWYgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBpcyBzZXQuIFRoZSBwcmV2aW91cyBjaGVjayB3YXMgYSBiaXQgbW9yZSByZXN0cmljdGl2ZS4gTm93IEkgbmVlZCB0byBzZWUgaG93IHRoZSBjaGFuZ2Ugd29ya3MuCgpUaGlzIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIGlzIHJlYWNoZWQgdmlhIG5ldGxpbmssIHdoaWNoIG1lYW5zIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiB0cmlnZ2VyIGl0LiBJdCYjMzk7cyBrZXkgdG8gcmVtZW1iZXIgdGhhdCBhIGRyaXZlciBzZXRzIHRoaXMgZmVhdHVyZSBmbGFnLiBOb3csIG15IG1pbmQgaXMgcmFjaW5nLiBXaGljaCBkcml2ZXJzIG1pZ2h0IHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgPyBUaGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgbWFjODAyMTFfaHdzaW1gIGFuZCBgYnJjbWZtYWNgLCBiZWNhdXNlIHRoZXkmIzM5O3JlIGNvbW1vbi4KCkkgaGF2ZSB0byB2ZXJpZnkgd2hldGhlciBgbWFjODAyMTFfaHdzaW1gIHNldHMgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYC4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgYSBkcml2ZXIgbWF5IHNldCB0aGlzIGZlYXR1cmUsIHdoaWNoIG1lYW5zIEkgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyBuZXcsIHNsaWdodGx5IG1vZGlmaWVkLCBjb2RlIHBhdGguIFRpbWUgdG8gZ28gZGlnIGludG8gdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Tkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Nzc1OD1zdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MzUtXHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjc4MzY6XHRcdFx0XHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy03ODM3LVx0d2lwaHktXHUwMDNlbWdtdF9zdHlwZXMgPSBicmNtZl90eHJ4X3N0eXBlcztcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oPTY4MzI9ZW51bSBubDgwMjExX2ZlYXR1cmVfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtNzExMi0gKlxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo3MTEzOiAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTE0LSAqXHRPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIHJvYW1pbmcgb2ZmbG9hZCBpbiBzdGF0aW9uIG1vZGUuXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTk3LVx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6NzE5ODpcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FELFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTk5LVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0MzQ9c3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDQ4LVx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0NDk6XHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg0NTAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAwOQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYnJjbWZtYWNgIERyaXZlciBhbmQgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmxhZyBpcyBjdXJyZW50bHkgb25seSBzZXQgYnkgdGhlIGBicmNtZm1hY2AgZHJpdmVyLiBUaGlzIG1lYW5zIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIGBubDgwMjExX3NldF9wbWtgIHN0ZW1taW5nIGZyb20gdGhpcyBmbGFnIGFyZSB0aWVkIGRpcmVjdGx5IHRvIHdoZXRoZXIgb3Igbm90IGBicmNtZm1hY2AgaXMgbG9hZGVkIGFuZCBzcGVjaWZpY2FsbHkgZW5hYmxlcyB0aGlzIGZlYXR1cmUuIEEgcXVpY2sgYXNzZXNzbWVudCBzdWdnZXN0cyB0aGF0IGBicmNtZm1hY2AgKmNvdWxkKiBiZSBhIHRhcmdldCBmb3IgZnV6emluZy4gQ3J1Y2lhbGx5LCBpdCBoYXMgYSBVU0IgaW50ZXJmYWNlLCBhbmQgc3l6a2FsbGVyIGNhbiBzdXBwb3NlZGx5IGVtdWxhdGUgVVNCIGRldmljZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQgSSBuZWVkIHRvIGJlIHN1cmU7IGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogdGFyZ2V0IGBicmNtZm1hY2A/IEJlZm9yZSBJIHN0YXJ0IGRvd24gdGhhdCBwYXRoLCBJIG5lZWQgdG8gY2hlY2sgaG93IGNvbW1vbiBvciBzcGVjaWFsaXplZCBgYnJjbWZtYWNgIGlzLiBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB3aGV0aGVyIGl0JiMzOTtzIGVuYWJsZWQgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zIG9yIGlmIGl0IG5lY2Vzc2l0YXRlcyBzb21lIHNwZWNpZmljIGtlcm5lbCBidWlsZCBvcHRpb25zLiBUaGlzIHdpbGwgYWZmZWN0IHRoZSBwcmlvcml0eSBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMTIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgQnJvYWRjb20gV2lGaSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zIGZvciB0aGlzIEJyb2FkY29tIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGJyY21mbWFjYC4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW50byB0aGUgYEtjb25maWdgIGZpbGUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gbG9naWMgcmVzaWRlcy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb21wb25lbnRzIHRoaXMgbW9kdWxlIHJlbGllcyBvbiwgd2hhdCBjb25maWd1cmF0aW9ucyBlbmFibGUgb3IgZGlzYWJsZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0aWVzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGFuZCBlZmZpY2llbnQgYnVpbGQsIGFuZCBmb3IgdHJvdWJsZXNob290aW5nIGFueSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGltZSB0byBwYXJzZSB0aGUgS2NvbmZpZyBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHZhcmlhYmxlcyBhbmQgdGhlIGxvZ2ljIGdvdmVybmluZyB0aGVpciBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBCUkNNRk1BQ1xuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNDpcdFx0c2VsZWN0IEJSQ01VVElMXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gQnJvYWRjb21cbiAgIDc6XHRcdCAgRnVsbE1BQyBjaGlwc2V0cy4gSXQgaGFzIHRvIHdvcmsgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIGJ1c1xuICAgODpcdFx0ICBpbnRlcmZhY2Ugc3VwcG9ydC4gSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZFxuICAgOTpcdFx0ICBicmNtZm1hYy5rby5cbiAgMTA6XHRcbiAgMTE6XHRjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuICAxMjpcdFx0Ym9vbFxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbiAgMTU6XHRcdGJvb2xcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgQlJDTUZNQUNfU0RJT1xuICAxODpcdFx0Ym9vbCBcJiMzNDtTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gKE1NQyA9IHkgfHwgTU1DID0gQlJDTUZNQUMpXG4gIDIwOlx0XHRkZXBlbmRzIG9uIEJSQ01GTUFDXG4gIDIxOlx0XHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuICAyMjpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyMzpcdFx0ZGVmYXVsdCB5XG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxuICAyNjpcdFx0ICBJRUVFODAyLjExbiBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xuICAyNzpcdFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYSBTRElPIHdpcmVsZXNzIGNhcmQuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIEJSQ01GTUFDX1VTQlxuICAzMDpcdFx0Ym9vbCBcJiMzNDtVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiAoVVNCID0geSB8fCBVU0IgPSBCUkNNRk1BQylcbiAgMzI6XHRcdGRlcGVuZHMgb24gQlJDTUZNQUNcbiAgMzM6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDM0Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDM3Olx0XHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXG4gIDM4Olx0XHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhbiBVU0Igd2lyZWxlc3MgY2FyZC5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgQlJDTUZNQUNfUENJRVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgzNwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBQYXRjaCBmb3IgV2lGaSBSb2FtaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgdG91Y2hpbmcgYm90aCBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYCBjb25maWd1cmF0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEJ1dCwgdGhlIHJlYWwga2lja2VyIGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBUaGF0JiMzOTtzIGNvcmUga2VybmVsIGxvZ2ljLCBhbmQgYW55IGNoYW5nZXMgdGhlcmUgYXJlIHdvcnRoIGEgY2xvc2UgbG9vay4KClRoZSBjaGFuZ2UgaXRzZWxmIGlzIHByZXR0eSBzcGVjaWZpYzogaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBjaGVjayB0aGF0IGdvdmVybnMgd2hldGhlciBgbmw4MDIxMV9zZXRfcG1rYCBpcyBwZXJtaXR0ZWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNoZWNrZWQgZm9yIHRoZSBwcmVzZW5jZSBvZiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgLiBOb3csIGl0JiMzOTtzIGFkZGluZyBhbm90aGVyIGNoZWNrOiBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgLiBFZmZlY3RpdmVseSwgdGhpcyBhbGxvd3MgYG5sODAyMTFfc2V0X3Bta2AgdG8gYmUgY2FsbGVkIGlmICplaXRoZXIqIG9mIHRob3NlIGZlYXR1cmVzIGlzIHByZXNlbnQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiBgYnJjbWZtYWNgIGlzIHRoZSBvbmx5IGRyaXZlciBzZXR0aW5nIHRoaXMgbmV3IGBST0FNX09GRkxPQURgIGZlYXR1cmUgZmxhZywgdGhlbiB0aGlzIHBhdGNoIGlzIG1ha2luZyB0aGUgYG5sODAyMTFfc2V0X3Bta2AgZnVuY3Rpb24gcmVhY2hhYmxlIHVuZGVyIHRoZSBuZXcgY29uZGl0aW9uIG9ubHkgaWYgYGJyY21mbWFjYCBpcyBsb2FkZWQgYW5kIHRoZSBmZWF0dXJlIGlzIGFjdGl2ZS4gSXQgaXMgZW5hYmxpbmcgdGhlIHJvYW1pbmcgb2ZmbG9hZCBmdW5jdGlvbmFsaXR5IHRocm91Z2ggdGhpcyBjYWxsLgoKSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIHdhcyAqYWxyZWFkeSogYmVpbmcgY2hlY2tlZC4gU28sIGBubDgwMjExX3NldF9wbWtgICp3YXMqIGFscmVhZHkgcmVhY2hhYmxlIGlmICp0aGF0KiBmZWF0dXJlIHdhcyBzZXQuIFNvLCB0aGlzIHBhdGNoIGlzIG9ubHkgcmVsZXZhbnQgaWYgYFJPQU1fT0ZGTE9BRGAgaXMgc2V0LiBJZiBub3QsIHRoaXMgaXMgbm90IGFuIGlzc3VlLgoKTm93LCBJJiMzOTttIGN1cmlvdXMgaWYgYG1hYzgwMjExX2h3c2ltYCBzZXRzIGBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWGAgaW4gaXRzIHZpcnR1YWwgaGFyZHdhcmUgZW11bGF0aW9uLCBhcyB0aGlzIHdvdWxkIGltcGFjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjaGFuZ2UmIzM5O3MgaW1wbGljYXRpb25zIGluIHNpbXVsYXRlZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBjaGVjayBvbiB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz03NzU4PXN0YXRpYyBpbnQgYnJjbWZfc2V0dXBfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGJyY21mX2lmICppZnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgxOC1cdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgxOTpcdFx0XHRcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MjAtXHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC0xOTEtICpcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6MTkyOiAqIFNpbWlsYXJseSBATkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVggZmxhZyBjYW4gYmVcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtMTkzLSAqIHNldCBieSBkcml2ZXJzIGluZGljYXRpbmcgb2ZmbG9hZCBzdXBwb3J0IG9mIHRoZSBQVEsvR1RLIEVBUE9MXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD02ODMyPWVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTUtICpcdGFuZCBhc3NvY2lhdGUgY29tbWFuZHMpLCBkb2luZyBpdCBpbiB0aGUgaG9zdCBtaWdodCBub3QgYmUgc3VwcG9ydGVkLlxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo2OTE2OiAqIEBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWDogRGV2aWNlIHdhbnRzIHRvIGRvIGRvaW5nIDQtd2F5XG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTctICpcdGhhbmRzaGFrZSB3aXRoIDgwMi4xWCBpbiBzdGF0aW9uIG1vZGUgKHdpbGwgcGFzcyBFQVAgZnJhbWVzIHRvIHRoZSBob3N0XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTM1LVx0Tkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfUFNLLFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo3MTM2Olx0Tkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgsXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMzctXHROTDgwMjExX0VYVF9GRUFUVVJFX0ZJTFNfTUFYX0NIQU5ORUxfVElNRSxcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jPTg1Mz1pbnQgd2lwaHlfcmVnaXN0ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSlcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTk2OC1cdGlmIChXQVJOX09OKHdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksXG5uZXQvd2lyZWxlc3MvY29yZS5jOjk2OTpcdFx0XHRcdFx0ICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9jb3JlLmMtOTcwLVx0XHQgICAgKCFyZGV2LVx1MDAzZW9wcy1cdTAwM2VzZXRfcG1rIHx8ICFyZGV2LVx1MDAzZW9wcy1cdTAwM2VkZWxfcG1rKSkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xMzk5NT1zdGF0aWMgaW50IG5sODAyMTFfY29ubmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQwMjMtXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0MDI0Olx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0MDI1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDM0PXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ0Ni1cdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQod2lwaHksXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4NDQ3Olx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDQ4LVx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDc1PXN0YXRpYyBpbnQgbmw4MDIxMV9kZWxfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ4Ni1cdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0ODc6XHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg0ODgtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMjIKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAzOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYYCBmZWF0dXJlIGFuZCBpdCBsb29rcyBsaWtlIGBicmNtZm1hY2AgaXMgdGhlIG9ubHkgZHJpdmVyIHNldHRpbmcgaXQuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB3aXRoIGEgcXVpY2sgZ3JlcC4uLiB5ZXAsIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY2AgaXMgdGhlIG9ubHkgbWF0Y2guIEp1c3QgdG8gYmUgc3VyZSwgSSBjaGVja2VkIGlmIGBtYWM4MDIxMWAgd2FzIGludm9sdmVkLCBidXQgbm8sIGl0JiMzOTtzIG5vdCBzZXR0aW5nIHRoYXQgZmxhZy4KClRoaXMgbWVhbnMgYG5sODAyMTFfc2V0X3Bta2AgaXMgb25seSByZWFjaGFibGUgd2hlbiB0aGUgYGJyY21mbWFjYCBtb2R1bGUgaXMgbG9hZGVkLiBUaGF0JiMzOTtzIGdvb2QgaW50ZWwuIE5vdywgYGJyY21mbWFjYCBpcyBhIGRyaXZlciBmb3IgQnJvYWRjb20gRnVsbE1BQyBoYXJkd2FyZS4gR2l2ZW4gdGhhdCwgY2FuIHdlIGZ1enogaXQgdmlhIFVTQj8KClRoZSBnb29kIG5ld3MgaXMgdGhhdCBzeXprYWxsZXIgaGFzIFVTQiBmdXp6aW5nIHN1cHBvcnQuIEFuZCwgYSBxdWljayBsb29rIHNob3dzIGBicmNtZm1hY2AgaGFzIGEgVVNCIGRyaXZlciwgYEJSQ01GTUFDX1VTQmAuIEV4Y2VsbGVudC4gTGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgY2FuIGFjdHVhbGx5ICpyZWFjaCogdGhlIGBicmNtZm1hY2AgY29kZS4gSWYgYEJSQ01GTUFDX1VTQmAgaXMgZW5hYmxlZCwgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGVtdWxhdGUgdGhlIFVTQiBkZXZpY2UsIHdoaWNoIHdpbGwgdHJpZ2dlciBgYnJjbWZfdXNiX3Byb2JlYC4gIFRoYXQgc2hvdWxkLCBpbiB0dXJuLCBjYWxsIGBicmNtZl91c2JfcHJvYmVfY2JgLCB3aGljaCwgSSBiZWxpZXZlLCByZXF1ZXN0cyBmaXJtd2FyZS4KCkFoLCByaWdodCwgYGJyY21mbWFjYCBuZWVkcyBmaXJtd2FyZSB0byBpbml0aWFsaXplLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUuLi4gWWVwLCB0aGVyZSBpdCBpczogIGBicmNtZl9md19nZXRfZmlybXdhcmVzKClgLiAgSWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBwcmVzZW50LCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgbWlnaHQgZmFpbCwgYW5kIHRoZSBkZXZpY2Ugd29uJiMzOTt0IHJlZ2lzdGVyIHdpdGggYGNmZzgwMjExYC4gV2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgdG8gc2VlIGlmIHRoYXQmIzM5O3MgYSBibG9ja2luZyBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3Byb2JlX3BoYXNlMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVx0XHRcdFx0ICAgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKmZ3cmVxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzMDk6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMTAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKFx1MDAyNnVzYi1cdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI4LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2MTUKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCBzdW1tYXJpemVkIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGgga2VybmVsLWxldmVsIFVTQiBkcml2ZXIgZGV2ZWxvcG1lbnQuCgoqKkRpdmluZyBpbnRvIGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAuIFRoZSBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlICpzZWNvbmQqIHBoYXNlIG9mIHRoZSBVU0IgZGV2aWNlIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhpcyBCcm9hZGNvbSBXaS1GaSBhZGFwdGVyLiBTbywgd2UmIzM5O3ZlIGFscmVhZHkgZ290dGVuIHBhc3QgdGhlIGluaXRpYWwgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBwcm9iYWJseSBzb21lIGJhc2ljIHJlc291cmNlIGFsbG9jYXRpb24uIE5vdywgd2UmIzM5O3JlIGxpa2VseSBpbiB0aGUgdGhpY2sgb2YgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLgoKTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN0ZXBzOiBXZSYjMzk7cmUgcHJvYmFibHkgaGFuZGxpbmcgdGhlIGFjdHVhbCBjb21tdW5pY2F0aW9uIHNldHVwIHdpdGggdGhlIGRldmljZSBoZXJlLiBJcyB0aGlzIHdoZXJlIHdlJiMzOTtyZSBtYXBwaW5nIHRoZSBVU0IgZW5kcG9pbnRzLCBzZXR0aW5nIHVwIHRoZSBVUkJzIChVU0IgUmVxdWVzdCBCbG9ja3MpLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIHRvIHRhbGsgdG8gdGhlIEJyb2FkY29tIGNoaXA/IERlZmluaXRlbHkgZXhwZWN0aW5nIHRvIHNlZSBzb21lIGNyaXRpY2FsIHJlZ2lzdGVyIHdyaXRlcyBhbmQgcmVhZHMuIEFyZSB3ZSBjb25maWd1cmluZyB0aGUgRE1BIChEaXJlY3QgTWVtb3J5IEFjY2VzcykgY2hhbm5lbHMgdG9vPyBQcm9iYWJseS4gR2l2ZW4gdGhlIHRhcmdldCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZGVhbCB3aXRoIHRoZSBjaGlwJiMzOTtzIGludGVybmFsIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtIOKAkyB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgd2hlcmUgdGhlIGRyaXZlciB3b3VsZCBiZSBpbml0aWF0aW5nIHRoZSBmaXJtd2FyZSB1cGxvYWQgYW5kIHdhaXRpbmcgZm9yIHRoZSBjaGlwIHRvIGNvbWUgb25saW5lLiBXaGF0IGFyZSB0aGUgcmV0cnkgbWVjaGFuaXNtcyBpZiB0aGUgZmlybXdhcmUgbG9hZCBmYWlscz8gVmVyeSBpbXBvcnRhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSBhcmUgZGVhbGluZyB3aXRoIHBvd2VyIG1hbmFnZW1lbnQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZS4gQXJlIHdlIHRlbXBvcmFyaWx5IGVuYWJsaW5nIGFueSBoaWdoLXBvd2VyIG1vZGVzPyBIb3cgYXJlIHdlIGhhbmRsaW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBhY2Nlc3NpbmcgdGhlIFVTQiBidXM/IE15IGZvY3VzIGlzIGVzcGVjaWFsbHkgZGlyZWN0ZWQgdG93YXJkIHBvdGVudGlhbCBib3R0bGVuZWNrcyBpbiB0aGUgZGF0YSB0cmFuc2ZlciBhbmQgZW5zdXJpbmcgYSByb2J1c3Qgc29sdXRpb24uIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGF2ZSBoYW5kbGVkIGFueSBoYXJkd2FyZSBxdWlya3M7IHNvbWUgQnJvYWRjb20gY2hpcHMgYXJlIG5vdG9yaW91cyBmb3IgaGF2aW5nLi4uIGludGVyZXN0aW5nLi4uIGhhcmR3YXJlIGJlaGF2aW9yLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNzYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE3NjpcdHN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxuMTE3NzpcdFx0XHRcdFx0ICAgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKmZ3cmVxKVxuMTE3ODpcdHtcbjExNzk6XHRcdHN0cnVjdCBicmNtZl9idXMgKmJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuMTE4MDpcdFx0c3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvID0gYnVzLVx1MDAzZWJ1c19wcml2LnVzYi1cdTAwM2VkZXZpbmZvO1xuMTE4MTpcdFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbjExODI6XHRcbjExODM6XHRcdGlmIChyZXQpXG4xMTg0Olx0XHRcdGdvdG8gZXJyb3I7XG4xMTg1Olx0XG4xMTg2Olx0XHRicmNtZl9kYmcoVVNCLCBcJiMzNDtTdGFydCBmdyBkb3dubG9hZGluZ1xcblwmIzM0Oyk7XG4xMTg3Olx0XG4xMTg4Olx0XHRmdyA9IGZ3cmVxLVx1MDAzZWl0ZW1zW0JSQ01GX1VTQl9GV19DT0RFXS5iaW5hcnk7XG4xMTg5Olx0XHRrZnJlZShmd3JlcSk7XG4xMTkwOlx0XG4xMTkxOlx0XHRyZXQgPSBjaGVja19maWxlKGZ3LVx1MDAzZWRhdGEpO1xuMTE5MjpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuMTE5MzpcdFx0XHRicmNtZl9lcnIoXCYjMzQ7aW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4xMTk0Olx0XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTE5NTpcdFx0XHRnb3RvIGVycm9yO1xuMTE5NjpcdFx0fVxuMTE5NzpcdFxuMTE5ODpcdFx0ZGV2aW5mby1cdTAwM2VpbWFnZSA9IGZ3LVx1MDAzZWRhdGE7XG4xMTk5Olx0XHRkZXZpbmZvLVx1MDAzZWltYWdlX2xlbiA9IGZ3LVx1MDAzZXNpemU7XG4xMjAwOlx0XG4xMjAxOlx0XHRyZXQgPSBicmNtZl91c2JfZndfZG93bmxvYWQoZGV2aW5mbyk7XG4xMjAyOlx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbjEyMDM6XHRcdGlmIChyZXQpXG4xMjA0Olx0XHRcdGdvdG8gZXJyb3I7XG4xMjA1Olx0XG4xMjA2Olx0XHRyZXQgPSBicmNtZl9hbGxvYyhkZXZpbmZvLVx1MDAzZWRldiwgZGV2aW5mby1cdTAwM2VzZXR0aW5ncyk7XG4xMjA3Olx0XHRpZiAocmV0KVxuMTIwODpcdFx0XHRnb3RvIGVycm9yO1xuMTIwOTpcdFxuMTIxMDpcdFx0LyogQXR0YWNoIHRvIHRoZSBjb21tb24gZHJpdmVyIGludGVyZmFjZSAqL1xuMTIxMTpcdFx0cmV0ID0gYnJjbWZfYXR0YWNoKGRldmluZm8tXHUwMDNlZGV2KTtcbjEyMTI6XHRcdGlmIChyZXQpXG4xMjEzOlx0XHRcdGdvdG8gZXJyb3I7XG4xMjE0Olx0XG4xMjE1Olx0XHRjb21wbGV0ZShcdTAwMjZkZXZpbmZvLVx1MDAzZWRldl9pbml0X2RvbmUpO1xuMTIxNjpcdFx0cmV0dXJuO1xuMTIxNzpcdGVycm9yOlxuMTIxODpcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtmYWlsZWQ6IGRldj0lcywgZXJyPSVkXFxuXCYjMzQ7LCBkZXZfbmFtZShkZXYpLCByZXQpO1xuMTIxOTpcdFx0Y29tcGxldGUoXHUwMDI2ZGV2aW5mby1cdTAwM2VkZXZfaW5pdF9kb25lKTtcbjEyMjA6XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihkZXYpO1xuMTIyMTpcdH1cbjEyMjI6XHRcbjEyMjM6XHRzdGF0aWMgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKlxuMTIyNDpcdGJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuMTIyNTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTQKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBDb2RlIGFuZCBXb3J0aEZ1enppbmcqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IG9yIG5vdC4gVGhlIGtleSBpcyB3aGV0aGVyIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgZnV6emluZyBlbnZpcm9ubWVudC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBpcyBpbnZvbHZlZCwgYW5kIHRoYXQmIzM5O3MgdXN1YWxseSBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIuIEFuZCBpdCBleHBsaWNpdGx5IG5lZWRzIGZpcm13YXJlLiBTbyB0aGUgYGJyY21mbWFjYCBjb2RlIHBhdGggd291bGQgbm9ybWFsbHkgYmUgYSBwcm9ibGVtIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgU3l6a2FsbGVyIGVudmlyb25tZW50IGJlY2F1c2Ugd2Ugb2Z0ZW4gZG9uJiMzOTt0IGluY2x1ZGUgdGhhdCBmaXJtd2FyZSBpbiB0aGUgdGVzdCBpbWFnZS4KCkhvd2V2ZXIsIFN5emthbGxlciAqY2FuKiBwcm92aWRlIGZpcm13YXJlIGlmIGl0IGlzIGJ1aWx0IGluLgoKQnV0LCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIGF2b2lkIGxvb2tpbmcgYXQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMsIG9yIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlLgoKQnV0IHRoZW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgd2hpY2ggaXMgY29yZSBrZXJuZWwgd2lyZWxlc3MgbG9naWMuIFRoYXQgaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGluZ3MuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBkcml2ZXItc3BlY2lmaWMgY2hhbmdlIGFueW1vcmUuCgpUaGUgY2hhbmdlIGluIGBubDgwMjExLmNgIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsLiBUaGlzIGlzIGdvb2QgbmV3cywgYXMgaXQgcG90ZW50aWFsbHkgd2lkZW5zIHRoZSBhcHBsaWNhYmlsaXR5IG9mIHRoZSBwYXRjaC4gVGhlIHJlbGV2YW50IGNvZGUgaXMgb25seSByZWFjaGFibGUgaWYgYSBkcml2ZXIgc2V0cyB0aGUgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBvciBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGZsYWdzLgoKU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiB3aGljaCBkcml2ZXJzIHNldCB0aGVzZSBmZWF0dXJlcz8gSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAsIGFuZCBmb3VuZCB0aGF0IGl0JiMzOTtzICpvbmx5KiBzZXQgYnkgYGJyY21mbWFjL2NmZzgwMjExLmNgLiBBbmQgSSBhbHNvIGdyZXBwZWQgZm9yIGBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWGAgYW5kIGZvdW5kIHRoYXQgaXQgaXMgb25seSBzZXQgYnkgYGJyY21mbWFjL2NmZzgwMjExLmNgIGFzIHdlbGwuIFRoYXQgbWVhbnMgdGhpcyBwYXRoIGlzLCBhdCBsZWFzdCBkaXJlY3RseSwgb25seSByZWFjaGFibGUgYnkgdGhlIGBicmNtZm1hY2AgZHJpdmVyLgoKSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSAqb3RoZXIqIHBsYWNlcyB3aGVyZSB0aGlzIGZlYXR1cmUgZmxhZyBpcyBzZXQuIEV2ZW4gYSBicmllZiBsb29rIGluIHRoZSBgbmV0L3dpcmVsZXNzL2AgZGlyZWN0b3J5IG1pZ2h0IGJlIHdvcnRoIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz03NzU4PXN0YXRpYyBpbnQgYnJjbWZfc2V0dXBfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGJyY21mX2lmICppZnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgxOC1cdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgxOTpcdFx0XHRcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MjAtXHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTk4CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVnVsbmVyYWJpbGl0eSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGZsYWcgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBubDgwMjExX3NldF9wbWtgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBzZXRzIHRoYXQgZmxhZy4gU28sIHRoYXQgbWVhbnMgYG5sODAyMTFfc2V0X3Bta2AgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgYnJjbWZtYWNgIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIGBicmNtZm1hY2AgZXZlbiBiZSBpbml0aWFsaXplZCB3aXRoaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudD8KClJlbWVtYmVyaW5nIGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMsIGl0IHR5cGljYWxseSB1c2VzIGBtYWM4MDIxMV9od3NpbWAgZm9yIGl0cyBXaS1GaSBmdXp6aW5nIGVmZm9ydHMuIEl0IGRvZXNuJiMzOTt0IHVzZSBgYnJjbWZtYWNgLiBFdmVuIGlmIHRoZXJlIHdlcmUgc29tZSBVU0IgZnV6emluZyBjb25maWd1cmF0aW9uLCBgYnJjbWZtYWNgIHNwZWNpZmljYWxseSBuZWVkcyBmaXJtd2FyZSB0byBpbml0aWFsaXplIGNvcnJlY3RseS4gTm93IEkmIzM5O20gcmVjYWxsaW5nIHRoZSBjb2RlIHBhdGguLi4gSWYgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgIGZhaWxzIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIGJhaWxzIG91dCwgY2FsbGluZyBgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRldilgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIERvZXMgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgICphY3R1YWxseSogZmFpbCBpbiBzeXprYWxsZXI/IEkgbmVlZCB0byBjaGVjay4gSXQmIzM5O3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgc3l6a2FsbGVyIGltYWdlcyBkb24mIzM5O3QgaW5jbHVkZSB0aGUgbmVjZXNzYXJ5IEJyb2FkY29tIGZpcm13YXJlLCBhbmQgdGhpcyB3b3VsZCBleHBsYWluIHRoZSBvYnNlcnZlZCBiZWhhdmlvci4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnJjbWZfZndfZ2V0X2Zpcm13YXJlc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2Z3X2dldF9maXJtd2FyZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jPTc0MT1zdGF0aWMgYm9vbCBicmNtZl9md19yZXF1ZXN0X2lzX3ZhbGlkKHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmMtNzU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmM6NzU2OmludCBicmNtZl9md19nZXRfZmlybXdhcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKnJlcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jLTc1Ny1cdFx0XHQgICB2b2lkICgqZndfY2IpKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGVycixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmlybXdhcmUuaD04MT1icmNtZl9md19hbGxvY19yZXF1ZXN0KHUzMiBjaGlwLCB1MzIgY2hpcHJldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmlybXdhcmUuaC05MC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oOjkxOmludCBicmNtZl9md19nZXRfZmlybXdhcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKnJlcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oLTkyLVx0XHRcdCAgIHZvaWQgKCpmd19jYikoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgZXJyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MTU1MD1zdGF0aWMgaW50IGJyY21mX3BjaWVfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTU3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTU3NTpcdGVyciA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfcGNpZV9zZXR1cCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTE1NzYtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1NTc6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGJ1cy1cdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl9wY2llX3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU1OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jPTQ0NDk9aW50IGJyY21mX3NkaW9fcHJvYmUoc3RydWN0IGJyY21mX3NkaW9fZGV2ICpzZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMtNDU0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6NDU0NzpcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc2Rpb2Rldi1cdTAwM2VkZXYsIGZ3cmVxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYy00NTQ4LVx0XHRcdFx0ICAgICBicmNtZl9zZGlvX2Zpcm13YXJlX2NhbGxiYWNrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDgtXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA5Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzEwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTE0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI3Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcdTAwMjZ1c2ItXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyOC1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjA4CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogNDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgIHVzZXMgYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YC4gVGhpcyBtZWFucyB0aGF0IGlmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGNhbGxiYWNrIHdpbGwgZXZlbnR1YWxseSByZXBvcnQgYW4gZXJyb3Igb3IgYSBOVUxMIGZpcm13YXJlIHN0cnVjdC4gVGhpcywgaW4gdHVybiwgd2lsbCBjYXVzZSBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgdG8gZmFpbCBkdWUgdG8gdGhlIGBpZiAocmV0KWAgY2hlY2suCgpOb3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcHJvdmlkZSB0aGlzIGZpcm13YXJlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBhIGZlYXR1cmUgZm9yIGZpcm13YXJlLCBidXQgaXQgdXN1YWxseSBkb2VzbiYjMzk7dCB3b3JrIGZvciBCcm9hZGNvbSBiZWNhdXNlIHRoZSBmaXJtd2FyZSBpcyBtYXNzaXZlIGFuZCBwcm9wcmlldGFyeS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEFuZCBpdCBzZWVtcyBsaWtlIHRoaXMgZmFsbHMgdW5kZXIgdGhhdCBjYXRlZ29yeSwgc2luY2UgYGJyY21mbWFjYCBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIGFuZCByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBmaXJtd2FyZSBhbmQgbGlrZWx5IHBoeXNpY2FsIGhhcmR3YXJlLCB1bmxlc3MgZW11bGF0ZWQuCgpTbywgaXMgYGJyY21mbWFjYCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IFllcywgaXQmIzM5O3MgZXhwbGljaXRseSBmb3IgQnJvYWRjb20gRnVsbE1BQyBjaGlwcy4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgZmlybXdhcmUgYW5kIGhhcmR3YXJlIHRvIGZ1bmN0aW9uIHByb3Blcmx5LgoKT2theSwgYnV0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBEb2VzIGFub3RoZXIgZHJpdmVyIHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgPyBObywgd2UgY2hlY2tlZC4gT25seSBgYnJjbWZtYWNgIHNldHMgaXQuIFRoaXMgbWVhbnMgdGhlIGNoYW5nZSBpbiBgbmw4MDIxMS5jYCBpcyBlZmZlY3RpdmVseSBkZWFkIGNvZGUgdW5sZXNzIGBicmNtZm1hY2AgbG9hZHMgYW5kIGluaXRpYWxpemVzIHN1Y2Nlc3NmdWxseS4gQW5kIHRoYXQmIzM5O3MgaGlnaGx5IHVubGlrZWx5IGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBjb3JyZWN0IEJyb2FkY29tIGZpcm13YXJlLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHNob3VsZCBxdWlja2x5IGNoZWNrIGlmIGBtYWM4MDIxMV9od3NpbWAgc2V0cyB0aGlzIHNwZWNpZmljIGZlYXR1cmUsIGJ1dCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU5NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlLCB3aXRoIGEgbm9kIHRvIHRoZSBmYWN0IHRoYXQgSSYjMzk7bSBvcGVyYXRpbmcgd2l0aGluIGFuIGFyZWEgSSBrbm93IHdlbGw6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNvdXJjZSBvZiB0aGUgU2V0dGluZyoqCgpSaWdodCwgc28sIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gSSBoYWQsIHRoYXQgYG1hYzgwMjExX2h3c2ltYCB3YXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIHRoaW5nIGluIHF1ZXN0aW9uLCBpc24mIzM5O3QgaG9sZGluZyB3YXRlci4gTmVlZCB0byBnbyBiYWNrIGFuZCByZWFzc2Vzcy4gVGhhdCBhdmVudWUgaXMgY2xlYXJseSBhIGRlYWQgZW5kLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjaywgdGFrZSBhIGJyZWF0aCwgYW5kIGZvY3VzLiBJZiBpdCYjMzk7cyAqbm90KiBpbiB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBsYXllciwgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHBsYWNlIHRvIGRpZyBpcyB0aGUgYG1hYzgwMjExYCBjb3JlIGl0c2VsZi4gVGhhdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIFdpRmkgc3RhY2sgaW4gdGhpcyBzY2VuYXJpby4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQgd2hlcmUgdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMgYW5kIG9wZXJhdGlvbnMgYXJlIG1hbmFnZWQuIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBjb3JlIGZ1bmN0aW9ucywgbG9vayBmb3IgY2FsbHMgcmVsYXRlZCB0byB0aGUgcmVsZXZhbnQgcGFyYW1ldGVyLCBhbmQgc2VlIHdoZXJlIGFuZCAqaG93KiB0aGlzIHNwZWNpZmljIHNldHRpbmcgaXMgdWx0aW1hdGVseSBiZWluZyBoYW5kbGVkLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIGtub3dsZWRnZSBvZiB0aGUgY29yZSB0byBkaWcgaW50byB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTE3CgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDg3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmVuZG9yLVNwZWNpZmljIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYG1hYzgwMjExYCBjb3JlIGRvZXNuJiMzOTt0IHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgLCB3aGljaCBtZWFucyBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gQnJvYWRjb20gY2hpcHMsIHNldHMgdGhpcyBmZWF0dXJlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB1c2luZyBzeXprYWxsZXImIzM5O3MgVVNCIGdhZGdldCBlbXVsYXRpb24/CgpJIGNhbiB1c2UgYHN5el91c2JfY29ubmVjdGAgdG8gZW11bGF0ZSBhIFVTQiBkZXZpY2UuIElmIEkgZ2l2ZSBpdCB0aGUgY29ycmVjdCB2ZW5kb3IvcHJvZHVjdCBJRHMsIHRoZSBrZXJuZWwgc2hvdWxkIGJpbmQgdGhlIGBicmNtZm1hY2AgVVNCIGRyaXZlciB0byB0aGUgZW11bGF0ZWQgZGV2aWNlLiBUaGF0IHRyaWdnZXJzIGByZXF1ZXN0X2Zpcm13YXJlYC4gSG93ZXZlciwgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBpbiB0aGUgcm9vdGZzLCB3aGljaCBpcyBsaWtlbHksIGByZXF1ZXN0X2Zpcm13YXJlYCBmYWlscywgdGhlIGRyaXZlciBwcm9iZSBmYWlscywgdGhlIGB3aXBoeWAgaXNuJiMzOTt0IHJlZ2lzdGVyZWQsIGFuZCB0aGUgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGlzIG5ldmVyIGV4cG9zZWQgdG8gYG5sODAyMTFgLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGluIGBubDgwMjExLmNgIGFuZCBgYnJjbWZtYWMvY2ZnODAyMTEuY2AgYmVjb21lcyB1bnJlYWNoYWJsZS4KCkRvZXMgc3l6a2FsbGVyIHByb3ZpZGUgZmlybXdhcmUgZm9yIGBicmNtZm1hY2A/IE15IGluc3RpbmN0IHNheXMgaXQgcHJvYmFibHkgZG9lc24mIzM5O3QsIHVzdWFsbHkgc3l6a2FsbGVyIG9ubHkgaGFzIGZpcm13YXJlIGZvciBhIGZldyBzcGVjaWZpYyBkcml2ZXJzLCBsaWtlIGBhdGg5a19odGNgIG9yIGBjYXJsOTE3MGAuIEkmIzM5O2QgbmVlZCB0byBjb25maXJtIGRpcmVjdGx5LCBidXQgcHJhY3RpY2FsbHksIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXJzIHRoYXQgcmVseSBvbiBmaXJtd2FyZSBhcmUgcmFyZWx5IHN1Y2Nlc3NmdWxseSBmdXp6ZWQgYmV5b25kIHRoZSBwcm9iZSBmYWlsdXJlLgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgaW52b2x2ZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB0aGF0IGluY2x1ZGVzIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBwYXRjaCBwcmltYXJpbHkgaW1wYWN0cyBgYnJjbWZtYWNgIOKAkyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIHdpdGggY2hhbmdlcyBtb3N0bHkgaW4gYGJyY21mbWFjL2NmZzgwMjExLmNgLiBUaGUgY2hhbmdlIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCBpcyBqdXN0IG9uZSBsaW5lIHdoaWNoIG9ubHkgZW5hYmxlcyBgbmw4MDIxMV9zZXRfcG1rYCBpZiBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGlzIHNldCwgYW5kIGl0JiMzOTtzIHNldCBieSBgYnJjbWZtYWNgLCB0aGUgYG5sODAyMTEuY2AgY2hhbmdlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGFzIHdlbGwuCgpMZXQmIzM5O3MgZG91YmxlIGNoZWNrIGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYC4gWWVzLCBpdCAqYWJzb2x1dGVseSogcmVxdWlyZXMgZmlybXdhcmUuIFRoZXJlJiMzOTtzIG5vIG9idmlvdXMgd2F5IGFyb3VuZCB0aGF0OyB0aGUgY29kZSBjaGVja3MgZm9yIGZpcm13YXJlIGxvYWRpbmcgZmFpbHVyZXMuIFNvLCB3aXRob3V0IGZpcm13YXJlLCB0aGUgcHJvYmUgZmFpbHMuIFRoZSBgd2lwaHlgIGRvZXNuJiMzOTt0IHJlZ2lzdGVyLCBhbmQgdGhlIHJlbGF0ZWQgYG5sODAyMTFgIGNvZGUgaXMgaW5hY2Nlc3NpYmxlLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciAoYGJyY21mbWFjYCkgdGhhdCBuZWVkcyB1bmF2YWlsYWJsZSBoYXJkd2FyZS9maXJtd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHRoYXQgdGhlIGNvcmUga2VybmVsIGNoYW5nZXMgaW4gYG5sODAyMTEuY2AgaXMgb25seSByZWFjaGVkIHRocm91Z2ggc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHNwZWNpZmljIGRyaXZlciwgdGhpcyBwYXRjaCBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHByaW1hcmlseSBtb2RpZmllcyB0aGUgYnJjbWZtYWMgZHJpdmVyIChhIHZlbmRvci1zcGVjaWZpYyBCcm9hZGNvbSB3aXJlbGVzcyBkcml2ZXIpIHRvIGFkZCBGYXN0IFRyYW5zaXRpb24gKEZCVCkgYW5kIE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgKE9LQykgcm9hbWluZyBvZmZsb2FkIHN1cHBvcnQuIEl0IGFsc28gYWRkcyBhIG1pbm9yIGNoZWNrIGluIHRoZSBjb3JlIG5sODAyMTEgY29kZSB0byBhbGxvdyBzZXR0aW5nIFBNSyBpZiB0aGUgbmV3IE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEIGZsYWcgaXMgc2V0LiBIb3dldmVyLCB0aGlzIGZsYWcgaXMgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBicmNtZm1hYyBkcml2ZXIuIFNpbmNlIGJyY21mbWFjIHJlcXVpcmVzIHNwZWNpZmljIEJyb2FkY29tIGhhcmR3YXJlIG9yIGZpcm13YXJlIChldmVuIHdoZW4gcHJvYmVkIHZpYSBVU0IgZ2FkZ2V0LCBpdCBmYWlscyBkdXJpbmcgcmVxdWVzdF9maXJtd2FyZSBpZiB0aGUgcHJvcHJpZXRhcnkgZmlybXdhcmUgaXMgbWlzc2luZyksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGJvdGggdGhlIGRyaXZlciBhbmQgbmw4MDIxMSBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6MjYuNDk4Mzg4MTE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgzODY5NDY0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwcmltYXJpbHkgbW9kaWZpZXMgdGhlIGJyY21mbWFjIGRyaXZlciAoYSB2ZW5kb3Itc3BlY2lmaWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyKSB0byBhZGQgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCBzdXBwb3J0LiBJdCBhbHNvIGFkZHMgYSBtaW5vciBjaGVjayBpbiB0aGUgY29yZSBubDgwMjExIGNvZGUgdG8gYWxsb3cgc2V0dGluZyBQTUsgaWYgdGhlIG5ldyBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmbGFnIGlzIHNldC4gSG93ZXZlciwgdGhpcyBmbGFnIGlzIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgYnJjbWZtYWMgZHJpdmVyLiBTaW5jZSBicmNtZm1hYyByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSBvciBmaXJtd2FyZSAoZXZlbiB3aGVuIHByb2JlZCB2aWEgVVNCIGdhZGdldCwgaXQgZmFpbHMgZHVyaW5nIHJlcXVlc3RfZmlybXdhcmUgaWYgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGlzIG1pc3NpbmcpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBib3RoIHRoZSBkcml2ZXIgYW5kIG5sODAyMTEgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjI2LjQ5ODM5MzQxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3OTQyNjIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJiODdhZDFmMGE1OGRlNTM2ODY2NmYzNmQ0MDAwOGQwYjgxZDVhMTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMjQgMjI6MDY6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbmluZGV4IDg3MmM0ODgwNmQwOTEuLjZhOTdiZTMxNDlmYzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbkBAIC0yMTEyLDkgKzIxMTIsMTEgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IGlmcC1cXHUwMDNlZHJ2cjtcXG4gXFx0czMyIHZhbDtcXG4gXFx0czMyIGVycjtcXG4rXFx0czMyIG9rY19lbmFibGU7XFxuIFxcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcXG4gXFx0Y29uc3QgdTggKmllO1xcbiBcXHR1MzIgaWVfbGVuO1xcbitcXHRib29sIGZ3c3VwX3JvYW07XFxuIFxcdHUzMiBvZmZzZXQ7XFxuIFxcdHUxNiByc25fY2FwO1xcbiBcXHR1MzIgbWZwO1xcbkBAIC0yMTIyLDYgKzIxMjQsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxcbiBcXG4gXFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FO1xcbiBcXHRwcm9maWxlLVxcdTAwM2Vpc19mdCA9IGZhbHNlO1xcbitcXHRwcm9maWxlLVxcdTAwM2Vpc19va2MgPSBmYWxzZTtcXG4rXFx0ZndzdXBfcm9hbSA9IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fFxcbitcXHRcXHQgICAgIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfT0tDKTtcXG4gXFxuIFxcdGlmICghc21lLVxcdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5AQCAtMjEzOCw2ICsyMTQzLDggQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0XFx0XFx0dmFsID0gV1BBX0FVVEhfVU5TUEVDSUZJRUQ7XFxuIFxcdFxcdFxcdGlmIChzbWUtXFx1MDAzZXdhbnRfMXgpXFxuIFxcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXFxuK1xcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOlxcbiBcXHRcXHRcXHR2YWwgPSBXUEFfQVVUSF9QU0s7XFxuQEAgLTIxNTMsMTEgKzIxNjAsMTUgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0XFx0XFx0dmFsID0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEO1xcbiBcXHRcXHRcXHRpZiAoc21lLVxcdTAwM2V3YW50XzF4KVxcbiBcXHRcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYO1xcbitcXHRcXHRcXHRlbHNlIGlmIChmd3N1cF9yb2FtKVxcbitcXHRcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIFdMQU5fQUtNX1NVSVRFXzgwMjFYX1NIQTI1NjpcXG4gXFx0XFx0XFx0dmFsID0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcXG4gXFx0XFx0XFx0aWYgKHNtZS1cXHUwMDNld2FudF8xeClcXG4gXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDtcXG4rXFx0XFx0XFx0ZWxzZSBpZiAoZndzdXBfcm9hbSlcXG4rXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9QU0tfU0hBMjU2OlxcbiBcXHRcXHRcXHR2YWwgPSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcXG5AQCAtMjE3MCwxMCArMjE4MSwxNiBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxcbiBcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2Vpc19mdCA9IHRydWU7XFxuIFxcdFxcdFxcdGlmIChzbWUtXFx1MDAzZXdhbnRfMXgpXFxuIFxcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXFxuK1xcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfRlRfUFNLOlxcbiBcXHRcXHRcXHR2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUO1xcbiBcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2Vpc19mdCA9IHRydWU7XFxuK1xcdFxcdFxcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSlcXG4rXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXFxuK1xcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDpcXG4gXFx0XFx0XFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xcbkBAIC0yMjA0LDggKzIyMjEsMjIgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFxuIFxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWClcXG4gXFx0XFx0YnJjbWZfZGJnKElORk8sIFxcXCJ1c2luZyAxWCBvZmZsb2FkXFxcXG5cXFwiKTtcXG4rXFxuK1xcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxcbitcXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTSkge1xcbitcXHRcXHRlcnIgPSBicmNtZl9maWxfYnNzY2ZnX2ludF9nZXQoaWZwLCBcXFwib2tjX2VuYWJsZVxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2b2tjX2VuYWJsZSk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImdldCBva2NfZW5hYmxlIGZhaWxlZCAoJWQpXFxcXG5cXFwiLCBlcnIpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcIm9rY19lbmFibGUgKCVkKVxcXFxuXFxcIiwgb2tjX2VuYWJsZSk7XFxuK1xcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZWlzX29rYyA9IG9rY19lbmFibGU7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbiBcXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKVxcbiBcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFNBRSBvZmZsb2FkXFxcXG5cXFwiKTtcXG4rXFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU0pXFxuK1xcdFxcdGJyY21mX2RiZyhJTkZPLCBcXFwidXNpbmcgcm9hbWluZyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4gXFxuIFxcdGlmICghYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9NRlApKVxcbiBcXHRcXHRnb3RvIHNraXBfbWZwX2NvbmZpZztcXG5AQCAtMjQ5NCwxMyArMjUyNSwxNCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXG4gXFx0XFx0aWYgKHNtZS1cXHUwMDNlY3J5cHRvLnBzayBcXHUwMDI2XFx1MDAyNiAhaXNfc2FlX2FrbSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuLVxcdFxcdFxcdGlmIChXQVJOX09OKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPVxcbi1cXHRcXHRcXHRcXHQgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xcbitcXHRcXHRcXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFBTSyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAoV0FSTl9PTihwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT1cXG4rXFx0XFx0XFx0XFx0XFx0ICAgQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spKSB7XFxuIFxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFBTSyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcXG4gXFx0XFx0XFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXFxuQEAgLTU5NTMsMTcgKzU5ODUsMjkgQEAgc3RhdGljIGludCBicmNtZl9jZmc4MDIxMV9zZXRfcG1rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Bta19jb25mICpjb25mKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xcbitcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiZW50ZXJcXFxcblxcXCIpO1xcbiBcXG4tXFx0LyogZXhwZWN0IHVzaW5nIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIDFYICovXFxuIFxcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdGlmIChXQVJOX09OKGlmcC1cXHUwMDNldmlmLVxcdTAwM2Vwcm9maWxlLnVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYKSlcXG4rXFx0ZHJ2ciA9IGlmcC1cXHUwMDNlZHJ2cjtcXG4rXFx0aWYgKFdBUk5fT04oaWZwLVxcdTAwM2V2aWYtXFx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZS5pc19mdCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgIWlmcC1cXHUwMDNldmlmLVxcdTAwM2Vwcm9maWxlLmlzX29rYykpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0aWYgKGNvbmYtXFx1MDAzZXBta19sZW4gXFx1MDAzZSBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKVxcbiBcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4gXFxuK1xcdGlmIChpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZS5pc19va2MpIHtcXG4rXFx0XFx0cmV0ID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcIm9rY19pbmZvX3Bta1xcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBjb25mLVxcdTAwM2VwbWssIGNvbmYtXFx1MDAzZXBta19sZW4pO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIm9rY19pbmZvX3BtayBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHJldCk7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiBicmNtZl9zZXRfcG1rKGlmcCwgY29uZi1cXHUwMDNlcG1rLCBjb25mLVxcdTAwM2VwbWtfbGVuKTtcXG4gfVxcbiBcXG5AQCAtNjQyMiw2ICs2NDY2LDQ3IEBAIHN0YXRpYyBzMzIgYnJjbWZfZ2V0X2Fzc29jX2llcyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl9oYXNfcG1raWQoY29uc3QgdTggKnBhcnNlLCB1MzIgbGVuKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcXG4rXFx0Y29uc3QgdTggKmllO1xcbitcXHR1MzIgaWVfbGVuO1xcbitcXHR1MzIgb2Zmc2V0O1xcbitcXHR1MTYgY291bnQ7XFxuK1xcbitcXHRpZiAoIXBhcnNlKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRyc25faWUgPSBicmNtZl9wYXJzZV90bHZzKHBhcnNlLCBsZW4sIFdMQU5fRUlEX1JTTik7XFxuK1xcdGlmICghcnNuX2llKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRpZSA9IChjb25zdCB1OCAqKXJzbl9pZTtcXG4rXFx0aWVfbGVuID0gcnNuX2llLVxcdTAwM2VsZW4gKyBUTFZfSERSX0xFTjtcXG4rXFxuK1xcdG9mZnNldCA9IFRMVl9IRFJfTEVOICsgV1BBX0lFX1ZFUlNJT05fTEVOICsgV1BBX0lFX01JTl9PVUlfTEVOO1xcbitcXHRpZiAob2Zmc2V0ICsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcXHUwMDNlPSBpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGNvdW50ID0gaWVbb2Zmc2V0XSArIChpZVtvZmZzZXQgKyAxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0b2Zmc2V0ICs9IFdQQV9JRV9TVUlURV9DT1VOVF9MRU4gKyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjtcXG4rXFx0aWYgKG9mZnNldCArIFdQQV9JRV9TVUlURV9DT1VOVF9MRU4gXFx1MDAzZT0gaWVfbGVuKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRjb3VudCA9IGllW29mZnNldF0gKyAoaWVbb2Zmc2V0ICsgMV0gXFx1MDAzY1xcdTAwM2MgOCk7XFxuK1xcdG9mZnNldCArPSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICsgY291bnQgKiBXUEFfSUVfTUlOX09VSV9MRU47XFxuK1xcdGlmIChvZmZzZXQgKyBSU05fQ0FQX0xFTiBcXHUwMDNlPSBpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdG9mZnNldCArPSBSU05fQ0FQX0xFTjtcXG4rXFx0aWYgKG9mZnNldCArIFJTTl9QTUtJRF9DT1VOVF9MRU4gXFx1MDAzZSBpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGNvdW50ID0gaWVbb2Zmc2V0XSArIChpZVtvZmZzZXQgKyAxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFxuK1xcdHJldHVybiBjb3VudCBcXHUwMDNlIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBzMzJcXG4gYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuQEAgLTY0MzYsNiArNjUyMSw3IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4gXFx0c3RydWN0IGJyY21mX2Jzc19pbmZvX2xlICpiaTtcXG4gXFx0c3RydWN0IGJyY211X2NoYW4gY2g7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gcm9hbV9pbmZvID0ge307XFxuK1xcdGJvb2wgYXV0aG9yaXplZCA9IGZhbHNlO1xcbiBcXHR1MzIgZnJlcTtcXG4gXFx0czMyIGVyciA9IDA7XFxuIFxcdHU4ICpidWY7XFxuQEAgLTY0ODIsMTQgKzY1NjgsMTggQEAgYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRyb2FtX2luZm8ucmVzcF9pZSA9IGNvbm5faW5mby1cXHUwMDNlcmVzcF9pZTtcXG4gXFx0cm9hbV9pbmZvLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXNwX2llX2xlbjtcXG4gXFxuK1xcdGlmICgocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHxcXG4rXFx0ICAgICBwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgKGJyY21mX2hhc19wbWtpZChyb2FtX2luZm8ucmVxX2llLCByb2FtX2luZm8ucmVxX2llX2xlbikgfHxcXG4rXFx0ICAgICBwcm9maWxlLVxcdTAwM2Vpc19mdCB8fCBwcm9maWxlLVxcdTAwM2Vpc19va2MpKVxcbitcXHRcXHRhdXRob3JpemVkID0gdHJ1ZTtcXG4rXFxuIFxcdGNmZzgwMjExX3JvYW1lZChuZGV2LCBcXHUwMDI2cm9hbV9pbmZvLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKGF1dGhvcml6ZWQpXFxuK1xcdFxcdGNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLVxcdTAwM2Vic3NpZCwgTlVMTCwgMCxcXG4rXFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUwpO1xcbiBcXHRicmNtZl9kYmcoQ09OTiwgXFxcIlJlcG9ydCByb2FtaW5nIHJlc3VsdFxcXFxuXFxcIik7XFxuIFxcbi1cXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXFx1MDAyNlxcdTAwMjYgcHJvZmlsZS1cXHUwMDNlaXNfZnQpIHtcXG4tXFx0XFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXFx1MDAzZWJzc2lkLCBOVUxMLCAwLCBHRlBfS0VSTkVMKTtcXG4tXFx0XFx0YnJjbWZfZGJnKENPTk4sIFxcXCJSZXBvcnQgcG9ydCBhdXRob3JpemVkXFxcXG5cXFwiKTtcXG4tXFx0fVxcbi1cXG4gXFx0c2V0X2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RFRCwgXFx1MDAyNmlmcC1cXHUwMDNldmlmLVxcdTAwM2VzbWVfc3RhdGUpO1xcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFeGl0XFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5AQCAtNjUwNCw2ICs2NTk0LDcgQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZTtcXG4gXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcXG4gXFx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XFxuK1xcdGJvb2wgYXV0aG9yaXplZDtcXG4gXFxuIFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTY1MjgsNyArNjYxOSwxNSBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuIFxcdFxcdGNvbm5fcGFyYW1zLnJlcV9pZV9sZW4gPSBjb25uX2luZm8tXFx1MDAzZXJlcV9pZV9sZW47XFxuIFxcdFxcdGNvbm5fcGFyYW1zLnJlc3BfaWUgPSBjb25uX2luZm8tXFx1MDAzZXJlc3BfaWU7XFxuIFxcdFxcdGNvbm5fcGFyYW1zLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXNwX2llX2xlbjtcXG4rXFx0XFx0YXV0aG9yaXplZCA9IGNvbXBsZXRlZCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxcbitcXHRcXHRcXHQgICAgICBwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgIGJyY21mX2hhc19wbWtpZChjb25uX3BhcmFtcy5yZXFfaWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgY29ubl9wYXJhbXMucmVxX2llX2xlbik7XFxuIFxcdFxcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcXHUwMDI2Y29ubl9wYXJhbXMsIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoYXV0aG9yaXplZClcXG4rXFx0XFx0XFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXFx1MDAzZWJzc2lkLCBOVUxMLCAwLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgR0ZQX0tFUk5FTCk7XFxuIFxcdFxcdGJyY21mX2RiZyhDT05OLCBcXFwiUmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICBjb21wbGV0ZWQgPyBcXFwic3VjY2VlZGVkXFxcIiA6IFxcXCJmYWlsZWRcXFwiKTtcXG4gXFx0fVxcbkBAIC03NzMxLDYgKzc4MzAsMTAgQEAgc3RhdGljIGludCBicmNtZl9zZXR1cF93aXBoeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcXG4gXFx0fVxcbiBcXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9TQUVfRVhUKSlcXG4gXFx0XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XFxuK1xcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZCVCkgfHxcXG4rXFx0ICAgIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfT0tDKSlcXG4rXFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxcbitcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XFxuIFxcdHdpcGh5LVxcdTAwM2VtZ210X3N0eXBlcyA9IGJyY21mX3R4cnhfc3R5cGVzO1xcbiBcXHR3aXBoeS1cXHUwMDNlbWF4X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uID0gNTAwMDtcXG4gXFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE5PKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuaW5kZXggNjNlNTM0NTIzZjUxOC4uMWFhOTkzOTBhOTUxMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuQEAgLTEyNyw3ICsxMjcsOCBAQCBlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAge1xcbiBcXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUsXFxuIFxcdEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLLFxcbiBcXHRCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYLFxcbi1cXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRVxcbitcXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSxcXG4rXFx0QlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNXFxuIH07XFxuIFxcbiAvKipcXG5AQCAtMTY0LDYgKzE2NSw3IEBAIGVudW0gYnJjbWZfbWdtdF90eF9zdGF0dXMge1xcbiAgKiBAYnNzaWQ6IGJzc2lkIG9mIGpvaW5lZC9qb2luaW5nIGlic3MuXFxuICAqIEBzZWM6IHNlY3VyaXR5IGluZm9ybWF0aW9uLlxcbiAgKiBAa2V5OiBrZXkgaW5mb3JtYXRpb25cXG4rICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi5cXG4gICovXFxuIHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlIHtcXG4gXFx0dTggYnNzaWRbRVRIX0FMRU5dO1xcbkBAIC0xNzIsNiArMTc0LDcgQEAgc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUge1xcbiBcXHRlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAgdXNlX2Z3c3VwO1xcbiBcXHR1MTYgdXNlX2Z3YXV0aDtcXG4gXFx0Ym9vbCBpc19mdDtcXG4rXFx0Ym9vbCBpc19va2M7XFxuIH07XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmNcXG5pbmRleCA0ODgzNjRlZjhmZjJhLi5jYzE5ZTVlN2ViZjU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXFxuQEAgLTQ1LDYgKzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0ge1xcbiBcXHR7IEJSQ01GX0ZFQVRfU0FFLCBcXFwic2FlIFxcXCIgfSxcXG4gXFx0eyBCUkNNRl9GRUFUX0ZXQVVUSCwgXFxcImlkYXV0aFxcXCIgfSxcXG4gXFx0eyBCUkNNRl9GRUFUX1NBRV9FWFQsIFxcXCJzYWVfZXh0XFxcIiB9LFxcbitcXHR7IEJSQ01GX0ZFQVRfRkJULCBcXFwiZmJ0IFxcXCIgfSxcXG4rXFx0eyBCUkNNRl9GRUFUX09LQywgXFxcIm9rY1xcXCIgfSxcXG4gfTtcXG4gXFxuICNpZmRlZiBERUJVR1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxcbmluZGV4IDMxZjg2OTVjYTQxNzYuLjgxNjVhMjg2YjYzMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmhcXG5AQCAtNTksNyArNTksOSBAQFxcbiBcXHRCUkNNRl9GRUFUX0RFRihTQ0FOX1YyKSBcXFxcXFxuIFxcdEJSQ01GX0ZFQVRfREVGKFBNS0lEX1YyKSBcXFxcXFxuIFxcdEJSQ01GX0ZFQVRfREVGKFBNS0lEX1YzKSBcXFxcXFxuLVxcdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpXFxuK1xcdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpIFxcXFxcXG4rXFx0QlJDTUZfRkVBVF9ERUYoRkJUKSBcXFxcXFxuK1xcdEJSQ01GX0ZFQVRfREVGKE9LQylcXG4gXFxuIC8qXFxuICAqIFF1aXJrczpcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcXG5pbmRleCAwMjAzODdkNzY0MTIyLi45ZjhkOWUzZDU5OTBiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXFxuQEAgLTcxMTAsNiArNzExMCw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcXG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXFxuICAqXFx0aW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuXFxuICAqXFxuKyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxcbisgKlxcdE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS5cXG4rICpcXG4gICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLlxcbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXFxuICAqL1xcbkBAIC03MTkyLDYgKzcxOTUsNyBAQCBlbnVtIG5sODAyMTFfZXh0X2ZlYXR1cmVfaW5kZXgge1xcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcXG4gXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQLFxcbitcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcXG4gXFxuIFxcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXFxuIFxcdE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUyxcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5pbmRleCA0NGYyYmFkMDg2NzA1Li4xNTczMTQ0MGM1N2E0IDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuQEAgLTE4NDM0LDYgKzE4NDM0LDcgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9tdWx0aWNhc3RfdG9fdW5pY2FzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiB7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiA9IGluZm8tXFx1MDAzZXVzZXJfcHRyWzBdO1xcbitcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gaW5mby1cXHUwMDNldXNlcl9wdHJbMV07XFxuIFxcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHI7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiBwbWtfY29uZiA9IHt9O1xcbkBAIC0xODQ0Miw4ICsxODQ0MywxMCBAQCBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHQgICAgd2Rldi1cXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LFxcbi1cXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSlcXG4rXFx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tXFx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNjoyNy44Nzg1MzMzMDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NzAwNjc4OTE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYjg3YWQxZjBhNThkZTUzNjg2NjZmMzZkNDAwMDhkMGI4MWQ1YTE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMjI6MDY6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA4NzJjNDg4MDZkMDkxLi42YTk3YmUzMTQ5ZmMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtMjExMiw5ICsyMTEyLDExIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRzMzIgdmFsO1xuIFx0czMyIGVycjtcbitcdHMzMiBva2NfZW5hYmxlO1xuIFx0Y29uc3Qgc3RydWN0IGJyY21mX3RsdiAqcnNuX2llO1xuIFx0Y29uc3QgdTggKmllO1xuIFx0dTMyIGllX2xlbjtcbitcdGJvb2wgZndzdXBfcm9hbTtcbiBcdHUzMiBvZmZzZXQ7XG4gXHR1MTYgcnNuX2NhcDtcbiBcdHUzMiBtZnA7XG5AQCAtMjEyMiw2ICsyMTI0LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcbiBcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FO1xuIFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IGZhbHNlO1xuK1x0cHJvZmlsZS1cdTAwM2Vpc19va2MgPSBmYWxzZTtcbitcdGZ3c3VwX3JvYW0gPSBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZCVCkgfHxcbitcdFx0ICAgICBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX09LQyk7XG4gXG4gXHRpZiAoIXNtZS1cdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0yMTM4LDYgKzIxNDMsOCBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEO1xuIFx0XHRcdGlmIChzbWUtXHUwMDNld2FudF8xeClcbiBcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDtcbitcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuK1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOlxuIFx0XHRcdHZhbCA9IFdQQV9BVVRIX1BTSztcbkBAIC0yMTUzLDExICsyMTYwLDE1IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRcdFx0dmFsID0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEO1xuIFx0XHRcdGlmIChzbWUtXHUwMDNld2FudF8xeClcbiBcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDtcbitcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuK1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfODAyMVhfU0hBMjU2OlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4gXHRcdFx0aWYgKHNtZS1cdTAwM2V3YW50XzF4KVxuIFx0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYO1xuK1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4rXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9QU0tfU0hBMjU2OlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0tfU0hBMjU2O1xuQEAgLTIxNzAsMTAgKzIxODEsMTYgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHRwcm9maWxlLVx1MDAzZWlzX2Z0ID0gdHJ1ZTtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4rXHRcdFx0ZWxzZSBpZiAoZndzdXBfcm9hbSlcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX0ZUX1BTSzpcbiBcdFx0XHR2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUO1xuIFx0XHRcdHByb2ZpbGUtXHUwMDNlaXNfZnQgPSB0cnVlO1xuK1x0XHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSlcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4rXHRcdFx0ZWxzZSBpZiAoZndzdXBfcm9hbSlcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6XG4gXHRcdFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xuQEAgLTIyMDQsOCArMjIyMSwyMiBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFxuIFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpXG4gXHRcdGJyY21mX2RiZyhJTkZPLCBcInVzaW5nIDFYIG9mZmxvYWRcXG5cIik7XG4rXG4rXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxuK1x0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTSkge1xuK1x0XHRlcnIgPSBicmNtZl9maWxfYnNzY2ZnX2ludF9nZXQoaWZwLCBcIm9rY19lbmFibGVcIixcbitcdFx0XHRcdFx0ICAgICAgIFx1MDAyNm9rY19lbmFibGUpO1xuK1x0XHRpZiAoZXJyKSB7XG4rXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJnZXQgb2tjX2VuYWJsZSBmYWlsZWQgKCVkKVxcblwiLCBlcnIpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGJyY21mX2RiZyhJTkZPLCBcIm9rY19lbmFibGUgKCVkKVxcblwiLCBva2NfZW5hYmxlKTtcbitcdFx0XHRwcm9maWxlLVx1MDAzZWlzX29rYyA9IG9rY19lbmFibGU7XG4rXHRcdH1cbitcdH1cbiBcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSlcbiBcdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgU0FFIG9mZmxvYWRcXG5cIik7XG4rXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKVxuK1x0XHRicmNtZl9kYmcoSU5GTywgXCJ1c2luZyByb2FtaW5nIG9mZmxvYWRcXG5cIik7XG4gXG4gXHRpZiAoIWJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfTUZQKSlcbiBcdFx0Z290byBza2lwX21mcF9jb25maWc7XG5AQCAtMjQ5NCwxMyArMjUyNSwxNCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFxuIFx0XHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2ICFpc19zYWVfYWttIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbi1cdFx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuLVx0XHRcdFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbitcdFx0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4rXHRcdFx0XHRicmNtZl9kYmcoSU5GTywgXCJ1c2luZyBQU0sgb2ZmbG9hZFxcblwiKTtcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4rXHRcdFx0fSBlbHNlIGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9XG4rXHRcdFx0XHRcdCAgIEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKSkge1xuIFx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRcdGdvdG8gZG9uZTtcbiBcdFx0XHR9XG4tXHRcdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgUFNLIG9mZmxvYWRcXG5cIik7XG4tXHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbiBcdFx0fVxuIFx0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4gXHRcdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG5AQCAtNTk1MywxNyArNTk4NSwyOSBAQCBzdGF0aWMgaW50IGJyY21mX2NmZzgwMjExX3NldF9wbWsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Bta19jb25mICpjb25mKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuK1x0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbitcdGludCByZXQ7XG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwiZW50ZXJcXG5cIik7XG4gXG4tXHQvKiBleHBlY3QgdXNpbmcgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgMVggKi9cbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRpZiAoV0FSTl9PTihpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpKVxuK1x0ZHJ2ciA9IGlmcC1cdTAwM2VkcnZyO1xuK1x0aWYgKFdBUk5fT04oaWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlLnVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIWlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZS5pc19mdCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUuaXNfb2tjKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRpZiAoY29uZi1cdTAwM2VwbWtfbGVuIFx1MDAzZSBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKVxuIFx0XHRyZXR1cm4gLUVSQU5HRTtcbiBcbitcdGlmIChpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUuaXNfb2tjKSB7XG4rXHRcdHJldCA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwib2tjX2luZm9fcG1rXCIsXG4rXHRcdFx0XHRcdCAgICAgICBjb25mLVx1MDAzZXBtaywgY29uZi1cdTAwM2VwbWtfbGVuKTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0XHRicGh5X2VycihkcnZyLCBcIm9rY19pbmZvX3BtayBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcblwiLFxuK1x0XHRcdFx0IHJldCk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gYnJjbWZfc2V0X3BtayhpZnAsIGNvbmYtXHUwMDNlcG1rLCBjb25mLVx1MDAzZXBta19sZW4pO1xuIH1cbiBcbkBAIC02NDIyLDYgKzY0NjYsNDcgQEAgc3RhdGljIHMzMiBicmNtZl9nZXRfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBicmNtZl9oYXNfcG1raWQoY29uc3QgdTggKnBhcnNlLCB1MzIgbGVuKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcbitcdGNvbnN0IHU4ICppZTtcbitcdHUzMiBpZV9sZW47XG4rXHR1MzIgb2Zmc2V0O1xuK1x0dTE2IGNvdW50O1xuK1xuK1x0aWYgKCFwYXJzZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cnNuX2llID0gYnJjbWZfcGFyc2VfdGx2cyhwYXJzZSwgbGVuLCBXTEFOX0VJRF9SU04pO1xuK1x0aWYgKCFyc25faWUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGllID0gKGNvbnN0IHU4ICopcnNuX2llO1xuK1x0aWVfbGVuID0gcnNuX2llLVx1MDAzZWxlbiArIFRMVl9IRFJfTEVOO1xuK1xuK1x0b2Zmc2V0ID0gVExWX0hEUl9MRU4gKyBXUEFfSUVfVkVSU0lPTl9MRU4gKyBXUEFfSUVfTUlOX09VSV9MRU47XG4rXHRpZiAob2Zmc2V0ICsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcdTAwM2U9IGllX2xlbilcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0Y291bnQgPSBpZVtvZmZzZXRdICsgKGllW29mZnNldCArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdG9mZnNldCArPSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICsgY291bnQgKiBXUEFfSUVfTUlOX09VSV9MRU47XG4rXHRpZiAob2Zmc2V0ICsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcdTAwM2U9IGllX2xlbilcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0Y291bnQgPSBpZVtvZmZzZXRdICsgKGllW29mZnNldCArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdG9mZnNldCArPSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICsgY291bnQgKiBXUEFfSUVfTUlOX09VSV9MRU47XG4rXHRpZiAob2Zmc2V0ICsgUlNOX0NBUF9MRU4gXHUwMDNlPSBpZV9sZW4pXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdG9mZnNldCArPSBSU05fQ0FQX0xFTjtcbitcdGlmIChvZmZzZXQgKyBSU05fUE1LSURfQ09VTlRfTEVOIFx1MDAzZSBpZV9sZW4pXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGNvdW50ID0gaWVbb2Zmc2V0XSArIChpZVtvZmZzZXQgKyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4rXG4rXHRyZXR1cm4gY291bnQgXHUwMDNlIDA7XG4rfVxuK1xuIHN0YXRpYyBzMzJcbiBicmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbkBAIC02NDM2LDYgKzY1MjEsNyBAQCBicmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRzdHJ1Y3QgYnJjbWZfYnNzX2luZm9fbGUgKmJpO1xuIFx0c3RydWN0IGJyY211X2NoYW4gY2g7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHJvYW1faW5mbyA9IHt9O1xuK1x0Ym9vbCBhdXRob3JpemVkID0gZmFsc2U7XG4gXHR1MzIgZnJlcTtcbiBcdHMzMiBlcnIgPSAwO1xuIFx0dTggKmJ1ZjtcbkBAIC02NDgyLDE0ICs2NTY4LDE4IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHJvYW1faW5mby5yZXNwX2llID0gY29ubl9pbmZvLVx1MDAzZXJlc3BfaWU7XG4gXHRyb2FtX2luZm8ucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVzcF9pZV9sZW47XG4gXG4rXHRpZiAoKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHxcbitcdCAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbitcdCAgICAoYnJjbWZfaGFzX3Bta2lkKHJvYW1faW5mby5yZXFfaWUsIHJvYW1faW5mby5yZXFfaWVfbGVuKSB8fFxuK1x0ICAgICBwcm9maWxlLVx1MDAzZWlzX2Z0IHx8IHByb2ZpbGUtXHUwMDNlaXNfb2tjKSlcbitcdFx0YXV0aG9yaXplZCA9IHRydWU7XG4rXG4gXHRjZmc4MDIxMV9yb2FtZWQobmRldiwgXHUwMDI2cm9hbV9pbmZvLCBHRlBfS0VSTkVMKTtcbitcdGlmIChhdXRob3JpemVkKVxuK1x0XHRjZmc4MDIxMV9wb3J0X2F1dGhvcml6ZWQobmRldiwgcHJvZmlsZS1cdTAwM2Vic3NpZCwgTlVMTCwgMCxcbitcdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuIFx0YnJjbWZfZGJnKENPTk4sIFwiUmVwb3J0IHJvYW1pbmcgcmVzdWx0XFxuXCIpO1xuIFxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXHUwMDI2XHUwMDI2IHByb2ZpbGUtXHUwMDNlaXNfZnQpIHtcbi1cdFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXHUwMDNlYnNzaWQsIE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuLVx0XHRicmNtZl9kYmcoQ09OTiwgXCJSZXBvcnQgcG9ydCBhdXRob3JpemVkXFxuXCIpO1xuLVx0fVxuLVxuIFx0c2V0X2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RFRCwgXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2VzbWVfc3RhdGUpO1xuIFx0YnJjbWZfZGJnKFRSQUNFLCBcIkV4aXRcXG5cIik7XG4gXHRyZXR1cm4gZXJyO1xuQEAgLTY1MDQsNiArNjU5NCw3IEBAIGJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlO1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcbiBcdHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3Jlc3BfcGFyYW1zIGNvbm5fcGFyYW1zO1xuK1x0Ym9vbCBhdXRob3JpemVkO1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcIkVudGVyXFxuXCIpO1xuIFxuQEAgLTY1MjgsNyArNjYxOSwxNSBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdGNvbm5fcGFyYW1zLnJlcV9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVxX2llX2xlbjtcbiBcdFx0Y29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llO1xuIFx0XHRjb25uX3BhcmFtcy5yZXNwX2llX2xlbiA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llX2xlbjtcbitcdFx0YXV0aG9yaXplZCA9IGNvbXBsZXRlZCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIHx8XG4rXHRcdFx0ICAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIGJyY21mX2hhc19wbWtpZChjb25uX3BhcmFtcy5yZXFfaWUsXG4rXHRcdFx0XHRcdCAgICAgY29ubl9wYXJhbXMucmVxX2llX2xlbik7XG4gXHRcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcdTAwMjZjb25uX3BhcmFtcywgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmIChhdXRob3JpemVkKVxuK1x0XHRcdGNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLVx1MDAzZWJzc2lkLCBOVUxMLCAwLFxuK1x0XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbiBcdFx0YnJjbWZfZGJnKENPTk4sIFwiUmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xcblwiLFxuIFx0XHRcdCAgY29tcGxldGVkID8gXCJzdWNjZWVkZWRcIiA6IFwiZmFpbGVkXCIpO1xuIFx0fVxuQEAgLTc3MzEsNiArNzgzMCwxMCBAQCBzdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFx0fVxuIFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFX0VYVCkpXG4gXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XG4rXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GQlQpIHx8XG4rXHQgICAgYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9PS0MpKVxuK1x0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXG4rXHRcdFx0XHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XG4gXHR3aXBoeS1cdTAwM2VtZ210X3N0eXBlcyA9IGJyY21mX3R4cnhfc3R5cGVzO1xuIFx0d2lwaHktXHUwMDNlbWF4X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uID0gNTAwMDtcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BOTykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5pbmRleCA2M2U1MzQ1MjNmNTE4Li4xYWE5OTM5MGE5NTEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5AQCAtMTI3LDcgKzEyNyw4IEBAIGVudW0gYnJjbWZfcHJvZmlsZV9md3N1cCB7XG4gXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUsXG4gXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSyxcbiBcdEJSQ01GX1BST0ZJTEVfRldTVVBfMVgsXG4tXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRVxuK1x0QlJDTUZfUFJPRklMRV9GV1NVUF9TQUUsXG4rXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU1cbiB9O1xuIFxuIC8qKlxuQEAgLTE2NCw2ICsxNjUsNyBAQCBlbnVtIGJyY21mX21nbXRfdHhfc3RhdHVzIHtcbiAgKiBAYnNzaWQ6IGJzc2lkIG9mIGpvaW5lZC9qb2luaW5nIGlic3MuXG4gICogQHNlYzogc2VjdXJpdHkgaW5mb3JtYXRpb24uXG4gICogQGtleToga2V5IGluZm9ybWF0aW9uXG4rICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgKi9cbiBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSB7XG4gXHR1OCBic3NpZFtFVEhfQUxFTl07XG5AQCAtMTcyLDYgKzE3NCw3IEBAIHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlIHtcbiBcdGVudW0gYnJjbWZfcHJvZmlsZV9md3N1cCB1c2VfZndzdXA7XG4gXHR1MTYgdXNlX2Z3YXV0aDtcbiBcdGJvb2wgaXNfZnQ7XG4rXHRib29sIGlzX29rYztcbiB9O1xuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXG5pbmRleCA0ODgzNjRlZjhmZjJhLi5jYzE5ZTVlN2ViZjU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuY1xuQEAgLTQ1LDYgKzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0ge1xuIFx0eyBCUkNNRl9GRUFUX1NBRSwgXCJzYWUgXCIgfSxcbiBcdHsgQlJDTUZfRkVBVF9GV0FVVEgsIFwiaWRhdXRoXCIgfSxcbiBcdHsgQlJDTUZfRkVBVF9TQUVfRVhULCBcInNhZV9leHRcIiB9LFxuK1x0eyBCUkNNRl9GRUFUX0ZCVCwgXCJmYnQgXCIgfSxcbitcdHsgQlJDTUZfRkVBVF9PS0MsIFwib2tjXCIgfSxcbiB9O1xuIFxuICNpZmRlZiBERUJVR1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oXG5pbmRleCAzMWY4Njk1Y2E0MTc2Li44MTY1YTI4NmI2MzA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuQEAgLTU5LDcgKzU5LDkgQEBcbiBcdEJSQ01GX0ZFQVRfREVGKFNDQU5fVjIpIFxcXG4gXHRCUkNNRl9GRUFUX0RFRihQTUtJRF9WMikgXFxcbiBcdEJSQ01GX0ZFQVRfREVGKFBNS0lEX1YzKSBcXFxuLVx0QlJDTUZfRkVBVF9ERUYoU0FFX0VYVClcbitcdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpIFxcXG4rXHRCUkNNRl9GRUFUX0RFRihGQlQpIFxcXG4rXHRCUkNNRl9GRUFUX0RFRihPS0MpXG4gXG4gLypcbiAgKiBRdWlya3M6XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLjlmOGQ5ZTNkNTk5MGIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5AQCAtNzExMCw2ICs3MTEwLDkgQEAgZW51bSBubDgwMjExX2ZlYXR1cmVfZmxhZ3Mge1xuICAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQOiBEcml2ZXIgc3VwcG9ydHMgcHJvYmluZyB0aGUgYXNzb2NpYXRlZCBBUFxuICAqXHRpbiBTVEEgbW9kZSB1c2luZyBATkw4MDIxMV9DTURfUFJPQkVfUEVFUi5cbiAgKlxuKyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxuKyAqXHRPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIHJvYW1pbmcgb2ZmbG9hZCBpbiBzdGF0aW9uIG1vZGUuXG4rICpcbiAgKiBATlVNX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBudW1iZXIgb2YgZXh0ZW5kZWQgZmVhdHVyZXMuXG4gICogQE1BWF9OTDgwMjExX0VYVF9GRUFUVVJFUzogaGlnaGVzdCBleHRlbmRlZCBmZWF0dXJlIGluZGV4LlxuICAqL1xuQEAgLTcxOTIsNiArNzE5NSw3IEBAIGVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4gXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VUX0tFWV9MVEZfU0VFRCxcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVAsXG4rXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcbiBcbiBcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXG4gXHROVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVMsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLjE1NzMxNDQwYzU3YTQgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtMTg0MzQsNiArMTg0MzQsNyBAQCBzdGF0aWMgaW50IG5sODAyMTFfc2V0X211bHRpY2FzdF90b191bmljYXN0KHN0cnVjdCBza19idWZmICpza2IsXG4gc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSBpbmZvLVx1MDAzZXVzZXJfcHRyWzBdO1xuK1x0c3RydWN0IHdpcGh5ICp3aXBoeSA9IFx1MDAyNnJkZXYtXHUwMDNld2lwaHk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gaW5mby1cdTAwM2V1c2VyX3B0clsxXTtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtXHUwMDNlaWVlZTgwMjExX3B0cjtcbiBcdHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiBwbWtfY29uZiA9IHt9O1xuQEAgLTE4NDQyLDggKzE4NDQzLDEwIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHQgICAgd2Rldi1cdTAwM2VpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuLVx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXG4rXHRpZiAoIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxuK1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxuK1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmICghaW5mby1cdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfTUFDXSB8fCAhaW5mby1cdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfUE1LXSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjI3Ljg3ODUzNDk0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MDYwNTYzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCB0byB0aGUgYGJyY21mbWFjYCBkcml2ZXIsIGFsb25nc2lkZSBhIG5ldyBmZWF0dXJlIGZsYWcgaW4gYG5sODAyMTFgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gSSBldmVuICpyZWFjaCogdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIgVGhlIHByb21wdCBpcyB2ZXJ5IHNwZWNpZmljIGFib3V0IGV4Y2x1ZGluZyBwYXRjaGVzIHRoYXQgaGl0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuXG5cbmBicmNtZm1hY2AgaXMgYSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyLCB3aGljaCByaW5ncyBhbGFybSBiZWxscy4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIHJlbHkgb24gc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgKFNESU8sIFBDSWUsIFVTQikuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgaGFyZHdhcmUgZGlyZWN0bHksIHVubGlrZSwgc2F5LCBgbWFjODAyMTFfaHdzaW1gLiBUaGlzIGlzIHRoZSBmaXJzdCBodXJkbGUuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGZsYWdzIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGNhcmRzIGFzIHVuaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcgcHVycG9zZXMuIElzIGBicmNtZm1hY2Agb25lIG9mIHRob3NlPyBZZXMsIGl0J3MgZGVmaW5pdGVseSB0aWVkIHRvIHNwZWNpZmljIEJyb2FkY29tIGNoaXBzLlxuXG5Ib3dldmVyLCBtYXliZSB0aGVyZeKAmXMgYSB3b3JrYXJvdW5kLiBDb3VsZCBJIHBlcmhhcHMgdHJpZ2dlciB0aGUgVVNCIGludGVyZmFjZSBvZiBgYnJjbWZtYWNgIHRocm91Z2ggYSBVU0IgZ2FkZ2V0IHNldHVwPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAobGlrZSBgc3l6X3VzYl9jb25uZWN0YCkuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiBgYnJjbWZtYWNgIHN1cHBvcnRzIHByb2Jpbmcgb3IgYmVpbmcgY29udHJvbGxlZCB2aWEgVVNCLiBJZiB0aGF0J3MgcG9zc2libGUsIGl0IG1pZ2h0IHByb3ZpZGUgYSB3YXkgaW4sIGV2ZW4gaWYgdGhlIGRyaXZlciB1c3VhbGx5IHdhbnRzIGEgUENJZSBvciBTRElPIGludGVyZmFjZS4gTGV0J3Mgc2VlIGlmIFVTQiBpcyBhIHZpYWJsZSBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6MzUuMzg0NTkzNjc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDgzMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfYnVzX29wcyBicmNtZl91c2JfYnVzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTc2OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ1LVxcdFxcdFxcdCAgICAgIGVudW0gYnJjbWZfZnd2ZW5kb3IgZnd2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwOTpcXHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzEwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMzQ0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTM0NTpicmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTQ0NjpcXHRyZXQgPSBicmNtZl91c2JfcHJvYmVfY2IoZGV2aW5mbywgaWQtXFx1MDAzZWRyaXZlcl9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcXHUwMDI2dXNiLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyOC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTY4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBicmNtZl91c2JkcnZyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY5LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NzA6XFx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTcxLVxcdC5kaXNjb25uZWN0ID0gYnJjbWZfdXNiX2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjM1LjQzNDY3OTk0M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTkzMjE3OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBSZWxhdGVkIHRvIFdpLUZpIFBNSyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIGdvZXMgaW50byBhbmFseXNpcyBtb2RlLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCB0b3VjaGVzIGJvdGggYSBkcml2ZXIgYW5kIGNvcmUga2VybmVsIGxvZ2ljLiBTcGVjaWZpY2FsbHksIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCLCB3aGljaCBtZWFucyBpdCAqY291bGQqIGJlIGEgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0IHZpYSBhIFVTQiBnYWRnZXQgc2V0dXAuIEJ1dCB0aGUgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2UgYXBwZWFycyB0byBiZSBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHNwZWNpZmljYWxseSBgbmw4MDIxMV9zZXRfcG1rYC5cblxuQWxyaWdodCwgdGhlIGNvZGUgbW9kaWZpZXMgYG5sODAyMTFfc2V0X3Bta2AsIGFuZCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgYWxsb3dpbmcgYG5sODAyMTFfc2V0X3Bta2AgdG8gcHJvY2VlZCBldmVuIGlmIHRoZSBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGZlYXR1cmUgaXMgc2V0LiBUaGUgcHJldmlvdXMgY2hlY2sgd2FzIGEgYml0IG1vcmUgcmVzdHJpY3RpdmUuIE5vdyBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgY2hhbmdlIHdvcmtzLlxuXG5UaGlzIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIGlzIHJlYWNoZWQgdmlhIG5ldGxpbmssIHdoaWNoIG1lYW5zIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiB0cmlnZ2VyIGl0LiBJdCdzIGtleSB0byByZW1lbWJlciB0aGF0IGEgZHJpdmVyIHNldHMgdGhpcyBmZWF0dXJlIGZsYWcuIE5vdywgbXkgbWluZCBpcyByYWNpbmcuIFdoaWNoIGRyaXZlcnMgbWlnaHQgc2V0IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGA/IFRoZSBvYnZpb3VzIGNhbmRpZGF0ZXMgYXJlIGBtYWM4MDIxMV9od3NpbWAgYW5kIGBicmNtZm1hY2AsIGJlY2F1c2UgdGhleSdyZSBjb21tb24uXG5cbkkgaGF2ZSB0byB2ZXJpZnkgd2hldGhlciBgbWFjODAyMTFfaHdzaW1gIHNldHMgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYC4gSXQncyBsaWtlbHkgdGhhdCBhIGRyaXZlciBtYXkgc2V0IHRoaXMgZmVhdHVyZSwgd2hpY2ggbWVhbnMgSSBjYW4gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzIG5ldywgc2xpZ2h0bHkgbW9kaWZpZWQsIGNvZGUgcGF0aC4gVGltZSB0byBnbyBkaWcgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6NDYuMDI3OTAwMjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMTgwMDk3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Nzc1OD1zdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgzNS1cXHRcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgzNjpcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgzNy1cXHR3aXBoeS1cXHUwMDNlbWdtdF9zdHlwZXMgPSBicmNtZl90eHJ4X3N0eXBlcztcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg9NjgzMj1lbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMTItICpcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjcxMTM6ICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEOiBEcml2ZXIgc3VwcG9ydHMgRmFzdCBUcmFuc2l0aW9uIG9yXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTE0LSAqXFx0T3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyByb2FtaW5nIG9mZmxvYWQgaW4gc3RhdGlvbiBtb2RlLlxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxOTctXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjcxOTg6XFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTk5LVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODQzND1zdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ0OC1cXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0NDk6XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ1MC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjQ3LjUzOTcwNTQ5M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODY5NTM4MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBEcml2ZXIgYW5kIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmxhZyBpcyBjdXJyZW50bHkgb25seSBzZXQgYnkgdGhlIGBicmNtZm1hY2AgZHJpdmVyLiBUaGlzIG1lYW5zIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIGBubDgwMjExX3NldF9wbWtgIHN0ZW1taW5nIGZyb20gdGhpcyBmbGFnIGFyZSB0aWVkIGRpcmVjdGx5IHRvIHdoZXRoZXIgb3Igbm90IGBicmNtZm1hY2AgaXMgbG9hZGVkIGFuZCBzcGVjaWZpY2FsbHkgZW5hYmxlcyB0aGlzIGZlYXR1cmUuIEEgcXVpY2sgYXNzZXNzbWVudCBzdWdnZXN0cyB0aGF0IGBicmNtZm1hY2AgKmNvdWxkKiBiZSBhIHRhcmdldCBmb3IgZnV6emluZy4gQ3J1Y2lhbGx5LCBpdCBoYXMgYSBVU0IgaW50ZXJmYWNlLCBhbmQgc3l6a2FsbGVyIGNhbiBzdXBwb3NlZGx5IGVtdWxhdGUgVVNCIGRldmljZXMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCBJIG5lZWQgdG8gYmUgc3VyZTsgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiB0YXJnZXQgYGJyY21mbWFjYD8gQmVmb3JlIEkgc3RhcnQgZG93biB0aGF0IHBhdGgsIEkgbmVlZCB0byBjaGVjayBob3cgY29tbW9uIG9yIHNwZWNpYWxpemVkIGBicmNtZm1hY2AgaXMuIEknbGwgcXVpY2tseSB2ZXJpZnkgd2hldGhlciBpdCdzIGVuYWJsZWQgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zIG9yIGlmIGl0IG5lY2Vzc2l0YXRlcyBzb21lIHNwZWNpZmljIGtlcm5lbCBidWlsZCBvcHRpb25zLiBUaGlzIHdpbGwgYWZmZWN0IHRoZSBwcmlvcml0eSBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAwOSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNjo1MS45MjY2NjEyODhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MzIxNDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJDTUZNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTItXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE0OmNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6NTMuNTc5ODgwMDM4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2ODE4ODQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEJyb2FkY29tIFdpRmkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zIGZvciB0aGlzIEJyb2FkY29tIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGJyY21mbWFjYC4gTGV0J3MgZGl2ZSByaWdodCBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZSBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBsb2dpYyByZXNpZGVzLiBJJ2xsIG5lZWQgdG8gc2VlIHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgY29tcG9uZW50cyB0aGlzIG1vZHVsZSByZWxpZXMgb24sIHdoYXQgY29uZmlndXJhdGlvbnMgZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgc3lzdGVtLiBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGJ1aWxkLCBhbmQgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzIGRvd24gdGhlIGxpbmUuIEl0J3MgdGltZSB0byBwYXJzZSB0aGUgS2NvbmZpZyBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHZhcmlhYmxlcyBhbmQgdGhlIGxvZ2ljIGdvdmVybmluZyB0aGVpciBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwMTIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNjo1Ni44NDgwNzk3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdGNvbmZpZyBCUkNNRk1BQ1xcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNDpcXHRcXHRzZWxlY3QgQlJDTVVUSUxcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBCcm9hZGNvbVxcbiAgIDc6XFx0XFx0ICBGdWxsTUFDIGNoaXBzZXRzLiBJdCBoYXMgdG8gd29yayB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgYnVzXFxuICAgODpcXHRcXHQgIGludGVyZmFjZSBzdXBwb3J0LiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWRcXG4gICA5OlxcdFxcdCAgYnJjbWZtYWMua28uXFxuICAxMDpcXHRcXG4gIDExOlxcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuICAxMjpcXHRcXHRib29sXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG4gIDE1OlxcdFxcdGJvb2xcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIEJSQ01GTUFDX1NESU9cXG4gIDE4OlxcdFxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gKE1NQyA9IHkgfHwgTU1DID0gQlJDTUZNQUMpXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIEJSQ01GTUFDXFxuICAyMTpcXHRcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbiAgMjI6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMjM6XFx0XFx0ZGVmYXVsdCB5XFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxcbiAgMjY6XFx0XFx0ICBJRUVFODAyLjExbiBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xcbiAgMjc6XFx0XFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYSBTRElPIHdpcmVsZXNzIGNhcmQuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBCUkNNRk1BQ19VU0JcXG4gIDMwOlxcdFxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiAoVVNCID0geSB8fCBVU0IgPSBCUkNNRk1BQylcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG4gIDMzOlxcdFxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuICAzNDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICAzNzpcXHRcXHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXFxuICAzODpcXHRcXHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhbiBVU0Igd2lyZWxlc3MgY2FyZC5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6NTYuODQ4MTUzNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM0OTI4MzM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBQYXRjaCBmb3IgV2lGaSBSb2FtaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYm90aCBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYCBjb25maWd1cmF0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEJ1dCwgdGhlIHJlYWwga2lja2VyIGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBUaGF0J3MgY29yZSBrZXJuZWwgbG9naWMsIGFuZCBhbnkgY2hhbmdlcyB0aGVyZSBhcmUgd29ydGggYSBjbG9zZSBsb29rLlxuXG5UaGUgY2hhbmdlIGl0c2VsZiBpcyBwcmV0dHkgc3BlY2lmaWM6IGl0J3MgbW9kaWZ5aW5nIHRoZSBjaGVjayB0aGF0IGdvdmVybnMgd2hldGhlciBgbmw4MDIxMV9zZXRfcG1rYCBpcyBwZXJtaXR0ZWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNoZWNrZWQgZm9yIHRoZSBwcmVzZW5jZSBvZiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgLiBOb3csIGl0J3MgYWRkaW5nIGFub3RoZXIgY2hlY2s6IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAuIEVmZmVjdGl2ZWx5LCB0aGlzIGFsbG93cyBgbmw4MDIxMV9zZXRfcG1rYCB0byBiZSBjYWxsZWQgaWYgKmVpdGhlciogb2YgdGhvc2UgZmVhdHVyZXMgaXMgcHJlc2VudC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgYGJyY21mbWFjYCBpcyB0aGUgb25seSBkcml2ZXIgc2V0dGluZyB0aGlzIG5ldyBgUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGZsYWcsIHRoZW4gdGhpcyBwYXRjaCBpcyBtYWtpbmcgdGhlIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIHJlYWNoYWJsZSB1bmRlciB0aGUgbmV3IGNvbmRpdGlvbiBvbmx5IGlmIGBicmNtZm1hY2AgaXMgbG9hZGVkIGFuZCB0aGUgZmVhdHVyZSBpcyBhY3RpdmUuIEl0IGlzIGVuYWJsaW5nIHRoZSByb2FtaW5nIG9mZmxvYWQgZnVuY3Rpb25hbGl0eSB0aHJvdWdoIHRoaXMgY2FsbC5cblxuSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIHdhcyAqYWxyZWFkeSogYmVpbmcgY2hlY2tlZC4gU28sIGBubDgwMjExX3NldF9wbWtgICp3YXMqIGFscmVhZHkgcmVhY2hhYmxlIGlmICp0aGF0KiBmZWF0dXJlIHdhcyBzZXQuIFNvLCB0aGlzIHBhdGNoIGlzIG9ubHkgcmVsZXZhbnQgaWYgYFJPQU1fT0ZGTE9BRGAgaXMgc2V0LiBJZiBub3QsIHRoaXMgaXMgbm90IGFuIGlzc3VlLlxuXG5Ob3csIEknbSBjdXJpb3VzIGlmIGBtYWM4MDIxMV9od3NpbWAgc2V0cyBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGluIGl0cyB2aXJ0dWFsIGhhcmR3YXJlIGVtdWxhdGlvbiwgYXMgdGhpcyB3b3VsZCBpbXBhY3QgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY2hhbmdlJ3MgaW1wbGljYXRpb25zIGluIHNpbXVsYXRlZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBjaGVjayBvbiB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzgzNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjA0LjE5NzQzOTczNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzODQ1MzEzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Nzc1OD1zdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgxOC1cXHRcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgxOTpcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgyMC1cXHRcXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9TQUUpKVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC0xOTEtICpcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjE5MjogKiBTaW1pbGFybHkgQE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYIGZsYWcgY2FuIGJlXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC0xOTMtICogc2V0IGJ5IGRyaXZlcnMgaW5kaWNhdGluZyBvZmZsb2FkIHN1cHBvcnQgb2YgdGhlIFBUSy9HVEsgRUFQT0xcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg9NjgzMj1lbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTUtICpcXHRhbmQgYXNzb2NpYXRlIGNvbW1hbmRzKSwgZG9pbmcgaXQgaW4gdGhlIGhvc3QgbWlnaHQgbm90IGJlIHN1cHBvcnRlZC5cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY5MTY6ICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYOiBEZXZpY2Ugd2FudHMgdG8gZG8gZG9pbmcgNC13YXlcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTctICpcXHRoYW5kc2hha2Ugd2l0aCA4MDIuMVggaW4gc3RhdGlvbiBtb2RlICh3aWxsIHBhc3MgRUFQIGZyYW1lcyB0byB0aGUgaG9zdFxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMzUtXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfUFNLLFxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6NzEzNjpcXHROTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMzctXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9GSUxTX01BWF9DSEFOTkVMX1RJTUUsXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTg1Mz1pbnQgd2lwaHlfcmVnaXN0ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSlcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtOTY4LVxcdGlmIChXQVJOX09OKHdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSxcXG5uZXQvd2lyZWxlc3MvY29yZS5jOjk2OTpcXHRcXHRcXHRcXHRcXHQgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL2NvcmUuYy05NzAtXFx0XFx0ICAgICghcmRldi1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfcG1rIHx8ICFyZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWRlbF9wbWspKSlcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTM5OTU9c3RhdGljIGludCBubDgwMjExX2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQwMjMtXFx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDAyNDpcXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0MDI1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODQzND1zdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ0Ni1cXHRpZiAoIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0NDc6XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDQ4LVxcdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQod2lwaHksXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDc1PXN0YXRpYyBpbnQgbmw4MDIxMV9kZWxfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDg2LVxcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0ODc6XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ4OC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjA1LjYzNTg5ODA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NjkyOTc2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWGAgZmVhdHVyZSBhbmQgaXQgbG9va3MgbGlrZSBgYnJjbWZtYWNgIGlzIHRoZSBvbmx5IGRyaXZlciBzZXR0aW5nIGl0LiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgd2l0aCBhIHF1aWNrIGdyZXAuLi4geWVwLCB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNgIGlzIHRoZSBvbmx5IG1hdGNoLiBKdXN0IHRvIGJlIHN1cmUsIEkgY2hlY2tlZCBpZiBgbWFjODAyMTFgIHdhcyBpbnZvbHZlZCwgYnV0IG5vLCBpdCdzIG5vdCBzZXR0aW5nIHRoYXQgZmxhZy5cblxuVGhpcyBtZWFucyBgbmw4MDIxMV9zZXRfcG1rYCBpcyBvbmx5IHJlYWNoYWJsZSB3aGVuIHRoZSBgYnJjbWZtYWNgIG1vZHVsZSBpcyBsb2FkZWQuIFRoYXQncyBnb29kIGludGVsLiBOb3csIGBicmNtZm1hY2AgaXMgYSBkcml2ZXIgZm9yIEJyb2FkY29tIEZ1bGxNQUMgaGFyZHdhcmUuIEdpdmVuIHRoYXQsIGNhbiB3ZSBmdXp6IGl0IHZpYSBVU0I/XG5cblRoZSBnb29kIG5ld3MgaXMgdGhhdCBzeXprYWxsZXIgaGFzIFVTQiBmdXp6aW5nIHN1cHBvcnQuIEFuZCwgYSBxdWljayBsb29rIHNob3dzIGBicmNtZm1hY2AgaGFzIGEgVVNCIGRyaXZlciwgYEJSQ01GTUFDX1VTQmAuIEV4Y2VsbGVudC4gTGV0J3Mgc2VlIGlmIHN5emthbGxlciBjYW4gYWN0dWFsbHkgKnJlYWNoKiB0aGUgYGJyY21mbWFjYCBjb2RlLiBJZiBgQlJDTUZNQUNfVVNCYCBpcyBlbmFibGVkLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZW11bGF0ZSB0aGUgVVNCIGRldmljZSwgd2hpY2ggd2lsbCB0cmlnZ2VyIGBicmNtZl91c2JfcHJvYmVgLiAgVGhhdCBzaG91bGQsIGluIHR1cm4sIGNhbGwgYGJyY21mX3VzYl9wcm9iZV9jYmAsIHdoaWNoLCBJIGJlbGlldmUsIHJlcXVlc3RzIGZpcm13YXJlLlxuXG5BaCwgcmlnaHQsIGBicmNtZm1hY2AgbmVlZHMgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZS4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlLi4uIFllcCwgdGhlcmUgaXQgaXM6ICBgYnJjbWZfZndfZ2V0X2Zpcm13YXJlcygpYC4gIElmIHRoZSBmaXJtd2FyZSBpc24ndCBwcmVzZW50LCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgbWlnaHQgZmFpbCwgYW5kIHRoZSBkZXZpY2Ugd29uJ3QgcmVnaXN0ZXIgd2l0aCBgY2ZnODAyMTFgLiBXZSBuZWVkIHRvIGludmVzdGlnYXRlIGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYCB0byBzZWUgaWYgdGhhdCdzIGEgYmxvY2tpbmcgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTIyLCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjE0LjIwNTIwMDE1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1ODAwMTA4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcHJvYmVfcGhhc2UyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwOTpcXHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzEwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTE0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoXFx1MDAyNnVzYi1cXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjE1LjI2MzIwODczMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk3MjY2NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIG9uLCBzdW1tYXJpemVkIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGgga2VybmVsLWxldmVsIFVTQiBkcml2ZXIgZGV2ZWxvcG1lbnQuXG5cbioqRGl2aW5nIGludG8gYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgKipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAuIFRoZSBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlICpzZWNvbmQqIHBoYXNlIG9mIHRoZSBVU0IgZGV2aWNlIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhpcyBCcm9hZGNvbSBXaS1GaSBhZGFwdGVyLiBTbywgd2UndmUgYWxyZWFkeSBnb3R0ZW4gcGFzdCB0aGUgaW5pdGlhbCBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIHByb2JhYmx5IHNvbWUgYmFzaWMgcmVzb3VyY2UgYWxsb2NhdGlvbi4gTm93LCB3ZSdyZSBsaWtlbHkgaW4gdGhlIHRoaWNrIG9mIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbi5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN0ZXBzOiBXZSdyZSBwcm9iYWJseSBoYW5kbGluZyB0aGUgYWN0dWFsIGNvbW11bmljYXRpb24gc2V0dXAgd2l0aCB0aGUgZGV2aWNlIGhlcmUuIElzIHRoaXMgd2hlcmUgd2UncmUgbWFwcGluZyB0aGUgVVNCIGVuZHBvaW50cywgc2V0dGluZyB1cCB0aGUgVVJCcyAoVVNCIFJlcXVlc3QgQmxvY2tzKSwgYW5kIGluaXRpYWxpemluZyB0aGUgbmVjZXNzYXJ5IGRhdGEgc3RydWN0dXJlcyB0byB0YWxrIHRvIHRoZSBCcm9hZGNvbSBjaGlwPyBEZWZpbml0ZWx5IGV4cGVjdGluZyB0byBzZWUgc29tZSBjcml0aWNhbCByZWdpc3RlciB3cml0ZXMgYW5kIHJlYWRzLiBBcmUgd2UgY29uZmlndXJpbmcgdGhlIERNQSAoRGlyZWN0IE1lbW9yeSBBY2Nlc3MpIGNoYW5uZWxzIHRvbz8gUHJvYmFibHkuIEdpdmVuIHRoZSB0YXJnZXQsIEknbSBleHBlY3RpbmcgdG8gZGVhbCB3aXRoIHRoZSBjaGlwJ3MgaW50ZXJuYWwgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20g4oCTIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSB3aGVyZSB0aGUgZHJpdmVyIHdvdWxkIGJlIGluaXRpYXRpbmcgdGhlIGZpcm13YXJlIHVwbG9hZCBhbmQgd2FpdGluZyBmb3IgdGhlIGNoaXAgdG8gY29tZSBvbmxpbmUuIFdoYXQgYXJlIHRoZSByZXRyeSBtZWNoYW5pc21zIGlmIHRoZSBmaXJtd2FyZSBsb2FkIGZhaWxzPyBWZXJ5IGltcG9ydGFudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlIGFyZSBkZWFsaW5nIHdpdGggcG93ZXIgbWFuYWdlbWVudCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLiBBcmUgd2UgdGVtcG9yYXJpbHkgZW5hYmxpbmcgYW55IGhpZ2gtcG93ZXIgbW9kZXM/IEhvdyBhcmUgd2UgaGFuZGxpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGFjY2Vzc2luZyB0aGUgVVNCIGJ1cz8gTXkgZm9jdXMgaXMgZXNwZWNpYWxseSBkaXJlY3RlZCB0b3dhcmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGluIHRoZSBkYXRhIHRyYW5zZmVyIGFuZCBlbnN1cmluZyBhIHJvYnVzdCBzb2x1dGlvbi4gTGV0J3Mgc2VlIGhvdyB0aGV5IGhhdmUgaGFuZGxlZCBhbnkgaGFyZHdhcmUgcXVpcmtzOyBzb21lIEJyb2FkY29tIGNoaXBzIGFyZSBub3RvcmlvdXMgZm9yIGhhdmluZy4uLiBpbnRlcmVzdGluZy4uLiBoYXJkd2FyZSBiZWhhdmlvci4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzYxNSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjE5LjU2MDQ3Nzg2OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE3NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE3NjpcXHRzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG4xMTc3OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4xMTc4OlxcdHtcXG4xMTc5OlxcdFxcdHN0cnVjdCBicmNtZl9idXMgKmJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbjExODA6XFx0XFx0c3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvID0gYnVzLVxcdTAwM2VidXNfcHJpdi51c2ItXFx1MDAzZWRldmluZm87XFxuMTE4MTpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbjExODI6XFx0XFxuMTE4MzpcXHRcXHRpZiAocmV0KVxcbjExODQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMTg1OlxcdFxcbjExODY6XFx0XFx0YnJjbWZfZGJnKFVTQiwgXFxcIlN0YXJ0IGZ3IGRvd25sb2FkaW5nXFxcXG5cXFwiKTtcXG4xMTg3OlxcdFxcbjExODg6XFx0XFx0ZncgPSBmd3JlcS1cXHUwMDNlaXRlbXNbQlJDTUZfVVNCX0ZXX0NPREVdLmJpbmFyeTtcXG4xMTg5OlxcdFxcdGtmcmVlKGZ3cmVxKTtcXG4xMTkwOlxcdFxcbjExOTE6XFx0XFx0cmV0ID0gY2hlY2tfZmlsZShmdy1cXHUwMDNlZGF0YSk7XFxuMTE5MjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjExOTM6XFx0XFx0XFx0YnJjbWZfZXJyKFxcXCJpbnZhbGlkIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4xMTk0OlxcdFxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xcbjExOTU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMTk2OlxcdFxcdH1cXG4xMTk3OlxcdFxcbjExOTg6XFx0XFx0ZGV2aW5mby1cXHUwMDNlaW1hZ2UgPSBmdy1cXHUwMDNlZGF0YTtcXG4xMTk5OlxcdFxcdGRldmluZm8tXFx1MDAzZWltYWdlX2xlbiA9IGZ3LVxcdTAwM2VzaXplO1xcbjEyMDA6XFx0XFxuMTIwMTpcXHRcXHRyZXQgPSBicmNtZl91c2JfZndfZG93bmxvYWQoZGV2aW5mbyk7XFxuMTIwMjpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4xMjAzOlxcdFxcdGlmIChyZXQpXFxuMTIwNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMDU6XFx0XFxuMTIwNjpcXHRcXHRyZXQgPSBicmNtZl9hbGxvYyhkZXZpbmZvLVxcdTAwM2VkZXYsIGRldmluZm8tXFx1MDAzZXNldHRpbmdzKTtcXG4xMjA3OlxcdFxcdGlmIChyZXQpXFxuMTIwODpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRcXHQvKiBBdHRhY2ggdG8gdGhlIGNvbW1vbiBkcml2ZXIgaW50ZXJmYWNlICovXFxuMTIxMTpcXHRcXHRyZXQgPSBicmNtZl9hdHRhY2goZGV2aW5mby1cXHUwMDNlZGV2KTtcXG4xMjEyOlxcdFxcdGlmIChyZXQpXFxuMTIxMzpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMTQ6XFx0XFxuMTIxNTpcXHRcXHRjb21wbGV0ZShcXHUwMDI2ZGV2aW5mby1cXHUwMDNlZGV2X2luaXRfZG9uZSk7XFxuMTIxNjpcXHRcXHRyZXR1cm47XFxuMTIxNzpcXHRlcnJvcjpcXG4xMjE4OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcImZhaWxlZDogZGV2PSVzLCBlcnI9JWRcXFxcblxcXCIsIGRldl9uYW1lKGRldiksIHJldCk7XFxuMTIxOTpcXHRcXHRjb21wbGV0ZShcXHUwMDI2ZGV2aW5mby1cXHUwMDNlZGV2X2luaXRfZG9uZSk7XFxuMTIyMDpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGV2KTtcXG4xMjIxOlxcdH1cXG4xMjIyOlxcdFxcbjEyMjM6XFx0c3RhdGljIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpcXG4xMjI0OlxcdGJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbjEyMjU6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNzoxOS41NjA1NzI2NjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNjYxMDAyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIENvZGUgYW5kIFdvcnRoRnV6emluZyoqXG5cbk9rYXksIHNvIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyBcIldvcnRoRnV6emluZ1wiIG9yIG5vdC4gVGhlIGtleSBpcyB3aGV0aGVyIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgZnV6emluZyBlbnZpcm9ubWVudC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGBicmNtZm1hY2AgZHJpdmVyIGlzIGludm9sdmVkLCBhbmQgdGhhdCdzIHVzdWFsbHkgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLiBBbmQgaXQgZXhwbGljaXRseSBuZWVkcyBmaXJtd2FyZS4gU28gdGhlIGBicmNtZm1hY2AgY29kZSBwYXRoIHdvdWxkIG5vcm1hbGx5IGJlIGEgcHJvYmxlbSBmb3IgZnV6emluZyBpbiBhIHN0YW5kYXJkIFN5emthbGxlciBlbnZpcm9ubWVudCBiZWNhdXNlIHdlIG9mdGVuIGRvbid0IGluY2x1ZGUgdGhhdCBmaXJtd2FyZSBpbiB0aGUgdGVzdCBpbWFnZS5cblxuSG93ZXZlciwgU3l6a2FsbGVyICpjYW4qIHByb3ZpZGUgZmlybXdhcmUgaWYgaXQgaXMgYnVpbHQgaW4uXG5cbkJ1dCwgdGhlIHByb21wdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBhdm9pZCBsb29raW5nIGF0IHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCBvciBkcml2ZXJzIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZS5cblxuQnV0IHRoZW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgd2hpY2ggaXMgY29yZSBrZXJuZWwgd2lyZWxlc3MgbG9naWMuIFRoYXQgaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGluZ3MuIFRoaXMgaXNuJ3QganVzdCBhIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2UgYW55bW9yZS5cblxuVGhlIGNoYW5nZSBpbiBgbmw4MDIxMS5jYCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbC4gVGhpcyBpcyBnb29kIG5ld3MsIGFzIGl0IHBvdGVudGlhbGx5IHdpZGVucyB0aGUgYXBwbGljYWJpbGl0eSBvZiB0aGUgcGF0Y2guIFRoZSByZWxldmFudCBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIGEgZHJpdmVyIHNldHMgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgb3IgYE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYYCBmbGFncy5cblxuU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiB3aGljaCBkcml2ZXJzIHNldCB0aGVzZSBmZWF0dXJlcz8gSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAsIGFuZCBmb3VuZCB0aGF0IGl0J3MgKm9ubHkqIHNldCBieSBgYnJjbWZtYWMvY2ZnODAyMTEuY2AuIEFuZCBJIGFsc28gZ3JlcHBlZCBmb3IgYE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYYCBhbmQgZm91bmQgdGhhdCBpdCBpcyBvbmx5IHNldCBieSBgYnJjbWZtYWMvY2ZnODAyMTEuY2AgYXMgd2VsbC4gVGhhdCBtZWFucyB0aGlzIHBhdGggaXMsIGF0IGxlYXN0IGRpcmVjdGx5LCBvbmx5IHJlYWNoYWJsZSBieSB0aGUgYGJyY21mbWFjYCBkcml2ZXIuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgKm90aGVyKiBwbGFjZXMgd2hlcmUgdGhpcyBmZWF0dXJlIGZsYWcgaXMgc2V0LiBFdmVuIGEgYnJpZWYgbG9vayBpbiB0aGUgYG5ldC93aXJlbGVzcy9gIGRpcmVjdG9yeSBtaWdodCBiZSB3b3J0aCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OTQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzEuOTI2Njc2MDM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg1NDYwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTc3NTg9c3RhdGljIGludCBicmNtZl9zZXR1cF93aXBoeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MTgtXFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjc4MTk6XFx0XFx0XFx0XFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MjAtXFx0XFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzIuMjE1MjI2MTI4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTY5NzgyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGZsYWcgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBubDgwMjExX3NldF9wbWtgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBzZXRzIHRoYXQgZmxhZy4gU28sIHRoYXQgbWVhbnMgYG5sODAyMTFfc2V0X3Bta2AgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgYnJjbWZtYWNgIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIGBicmNtZm1hY2AgZXZlbiBiZSBpbml0aWFsaXplZCB3aXRoaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudD9cblxuUmVtZW1iZXJpbmcgaG93IHN5emthbGxlciBvcGVyYXRlcywgaXQgdHlwaWNhbGx5IHVzZXMgYG1hYzgwMjExX2h3c2ltYCBmb3IgaXRzIFdpLUZpIGZ1enppbmcgZWZmb3J0cy4gSXQgZG9lc24ndCB1c2UgYGJyY21mbWFjYC4gRXZlbiBpZiB0aGVyZSB3ZXJlIHNvbWUgVVNCIGZ1enppbmcgY29uZmlndXJhdGlvbiwgYGJyY21mbWFjYCBzcGVjaWZpY2FsbHkgbmVlZHMgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBjb3JyZWN0bHkuIE5vdyBJJ20gcmVjYWxsaW5nIHRoZSBjb2RlIHBhdGguLi4gSWYgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgIGZhaWxzIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIGJhaWxzIG91dCwgY2FsbGluZyBgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRldilgLiBUaGF0J3MgaW1wb3J0YW50LlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBEb2VzIGBicmNtZl9md19nZXRfZmlybXdhcmVzYCAqYWN0dWFsbHkqIGZhaWwgaW4gc3l6a2FsbGVyPyBJIG5lZWQgdG8gY2hlY2suIEl0J3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgc3l6a2FsbGVyIGltYWdlcyBkb24ndCBpbmNsdWRlIHRoZSBuZWNlc3NhcnkgQnJvYWRjb20gZmlybXdhcmUsIGFuZCB0aGlzIHdvdWxkIGV4cGxhaW4gdGhlIG9ic2VydmVkIGJlaGF2aW9yLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBicmNtZl9md19nZXRfZmlybXdhcmVzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1OTgsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzcuODMyMjA2NjQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTYzNDg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9md19nZXRfZmlybXdhcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmM9NzQxPXN0YXRpYyBib29sIGJyY21mX2Z3X3JlcXVlc3RfaXNfdmFsaWQoc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jLTc1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmlybXdhcmUuYzo3NTY6aW50IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jLTc1Ny1cXHRcXHRcXHQgICB2b2lkICgqZndfY2IpKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGVycixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oPTgxPWJyY21mX2Z3X2FsbG9jX3JlcXVlc3QodTMyIGNoaXAsIHUzMiBjaGlwcmV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmgtOTAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmg6OTE6aW50IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oLTkyLVxcdFxcdFxcdCAgIHZvaWQgKCpmd19jYikoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgZXJyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xNTUwPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTE1NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxNTc1OlxcdGVyciA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfcGNpZV9zZXR1cCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xNTc2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQ0Mz1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTU3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoYnVzLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl9wY2llX3NldHVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1NTgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM9NDQ0OT1pbnQgYnJjbWZfc2Rpb19wcm9iZShzdHJ1Y3QgYnJjbWZfc2Rpb19kZXYgKnNkaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTQ1NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo0NTQ3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc2Rpb2Rldi1cXHUwMDNlZGV2LCBmd3JlcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTQ1NDgtXFx0XFx0XFx0XFx0ICAgICBicmNtZl9zZGlvX2Zpcm13YXJlX2NhbGxiYWNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA4LVxcdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA5OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMTAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcXHUwMDI2dXNiLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyOC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzcuODgxODQ0MjgzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1ODU3ODQxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnJjbWZfZndfZ2V0X2Zpcm13YXJlc2AgdXNlcyBgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRgLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGZpcm13YXJlIGlzbid0IHByZXNlbnQsIHRoZSBjYWxsYmFjayB3aWxsIGV2ZW50dWFsbHkgcmVwb3J0IGFuIGVycm9yIG9yIGEgTlVMTCBmaXJtd2FyZSBzdHJ1Y3QuIFRoaXMsIGluIHR1cm4sIHdpbGwgY2F1c2UgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIHRvIGZhaWwgZHVlIHRvIHRoZSBgaWYgKHJldClgIGNoZWNrLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcHJvdmlkZSB0aGlzIGZpcm13YXJlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBhIGZlYXR1cmUgZm9yIGZpcm13YXJlLCBidXQgaXQgdXN1YWxseSBkb2Vzbid0IHdvcmsgZm9yIEJyb2FkY29tIGJlY2F1c2UgdGhlIGZpcm13YXJlIGlzIG1hc3NpdmUgYW5kIHByb3ByaWV0YXJ5LlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIGludm9sdmVzIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBbmQgaXQgc2VlbXMgbGlrZSB0aGlzIGZhbGxzIHVuZGVyIHRoYXQgY2F0ZWdvcnksIHNpbmNlIGBicmNtZm1hY2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCBhbmQgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gZmlybXdhcmUgYW5kIGxpa2VseSBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIGVtdWxhdGVkLlxuXG5TbywgaXMgYGJyY21mbWFjYCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IFllcywgaXQncyBleHBsaWNpdGx5IGZvciBCcm9hZGNvbSBGdWxsTUFDIGNoaXBzLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBmaXJtd2FyZSBhbmQgaGFyZHdhcmUgdG8gZnVuY3Rpb24gcHJvcGVybHkuXG5cbk9rYXksIGJ1dCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gRG9lcyBhbm90aGVyIGRyaXZlciBzZXQgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYD8gTm8sIHdlIGNoZWNrZWQuIE9ubHkgYGJyY21mbWFjYCBzZXRzIGl0LiBUaGlzIG1lYW5zIHRoZSBjaGFuZ2UgaW4gYG5sODAyMTEuY2AgaXMgZWZmZWN0aXZlbHkgZGVhZCBjb2RlIHVubGVzcyBgYnJjbWZtYWNgIGxvYWRzIGFuZCBpbml0aWFsaXplcyBzdWNjZXNzZnVsbHkuIEFuZCB0aGF0J3MgaGlnaGx5IHVubGlrZWx5IGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBjb3JyZWN0IEJyb2FkY29tIGZpcm13YXJlLlxuXG5UaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgbWFjODAyMTFfaHdzaW1gIHNldHMgdGhpcyBzcGVjaWZpYyBmZWF0dXJlLCBidXQgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCBpdCdzIGhpZ2hseSB1bmxpa2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2MDgsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6NDcuNDY3NjMwMjYzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyMzMyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6NDcuNTE1NTU4NzcyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjMzNjAzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZSwgd2l0aCBhIG5vZCB0byB0aGUgZmFjdCB0aGF0IEknbSBvcGVyYXRpbmcgd2l0aGluIGFuIGFyZWEgSSBrbm93IHdlbGw6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU291cmNlIG9mIHRoZSBTZXR0aW5nKipcblxuUmlnaHQsIHNvLCB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIEkgaGFkLCB0aGF0IGBtYWM4MDIxMV9od3NpbWAgd2FzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSB0aGluZyBpbiBxdWVzdGlvbiwgaXNuJ3QgaG9sZGluZyB3YXRlci4gTmVlZCB0byBnbyBiYWNrIGFuZCByZWFzc2Vzcy4gVGhhdCBhdmVudWUgaXMgY2xlYXJseSBhIGRlYWQgZW5kLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2ssIHRha2UgYSBicmVhdGgsIGFuZCBmb2N1cy4gSWYgaXQncyAqbm90KiBpbiB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBsYXllciwgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHBsYWNlIHRvIGRpZyBpcyB0aGUgYG1hYzgwMjExYCBjb3JlIGl0c2VsZi4gVGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgV2lGaSBzdGFjayBpbiB0aGlzIHNjZW5hcmlvLiBJdCdzIHRoZSBjZW50cmFsIHBvaW50IHdoZXJlIHRoZXNlIGtpbmRzIG9mIGNvbmZpZ3VyYXRpb25zIGFuZCBvcGVyYXRpb25zIGFyZSBtYW5hZ2VkLiBJIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgY29yZSBmdW5jdGlvbnMsIGxvb2sgZm9yIGNhbGxzIHJlbGF0ZWQgdG8gdGhlIHJlbGV2YW50IHBhcmFtZXRlciwgYW5kIHNlZSB3aGVyZSBhbmQgKmhvdyogdGhpcyBzcGVjaWZpYyBzZXR0aW5nIGlzIHVsdGltYXRlbHkgYmVpbmcgaGFuZGxlZC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIGtub3dsZWRnZSBvZiB0aGUgY29yZSB0byBkaWcgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU5NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjUxLjI3ODkyMTMyMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NDE5MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjUxLjMyMjU2OTk4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTYyNzI3MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWZW5kb3ItU3BlY2lmaWMgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGBtYWM4MDIxMWAgY29yZSBkb2Vzbid0IHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgLCB3aGljaCBtZWFucyBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gQnJvYWRjb20gY2hpcHMsIHNldHMgdGhpcyBmZWF0dXJlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB1c2luZyBzeXprYWxsZXIncyBVU0IgZ2FkZ2V0IGVtdWxhdGlvbj9cblxuSSBjYW4gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHRvIGVtdWxhdGUgYSBVU0IgZGV2aWNlLiBJZiBJIGdpdmUgaXQgdGhlIGNvcnJlY3QgdmVuZG9yL3Byb2R1Y3QgSURzLCB0aGUga2VybmVsIHNob3VsZCBiaW5kIHRoZSBgYnJjbWZtYWNgIFVTQiBkcml2ZXIgdG8gdGhlIGVtdWxhdGVkIGRldmljZS4gVGhhdCB0cmlnZ2VycyBgcmVxdWVzdF9maXJtd2FyZWAuIEhvd2V2ZXIsIGlmIHRoZSBmaXJtd2FyZSBpc24ndCBpbiB0aGUgcm9vdGZzLCB3aGljaCBpcyBsaWtlbHksIGByZXF1ZXN0X2Zpcm13YXJlYCBmYWlscywgdGhlIGRyaXZlciBwcm9iZSBmYWlscywgdGhlIGB3aXBoeWAgaXNuJ3QgcmVnaXN0ZXJlZCwgYW5kIHRoZSBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGZlYXR1cmUgaXMgbmV2ZXIgZXhwb3NlZCB0byBgbmw4MDIxMWAuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYG5sODAyMTEuY2AgYW5kIGBicmNtZm1hYy9jZmc4MDIxMS5jYCBiZWNvbWVzIHVucmVhY2hhYmxlLlxuXG5Eb2VzIHN5emthbGxlciBwcm92aWRlIGZpcm13YXJlIGZvciBgYnJjbWZtYWNgPyBNeSBpbnN0aW5jdCBzYXlzIGl0IHByb2JhYmx5IGRvZXNuJ3QsIHVzdWFsbHkgc3l6a2FsbGVyIG9ubHkgaGFzIGZpcm13YXJlIGZvciBhIGZldyBzcGVjaWZpYyBkcml2ZXJzLCBsaWtlIGBhdGg5a19odGNgIG9yIGBjYXJsOTE3MGAuIEknZCBuZWVkIHRvIGNvbmZpcm0gZGlyZWN0bHksIGJ1dCBwcmFjdGljYWxseSwgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMgdGhhdCByZWx5IG9uIGZpcm13YXJlIGFyZSByYXJlbHkgc3VjY2Vzc2Z1bGx5IGZ1enplZCBiZXlvbmQgdGhlIHByb2JlIGZhaWx1cmUuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGludm9sdmUgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgdGhhdCBpbmNsdWRlcyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgcGF0Y2ggcHJpbWFyaWx5IGltcGFjdHMgYGJyY21mbWFjYCDigJMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCB3aXRoIGNoYW5nZXMgbW9zdGx5IGluIGBicmNtZm1hYy9jZmc4MDIxMS5jYC4gVGhlIGNoYW5nZSBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgaXMganVzdCBvbmUgbGluZSB3aGljaCBvbmx5IGVuYWJsZXMgYG5sODAyMTFfc2V0X3Bta2AgaWYgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBpcyBzZXQsIGFuZCBpdCdzIHNldCBieSBgYnJjbWZtYWNgLCB0aGUgYG5sODAyMTEuY2AgY2hhbmdlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGFzIHdlbGwuXG5cbkxldCdzIGRvdWJsZSBjaGVjayBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAuIFllcywgaXQgKmFic29sdXRlbHkqIHJlcXVpcmVzIGZpcm13YXJlLiBUaGVyZSdzIG5vIG9idmlvdXMgd2F5IGFyb3VuZCB0aGF0OyB0aGUgY29kZSBjaGVja3MgZm9yIGZpcm13YXJlIGxvYWRpbmcgZmFpbHVyZXMuIFNvLCB3aXRob3V0IGZpcm13YXJlLCB0aGUgcHJvYmUgZmFpbHMuIFRoZSBgd2lwaHlgIGRvZXNuJ3QgcmVnaXN0ZXIsIGFuZCB0aGUgcmVsYXRlZCBgbmw4MDIxMWAgY29kZSBpcyBpbmFjY2Vzc2libGUuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhhdCBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciAoYGJyY21mbWFjYCkgdGhhdCBuZWVkcyB1bmF2YWlsYWJsZSBoYXJkd2FyZS9maXJtd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHRoYXQgdGhlIGNvcmUga2VybmVsIGNoYW5nZXMgaW4gYG5sODAyMTEuY2AgaXMgb25seSByZWFjaGVkIHRocm91Z2ggc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHNwZWNpZmljIGRyaXZlciwgdGhpcyBwYXRjaCBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkxNywiT3V0cHV0VG9rZW5zIjoyMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDg6MDQuODg1Mjk5MjAxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwcmltYXJpbHkgbW9kaWZpZXMgdGhlIGJyY21mbWFjIGRyaXZlciAoYSB2ZW5kb3Itc3BlY2lmaWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyKSB0byBhZGQgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCBzdXBwb3J0LiBJdCBhbHNvIGFkZHMgYSBtaW5vciBjaGVjayBpbiB0aGUgY29yZSBubDgwMjExIGNvZGUgdG8gYWxsb3cgc2V0dGluZyBQTUsgaWYgdGhlIG5ldyBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmbGFnIGlzIHNldC4gSG93ZXZlciwgdGhpcyBmbGFnIGlzIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgYnJjbWZtYWMgZHJpdmVyLiBTaW5jZSBicmNtZm1hYyByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSBvciBmaXJtd2FyZSAoZXZlbiB3aGVuIHByb2JlZCB2aWEgVVNCIGdhZGdldCwgaXQgZmFpbHMgZHVyaW5nIHJlcXVlc3RfZmlybXdhcmUgaWYgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGlzIG1pc3NpbmcpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBib3RoIHRoZSBkcml2ZXIgYW5kIG5sODAyMTEgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA4OjA0Ljg4NTMyNDM2MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqzqz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 22:03:04 +0000 UTC FinishedAt: 2026-08-24 22:08:07 +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+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYmI4N2FkMWYwYTU4ZGU1MzY4NjY2ZjM2ZDQwMDA4ZDBiODFkNWExOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDIyOjA2OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDg3MmM0ODgwNmQwOTEuLjZhOTdiZTMxNDlmYzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC0yMTEyLDkgJiM0MzsyMTEyLDExIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRzMzIgdmFsO1xuIFx0czMyIGVycjtcbiYjNDM7XHRzMzIgb2tjX2VuYWJsZTtcbiBcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcbiBcdGNvbnN0IHU4ICppZTtcbiBcdHUzMiBpZV9sZW47XG4mIzQzO1x0Ym9vbCBmd3N1cF9yb2FtO1xuIFx0dTMyIG9mZnNldDtcbiBcdHUxNiByc25fY2FwO1xuIFx0dTMyIG1mcDtcbkBAIC0yMTIyLDYgJiM0MzsyMTI0LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcbiBcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FO1xuIFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IGZhbHNlO1xuJiM0MztcdHByb2ZpbGUtXHUwMDNlaXNfb2tjID0gZmFsc2U7XG4mIzQzO1x0ZndzdXBfcm9hbSA9IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fFxuJiM0MztcdFx0ICAgICBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX09LQyk7XG4gXG4gXHRpZiAoIXNtZS1cdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0yMTM4LDYgJiM0MzsyMTQzLDggQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHR2YWwgPSBXUEFfQVVUSF9VTlNQRUNJRklFRDtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4mIzQzO1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOlxuIFx0XHRcdHZhbCA9IFdQQV9BVVRIX1BTSztcbkBAIC0yMTUzLDExICYjNDM7MjE2MCwxNSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9VTlNQRUNJRklFRDtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4mIzQzO1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfODAyMVhfU0hBMjU2OlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4gXHRcdFx0aWYgKHNtZS1cdTAwM2V3YW50XzF4KVxuIFx0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYO1xuJiM0MztcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuJiM0MztcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1BTS19TSEEyNTY6XG4gXHRcdFx0dmFsID0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG5AQCAtMjE3MCwxMCAmIzQzOzIxODEsMTYgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHRwcm9maWxlLVx1MDAzZWlzX2Z0ID0gdHJ1ZTtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4mIzQzO1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4mIzQzO1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfRlRfUFNLOlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XG4gXHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IHRydWU7XG4mIzQzO1x0XHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSlcbiYjNDM7XHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xuJiM0MztcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuJiM0MztcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6XG4gXHRcdFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xuQEAgLTIyMDQsOCAmIzQzOzIyMjEsMjIgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcbiBcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYKVxuIFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgMVggb2ZmbG9hZFxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIHx8XG4mIzQzO1x0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTSkge1xuJiM0MztcdFx0ZXJyID0gYnJjbWZfZmlsX2Jzc2NmZ19pbnRfZ2V0KGlmcCwgXCYjMzQ7b2tjX2VuYWJsZVwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBcdTAwMjZva2NfZW5hYmxlKTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7Z2V0IG9rY19lbmFibGUgZmFpbGVkICglZClcXG5cJiMzNDssIGVycik7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7b2tjX2VuYWJsZSAoJWQpXFxuXCYjMzQ7LCBva2NfZW5hYmxlKTtcbiYjNDM7XHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19va2MgPSBva2NfZW5hYmxlO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiBcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSlcbiBcdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIFNBRSBvZmZsb2FkXFxuXCYjMzQ7KTtcbiYjNDM7XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKVxuJiM0MztcdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIHJvYW1pbmcgb2ZmbG9hZFxcblwmIzM0Oyk7XG4gXG4gXHRpZiAoIWJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfTUZQKSlcbiBcdFx0Z290byBza2lwX21mcF9jb25maWc7XG5AQCAtMjQ5NCwxMyAmIzQzOzI1MjUsMTQgQEAgYnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcbiBcdFx0aWYgKHNtZS1cdTAwM2VjcnlwdG8ucHNrIFx1MDAyNlx1MDAyNiAhaXNfc2FlX2FrbSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4tXHRcdFx0aWYgKFdBUk5fT04ocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT1cbi1cdFx0XHRcdCAgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4mIzQzO1x0XHRcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4mIzQzO1x0XHRcdH0gZWxzZSBpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuJiM0MztcdFx0XHRcdFx0ICAgQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spKSB7XG4gXHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHRcdFx0Z290byBkb25lO1xuIFx0XHRcdH1cbi1cdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcXG5cJiMzNDspO1xuLVx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4gXHRcdH1cbiBcdFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xuIFx0XHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuQEAgLTU5NTMsMTcgJiM0Mzs1OTg1LDI5IEBAIHN0YXRpYyBpbnQgYnJjbWZfY2ZnODAyMTFfc2V0X3BtayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfcG1rX2NvbmYgKmNvbmYpXG4ge1xuIFx0c3RydWN0IGJyY21mX2lmICppZnA7XG4mIzQzO1x0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbiYjNDM7XHRpbnQgcmV0O1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtlbnRlclxcblwmIzM0Oyk7XG4gXG4tXHQvKiBleHBlY3QgdXNpbmcgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgMVggKi9cbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRpZiAoV0FSTl9PTihpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpKVxuJiM0MztcdGRydnIgPSBpZnAtXHUwMDNlZHJ2cjtcbiYjNDM7XHRpZiAoV0FSTl9PTihpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgIWlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZS5pc19mdCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhaWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlLmlzX29rYykpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuIFx0aWYgKGNvbmYtXHUwMDNlcG1rX2xlbiBcdTAwM2UgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTilcbiBcdFx0cmV0dXJuIC1FUkFOR0U7XG4gXG4mIzQzO1x0aWYgKGlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZS5pc19va2MpIHtcbiYjNDM7XHRcdHJldCA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwmIzM0O29rY19pbmZvX3Bta1wmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICBjb25mLVx1MDAzZXBtaywgY29uZi1cdTAwM2VwbWtfbGVuKTtcbiYjNDM7XHRcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O29rY19pbmZvX3BtayBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgcmV0KTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0dXJuIGJyY21mX3NldF9wbWsoaWZwLCBjb25mLVx1MDAzZXBtaywgY29uZi1cdTAwM2VwbWtfbGVuKTtcbiB9XG4gXG5AQCAtNjQyMiw2ICYjNDM7NjQ2Niw0NyBAQCBzdGF0aWMgczMyIGJyY21mX2dldF9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbCBicmNtZl9oYXNfcG1raWQoY29uc3QgdTggKnBhcnNlLCB1MzIgbGVuKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJyY21mX3RsdiAqcnNuX2llO1xuJiM0MztcdGNvbnN0IHU4ICppZTtcbiYjNDM7XHR1MzIgaWVfbGVuO1xuJiM0MztcdHUzMiBvZmZzZXQ7XG4mIzQzO1x0dTE2IGNvdW50O1xuJiM0MztcbiYjNDM7XHRpZiAoIXBhcnNlKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyc25faWUgPSBicmNtZl9wYXJzZV90bHZzKHBhcnNlLCBsZW4sIFdMQU5fRUlEX1JTTik7XG4mIzQzO1x0aWYgKCFyc25faWUpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdGllID0gKGNvbnN0IHU4ICopcnNuX2llO1xuJiM0MztcdGllX2xlbiA9IHJzbl9pZS1cdTAwM2VsZW4gJiM0MzsgVExWX0hEUl9MRU47XG4mIzQzO1xuJiM0MztcdG9mZnNldCA9IFRMVl9IRFJfTEVOICYjNDM7IFdQQV9JRV9WRVJTSU9OX0xFTiAmIzQzOyBXUEFfSUVfTUlOX09VSV9MRU47XG4mIzQzO1x0aWYgKG9mZnNldCAmIzQzOyBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOIFx1MDAzZT0gaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRjb3VudCA9IGllW29mZnNldF0gJiM0MzsgKGllW29mZnNldCAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1x0b2Zmc2V0ICYjNDM7PSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICYjNDM7IGNvdW50ICogV1BBX0lFX01JTl9PVUlfTEVOO1xuJiM0MztcdGlmIChvZmZzZXQgJiM0MzsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcdTAwM2U9IGllX2xlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gXHUwMDNjXHUwMDNjIDgpO1xuJiM0MztcdG9mZnNldCAmIzQzOz0gV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiAmIzQzOyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjtcbiYjNDM7XHRpZiAob2Zmc2V0ICYjNDM7IFJTTl9DQVBfTEVOIFx1MDAzZT0gaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRvZmZzZXQgJiM0Mzs9IFJTTl9DQVBfTEVOO1xuJiM0MztcdGlmIChvZmZzZXQgJiM0MzsgUlNOX1BNS0lEX0NPVU5UX0xFTiBcdTAwM2UgaWVfbGVuKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRjb3VudCA9IGllW29mZnNldF0gJiM0MzsgKGllW29mZnNldCAmIzQzOyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb3VudCBcdTAwM2UgMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgczMyXG4gYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5AQCAtNjQzNiw2ICYjNDM7NjUyMSw3IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHN0cnVjdCBicmNtZl9ic3NfaW5mb19sZSAqYmk7XG4gXHRzdHJ1Y3QgYnJjbXVfY2hhbiBjaDtcbiBcdHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gcm9hbV9pbmZvID0ge307XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkID0gZmFsc2U7XG4gXHR1MzIgZnJlcTtcbiBcdHMzMiBlcnIgPSAwO1xuIFx0dTggKmJ1ZjtcbkBAIC02NDgyLDE0ICYjNDM7NjU2OCwxOCBAQCBicmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRyb2FtX2luZm8ucmVzcF9pZSA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llO1xuIFx0cm9hbV9pbmZvLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVx1MDAzZXJlc3BfaWVfbGVuO1xuIFxuJiM0MztcdGlmICgocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxuJiM0MztcdCAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgKGJyY21mX2hhc19wbWtpZChyb2FtX2luZm8ucmVxX2llLCByb2FtX2luZm8ucmVxX2llX2xlbikgfHxcbiYjNDM7XHQgICAgIHByb2ZpbGUtXHUwMDNlaXNfZnQgfHwgcHJvZmlsZS1cdTAwM2Vpc19va2MpKVxuJiM0MztcdFx0YXV0aG9yaXplZCA9IHRydWU7XG4mIzQzO1xuIFx0Y2ZnODAyMTFfcm9hbWVkKG5kZXYsIFx1MDAyNnJvYW1faW5mbywgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKGF1dGhvcml6ZWQpXG4mIzQzO1x0XHRjZmc4MDIxMV9wb3J0X2F1dGhvcml6ZWQobmRldiwgcHJvZmlsZS1cdTAwM2Vic3NpZCwgTlVMTCwgMCxcbiYjNDM7XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbiBcdGJyY21mX2RiZyhDT05OLCBcJiMzNDtSZXBvcnQgcm9hbWluZyByZXN1bHRcXG5cJiMzNDspO1xuIFxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXHUwMDI2XHUwMDI2IHByb2ZpbGUtXHUwMDNlaXNfZnQpIHtcbi1cdFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXHUwMDNlYnNzaWQsIE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuLVx0XHRicmNtZl9kYmcoQ09OTiwgXCYjMzQ7UmVwb3J0IHBvcnQgYXV0aG9yaXplZFxcblwmIzM0Oyk7XG4tXHR9XG4tXG4gXHRzZXRfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQ09OTkVDVEVELCBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXNtZV9zdGF0ZSk7XG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O0V4aXRcXG5cJiMzNDspO1xuIFx0cmV0dXJuIGVycjtcbkBAIC02NTA0LDYgJiM0Mzs2NTk0LDcgQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGU7XG4gXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xuIFx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XG4mIzQzO1x0Ym9vbCBhdXRob3JpemVkO1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gXG5AQCAtNjUyOCw3ICYjNDM7NjYxOSwxNSBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdGNvbm5fcGFyYW1zLnJlcV9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVxX2llX2xlbjtcbiBcdFx0Y29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llO1xuIFx0XHRjb25uX3BhcmFtcy5yZXNwX2llX2xlbiA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llX2xlbjtcbiYjNDM7XHRcdGF1dGhvcml6ZWQgPSBjb21wbGV0ZWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHxcbiYjNDM7XHRcdFx0ICAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgICBicmNtZl9oYXNfcG1raWQoY29ubl9wYXJhbXMucmVxX2llLFxuJiM0MztcdFx0XHRcdFx0ICAgICBjb25uX3BhcmFtcy5yZXFfaWVfbGVuKTtcbiBcdFx0Y2ZnODAyMTFfY29ubmVjdF9kb25lKG5kZXYsIFx1MDAyNmNvbm5fcGFyYW1zLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmIChhdXRob3JpemVkKVxuJiM0MztcdFx0XHRjZmc4MDIxMV9wb3J0X2F1dGhvcml6ZWQobmRldiwgcHJvZmlsZS1cdTAwM2Vic3NpZCwgTlVMTCwgMCxcbiYjNDM7XHRcdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuIFx0XHRicmNtZl9kYmcoQ09OTiwgXCYjMzQ7UmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xcblwmIzM0OyxcbiBcdFx0XHQgIGNvbXBsZXRlZCA/IFwmIzM0O3N1Y2NlZWRlZFwmIzM0OyA6IFwmIzM0O2ZhaWxlZFwmIzM0Oyk7XG4gXHR9XG5AQCAtNzczMSw2ICYjNDM7NzgzMCwxMCBAQCBzdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFx0fVxuIFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFX0VYVCkpXG4gXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XG4mIzQzO1x0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fFxuJiM0MztcdCAgICBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX09LQykpXG4mIzQzO1x0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXG4mIzQzO1x0XHRcdFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQpO1xuIFx0d2lwaHktXHUwMDNlbWdtdF9zdHlwZXMgPSBicmNtZl90eHJ4X3N0eXBlcztcbiBcdHdpcGh5LVx1MDAzZW1heF9yZW1haW5fb25fY2hhbm5lbF9kdXJhdGlvbiA9IDUwMDA7XG4gXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9QTk8pKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuaW5kZXggNjNlNTM0NTIzZjUxOC4uMWFhOTkzOTBhOTUxMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuQEAgLTEyNyw3ICYjNDM7MTI3LDggQEAgZW51bSBicmNtZl9wcm9maWxlX2Z3c3VwIHtcbiBcdEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSxcbiBcdEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLLFxuIFx0QlJDTUZfUFJPRklMRV9GV1NVUF8xWCxcbi1cdEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFXG4mIzQzO1x0QlJDTUZfUFJPRklMRV9GV1NVUF9TQUUsXG4mIzQzO1x0QlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNXG4gfTtcbiBcbiAvKipcbkBAIC0xNjQsNiAmIzQzOzE2NSw3IEBAIGVudW0gYnJjbWZfbWdtdF90eF9zdGF0dXMge1xuICAqIEBic3NpZDogYnNzaWQgb2Ygam9pbmVkL2pvaW5pbmcgaWJzcy5cbiAgKiBAc2VjOiBzZWN1cml0eSBpbmZvcm1hdGlvbi5cbiAgKiBAa2V5OiBrZXkgaW5mb3JtYXRpb25cbiYjNDM7ICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgKi9cbiBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSB7XG4gXHR1OCBic3NpZFtFVEhfQUxFTl07XG5AQCAtMTcyLDYgJiM0MzsxNzQsNyBAQCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSB7XG4gXHRlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAgdXNlX2Z3c3VwO1xuIFx0dTE2IHVzZV9md2F1dGg7XG4gXHRib29sIGlzX2Z0O1xuJiM0MztcdGJvb2wgaXNfb2tjO1xuIH07XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmNcbmluZGV4IDQ4ODM2NGVmOGZmMmEuLmNjMTllNWU3ZWJmNTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXG5AQCAtNDUsNiAmIzQzOzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0ge1xuIFx0eyBCUkNNRl9GRUFUX1NBRSwgXCYjMzQ7c2FlIFwmIzM0OyB9LFxuIFx0eyBCUkNNRl9GRUFUX0ZXQVVUSCwgXCYjMzQ7aWRhdXRoXCYjMzQ7IH0sXG4gXHR7IEJSQ01GX0ZFQVRfU0FFX0VYVCwgXCYjMzQ7c2FlX2V4dFwmIzM0OyB9LFxuJiM0MztcdHsgQlJDTUZfRkVBVF9GQlQsIFwmIzM0O2ZidCBcJiMzNDsgfSxcbiYjNDM7XHR7IEJSQ01GX0ZFQVRfT0tDLCBcJiMzNDtva2NcJiMzNDsgfSxcbiB9O1xuIFxuICNpZmRlZiBERUJVR1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oXG5pbmRleCAzMWY4Njk1Y2E0MTc2Li44MTY1YTI4NmI2MzA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuQEAgLTU5LDcgJiM0Mzs1OSw5IEBAXG4gXHRCUkNNRl9GRUFUX0RFRihTQ0FOX1YyKSBcXFxuIFx0QlJDTUZfRkVBVF9ERUYoUE1LSURfVjIpIFxcXG4gXHRCUkNNRl9GRUFUX0RFRihQTUtJRF9WMykgXFxcbi1cdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpXG4mIzQzO1x0QlJDTUZfRkVBVF9ERUYoU0FFX0VYVCkgXFxcbiYjNDM7XHRCUkNNRl9GRUFUX0RFRihGQlQpIFxcXG4mIzQzO1x0QlJDTUZfRkVBVF9ERUYoT0tDKVxuIFxuIC8qXG4gICogUXVpcmtzOlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5pbmRleCAwMjAzODdkNzY0MTIyLi45ZjhkOWUzZDU5OTBiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuQEAgLTcxMTAsNiAmIzQzOzcxMTAsOSBAQCBlbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXG4gICpcdGluIFNUQSBtb2RlIHVzaW5nIEBOTDgwMjExX0NNRF9QUk9CRV9QRUVSLlxuICAqXG4mIzQzOyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxuJiM0MzsgKlx0T3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyByb2FtaW5nIG9mZmxvYWQgaW4gc3RhdGlvbiBtb2RlLlxuJiM0MzsgKlxuICAqIEBOVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVM6IG51bWJlciBvZiBleHRlbmRlZCBmZWF0dXJlcy5cbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXG4gICovXG5AQCAtNzE5Miw2ICYjNDM7NzE5NSw3IEBAIGVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4gXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VUX0tFWV9MVEZfU0VFRCxcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVAsXG4mIzQzO1x0Tkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsXG4gXG4gXHQvKiBhZGQgbmV3IGZlYXR1cmVzIGJlZm9yZSB0aGUgZGVmaW5pdGlvbiBiZWxvdyAqL1xuIFx0TlVNX05MODAyMTFfRVhUX0ZFQVRVUkVTLFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA0NGYyYmFkMDg2NzA1Li4xNTczMTQ0MGM1N2E0IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE4NDM0LDYgJiM0MzsxODQzNCw3IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiA9IGluZm8tXHUwMDNldXNlcl9wdHJbMF07XG4mIzQzO1x0c3RydWN0IHdpcGh5ICp3aXBoeSA9IFx1MDAyNnJkZXYtXHUwMDNld2lwaHk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gaW5mby1cdTAwM2V1c2VyX3B0clsxXTtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtXHUwMDNlaWVlZTgwMjExX3B0cjtcbiBcdHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiBwbWtfY29uZiA9IHt9O1xuQEAgLTE4NDQyLDggJiM0MzsxODQ0MywxMCBAQCBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0ICAgIHdkZXYtXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbi1cdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpKVxuJiM0MztcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQod2lwaHksXG4mIzQzO1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcbiYjNDM7XHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9NQUNdIHx8ICFpbmZvLVx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBwcmltYXJpbHkgbW9kaWZpZXMgdGhlIGJyY21mbWFjIGRyaXZlciAoYSB2ZW5kb3Itc3BlY2lmaWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyKSB0byBhZGQgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCBzdXBwb3J0LiBJdCBhbHNvIGFkZHMgYSBtaW5vciBjaGVjayBpbiB0aGUgY29yZSBubDgwMjExIGNvZGUgdG8gYWxsb3cgc2V0dGluZyBQTUsgaWYgdGhlIG5ldyBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmbGFnIGlzIHNldC4gSG93ZXZlciwgdGhpcyBmbGFnIGlzIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgYnJjbWZtYWMgZHJpdmVyLiBTaW5jZSBicmNtZm1hYyByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSBvciBmaXJtd2FyZSAoZXZlbiB3aGVuIHByb2JlZCB2aWEgVVNCIGdhZGdldCwgaXQgZmFpbHMgZHVyaW5nIHJlcXVlc3RfZmlybXdhcmUgaWYgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGlzIG1pc3NpbmcpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBib3RoIHRoZSBkcml2ZXIgYW5kIG5sODAyMTEgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiYjg3YWQxZjBhNThkZTUzNjg2NjZmMzZkNDAwMDhkMGI4MWQ1YTE5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMjQgMjI6MDY6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDg3MmM0ODgwNmQwOTEuLjZhOTdiZTMxNDlmYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCkBAIC0yMTEyLDkgJiM0MzsyMTEyLDExIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAJc3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IGlmcC0mZ3Q7ZHJ2cjsKIAlzMzIgdmFsOwogCXMzMiBlcnI7CiYjNDM7CXMzMiBva2NfZW5hYmxlOwogCWNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTsKIAljb25zdCB1OCAqaWU7CiAJdTMyIGllX2xlbjsKJiM0MzsJYm9vbCBmd3N1cF9yb2FtOwogCXUzMiBvZmZzZXQ7CiAJdTE2IHJzbl9jYXA7CiAJdTMyIG1mcDsKQEAgLTIxMjIsNiAmIzQzOzIxMjQsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKQogCiAJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FOwogCXByb2ZpbGUtJmd0O2lzX2Z0ID0gZmFsc2U7CiYjNDM7CXByb2ZpbGUtJmd0O2lzX29rYyA9IGZhbHNlOwomIzQzOwlmd3N1cF9yb2FtID0gYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GQlQpIHx8CiYjNDM7CQkgICAgIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfT0tDKTsKIAogCWlmICghc21lLSZndDtjcnlwdG8ubl9ha21fc3VpdGVzKQogCQlyZXR1cm4gMDsKQEAgLTIxMzgsNiAmIzQzOzIxNDMsOCBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKQogCQkJdmFsID0gV1BBX0FVVEhfVU5TUEVDSUZJRUQ7CiAJCQlpZiAoc21lLSZndDt3YW50XzF4KQogCQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7CiYjNDM7CQkJZWxzZSBpZiAoZndzdXBfcm9hbSkKJiM0MzsJCQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOgogCQkJdmFsID0gV1BBX0FVVEhfUFNLOwpAQCAtMjE1MywxMSAmIzQzOzIxNjAsMTUgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSkKIAkJCXZhbCA9IFdQQTJfQVVUSF9VTlNQRUNJRklFRDsKIAkJCWlmIChzbWUtJmd0O3dhbnRfMXgpCiAJCQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDsKJiM0MzsJCQllbHNlIGlmIChmd3N1cF9yb2FtKQomIzQzOwkJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07CiAJCQlicmVhazsKIAkJY2FzZSBXTEFOX0FLTV9TVUlURV84MDIxWF9TSEEyNTY6CiAJCQl2YWwgPSBXUEEyX0FVVEhfMVhfU0hBMjU2OwogCQkJaWYgKHNtZS0mZ3Q7d2FudF8xeCkKIAkJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYOwomIzQzOwkJCWVsc2UgaWYgKGZ3c3VwX3JvYW0pCiYjNDM7CQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fQUtNX1NVSVRFX1BTS19TSEEyNTY6CiAJCQl2YWwgPSBXUEEyX0FVVEhfUFNLX1NIQTI1NjsKQEAgLTIxNzAsMTAgJiM0MzsyMTgxLDE2IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAJCQlwcm9maWxlLSZndDtpc19mdCA9IHRydWU7CiAJCQlpZiAoc21lLSZndDt3YW50XzF4KQogCQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7CiYjNDM7CQkJZWxzZSBpZiAoZndzdXBfcm9hbSkKJiM0MzsJCQkJcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNOwogCQkJYnJlYWs7CiAJCWNhc2UgV0xBTl9BS01fU1VJVEVfRlRfUFNLOgogCQkJdmFsID0gV1BBMl9BVVRIX1BTSyB8IFdQQTJfQVVUSF9GVDsKIAkJCXByb2ZpbGUtJmd0O2lzX2Z0ID0gdHJ1ZTsKJiM0MzsJCQlpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpCiYjNDM7CQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLOwomIzQzOwkJCWVsc2UgaWYgKGZ3c3VwX3JvYW0pCiYjNDM7CQkJCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTsKIAkJCWJyZWFrOwogCQljYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6CiAJCQl2YWwgPSBXRkFfQVVUSF9EUFA7CkBAIC0yMjA0LDggJiM0MzsyMjIxLDIyIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpCiAKIAlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpCiAJCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIDFYIG9mZmxvYWRcbiYjMzQ7KTsKJiM0MzsKJiM0MzsJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIHx8CiYjNDM7CSAgICBwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSB7CiYjNDM7CQllcnIgPSBicmNtZl9maWxfYnNzY2ZnX2ludF9nZXQoaWZwLCAmIzM0O29rY19lbmFibGUmIzM0OywKJiM0MzsJCQkJCSAgICAgICAmYW1wO29rY19lbmFibGUpOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWJwaHlfZXJyKGRydnIsICYjMzQ7Z2V0IG9rY19lbmFibGUgZmFpbGVkICglZClcbiYjMzQ7LCBlcnIpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlicmNtZl9kYmcoSU5GTywgJiMzNDtva2NfZW5hYmxlICglZClcbiYjMzQ7LCBva2NfZW5hYmxlKTsKJiM0MzsJCQlwcm9maWxlLSZndDtpc19va2MgPSBva2NfZW5hYmxlOwomIzQzOwkJfQomIzQzOwl9CiAJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkKIAkJYnJjbWZfZGJnKElORk8sICYjMzQ7dXNpbmcgU0FFIG9mZmxvYWRcbiYjMzQ7KTsKJiM0MzsJaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU0pCiYjNDM7CQlicmNtZl9kYmcoSU5GTywgJiMzNDt1c2luZyByb2FtaW5nIG9mZmxvYWRcbiYjMzQ7KTsKIAogCWlmICghYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9NRlApKQogCQlnb3RvIHNraXBfbWZwX2NvbmZpZzsKQEAgLTI0OTQsMTMgJiM0MzsyNTI1LDE0IEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAKIAkJaWYgKHNtZS0mZ3Q7Y3J5cHRvLnBzayAmYW1wOyZhbXA7ICFpc19zYWVfYWttICZhbXA7JmFtcDsKIAkJICAgIHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewotCQkJaWYgKFdBUk5fT04ocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9Ci0JCQkJICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHsKJiM0MzsJCQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewomIzQzOwkJCQlicmNtZl9kYmcoSU5GTywgJiMzNDt1c2luZyBQU0sgb2ZmbG9hZFxuJiMzNDspOwomIzQzOwkJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKJiM0MzsJCQl9IGVsc2UgaWYgKFdBUk5fT04ocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9CiYjNDM7CQkJCQkgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSykpIHsKIAkJCQllcnIgPSAtRUlOVkFMOwogCQkJCWdvdG8gZG9uZTsKIAkJCX0KLQkJCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXG4mIzM0Oyk7Ci0JCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKIAkJfQogCQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewogCQkJLyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovCkBAIC01OTUzLDE3ICYjNDM7NTk4NSwyOSBAQCBzdGF0aWMgaW50IGJyY21mX2NmZzgwMjExX3NldF9wbWsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiAqY29uZikKIHsKIAlzdHJ1Y3QgYnJjbWZfaWYgKmlmcDsKJiM0MzsJc3RydWN0IGJyY21mX3B1YiAqZHJ2cjsKJiM0MzsJaW50IHJldDsKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtlbnRlclxuJiMzNDspOwogCi0JLyogZXhwZWN0IHVzaW5nIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIDFYICovCiAJaWZwID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlpZiAoV0FSTl9PTihpZnAtJmd0O3ZpZi0mZ3Q7cHJvZmlsZS51c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCkpCiYjNDM7CWRydnIgPSBpZnAtJmd0O2RydnI7CiYjNDM7CWlmIChXQVJOX09OKGlmcC0mZ3Q7dmlmLSZndDtwcm9maWxlLnVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhaWZwLSZndDt2aWYtJmd0O3Byb2ZpbGUuaXNfZnQgJmFtcDsmYW1wOwomIzQzOwkJICAgICFpZnAtJmd0O3ZpZi0mZ3Q7cHJvZmlsZS5pc19va2MpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlmIChjb25mLSZndDtwbWtfbGVuICZndDsgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTikKIAkJcmV0dXJuIC1FUkFOR0U7CiAKJiM0MzsJaWYgKGlmcC0mZ3Q7dmlmLSZndDtwcm9maWxlLmlzX29rYykgewomIzQzOwkJcmV0ID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDtva2NfaW5mb19wbWsmIzM0OywKJiM0MzsJCQkJCSAgICAgICBjb25mLSZndDtwbWssIGNvbmYtJmd0O3Bta19sZW4pOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtva2NfaW5mb19wbWsgaW92YXIgZmFpbGVkOiByZXQ9JWRcbiYjMzQ7LAomIzQzOwkJCQkgcmV0KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiBicmNtZl9zZXRfcG1rKGlmcCwgY29uZi0mZ3Q7cG1rLCBjb25mLSZndDtwbWtfbGVuKTsKIH0KIApAQCAtNjQyMiw2ICYjNDM7NjQ2Niw0NyBAQCBzdGF0aWMgczMyIGJyY21mX2dldF9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAlyZXR1cm4gZXJyOwogfQogCiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfaGFzX3Bta2lkKGNvbnN0IHU4ICpwYXJzZSwgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTsKJiM0MzsJY29uc3QgdTggKmllOwomIzQzOwl1MzIgaWVfbGVuOwomIzQzOwl1MzIgb2Zmc2V0OwomIzQzOwl1MTYgY291bnQ7CiYjNDM7CiYjNDM7CWlmICghcGFyc2UpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXJzbl9pZSA9IGJyY21mX3BhcnNlX3RsdnMocGFyc2UsIGxlbiwgV0xBTl9FSURfUlNOKTsKJiM0MzsJaWYgKCFyc25faWUpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWllID0gKGNvbnN0IHU4ICopcnNuX2llOwomIzQzOwlpZV9sZW4gPSByc25faWUtJmd0O2xlbiAmIzQzOyBUTFZfSERSX0xFTjsKJiM0MzsKJiM0MzsJb2Zmc2V0ID0gVExWX0hEUl9MRU4gJiM0MzsgV1BBX0lFX1ZFUlNJT05fTEVOICYjNDM7IFdQQV9JRV9NSU5fT1VJX0xFTjsKJiM0MzsJaWYgKG9mZnNldCAmIzQzOyBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICZndDs9IGllX2xlbikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gJmx0OyZsdDsgOCk7CiYjNDM7CW9mZnNldCAmIzQzOz0gV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiAmIzQzOyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjsKJiM0MzsJaWYgKG9mZnNldCAmIzQzOyBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICZndDs9IGllX2xlbikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gJmx0OyZsdDsgOCk7CiYjNDM7CW9mZnNldCAmIzQzOz0gV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiAmIzQzOyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjsKJiM0MzsJaWYgKG9mZnNldCAmIzQzOyBSU05fQ0FQX0xFTiAmZ3Q7PSBpZV9sZW4pCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW9mZnNldCAmIzQzOz0gUlNOX0NBUF9MRU47CiYjNDM7CWlmIChvZmZzZXQgJiM0MzsgUlNOX1BNS0lEX0NPVU5UX0xFTiAmZ3Q7IGllX2xlbikKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY291bnQgPSBpZVtvZmZzZXRdICYjNDM7IChpZVtvZmZzZXQgJiM0MzsgMV0gJmx0OyZsdDsgOCk7CiYjNDM7CiYjNDM7CXJldHVybiBjb3VudCAmZ3Q7IDA7CiYjNDM7fQomIzQzOwogc3RhdGljIHMzMgogYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCQkgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCkBAIC02NDM2LDYgJiM0Mzs2NTIxLDcgQEAgYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCXN0cnVjdCBicmNtZl9ic3NfaW5mb19sZSAqYmk7CiAJc3RydWN0IGJyY211X2NoYW4gY2g7CiAJc3RydWN0IGNmZzgwMjExX3JvYW1faW5mbyByb2FtX2luZm8gPSB7fTsKJiM0MzsJYm9vbCBhdXRob3JpemVkID0gZmFsc2U7CiAJdTMyIGZyZXE7CiAJczMyIGVyciA9IDA7CiAJdTggKmJ1ZjsKQEAgLTY0ODIsMTQgJiM0Mzs2NTY4LDE4IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAlyb2FtX2luZm8ucmVzcF9pZSA9IGNvbm5faW5mby0mZ3Q7cmVzcF9pZTsKIAlyb2FtX2luZm8ucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tJmd0O3Jlc3BfaWVfbGVuOwogCiYjNDM7CWlmICgocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHwKJiM0MzsJICAgICBwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSAmYW1wOyZhbXA7CiYjNDM7CSAgICAoYnJjbWZfaGFzX3Bta2lkKHJvYW1faW5mby5yZXFfaWUsIHJvYW1faW5mby5yZXFfaWVfbGVuKSB8fAomIzQzOwkgICAgIHByb2ZpbGUtJmd0O2lzX2Z0IHx8IHByb2ZpbGUtJmd0O2lzX29rYykpCiYjNDM7CQlhdXRob3JpemVkID0gdHJ1ZTsKJiM0MzsKIAljZmc4MDIxMV9yb2FtZWQobmRldiwgJmFtcDtyb2FtX2luZm8sIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoYXV0aG9yaXplZCkKJiM0MzsJCWNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLSZndDtic3NpZCwgTlVMTCwgMCwKJiM0MzsJCQkJCSBHRlBfS0VSTkVMKTsKIAlicmNtZl9kYmcoQ09OTiwgJiMzNDtSZXBvcnQgcm9hbWluZyByZXN1bHRcbiYjMzQ7KTsKIAotCWlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCAmYW1wOyZhbXA7IHByb2ZpbGUtJmd0O2lzX2Z0KSB7Ci0JCWNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLSZndDtic3NpZCwgTlVMTCwgMCwgR0ZQX0tFUk5FTCk7Ci0JCWJyY21mX2RiZyhDT05OLCAmIzM0O1JlcG9ydCBwb3J0IGF1dGhvcml6ZWRcbiYjMzQ7KTsKLQl9Ci0KIAlzZXRfYml0KEJSQ01GX1ZJRl9TVEFUVVNfQ09OTkVDVEVELCAmYW1wO2lmcC0mZ3Q7dmlmLSZndDtzbWVfc3RhdGUpOwogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFeGl0XG4mIzM0Oyk7CiAJcmV0dXJuIGVycjsKQEAgLTY1MDQsNiAmIzQzOzY1OTQsNyBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsCiAJc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSAmYW1wO2lmcC0mZ3Q7dmlmLSZndDtwcm9maWxlOwogCXN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7CiAJc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7CiYjNDM7CWJvb2wgYXV0aG9yaXplZDsKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwogCkBAIC02NTI4LDcgJiM0Mzs2NjE5LDE1IEBAIGJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZywKIAkJY29ubl9wYXJhbXMucmVxX2llX2xlbiA9IGNvbm5faW5mby0mZ3Q7cmVxX2llX2xlbjsKIAkJY29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby0mZ3Q7cmVzcF9pZTsKIAkJY29ubl9wYXJhbXMucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tJmd0O3Jlc3BfaWVfbGVuOwomIzQzOwkJYXV0aG9yaXplZCA9IGNvbXBsZXRlZCAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHwKJiM0MzsJCQkgICAgICBwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICBicmNtZl9oYXNfcG1raWQoY29ubl9wYXJhbXMucmVxX2llLAomIzQzOwkJCQkJICAgICBjb25uX3BhcmFtcy5yZXFfaWVfbGVuKTsKIAkJY2ZnODAyMTFfY29ubmVjdF9kb25lKG5kZXYsICZhbXA7Y29ubl9wYXJhbXMsIEdGUF9LRVJORUwpOwomIzQzOwkJaWYgKGF1dGhvcml6ZWQpCiYjNDM7CQkJY2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtJmd0O2Jzc2lkLCBOVUxMLCAwLAomIzQzOwkJCQkJCSBHRlBfS0VSTkVMKTsKIAkJYnJjbWZfZGJnKENPTk4sICYjMzQ7UmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xuJiMzNDssCiAJCQkgIGNvbXBsZXRlZCA/ICYjMzQ7c3VjY2VlZGVkJiMzNDsgOiAmIzM0O2ZhaWxlZCYjMzQ7KTsKIAl9CkBAIC03NzMxLDYgJiM0Mzs3ODMwLDEwIEBAIHN0YXRpYyBpbnQgYnJjbWZfc2V0dXBfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGJyY21mX2lmICppZnApCiAJfQogCWlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRV9FWFQpKQogCQl3aXBoeS0mZ3Q7ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX1NBRTsKJiM0MzsJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fAomIzQzOwkgICAgYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9PS0MpKQomIzQzOwkJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LAomIzQzOwkJCQkgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7CiAJd2lwaHktJmd0O21nbXRfc3R5cGVzID0gYnJjbWZfdHhyeF9zdHlwZXM7CiAJd2lwaHktJmd0O21heF9yZW1haW5fb25fY2hhbm5lbF9kdXJhdGlvbiA9IDUwMDA7CiAJaWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE5PKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAppbmRleCA2M2U1MzQ1MjNmNTE4Li4xYWE5OTM5MGE5NTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaApAQCAtMTI3LDcgJiM0MzsxMjcsOCBAQCBlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAgewogCUJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSwKIAlCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSywKIAlCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYLAotCUJSQ01GX1BST0ZJTEVfRldTVVBfU0FFCiYjNDM7CUJSQ01GX1BST0ZJTEVfRldTVVBfU0FFLAomIzQzOwlCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU0KIH07CiAKIC8qKgpAQCAtMTY0LDYgJiM0MzsxNjUsNyBAQCBlbnVtIGJyY21mX21nbXRfdHhfc3RhdHVzIHsKICAqIEBic3NpZDogYnNzaWQgb2Ygam9pbmVkL2pvaW5pbmcgaWJzcy4KICAqIEBzZWM6IHNlY3VyaXR5IGluZm9ybWF0aW9uLgogICogQGtleToga2V5IGluZm9ybWF0aW9uCiYjNDM7ICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi4KICAqLwogc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgewogCXU4IGJzc2lkW0VUSF9BTEVOXTsKQEAgLTE3Miw2ICYjNDM7MTc0LDcgQEAgc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgewogCWVudW0gYnJjbWZfcHJvZmlsZV9md3N1cCB1c2VfZndzdXA7CiAJdTE2IHVzZV9md2F1dGg7CiAJYm9vbCBpc19mdDsKJiM0MzsJYm9vbCBpc19va2M7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jCmluZGV4IDQ4ODM2NGVmOGZmMmEuLmNjMTllNWU3ZWJmNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuYwpAQCAtNDUsNiAmIzQzOzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0gewogCXsgQlJDTUZfRkVBVF9TQUUsICYjMzQ7c2FlICYjMzQ7IH0sCiAJeyBCUkNNRl9GRUFUX0ZXQVVUSCwgJiMzNDtpZGF1dGgmIzM0OyB9LAogCXsgQlJDTUZfRkVBVF9TQUVfRVhULCAmIzM0O3NhZV9leHQmIzM0OyB9LAomIzQzOwl7IEJSQ01GX0ZFQVRfRkJULCAmIzM0O2ZidCAmIzM0OyB9LAomIzQzOwl7IEJSQ01GX0ZFQVRfT0tDLCAmIzM0O29rYyYjMzQ7IH0sCiB9OwogCiAjaWZkZWYgREVCVUcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oCmluZGV4IDMxZjg2OTVjYTQxNzYuLjgxNjVhMjg2YjYzMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaApAQCAtNTksNyAmIzQzOzU5LDkgQEAKIAlCUkNNRl9GRUFUX0RFRihTQ0FOX1YyKSBcCiAJQlJDTUZfRkVBVF9ERUYoUE1LSURfVjIpIFwKIAlCUkNNRl9GRUFUX0RFRihQTUtJRF9WMykgXAotCUJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpCiYjNDM7CUJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpIFwKJiM0MzsJQlJDTUZfRkVBVF9ERUYoRkJUKSBcCiYjNDM7CUJSQ01GX0ZFQVRfREVGKE9LQykKIAogLyoKICAqIFF1aXJrczoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCmluZGV4IDAyMDM4N2Q3NjQxMjIuLjlmOGQ5ZTNkNTk5MGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaApAQCAtNzExMCw2ICYjNDM7NzExMCw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHsKICAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQOiBEcml2ZXIgc3VwcG9ydHMgcHJvYmluZyB0aGUgYXNzb2NpYXRlZCBBUAogICoJaW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuCiAgKgomIzQzOyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvcgomIzQzOyAqCU9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS4KJiM0MzsgKgogICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLgogICogQE1BWF9OTDgwMjExX0VYVF9GRUFUVVJFUzogaGlnaGVzdCBleHRlbmRlZCBmZWF0dXJlIGluZGV4LgogICovCkBAIC03MTkyLDYgJiM0Mzs3MTk1LDcgQEAgZW51bSBubDgwMjExX2V4dF9mZWF0dXJlX2luZGV4IHsKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUiwKIAlOTDgwMjExX0VYVF9GRUFUVVJFX1NFVF9LRVlfTFRGX1NFRUQsCiAJTkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCwKJiM0MzsJTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsCiAKIAkvKiBhZGQgbmV3IGZlYXR1cmVzIGJlZm9yZSB0aGUgZGVmaW5pdGlvbiBiZWxvdyAqLwogCU5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUywKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDQ0ZjJiYWQwODY3MDUuLjE1NzMxNDQwYzU3YTQgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtMTg0MzQsNiAmIzQzOzE4NDM0LDcgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9tdWx0aWNhc3RfdG9fdW5pY2FzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSBpbmZvLSZndDt1c2VyX3B0clswXTsKJiM0MzsJc3RydWN0IHdpcGh5ICp3aXBoeSA9ICZhbXA7cmRldi0mZ3Q7d2lwaHk7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGluZm8tJmd0O3VzZXJfcHRyWzFdOwogCXN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtJmd0O2llZWU4MDIxMV9wdHI7CiAJc3RydWN0IGNmZzgwMjExX3Bta19jb25mIHBta19jb25mID0ge307CkBAIC0xODQ0Miw4ICYjNDM7MTg0NDMsMTAgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkgICAgd2Rldi0mZ3Q7aWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoJmFtcDtyZGV2LSZndDt3aXBoeSwKLQkJCQkgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSkKJiM0MzsJaWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSwKJiM0MzsJCQkJICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgJmFtcDsmYW1wOwomIzQzOwkgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LAomIzQzOwkJCQkgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKCFpbmZvLSZndDthdHRyc1tOTDgwMjExX0FUVFJfTUFDXSB8fCAhaW5mby0mZ3Q7YXR0cnNbTkw4MDIxMV9BVFRSX1BNS10pCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA0NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBGYXN0IFRyYW5zaXRpb24gKEZCVCkgYW5kIE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgKE9LQykgcm9hbWluZyBvZmZsb2FkIHRvIHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgYWxvbmdzaWRlIGEgbmV3IGZlYXR1cmUgZmxhZyBpbiBgbmw4MDIxMWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0NhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8mIzM0OyBUaGUgcHJvbXB0IGlzIHZlcnkgc3BlY2lmaWMgYWJvdXQgZXhjbHVkaW5nIHBhdGNoZXMgdGhhdCBoaXQgdW5yZWFjaGFibGUgY29kZSBwYXRocy4KCmBicmNtZm1hY2AgaXMgYSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyLCB3aGljaCByaW5ncyBhbGFybSBiZWxscy4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIHJlbHkgb24gc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgKFNESU8sIFBDSWUsIFVTQikuIFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGF0IGhhcmR3YXJlIGRpcmVjdGx5LCB1bmxpa2UsIHNheSwgYG1hYzgwMjExX2h3c2ltYC4gVGhpcyBpcyB0aGUgZmlyc3QgaHVyZGxlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBmbGFncyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBjYXJkcyBhcyB1bmludGVyZXN0aW5nIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBJcyBgYnJjbWZtYWNgIG9uZSBvZiB0aG9zZT8gWWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHRpZWQgdG8gc3BlY2lmaWMgQnJvYWRjb20gY2hpcHMuCgpIb3dldmVyLCBtYXliZSB0aGVyZeKAmXMgYSB3b3JrYXJvdW5kLiBDb3VsZCBJIHBlcmhhcHMgdHJpZ2dlciB0aGUgVVNCIGludGVyZmFjZSBvZiBgYnJjbWZtYWNgIHRocm91Z2ggYSBVU0IgZ2FkZ2V0IHNldHVwPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAobGlrZSBgc3l6X3VzYl9jb25uZWN0YCkuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiBgYnJjbWZtYWNgIHN1cHBvcnRzIHByb2Jpbmcgb3IgYmVpbmcgY29udHJvbGxlZCB2aWEgVVNCLiBJZiB0aGF0JiMzOTtzIHBvc3NpYmxlLCBpdCBtaWdodCBwcm92aWRlIGEgd2F5IGluLCBldmVuIGlmIHRoZSBkcml2ZXIgdXN1YWxseSB3YW50cyBhIFBDSWUgb3IgU0RJTyBpbnRlcmZhY2UuIExldCYjMzk7cyBzZWUgaWYgVVNCIGlzIGEgdmlhYmxlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVx0XHRcdFx0ICAgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKmZ3cmVxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDUtXHRcdFx0ICAgICAgZW51bSBicmNtZl9md3ZlbmRvciBmd3ZpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzMDk6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMTAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEzNDQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzNDU6YnJjbWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTM0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTQ0NjpcdHJldCA9IGJyY21mX3VzYl9wcm9iZV9jYihkZXZpbmZvLCBpZC1cdTAwM2Vkcml2ZXJfaW5mbyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKFx1MDAyNnVzYi1cdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTU2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYnJjbWZfdXNiZHJ2ciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY5LVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTcwOlx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NzEtXHQuZGlzY29ubmVjdCA9IGJyY21mX3VzYl9kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjE3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNjg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBSZWxhdGVkIHRvIFdpLUZpIFBNSyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYnJhaW4gZ29lcyBpbnRvIGFuYWx5c2lzIG1vZGUuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IHRvdWNoZXMgYm90aCBhIGRyaXZlciBhbmQgY29yZSBrZXJuZWwgbG9naWMuIFNwZWNpZmljYWxseSwgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IsIHdoaWNoIG1lYW5zIGl0ICpjb3VsZCogYmUgYSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQgdmlhIGEgVVNCIGdhZGdldCBzZXR1cC4gQnV0IHRoZSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgc3BlY2lmaWNhbGx5IGBubDgwMjExX3NldF9wbWtgLgoKQWxyaWdodCwgdGhlIGNvZGUgbW9kaWZpZXMgYG5sODAyMTFfc2V0X3Bta2AsIGFuZCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBhbGxvd2luZyBgbmw4MDIxMV9zZXRfcG1rYCB0byBwcm9jZWVkIGV2ZW4gaWYgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmVhdHVyZSBpcyBzZXQuIFRoZSBwcmV2aW91cyBjaGVjayB3YXMgYSBiaXQgbW9yZSByZXN0cmljdGl2ZS4gTm93IEkgbmVlZCB0byBzZWUgaG93IHRoZSBjaGFuZ2Ugd29ya3MuCgpUaGlzIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIGlzIHJlYWNoZWQgdmlhIG5ldGxpbmssIHdoaWNoIG1lYW5zIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiB0cmlnZ2VyIGl0LiBJdCYjMzk7cyBrZXkgdG8gcmVtZW1iZXIgdGhhdCBhIGRyaXZlciBzZXRzIHRoaXMgZmVhdHVyZSBmbGFnLiBOb3csIG15IG1pbmQgaXMgcmFjaW5nLiBXaGljaCBkcml2ZXJzIG1pZ2h0IHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgPyBUaGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgbWFjODAyMTFfaHdzaW1gIGFuZCBgYnJjbWZtYWNgLCBiZWNhdXNlIHRoZXkmIzM5O3JlIGNvbW1vbi4KCkkgaGF2ZSB0byB2ZXJpZnkgd2hldGhlciBgbWFjODAyMTFfaHdzaW1gIHNldHMgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYC4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgYSBkcml2ZXIgbWF5IHNldCB0aGlzIGZlYXR1cmUsIHdoaWNoIG1lYW5zIEkgY2FuIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyBuZXcsIHNsaWdodGx5IG1vZGlmaWVkLCBjb2RlIHBhdGguIFRpbWUgdG8gZ28gZGlnIGludG8gdGhlIGNvZGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Tkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Nzc1OD1zdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MzUtXHRcdHdpcGh5X2V4dF9mZWF0dXJlX3NldCh3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjc4MzY6XHRcdFx0XHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy03ODM3LVx0d2lwaHktXHUwMDNlbWdtdF9zdHlwZXMgPSBicmNtZl90eHJ4X3N0eXBlcztcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oPTY4MzI9ZW51bSBubDgwMjExX2ZlYXR1cmVfZmxhZ3Mge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtNzExMi0gKlxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo3MTEzOiAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTE0LSAqXHRPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIHJvYW1pbmcgb2ZmbG9hZCBpbiBzdGF0aW9uIG1vZGUuXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTk3LVx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6NzE5ODpcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FELFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTk5LVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0MzQ9c3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDQ4LVx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0NDk6XHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg0NTAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAwOQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDEzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYnJjbWZtYWNgIERyaXZlciBhbmQgUG90ZW50aWFsIEF0dGFjayBTdXJmYWNlKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmxhZyBpcyBjdXJyZW50bHkgb25seSBzZXQgYnkgdGhlIGBicmNtZm1hY2AgZHJpdmVyLiBUaGlzIG1lYW5zIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIGBubDgwMjExX3NldF9wbWtgIHN0ZW1taW5nIGZyb20gdGhpcyBmbGFnIGFyZSB0aWVkIGRpcmVjdGx5IHRvIHdoZXRoZXIgb3Igbm90IGBicmNtZm1hY2AgaXMgbG9hZGVkIGFuZCBzcGVjaWZpY2FsbHkgZW5hYmxlcyB0aGlzIGZlYXR1cmUuIEEgcXVpY2sgYXNzZXNzbWVudCBzdWdnZXN0cyB0aGF0IGBicmNtZm1hY2AgKmNvdWxkKiBiZSBhIHRhcmdldCBmb3IgZnV6emluZy4gQ3J1Y2lhbGx5LCBpdCBoYXMgYSBVU0IgaW50ZXJmYWNlLCBhbmQgc3l6a2FsbGVyIGNhbiBzdXBwb3NlZGx5IGVtdWxhdGUgVVNCIGRldmljZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBCdXQgSSBuZWVkIHRvIGJlIHN1cmU7IGRvZXMgc3l6a2FsbGVyICphY3R1YWxseSogdGFyZ2V0IGBicmNtZm1hY2A/IEJlZm9yZSBJIHN0YXJ0IGRvd24gdGhhdCBwYXRoLCBJIG5lZWQgdG8gY2hlY2sgaG93IGNvbW1vbiBvciBzcGVjaWFsaXplZCBgYnJjbWZtYWNgIGlzLiBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB3aGV0aGVyIGl0JiMzOTtzIGVuYWJsZWQgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zIG9yIGlmIGl0IG5lY2Vzc2l0YXRlcyBzb21lIHNwZWNpZmljIGtlcm5lbCBidWlsZCBvcHRpb25zLiBUaGlzIHdpbGwgYWZmZWN0IHRoZSBwcmlvcml0eSBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUkNNRk1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTQ6Y29uZmlnIEJSQ01GTUFDX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7U0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cdGJvb2wgXCYjMzQ7UENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwMTIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgQnJvYWRjb20gV2lGaSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zIGZvciB0aGlzIEJyb2FkY29tIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGJyY21mbWFjYC4gTGV0JiMzOTtzIGRpdmUgcmlnaHQgaW50byB0aGUgYEtjb25maWdgIGZpbGUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gbG9naWMgcmVzaWRlcy4gSSYjMzk7bGwgbmVlZCB0byBzZWUgd2hhdCBvdGhlciBmZWF0dXJlcyBvciBjb21wb25lbnRzIHRoaXMgbW9kdWxlIHJlbGllcyBvbiwgd2hhdCBjb25maWd1cmF0aW9ucyBlbmFibGUgb3IgZGlzYWJsZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0aWVzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBzeXN0ZW0uIEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIGNsZWFuIGFuZCBlZmZpY2llbnQgYnVpbGQsIGFuZCBmb3IgdHJvdWJsZXNob290aW5nIGFueSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBjb25mbGljdHMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGltZSB0byBwYXJzZSB0aGUgS2NvbmZpZyBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHZhcmlhYmxlcyBhbmQgdGhlIGxvZ2ljIGdvdmVybmluZyB0aGVpciBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdGNvbmZpZyBCUkNNRk1BQ1xuICAgMjpcdFx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAgNDpcdFx0c2VsZWN0IEJSQ01VVElMXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gQnJvYWRjb21cbiAgIDc6XHRcdCAgRnVsbE1BQyBjaGlwc2V0cy4gSXQgaGFzIHRvIHdvcmsgd2l0aCBhdCBsZWFzdCBvbmUgb2YgdGhlIGJ1c1xuICAgODpcdFx0ICBpbnRlcmZhY2Ugc3VwcG9ydC4gSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZFxuICAgOTpcdFx0ICBicmNtZm1hYy5rby5cbiAgMTA6XHRcbiAgMTE6XHRjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuICAxMjpcdFx0Ym9vbFxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbiAgMTU6XHRcdGJvb2xcbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgQlJDTUZNQUNfU0RJT1xuICAxODpcdFx0Ym9vbCBcJiMzNDtTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbiAgMTk6XHRcdGRlcGVuZHMgb24gKE1NQyA9IHkgfHwgTU1DID0gQlJDTUZNQUMpXG4gIDIwOlx0XHRkZXBlbmRzIG9uIEJSQ01GTUFDXG4gIDIxOlx0XHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuICAyMjpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyMzpcdFx0ZGVmYXVsdCB5XG4gIDI0Olx0XHRoZWxwXG4gIDI1Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxuICAyNjpcdFx0ICBJRUVFODAyLjExbiBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xuICAyNzpcdFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYSBTRElPIHdpcmVsZXNzIGNhcmQuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIEJSQ01GTUFDX1VTQlxuICAzMDpcdFx0Ym9vbCBcJiMzNDtVU0IgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiAoVVNCID0geSB8fCBVU0IgPSBCUkNNRk1BQylcbiAgMzI6XHRcdGRlcGVuZHMgb24gQlJDTUZNQUNcbiAgMzM6XHRcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXG4gIDM0Olx0XHRzZWxlY3QgRldfTE9BREVSXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXG4gIDM3Olx0XHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXG4gIDM4Olx0XHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhbiBVU0Igd2lyZWxlc3MgY2FyZC5cbiAgMzk6XHRcbiAgNDA6XHRjb25maWcgQlJDTUZNQUNfUENJRVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzgzNwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDQxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBQYXRjaCBmb3IgV2lGaSBSb2FtaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgdG91Y2hpbmcgYm90aCBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYCBjb25maWd1cmF0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEJ1dCwgdGhlIHJlYWwga2lja2VyIGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBUaGF0JiMzOTtzIGNvcmUga2VybmVsIGxvZ2ljLCBhbmQgYW55IGNoYW5nZXMgdGhlcmUgYXJlIHdvcnRoIGEgY2xvc2UgbG9vay4KClRoZSBjaGFuZ2UgaXRzZWxmIGlzIHByZXR0eSBzcGVjaWZpYzogaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBjaGVjayB0aGF0IGdvdmVybnMgd2hldGhlciBgbmw4MDIxMV9zZXRfcG1rYCBpcyBwZXJtaXR0ZWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNoZWNrZWQgZm9yIHRoZSBwcmVzZW5jZSBvZiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgLiBOb3csIGl0JiMzOTtzIGFkZGluZyBhbm90aGVyIGNoZWNrOiBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgLiBFZmZlY3RpdmVseSwgdGhpcyBhbGxvd3MgYG5sODAyMTFfc2V0X3Bta2AgdG8gYmUgY2FsbGVkIGlmICplaXRoZXIqIG9mIHRob3NlIGZlYXR1cmVzIGlzIHByZXNlbnQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiBgYnJjbWZtYWNgIGlzIHRoZSBvbmx5IGRyaXZlciBzZXR0aW5nIHRoaXMgbmV3IGBST0FNX09GRkxPQURgIGZlYXR1cmUgZmxhZywgdGhlbiB0aGlzIHBhdGNoIGlzIG1ha2luZyB0aGUgYG5sODAyMTFfc2V0X3Bta2AgZnVuY3Rpb24gcmVhY2hhYmxlIHVuZGVyIHRoZSBuZXcgY29uZGl0aW9uIG9ubHkgaWYgYGJyY21mbWFjYCBpcyBsb2FkZWQgYW5kIHRoZSBmZWF0dXJlIGlzIGFjdGl2ZS4gSXQgaXMgZW5hYmxpbmcgdGhlIHJvYW1pbmcgb2ZmbG9hZCBmdW5jdGlvbmFsaXR5IHRocm91Z2ggdGhpcyBjYWxsLgoKSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIHdhcyAqYWxyZWFkeSogYmVpbmcgY2hlY2tlZC4gU28sIGBubDgwMjExX3NldF9wbWtgICp3YXMqIGFscmVhZHkgcmVhY2hhYmxlIGlmICp0aGF0KiBmZWF0dXJlIHdhcyBzZXQuIFNvLCB0aGlzIHBhdGNoIGlzIG9ubHkgcmVsZXZhbnQgaWYgYFJPQU1fT0ZGTE9BRGAgaXMgc2V0LiBJZiBub3QsIHRoaXMgaXMgbm90IGFuIGlzc3VlLgoKTm93LCBJJiMzOTttIGN1cmlvdXMgaWYgYG1hYzgwMjExX2h3c2ltYCBzZXRzIGBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWGAgaW4gaXRzIHZpcnR1YWwgaGFyZHdhcmUgZW11bGF0aW9uLCBhcyB0aGlzIHdvdWxkIGltcGFjdCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjaGFuZ2UmIzM5O3MgaW1wbGljYXRpb25zIGluIHNpbXVsYXRlZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBjaGVjayBvbiB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz03NzU4PXN0YXRpYyBpbnQgYnJjbWZfc2V0dXBfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGJyY21mX2lmICppZnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgxOC1cdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgxOTpcdFx0XHRcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MjAtXHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC0xOTEtICpcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6MTkyOiAqIFNpbWlsYXJseSBATkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVggZmxhZyBjYW4gYmVcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtMTkzLSAqIHNldCBieSBkcml2ZXJzIGluZGljYXRpbmcgb2ZmbG9hZCBzdXBwb3J0IG9mIHRoZSBQVEsvR1RLIEVBUE9MXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD02ODMyPWVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTUtICpcdGFuZCBhc3NvY2lhdGUgY29tbWFuZHMpLCBkb2luZyBpdCBpbiB0aGUgaG9zdCBtaWdodCBub3QgYmUgc3VwcG9ydGVkLlxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo2OTE2OiAqIEBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWDogRGV2aWNlIHdhbnRzIHRvIGRvIGRvaW5nIDQtd2F5XG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTctICpcdGhhbmRzaGFrZSB3aXRoIDgwMi4xWCBpbiBzdGF0aW9uIG1vZGUgKHdpbGwgcGFzcyBFQVAgZnJhbWVzIHRvIHRoZSBob3N0XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTM1LVx0Tkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfUFNLLFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDo3MTM2Olx0Tkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgsXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMzctXHROTDgwMjExX0VYVF9GRUFUVVJFX0ZJTFNfTUFYX0NIQU5ORUxfVElNRSxcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jPTg1Mz1pbnQgd2lwaHlfcmVnaXN0ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSlcbi0tXG5uZXQvd2lyZWxlc3MvY29yZS5jLTk2OC1cdGlmIChXQVJOX09OKHdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksXG5uZXQvd2lyZWxlc3MvY29yZS5jOjk2OTpcdFx0XHRcdFx0ICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSBcdTAwMjZcdTAwMjZcbm5ldC93aXJlbGVzcy9jb3JlLmMtOTcwLVx0XHQgICAgKCFyZGV2LVx1MDAzZW9wcy1cdTAwM2VzZXRfcG1rIHx8ICFyZGV2LVx1MDAzZW9wcy1cdTAwM2VkZWxfcG1rKSkpXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xMzk5NT1zdGF0aWMgaW50IG5sODAyMTFfY29ubmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQwMjMtXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0MDI0Olx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0MDI1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDM0PXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ0Ni1cdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQod2lwaHksXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4NDQ3Olx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDQ4LVx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDc1PXN0YXRpYyBpbnQgbmw4MDIxMV9kZWxfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ4Ni1cdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0ODc6XHRcdFx0XHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSlcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg0ODgtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMjIKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAzOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYYCBmZWF0dXJlIGFuZCBpdCBsb29rcyBsaWtlIGBicmNtZm1hY2AgaXMgdGhlIG9ubHkgZHJpdmVyIHNldHRpbmcgaXQuIExldCBtZSBqdXN0IGNvbmZpcm0gdGhhdCB3aXRoIGEgcXVpY2sgZ3JlcC4uLiB5ZXAsIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY2AgaXMgdGhlIG9ubHkgbWF0Y2guIEp1c3QgdG8gYmUgc3VyZSwgSSBjaGVja2VkIGlmIGBtYWM4MDIxMWAgd2FzIGludm9sdmVkLCBidXQgbm8sIGl0JiMzOTtzIG5vdCBzZXR0aW5nIHRoYXQgZmxhZy4KClRoaXMgbWVhbnMgYG5sODAyMTFfc2V0X3Bta2AgaXMgb25seSByZWFjaGFibGUgd2hlbiB0aGUgYGJyY21mbWFjYCBtb2R1bGUgaXMgbG9hZGVkLiBUaGF0JiMzOTtzIGdvb2QgaW50ZWwuIE5vdywgYGJyY21mbWFjYCBpcyBhIGRyaXZlciBmb3IgQnJvYWRjb20gRnVsbE1BQyBoYXJkd2FyZS4gR2l2ZW4gdGhhdCwgY2FuIHdlIGZ1enogaXQgdmlhIFVTQj8KClRoZSBnb29kIG5ld3MgaXMgdGhhdCBzeXprYWxsZXIgaGFzIFVTQiBmdXp6aW5nIHN1cHBvcnQuIEFuZCwgYSBxdWljayBsb29rIHNob3dzIGBicmNtZm1hY2AgaGFzIGEgVVNCIGRyaXZlciwgYEJSQ01GTUFDX1VTQmAuIEV4Y2VsbGVudC4gTGV0JiMzOTtzIHNlZSBpZiBzeXprYWxsZXIgY2FuIGFjdHVhbGx5ICpyZWFjaCogdGhlIGBicmNtZm1hY2AgY29kZS4gSWYgYEJSQ01GTUFDX1VTQmAgaXMgZW5hYmxlZCwgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGVtdWxhdGUgdGhlIFVTQiBkZXZpY2UsIHdoaWNoIHdpbGwgdHJpZ2dlciBgYnJjbWZfdXNiX3Byb2JlYC4gIFRoYXQgc2hvdWxkLCBpbiB0dXJuLCBjYWxsIGBicmNtZl91c2JfcHJvYmVfY2JgLCB3aGljaCwgSSBiZWxpZXZlLCByZXF1ZXN0cyBmaXJtd2FyZS4KCkFoLCByaWdodCwgYGJyY21mbWFjYCBuZWVkcyBmaXJtd2FyZSB0byBpbml0aWFsaXplLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUuLi4gWWVwLCB0aGVyZSBpdCBpczogIGBicmNtZl9md19nZXRfZmlybXdhcmVzKClgLiAgSWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBwcmVzZW50LCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgbWlnaHQgZmFpbCwgYW5kIHRoZSBkZXZpY2Ugd29uJiMzOTt0IHJlZ2lzdGVyIHdpdGggYGNmZzgwMjExYC4gV2UgbmVlZCB0byBpbnZlc3RpZ2F0ZSBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgdG8gc2VlIGlmIHRoYXQmIzM5O3MgYSBibG9ja2luZyBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3Byb2JlX3BoYXNlMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVx0XHRcdFx0ICAgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKmZ3cmVxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzMDk6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMTAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKFx1MDAyNnVzYi1cdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI4LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2MTUKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCBzdW1tYXJpemVkIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGgga2VybmVsLWxldmVsIFVTQiBkcml2ZXIgZGV2ZWxvcG1lbnQuCgoqKkRpdmluZyBpbnRvIGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAuIFRoZSBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlICpzZWNvbmQqIHBoYXNlIG9mIHRoZSBVU0IgZGV2aWNlIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhpcyBCcm9hZGNvbSBXaS1GaSBhZGFwdGVyLiBTbywgd2UmIzM5O3ZlIGFscmVhZHkgZ290dGVuIHBhc3QgdGhlIGluaXRpYWwgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBwcm9iYWJseSBzb21lIGJhc2ljIHJlc291cmNlIGFsbG9jYXRpb24uIE5vdywgd2UmIzM5O3JlIGxpa2VseSBpbiB0aGUgdGhpY2sgb2YgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uLgoKTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN0ZXBzOiBXZSYjMzk7cmUgcHJvYmFibHkgaGFuZGxpbmcgdGhlIGFjdHVhbCBjb21tdW5pY2F0aW9uIHNldHVwIHdpdGggdGhlIGRldmljZSBoZXJlLiBJcyB0aGlzIHdoZXJlIHdlJiMzOTtyZSBtYXBwaW5nIHRoZSBVU0IgZW5kcG9pbnRzLCBzZXR0aW5nIHVwIHRoZSBVUkJzIChVU0IgUmVxdWVzdCBCbG9ja3MpLCBhbmQgaW5pdGlhbGl6aW5nIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIHRvIHRhbGsgdG8gdGhlIEJyb2FkY29tIGNoaXA/IERlZmluaXRlbHkgZXhwZWN0aW5nIHRvIHNlZSBzb21lIGNyaXRpY2FsIHJlZ2lzdGVyIHdyaXRlcyBhbmQgcmVhZHMuIEFyZSB3ZSBjb25maWd1cmluZyB0aGUgRE1BIChEaXJlY3QgTWVtb3J5IEFjY2VzcykgY2hhbm5lbHMgdG9vPyBQcm9iYWJseS4gR2l2ZW4gdGhlIHRhcmdldCwgSSYjMzk7bSBleHBlY3RpbmcgdG8gZGVhbCB3aXRoIHRoZSBjaGlwJiMzOTtzIGludGVybmFsIGZpcm13YXJlIGxvYWRpbmcgbWVjaGFuaXNtIOKAkyB0aGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgd2hlcmUgdGhlIGRyaXZlciB3b3VsZCBiZSBpbml0aWF0aW5nIHRoZSBmaXJtd2FyZSB1cGxvYWQgYW5kIHdhaXRpbmcgZm9yIHRoZSBjaGlwIHRvIGNvbWUgb25saW5lLiBXaGF0IGFyZSB0aGUgcmV0cnkgbWVjaGFuaXNtcyBpZiB0aGUgZmlybXdhcmUgbG9hZCBmYWlscz8gVmVyeSBpbXBvcnRhbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB3ZSBhcmUgZGVhbGluZyB3aXRoIHBvd2VyIG1hbmFnZW1lbnQgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwaGFzZS4gQXJlIHdlIHRlbXBvcmFyaWx5IGVuYWJsaW5nIGFueSBoaWdoLXBvd2VyIG1vZGVzPyBIb3cgYXJlIHdlIGhhbmRsaW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBhY2Nlc3NpbmcgdGhlIFVTQiBidXM/IE15IGZvY3VzIGlzIGVzcGVjaWFsbHkgZGlyZWN0ZWQgdG93YXJkIHBvdGVudGlhbCBib3R0bGVuZWNrcyBpbiB0aGUgZGF0YSB0cmFuc2ZlciBhbmQgZW5zdXJpbmcgYSByb2J1c3Qgc29sdXRpb24uIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGF2ZSBoYW5kbGVkIGFueSBoYXJkd2FyZSBxdWlya3M7IHNvbWUgQnJvYWRjb20gY2hpcHMgYXJlIG5vdG9yaW91cyBmb3IgaGF2aW5nLi4uIGludGVyZXN0aW5nLi4uIGhhcmR3YXJlIGJlaGF2aW9yLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNzYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE3NjpcdHN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxuMTE3NzpcdFx0XHRcdFx0ICAgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKmZ3cmVxKVxuMTE3ODpcdHtcbjExNzk6XHRcdHN0cnVjdCBicmNtZl9idXMgKmJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuMTE4MDpcdFx0c3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvID0gYnVzLVx1MDAzZWJ1c19wcml2LnVzYi1cdTAwM2VkZXZpbmZvO1xuMTE4MTpcdFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICpmdztcbjExODI6XHRcbjExODM6XHRcdGlmIChyZXQpXG4xMTg0Olx0XHRcdGdvdG8gZXJyb3I7XG4xMTg1Olx0XG4xMTg2Olx0XHRicmNtZl9kYmcoVVNCLCBcJiMzNDtTdGFydCBmdyBkb3dubG9hZGluZ1xcblwmIzM0Oyk7XG4xMTg3Olx0XG4xMTg4Olx0XHRmdyA9IGZ3cmVxLVx1MDAzZWl0ZW1zW0JSQ01GX1VTQl9GV19DT0RFXS5iaW5hcnk7XG4xMTg5Olx0XHRrZnJlZShmd3JlcSk7XG4xMTkwOlx0XG4xMTkxOlx0XHRyZXQgPSBjaGVja19maWxlKGZ3LVx1MDAzZWRhdGEpO1xuMTE5MjpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuMTE5MzpcdFx0XHRicmNtZl9lcnIoXCYjMzQ7aW52YWxpZCBmaXJtd2FyZVxcblwmIzM0Oyk7XG4xMTk0Olx0XHRcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xuMTE5NTpcdFx0XHRnb3RvIGVycm9yO1xuMTE5NjpcdFx0fVxuMTE5NzpcdFxuMTE5ODpcdFx0ZGV2aW5mby1cdTAwM2VpbWFnZSA9IGZ3LVx1MDAzZWRhdGE7XG4xMTk5Olx0XHRkZXZpbmZvLVx1MDAzZWltYWdlX2xlbiA9IGZ3LVx1MDAzZXNpemU7XG4xMjAwOlx0XG4xMjAxOlx0XHRyZXQgPSBicmNtZl91c2JfZndfZG93bmxvYWQoZGV2aW5mbyk7XG4xMjAyOlx0XHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbjEyMDM6XHRcdGlmIChyZXQpXG4xMjA0Olx0XHRcdGdvdG8gZXJyb3I7XG4xMjA1Olx0XG4xMjA2Olx0XHRyZXQgPSBicmNtZl9hbGxvYyhkZXZpbmZvLVx1MDAzZWRldiwgZGV2aW5mby1cdTAwM2VzZXR0aW5ncyk7XG4xMjA3Olx0XHRpZiAocmV0KVxuMTIwODpcdFx0XHRnb3RvIGVycm9yO1xuMTIwOTpcdFxuMTIxMDpcdFx0LyogQXR0YWNoIHRvIHRoZSBjb21tb24gZHJpdmVyIGludGVyZmFjZSAqL1xuMTIxMTpcdFx0cmV0ID0gYnJjbWZfYXR0YWNoKGRldmluZm8tXHUwMDNlZGV2KTtcbjEyMTI6XHRcdGlmIChyZXQpXG4xMjEzOlx0XHRcdGdvdG8gZXJyb3I7XG4xMjE0Olx0XG4xMjE1Olx0XHRjb21wbGV0ZShcdTAwMjZkZXZpbmZvLVx1MDAzZWRldl9pbml0X2RvbmUpO1xuMTIxNjpcdFx0cmV0dXJuO1xuMTIxNzpcdGVycm9yOlxuMTIxODpcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtmYWlsZWQ6IGRldj0lcywgZXJyPSVkXFxuXCYjMzQ7LCBkZXZfbmFtZShkZXYpLCByZXQpO1xuMTIxOTpcdFx0Y29tcGxldGUoXHUwMDI2ZGV2aW5mby1cdTAwM2VkZXZfaW5pdF9kb25lKTtcbjEyMjA6XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihkZXYpO1xuMTIyMTpcdH1cbjEyMjI6XHRcbjEyMjM6XHRzdGF0aWMgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKlxuMTIyNDpcdGJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuMTIyNTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg3OTQKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxMDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYWNoaW5nIHRoZSBDb2RlIGFuZCBXb3J0aEZ1enppbmcqKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IG9yIG5vdC4gVGhlIGtleSBpcyB3aGV0aGVyIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgZnV6emluZyBlbnZpcm9ubWVudC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBpcyBpbnZvbHZlZCwgYW5kIHRoYXQmIzM5O3MgdXN1YWxseSBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIuIEFuZCBpdCBleHBsaWNpdGx5IG5lZWRzIGZpcm13YXJlLiBTbyB0aGUgYGJyY21mbWFjYCBjb2RlIHBhdGggd291bGQgbm9ybWFsbHkgYmUgYSBwcm9ibGVtIGZvciBmdXp6aW5nIGluIGEgc3RhbmRhcmQgU3l6a2FsbGVyIGVudmlyb25tZW50IGJlY2F1c2Ugd2Ugb2Z0ZW4gZG9uJiMzOTt0IGluY2x1ZGUgdGhhdCBmaXJtd2FyZSBpbiB0aGUgdGVzdCBpbWFnZS4KCkhvd2V2ZXIsIFN5emthbGxlciAqY2FuKiBwcm92aWRlIGZpcm13YXJlIGlmIGl0IGlzIGJ1aWx0IGluLgoKQnV0LCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgd2Ugc2hvdWxkIGF2b2lkIGxvb2tpbmcgYXQgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMsIG9yIGRyaXZlcnMgdGhhdCByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlLgoKQnV0IHRoZW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgd2hpY2ggaXMgY29yZSBrZXJuZWwgd2lyZWxlc3MgbG9naWMuIFRoYXQgaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGluZ3MuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBkcml2ZXItc3BlY2lmaWMgY2hhbmdlIGFueW1vcmUuCgpUaGUgY2hhbmdlIGluIGBubDgwMjExLmNgIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsLiBUaGlzIGlzIGdvb2QgbmV3cywgYXMgaXQgcG90ZW50aWFsbHkgd2lkZW5zIHRoZSBhcHBsaWNhYmlsaXR5IG9mIHRoZSBwYXRjaC4gVGhlIHJlbGV2YW50IGNvZGUgaXMgb25seSByZWFjaGFibGUgaWYgYSBkcml2ZXIgc2V0cyB0aGUgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBvciBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGZsYWdzLgoKU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiB3aGljaCBkcml2ZXJzIHNldCB0aGVzZSBmZWF0dXJlcz8gSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAsIGFuZCBmb3VuZCB0aGF0IGl0JiMzOTtzICpvbmx5KiBzZXQgYnkgYGJyY21mbWFjL2NmZzgwMjExLmNgLiBBbmQgSSBhbHNvIGdyZXBwZWQgZm9yIGBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWGAgYW5kIGZvdW5kIHRoYXQgaXQgaXMgb25seSBzZXQgYnkgYGJyY21mbWFjL2NmZzgwMjExLmNgIGFzIHdlbGwuIFRoYXQgbWVhbnMgdGhpcyBwYXRoIGlzLCBhdCBsZWFzdCBkaXJlY3RseSwgb25seSByZWFjaGFibGUgYnkgdGhlIGBicmNtZm1hY2AgZHJpdmVyLgoKSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSAqb3RoZXIqIHBsYWNlcyB3aGVyZSB0aGlzIGZlYXR1cmUgZmxhZyBpcyBzZXQuIEV2ZW4gYSBicmllZiBsb29rIGluIHRoZSBgbmV0L3dpcmVsZXNzL2AgZGlyZWN0b3J5IG1pZ2h0IGJlIHdvcnRoIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz03NzU4PXN0YXRpYyBpbnQgYnJjbWZfc2V0dXBfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IGJyY21mX2lmICppZnApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgxOC1cdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgxOTpcdFx0XHRcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MjAtXHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTk4CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVnVsbmVyYWJpbGl0eSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGZsYWcgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBubDgwMjExX3NldF9wbWtgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBzZXRzIHRoYXQgZmxhZy4gU28sIHRoYXQgbWVhbnMgYG5sODAyMTFfc2V0X3Bta2AgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgYnJjbWZtYWNgIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIGBicmNtZm1hY2AgZXZlbiBiZSBpbml0aWFsaXplZCB3aXRoaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudD8KClJlbWVtYmVyaW5nIGhvdyBzeXprYWxsZXIgb3BlcmF0ZXMsIGl0IHR5cGljYWxseSB1c2VzIGBtYWM4MDIxMV9od3NpbWAgZm9yIGl0cyBXaS1GaSBmdXp6aW5nIGVmZm9ydHMuIEl0IGRvZXNuJiMzOTt0IHVzZSBgYnJjbWZtYWNgLiBFdmVuIGlmIHRoZXJlIHdlcmUgc29tZSBVU0IgZnV6emluZyBjb25maWd1cmF0aW9uLCBgYnJjbWZtYWNgIHNwZWNpZmljYWxseSBuZWVkcyBmaXJtd2FyZSB0byBpbml0aWFsaXplIGNvcnJlY3RseS4gTm93IEkmIzM5O20gcmVjYWxsaW5nIHRoZSBjb2RlIHBhdGguLi4gSWYgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgIGZhaWxzIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIGJhaWxzIG91dCwgY2FsbGluZyBgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRldilgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIERvZXMgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgICphY3R1YWxseSogZmFpbCBpbiBzeXprYWxsZXI/IEkgbmVlZCB0byBjaGVjay4gSXQmIzM5O3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgc3l6a2FsbGVyIGltYWdlcyBkb24mIzM5O3QgaW5jbHVkZSB0aGUgbmVjZXNzYXJ5IEJyb2FkY29tIGZpcm13YXJlLCBhbmQgdGhpcyB3b3VsZCBleHBsYWluIHRoZSBvYnNlcnZlZCBiZWhhdmlvci4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYnJjbWZfZndfZ2V0X2Zpcm13YXJlc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2Z3X2dldF9maXJtd2FyZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jPTc0MT1zdGF0aWMgYm9vbCBicmNtZl9md19yZXF1ZXN0X2lzX3ZhbGlkKHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmMtNzU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmM6NzU2OmludCBicmNtZl9md19nZXRfZmlybXdhcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKnJlcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jLTc1Ny1cdFx0XHQgICB2b2lkICgqZndfY2IpKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGVycixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmlybXdhcmUuaD04MT1icmNtZl9md19hbGxvY19yZXF1ZXN0KHUzMiBjaGlwLCB1MzIgY2hpcHJldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmlybXdhcmUuaC05MC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oOjkxOmludCBicmNtZl9md19nZXRfZmlybXdhcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKnJlcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oLTkyLVx0XHRcdCAgIHZvaWQgKCpmd19jYikoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgZXJyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MTU1MD1zdGF0aWMgaW50IGJyY21mX3BjaWVfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTU3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTU3NTpcdGVyciA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfcGNpZV9zZXR1cCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTE1NzYtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1NTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1NTc6XHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGJ1cy1cdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl9wY2llX3NldHVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU1OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jPTQ0NDk9aW50IGJyY21mX3NkaW9fcHJvYmUoc3RydWN0IGJyY21mX3NkaW9fZGV2ICpzZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMtNDU0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM6NDU0NzpcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc2Rpb2Rldi1cdTAwM2VkZXYsIGZ3cmVxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYy00NTQ4LVx0XHRcdFx0ICAgICBicmNtZl9zZGlvX2Zpcm13YXJlX2NhbGxiYWNrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDgtXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA5Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzEwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTE0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI3Olx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcdTAwMjZ1c2ItXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyOC1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNjA4CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogNDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgIHVzZXMgYHJlcXVlc3RfZmlybXdhcmVfbm93YWl0YC4gVGhpcyBtZWFucyB0aGF0IGlmIHRoZSBmaXJtd2FyZSBpc24mIzM5O3QgcHJlc2VudCwgdGhlIGNhbGxiYWNrIHdpbGwgZXZlbnR1YWxseSByZXBvcnQgYW4gZXJyb3Igb3IgYSBOVUxMIGZpcm13YXJlIHN0cnVjdC4gVGhpcywgaW4gdHVybiwgd2lsbCBjYXVzZSBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgdG8gZmFpbCBkdWUgdG8gdGhlIGBpZiAocmV0KWAgY2hlY2suCgpOb3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcHJvdmlkZSB0aGlzIGZpcm13YXJlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBhIGZlYXR1cmUgZm9yIGZpcm13YXJlLCBidXQgaXQgdXN1YWxseSBkb2VzbiYjMzk7dCB3b3JrIGZvciBCcm9hZGNvbSBiZWNhdXNlIHRoZSBmaXJtd2FyZSBpcyBtYXNzaXZlIGFuZCBwcm9wcmlldGFyeS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEFuZCBpdCBzZWVtcyBsaWtlIHRoaXMgZmFsbHMgdW5kZXIgdGhhdCBjYXRlZ29yeSwgc2luY2UgYGJyY21mbWFjYCBpcyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIGFuZCByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBmaXJtd2FyZSBhbmQgbGlrZWx5IHBoeXNpY2FsIGhhcmR3YXJlLCB1bmxlc3MgZW11bGF0ZWQuCgpTbywgaXMgYGJyY21mbWFjYCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IFllcywgaXQmIzM5O3MgZXhwbGljaXRseSBmb3IgQnJvYWRjb20gRnVsbE1BQyBjaGlwcy4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgZmlybXdhcmUgYW5kIGhhcmR3YXJlIHRvIGZ1bmN0aW9uIHByb3Blcmx5LgoKT2theSwgYnV0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBEb2VzIGFub3RoZXIgZHJpdmVyIHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgPyBObywgd2UgY2hlY2tlZC4gT25seSBgYnJjbWZtYWNgIHNldHMgaXQuIFRoaXMgbWVhbnMgdGhlIGNoYW5nZSBpbiBgbmw4MDIxMS5jYCBpcyBlZmZlY3RpdmVseSBkZWFkIGNvZGUgdW5sZXNzIGBicmNtZm1hY2AgbG9hZHMgYW5kIGluaXRpYWxpemVzIHN1Y2Nlc3NmdWxseS4gQW5kIHRoYXQmIzM5O3MgaGlnaGx5IHVubGlrZWx5IGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBjb3JyZWN0IEJyb2FkY29tIGZpcm13YXJlLgoKVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHNob3VsZCBxdWlja2x5IGNoZWNrIGlmIGBtYWM4MDIxMV9od3NpbWAgc2V0cyB0aGlzIHNwZWNpZmljIGZlYXR1cmUsIGJ1dCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMjI6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU5NQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlLCB3aXRoIGEgbm9kIHRvIHRoZSBmYWN0IHRoYXQgSSYjMzk7bSBvcGVyYXRpbmcgd2l0aGluIGFuIGFyZWEgSSBrbm93IHdlbGw6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNvdXJjZSBvZiB0aGUgU2V0dGluZyoqCgpSaWdodCwgc28sIHRoZSBpbml0aWFsIGFzc3VtcHRpb24gSSBoYWQsIHRoYXQgYG1hYzgwMjExX2h3c2ltYCB3YXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIHRoaW5nIGluIHF1ZXN0aW9uLCBpc24mIzM5O3QgaG9sZGluZyB3YXRlci4gTmVlZCB0byBnbyBiYWNrIGFuZCByZWFzc2Vzcy4gVGhhdCBhdmVudWUgaXMgY2xlYXJseSBhIGRlYWQgZW5kLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjaywgdGFrZSBhIGJyZWF0aCwgYW5kIGZvY3VzLiBJZiBpdCYjMzk7cyAqbm90KiBpbiB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBsYXllciwgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHBsYWNlIHRvIGRpZyBpcyB0aGUgYG1hYzgwMjExYCBjb3JlIGl0c2VsZi4gVGhhdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIFdpRmkgc3RhY2sgaW4gdGhpcyBzY2VuYXJpby4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQgd2hlcmUgdGhlc2Uga2luZHMgb2YgY29uZmlndXJhdGlvbnMgYW5kIG9wZXJhdGlvbnMgYXJlIG1hbmFnZWQuIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBjb3JlIGZ1bmN0aW9ucywgbG9vayBmb3IgY2FsbHMgcmVsYXRlZCB0byB0aGUgcmVsZXZhbnQgcGFyYW1ldGVyLCBhbmQgc2VlIHdoZXJlIGFuZCAqaG93KiB0aGlzIHNwZWNpZmljIHNldHRpbmcgaXMgdWx0aW1hdGVseSBiZWluZyBoYW5kbGVkLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIGtub3dsZWRnZSBvZiB0aGUgY29yZSB0byBkaWcgaW50byB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDIyOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTE3CgkJCQkJCQlvdXRwdXQ6IDIwMAoJCQkJCQkJdGhvdWdodHM6IDg3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIGEgVmVuZG9yLVNwZWNpZmljIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYG1hYzgwMjExYCBjb3JlIGRvZXNuJiMzOTt0IHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgLCB3aGljaCBtZWFucyBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gQnJvYWRjb20gY2hpcHMsIHNldHMgdGhpcyBmZWF0dXJlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB1c2luZyBzeXprYWxsZXImIzM5O3MgVVNCIGdhZGdldCBlbXVsYXRpb24/CgpJIGNhbiB1c2UgYHN5el91c2JfY29ubmVjdGAgdG8gZW11bGF0ZSBhIFVTQiBkZXZpY2UuIElmIEkgZ2l2ZSBpdCB0aGUgY29ycmVjdCB2ZW5kb3IvcHJvZHVjdCBJRHMsIHRoZSBrZXJuZWwgc2hvdWxkIGJpbmQgdGhlIGBicmNtZm1hY2AgVVNCIGRyaXZlciB0byB0aGUgZW11bGF0ZWQgZGV2aWNlLiBUaGF0IHRyaWdnZXJzIGByZXF1ZXN0X2Zpcm13YXJlYC4gSG93ZXZlciwgaWYgdGhlIGZpcm13YXJlIGlzbiYjMzk7dCBpbiB0aGUgcm9vdGZzLCB3aGljaCBpcyBsaWtlbHksIGByZXF1ZXN0X2Zpcm13YXJlYCBmYWlscywgdGhlIGRyaXZlciBwcm9iZSBmYWlscywgdGhlIGB3aXBoeWAgaXNuJiMzOTt0IHJlZ2lzdGVyZWQsIGFuZCB0aGUgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGlzIG5ldmVyIGV4cG9zZWQgdG8gYG5sODAyMTFgLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGluIGBubDgwMjExLmNgIGFuZCBgYnJjbWZtYWMvY2ZnODAyMTEuY2AgYmVjb21lcyB1bnJlYWNoYWJsZS4KCkRvZXMgc3l6a2FsbGVyIHByb3ZpZGUgZmlybXdhcmUgZm9yIGBicmNtZm1hY2A/IE15IGluc3RpbmN0IHNheXMgaXQgcHJvYmFibHkgZG9lc24mIzM5O3QsIHVzdWFsbHkgc3l6a2FsbGVyIG9ubHkgaGFzIGZpcm13YXJlIGZvciBhIGZldyBzcGVjaWZpYyBkcml2ZXJzLCBsaWtlIGBhdGg5a19odGNgIG9yIGBjYXJsOTE3MGAuIEkmIzM5O2QgbmVlZCB0byBjb25maXJtIGRpcmVjdGx5LCBidXQgcHJhY3RpY2FsbHksIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXJzIHRoYXQgcmVseSBvbiBmaXJtd2FyZSBhcmUgcmFyZWx5IHN1Y2Nlc3NmdWxseSBmdXp6ZWQgYmV5b25kIHRoZSBwcm9iZSBmYWlsdXJlLgoKVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgaW52b2x2ZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB0aGF0IGluY2x1ZGVzIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBwYXRjaCBwcmltYXJpbHkgaW1wYWN0cyBgYnJjbWZtYWNgIOKAkyBhIHZlbmRvci1zcGVjaWZpYyBXaS1GaSBkcml2ZXIsIHdpdGggY2hhbmdlcyBtb3N0bHkgaW4gYGJyY21mbWFjL2NmZzgwMjExLmNgLiBUaGUgY2hhbmdlIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCBpcyBqdXN0IG9uZSBsaW5lIHdoaWNoIG9ubHkgZW5hYmxlcyBgbmw4MDIxMV9zZXRfcG1rYCBpZiBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGlzIHNldCwgYW5kIGl0JiMzOTtzIHNldCBieSBgYnJjbWZtYWNgLCB0aGUgYG5sODAyMTEuY2AgY2hhbmdlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGFzIHdlbGwuCgpMZXQmIzM5O3MgZG91YmxlIGNoZWNrIGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYC4gWWVzLCBpdCAqYWJzb2x1dGVseSogcmVxdWlyZXMgZmlybXdhcmUuIFRoZXJlJiMzOTtzIG5vIG9idmlvdXMgd2F5IGFyb3VuZCB0aGF0OyB0aGUgY29kZSBjaGVja3MgZm9yIGZpcm13YXJlIGxvYWRpbmcgZmFpbHVyZXMuIFNvLCB3aXRob3V0IGZpcm13YXJlLCB0aGUgcHJvYmUgZmFpbHMuIFRoZSBgd2lwaHlgIGRvZXNuJiMzOTt0IHJlZ2lzdGVyLCBhbmQgdGhlIHJlbGF0ZWQgYG5sODAyMTFgIGNvZGUgaXMgaW5hY2Nlc3NpYmxlLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGF0IGl0JiMzOTtzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciAoYGJyY21mbWFjYCkgdGhhdCBuZWVkcyB1bmF2YWlsYWJsZSBoYXJkd2FyZS9maXJtd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHRoYXQgdGhlIGNvcmUga2VybmVsIGNoYW5nZXMgaW4gYG5sODAyMTEuY2AgaXMgb25seSByZWFjaGVkIHRocm91Z2ggc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHNwZWNpZmljIGRyaXZlciwgdGhpcyBwYXRjaCBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHByaW1hcmlseSBtb2RpZmllcyB0aGUgYnJjbWZtYWMgZHJpdmVyIChhIHZlbmRvci1zcGVjaWZpYyBCcm9hZGNvbSB3aXJlbGVzcyBkcml2ZXIpIHRvIGFkZCBGYXN0IFRyYW5zaXRpb24gKEZCVCkgYW5kIE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgKE9LQykgcm9hbWluZyBvZmZsb2FkIHN1cHBvcnQuIEl0IGFsc28gYWRkcyBhIG1pbm9yIGNoZWNrIGluIHRoZSBjb3JlIG5sODAyMTEgY29kZSB0byBhbGxvdyBzZXR0aW5nIFBNSyBpZiB0aGUgbmV3IE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEIGZsYWcgaXMgc2V0LiBIb3dldmVyLCB0aGlzIGZsYWcgaXMgZXhjbHVzaXZlbHkgc2V0IGJ5IHRoZSBicmNtZm1hYyBkcml2ZXIuIFNpbmNlIGJyY21mbWFjIHJlcXVpcmVzIHNwZWNpZmljIEJyb2FkY29tIGhhcmR3YXJlIG9yIGZpcm13YXJlIChldmVuIHdoZW4gcHJvYmVkIHZpYSBVU0IgZ2FkZ2V0LCBpdCBmYWlscyBkdXJpbmcgcmVxdWVzdF9maXJtd2FyZSBpZiB0aGUgcHJvcHJpZXRhcnkgZmlybXdhcmUgaXMgbWlzc2luZyksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGluIGJvdGggdGhlIGRyaXZlciBhbmQgbmw4MDIxMSBjYW5ub3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAyMjowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6MjYuNDk4Mzg4MTE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgzODY5NDY0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwcmltYXJpbHkgbW9kaWZpZXMgdGhlIGJyY21mbWFjIGRyaXZlciAoYSB2ZW5kb3Itc3BlY2lmaWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyKSB0byBhZGQgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCBzdXBwb3J0LiBJdCBhbHNvIGFkZHMgYSBtaW5vciBjaGVjayBpbiB0aGUgY29yZSBubDgwMjExIGNvZGUgdG8gYWxsb3cgc2V0dGluZyBQTUsgaWYgdGhlIG5ldyBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmbGFnIGlzIHNldC4gSG93ZXZlciwgdGhpcyBmbGFnIGlzIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgYnJjbWZtYWMgZHJpdmVyLiBTaW5jZSBicmNtZm1hYyByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSBvciBmaXJtd2FyZSAoZXZlbiB3aGVuIHByb2JlZCB2aWEgVVNCIGdhZGdldCwgaXQgZmFpbHMgZHVyaW5nIHJlcXVlc3RfZmlybXdhcmUgaWYgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGlzIG1pc3NpbmcpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBib3RoIHRoZSBkcml2ZXIgYW5kIG5sODAyMTEgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjI2LjQ5ODM5MzQxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3OTQyNjIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJiODdhZDFmMGE1OGRlNTM2ODY2NmYzNmQ0MDAwOGQwYjgxZDVhMTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMjQgMjI6MDY6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbmluZGV4IDg3MmM0ODgwNmQwOTEuLjZhOTdiZTMxNDlmYzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbkBAIC0yMTEyLDkgKzIxMTIsMTEgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IGlmcC1cXHUwMDNlZHJ2cjtcXG4gXFx0czMyIHZhbDtcXG4gXFx0czMyIGVycjtcXG4rXFx0czMyIG9rY19lbmFibGU7XFxuIFxcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcXG4gXFx0Y29uc3QgdTggKmllO1xcbiBcXHR1MzIgaWVfbGVuO1xcbitcXHRib29sIGZ3c3VwX3JvYW07XFxuIFxcdHUzMiBvZmZzZXQ7XFxuIFxcdHUxNiByc25fY2FwO1xcbiBcXHR1MzIgbWZwO1xcbkBAIC0yMTIyLDYgKzIxMjQsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxcbiBcXG4gXFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FO1xcbiBcXHRwcm9maWxlLVxcdTAwM2Vpc19mdCA9IGZhbHNlO1xcbitcXHRwcm9maWxlLVxcdTAwM2Vpc19va2MgPSBmYWxzZTtcXG4rXFx0ZndzdXBfcm9hbSA9IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfRkJUKSB8fFxcbitcXHRcXHQgICAgIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfT0tDKTtcXG4gXFxuIFxcdGlmICghc21lLVxcdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG5AQCAtMjEzOCw2ICsyMTQzLDggQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0XFx0XFx0dmFsID0gV1BBX0FVVEhfVU5TUEVDSUZJRUQ7XFxuIFxcdFxcdFxcdGlmIChzbWUtXFx1MDAzZXdhbnRfMXgpXFxuIFxcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXFxuK1xcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOlxcbiBcXHRcXHRcXHR2YWwgPSBXUEFfQVVUSF9QU0s7XFxuQEAgLTIxNTMsMTEgKzIxNjAsMTUgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFx0XFx0XFx0dmFsID0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEO1xcbiBcXHRcXHRcXHRpZiAoc21lLVxcdTAwM2V3YW50XzF4KVxcbiBcXHRcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYO1xcbitcXHRcXHRcXHRlbHNlIGlmIChmd3N1cF9yb2FtKVxcbitcXHRcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIFdMQU5fQUtNX1NVSVRFXzgwMjFYX1NIQTI1NjpcXG4gXFx0XFx0XFx0dmFsID0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcXG4gXFx0XFx0XFx0aWYgKHNtZS1cXHUwMDNld2FudF8xeClcXG4gXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDtcXG4rXFx0XFx0XFx0ZWxzZSBpZiAoZndzdXBfcm9hbSlcXG4rXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9QU0tfU0hBMjU2OlxcbiBcXHRcXHRcXHR2YWwgPSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcXG5AQCAtMjE3MCwxMCArMjE4MSwxNiBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxcbiBcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2Vpc19mdCA9IHRydWU7XFxuIFxcdFxcdFxcdGlmIChzbWUtXFx1MDAzZXdhbnRfMXgpXFxuIFxcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXFxuK1xcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfRlRfUFNLOlxcbiBcXHRcXHRcXHR2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUO1xcbiBcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2Vpc19mdCA9IHRydWU7XFxuK1xcdFxcdFxcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSlcXG4rXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuK1xcdFxcdFxcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXFxuK1xcdFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDpcXG4gXFx0XFx0XFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xcbkBAIC0yMjA0LDggKzIyMjEsMjIgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4gXFxuIFxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWClcXG4gXFx0XFx0YnJjbWZfZGJnKElORk8sIFxcXCJ1c2luZyAxWCBvZmZsb2FkXFxcXG5cXFwiKTtcXG4rXFxuK1xcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxcbitcXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTSkge1xcbitcXHRcXHRlcnIgPSBicmNtZl9maWxfYnNzY2ZnX2ludF9nZXQoaWZwLCBcXFwib2tjX2VuYWJsZVxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2b2tjX2VuYWJsZSk7XFxuK1xcdFxcdGlmIChlcnIpIHtcXG4rXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImdldCBva2NfZW5hYmxlIGZhaWxlZCAoJWQpXFxcXG5cXFwiLCBlcnIpO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcIm9rY19lbmFibGUgKCVkKVxcXFxuXFxcIiwgb2tjX2VuYWJsZSk7XFxuK1xcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZWlzX29rYyA9IG9rY19lbmFibGU7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbiBcXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKVxcbiBcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFNBRSBvZmZsb2FkXFxcXG5cXFwiKTtcXG4rXFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU0pXFxuK1xcdFxcdGJyY21mX2RiZyhJTkZPLCBcXFwidXNpbmcgcm9hbWluZyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4gXFxuIFxcdGlmICghYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9NRlApKVxcbiBcXHRcXHRnb3RvIHNraXBfbWZwX2NvbmZpZztcXG5AQCAtMjQ5NCwxMyArMjUyNSwxNCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXG4gXFx0XFx0aWYgKHNtZS1cXHUwMDNlY3J5cHRvLnBzayBcXHUwMDI2XFx1MDAyNiAhaXNfc2FlX2FrbSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XFxuLVxcdFxcdFxcdGlmIChXQVJOX09OKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPVxcbi1cXHRcXHRcXHRcXHQgICAgQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xcbitcXHRcXHRcXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFBTSyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuK1xcdFxcdFxcdH0gZWxzZSBpZiAoV0FSTl9PTihwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT1cXG4rXFx0XFx0XFx0XFx0XFx0ICAgQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spKSB7XFxuIFxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRicmNtZl9kYmcoSU5GTywgXFxcInVzaW5nIFBTSyBvZmZsb2FkXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0cHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcXG4gXFx0XFx0XFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXFxuQEAgLTU5NTMsMTcgKzU5ODUsMjkgQEAgc3RhdGljIGludCBicmNtZl9jZmc4MDIxMV9zZXRfcG1rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Bta19jb25mICpjb25mKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xcbitcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiZW50ZXJcXFxcblxcXCIpO1xcbiBcXG4tXFx0LyogZXhwZWN0IHVzaW5nIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIDFYICovXFxuIFxcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdGlmIChXQVJOX09OKGlmcC1cXHUwMDNldmlmLVxcdTAwM2Vwcm9maWxlLnVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYKSlcXG4rXFx0ZHJ2ciA9IGlmcC1cXHUwMDNlZHJ2cjtcXG4rXFx0aWYgKFdBUk5fT04oaWZwLVxcdTAwM2V2aWYtXFx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZS5pc19mdCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgIWlmcC1cXHUwMDNldmlmLVxcdTAwM2Vwcm9maWxlLmlzX29rYykpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4gXFx0aWYgKGNvbmYtXFx1MDAzZXBta19sZW4gXFx1MDAzZSBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKVxcbiBcXHRcXHRyZXR1cm4gLUVSQU5HRTtcXG4gXFxuK1xcdGlmIChpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZS5pc19va2MpIHtcXG4rXFx0XFx0cmV0ID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcIm9rY19pbmZvX3Bta1xcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBjb25mLVxcdTAwM2VwbWssIGNvbmYtXFx1MDAzZXBta19sZW4pO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIm9rY19pbmZvX3BtayBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IHJldCk7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiBicmNtZl9zZXRfcG1rKGlmcCwgY29uZi1cXHUwMDNlcG1rLCBjb25mLVxcdTAwM2VwbWtfbGVuKTtcXG4gfVxcbiBcXG5AQCAtNjQyMiw2ICs2NDY2LDQ3IEBAIHN0YXRpYyBzMzIgYnJjbWZfZ2V0X2Fzc29jX2llcyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl9oYXNfcG1raWQoY29uc3QgdTggKnBhcnNlLCB1MzIgbGVuKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcXG4rXFx0Y29uc3QgdTggKmllO1xcbitcXHR1MzIgaWVfbGVuO1xcbitcXHR1MzIgb2Zmc2V0O1xcbitcXHR1MTYgY291bnQ7XFxuK1xcbitcXHRpZiAoIXBhcnNlKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRyc25faWUgPSBicmNtZl9wYXJzZV90bHZzKHBhcnNlLCBsZW4sIFdMQU5fRUlEX1JTTik7XFxuK1xcdGlmICghcnNuX2llKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRpZSA9IChjb25zdCB1OCAqKXJzbl9pZTtcXG4rXFx0aWVfbGVuID0gcnNuX2llLVxcdTAwM2VsZW4gKyBUTFZfSERSX0xFTjtcXG4rXFxuK1xcdG9mZnNldCA9IFRMVl9IRFJfTEVOICsgV1BBX0lFX1ZFUlNJT05fTEVOICsgV1BBX0lFX01JTl9PVUlfTEVOO1xcbitcXHRpZiAob2Zmc2V0ICsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcXHUwMDNlPSBpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGNvdW50ID0gaWVbb2Zmc2V0XSArIChpZVtvZmZzZXQgKyAxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFx0b2Zmc2V0ICs9IFdQQV9JRV9TVUlURV9DT1VOVF9MRU4gKyBjb3VudCAqIFdQQV9JRV9NSU5fT1VJX0xFTjtcXG4rXFx0aWYgKG9mZnNldCArIFdQQV9JRV9TVUlURV9DT1VOVF9MRU4gXFx1MDAzZT0gaWVfbGVuKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRjb3VudCA9IGllW29mZnNldF0gKyAoaWVbb2Zmc2V0ICsgMV0gXFx1MDAzY1xcdTAwM2MgOCk7XFxuK1xcdG9mZnNldCArPSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICsgY291bnQgKiBXUEFfSUVfTUlOX09VSV9MRU47XFxuK1xcdGlmIChvZmZzZXQgKyBSU05fQ0FQX0xFTiBcXHUwMDNlPSBpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdG9mZnNldCArPSBSU05fQ0FQX0xFTjtcXG4rXFx0aWYgKG9mZnNldCArIFJTTl9QTUtJRF9DT1VOVF9MRU4gXFx1MDAzZSBpZV9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGNvdW50ID0gaWVbb2Zmc2V0XSArIChpZVtvZmZzZXQgKyAxXSBcXHUwMDNjXFx1MDAzYyA4KTtcXG4rXFxuK1xcdHJldHVybiBjb3VudCBcXHUwMDNlIDA7XFxuK31cXG4rXFxuIHN0YXRpYyBzMzJcXG4gYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuQEAgLTY0MzYsNiArNjUyMSw3IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4gXFx0c3RydWN0IGJyY21mX2Jzc19pbmZvX2xlICpiaTtcXG4gXFx0c3RydWN0IGJyY211X2NoYW4gY2g7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9yb2FtX2luZm8gcm9hbV9pbmZvID0ge307XFxuK1xcdGJvb2wgYXV0aG9yaXplZCA9IGZhbHNlO1xcbiBcXHR1MzIgZnJlcTtcXG4gXFx0czMyIGVyciA9IDA7XFxuIFxcdHU4ICpidWY7XFxuQEAgLTY0ODIsMTQgKzY1NjgsMTggQEAgYnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRyb2FtX2luZm8ucmVzcF9pZSA9IGNvbm5faW5mby1cXHUwMDNlcmVzcF9pZTtcXG4gXFx0cm9hbV9pbmZvLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXNwX2llX2xlbjtcXG4gXFxuK1xcdGlmICgocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHxcXG4rXFx0ICAgICBwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgKGJyY21mX2hhc19wbWtpZChyb2FtX2luZm8ucmVxX2llLCByb2FtX2luZm8ucmVxX2llX2xlbikgfHxcXG4rXFx0ICAgICBwcm9maWxlLVxcdTAwM2Vpc19mdCB8fCBwcm9maWxlLVxcdTAwM2Vpc19va2MpKVxcbitcXHRcXHRhdXRob3JpemVkID0gdHJ1ZTtcXG4rXFxuIFxcdGNmZzgwMjExX3JvYW1lZChuZGV2LCBcXHUwMDI2cm9hbV9pbmZvLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKGF1dGhvcml6ZWQpXFxuK1xcdFxcdGNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLVxcdTAwM2Vic3NpZCwgTlVMTCwgMCxcXG4rXFx0XFx0XFx0XFx0XFx0IEdGUF9LRVJORUwpO1xcbiBcXHRicmNtZl9kYmcoQ09OTiwgXFxcIlJlcG9ydCByb2FtaW5nIHJlc3VsdFxcXFxuXFxcIik7XFxuIFxcbi1cXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXFx1MDAyNlxcdTAwMjYgcHJvZmlsZS1cXHUwMDNlaXNfZnQpIHtcXG4tXFx0XFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXFx1MDAzZWJzc2lkLCBOVUxMLCAwLCBHRlBfS0VSTkVMKTtcXG4tXFx0XFx0YnJjbWZfZGJnKENPTk4sIFxcXCJSZXBvcnQgcG9ydCBhdXRob3JpemVkXFxcXG5cXFwiKTtcXG4tXFx0fVxcbi1cXG4gXFx0c2V0X2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RFRCwgXFx1MDAyNmlmcC1cXHUwMDNldmlmLVxcdTAwM2VzbWVfc3RhdGUpO1xcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFeGl0XFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5AQCAtNjUwNCw2ICs2NTk0LDcgQEAgYnJjbWZfYnNzX2Nvbm5lY3RfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZTtcXG4gXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcXG4gXFx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XFxuK1xcdGJvb2wgYXV0aG9yaXplZDtcXG4gXFxuIFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4gXFxuQEAgLTY1MjgsNyArNjYxOSwxNSBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuIFxcdFxcdGNvbm5fcGFyYW1zLnJlcV9pZV9sZW4gPSBjb25uX2luZm8tXFx1MDAzZXJlcV9pZV9sZW47XFxuIFxcdFxcdGNvbm5fcGFyYW1zLnJlc3BfaWUgPSBjb25uX2luZm8tXFx1MDAzZXJlc3BfaWU7XFxuIFxcdFxcdGNvbm5fcGFyYW1zLnJlc3BfaWVfbGVuID0gY29ubl9pbmZvLVxcdTAwM2VyZXNwX2llX2xlbjtcXG4rXFx0XFx0YXV0aG9yaXplZCA9IGNvbXBsZXRlZCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxcbitcXHRcXHRcXHQgICAgICBwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgIGJyY21mX2hhc19wbWtpZChjb25uX3BhcmFtcy5yZXFfaWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgY29ubl9wYXJhbXMucmVxX2llX2xlbik7XFxuIFxcdFxcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcXHUwMDI2Y29ubl9wYXJhbXMsIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoYXV0aG9yaXplZClcXG4rXFx0XFx0XFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXFx1MDAzZWJzc2lkLCBOVUxMLCAwLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgR0ZQX0tFUk5FTCk7XFxuIFxcdFxcdGJyY21mX2RiZyhDT05OLCBcXFwiUmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICBjb21wbGV0ZWQgPyBcXFwic3VjY2VlZGVkXFxcIiA6IFxcXCJmYWlsZWRcXFwiKTtcXG4gXFx0fVxcbkBAIC03NzMxLDYgKzc4MzAsMTAgQEAgc3RhdGljIGludCBicmNtZl9zZXR1cF93aXBoeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcXG4gXFx0fVxcbiBcXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9TQUVfRVhUKSlcXG4gXFx0XFx0d2lwaHktXFx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XFxuK1xcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZCVCkgfHxcXG4rXFx0ICAgIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfT0tDKSlcXG4rXFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxcbitcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XFxuIFxcdHdpcGh5LVxcdTAwM2VtZ210X3N0eXBlcyA9IGJyY21mX3R4cnhfc3R5cGVzO1xcbiBcXHR3aXBoeS1cXHUwMDNlbWF4X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uID0gNTAwMDtcXG4gXFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfUE5PKSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuaW5kZXggNjNlNTM0NTIzZjUxOC4uMWFhOTkzOTBhOTUxMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuQEAgLTEyNyw3ICsxMjcsOCBAQCBlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAge1xcbiBcXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUsXFxuIFxcdEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLLFxcbiBcXHRCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYLFxcbi1cXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRVxcbitcXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSxcXG4rXFx0QlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNXFxuIH07XFxuIFxcbiAvKipcXG5AQCAtMTY0LDYgKzE2NSw3IEBAIGVudW0gYnJjbWZfbWdtdF90eF9zdGF0dXMge1xcbiAgKiBAYnNzaWQ6IGJzc2lkIG9mIGpvaW5lZC9qb2luaW5nIGlic3MuXFxuICAqIEBzZWM6IHNlY3VyaXR5IGluZm9ybWF0aW9uLlxcbiAgKiBAa2V5OiBrZXkgaW5mb3JtYXRpb25cXG4rICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi5cXG4gICovXFxuIHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlIHtcXG4gXFx0dTggYnNzaWRbRVRIX0FMRU5dO1xcbkBAIC0xNzIsNiArMTc0LDcgQEAgc3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUge1xcbiBcXHRlbnVtIGJyY21mX3Byb2ZpbGVfZndzdXAgdXNlX2Z3c3VwO1xcbiBcXHR1MTYgdXNlX2Z3YXV0aDtcXG4gXFx0Ym9vbCBpc19mdDtcXG4rXFx0Ym9vbCBpc19va2M7XFxuIH07XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmNcXG5pbmRleCA0ODgzNjRlZjhmZjJhLi5jYzE5ZTVlN2ViZjU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXFxuQEAgLTQ1LDYgKzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0ge1xcbiBcXHR7IEJSQ01GX0ZFQVRfU0FFLCBcXFwic2FlIFxcXCIgfSxcXG4gXFx0eyBCUkNNRl9GRUFUX0ZXQVVUSCwgXFxcImlkYXV0aFxcXCIgfSxcXG4gXFx0eyBCUkNNRl9GRUFUX1NBRV9FWFQsIFxcXCJzYWVfZXh0XFxcIiB9LFxcbitcXHR7IEJSQ01GX0ZFQVRfRkJULCBcXFwiZmJ0IFxcXCIgfSxcXG4rXFx0eyBCUkNNRl9GRUFUX09LQywgXFxcIm9rY1xcXCIgfSxcXG4gfTtcXG4gXFxuICNpZmRlZiBERUJVR1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxcbmluZGV4IDMxZjg2OTVjYTQxNzYuLjgxNjVhMjg2YjYzMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmhcXG5AQCAtNTksNyArNTksOSBAQFxcbiBcXHRCUkNNRl9GRUFUX0RFRihTQ0FOX1YyKSBcXFxcXFxuIFxcdEJSQ01GX0ZFQVRfREVGKFBNS0lEX1YyKSBcXFxcXFxuIFxcdEJSQ01GX0ZFQVRfREVGKFBNS0lEX1YzKSBcXFxcXFxuLVxcdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpXFxuK1xcdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpIFxcXFxcXG4rXFx0QlJDTUZfRkVBVF9ERUYoRkJUKSBcXFxcXFxuK1xcdEJSQ01GX0ZFQVRfREVGKE9LQylcXG4gXFxuIC8qXFxuICAqIFF1aXJrczpcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcXG5pbmRleCAwMjAzODdkNzY0MTIyLi45ZjhkOWUzZDU5OTBiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXFxuQEAgLTcxMTAsNiArNzExMCw5IEBAIGVudW0gbmw4MDIxMV9mZWF0dXJlX2ZsYWdzIHtcXG4gICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVA6IERyaXZlciBzdXBwb3J0cyBwcm9iaW5nIHRoZSBhc3NvY2lhdGVkIEFQXFxuICAqXFx0aW4gU1RBIG1vZGUgdXNpbmcgQE5MODAyMTFfQ01EX1BST0JFX1BFRVIuXFxuICAqXFxuKyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxcbisgKlxcdE9wcG9ydHVuaXN0aWMgS2V5IENhY2hpbmcgcm9hbWluZyBvZmZsb2FkIGluIHN0YXRpb24gbW9kZS5cXG4rICpcXG4gICogQE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUzogbnVtYmVyIG9mIGV4dGVuZGVkIGZlYXR1cmVzLlxcbiAgKiBATUFYX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBoaWdoZXN0IGV4dGVuZGVkIGZlYXR1cmUgaW5kZXguXFxuICAqL1xcbkBAIC03MTkyLDYgKzcxOTUsNyBAQCBlbnVtIG5sODAyMTFfZXh0X2ZlYXR1cmVfaW5kZXgge1xcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcXG4gXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9TRVRfS0VZX0xURl9TRUVELFxcbiBcXHROTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQLFxcbitcXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcXG4gXFxuIFxcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXFxuIFxcdE5VTV9OTDgwMjExX0VYVF9GRUFUVVJFUyxcXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5pbmRleCA0NGYyYmFkMDg2NzA1Li4xNTczMTQ0MGM1N2E0IDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuQEAgLTE4NDM0LDYgKzE4NDM0LDcgQEAgc3RhdGljIGludCBubDgwMjExX3NldF9tdWx0aWNhc3RfdG9fdW5pY2FzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiB7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiA9IGluZm8tXFx1MDAzZXVzZXJfcHRyWzBdO1xcbitcXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gaW5mby1cXHUwMDNldXNlcl9wdHJbMV07XFxuIFxcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHI7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiBwbWtfY29uZiA9IHt9O1xcbkBAIC0xODQ0Miw4ICsxODQ0MywxMCBAQCBzdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHQgICAgd2Rldi1cXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9DTElFTlQpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuLVxcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LFxcbi1cXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSlcXG4rXFx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCh3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXFxuIFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4gXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX01BQ10gfHwgIWluZm8tXFx1MDAzZWF0dHJzW05MODAyMTFfQVRUUl9QTUtdKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNjoyNy44Nzg1MzMzMDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NzAwNjc4OTE2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYjg3YWQxZjBhNThkZTUzNjg2NjZmMzZkNDAwMDhkMGI4MWQ1YTE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMjQgMjI6MDY6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA4NzJjNDg4MDZkMDkxLi42YTk3YmUzMTQ5ZmMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtMjExMiw5ICsyMTEyLDExIEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRzMzIgdmFsO1xuIFx0czMyIGVycjtcbitcdHMzMiBva2NfZW5hYmxlO1xuIFx0Y29uc3Qgc3RydWN0IGJyY21mX3RsdiAqcnNuX2llO1xuIFx0Y29uc3QgdTggKmllO1xuIFx0dTMyIGllX2xlbjtcbitcdGJvb2wgZndzdXBfcm9hbTtcbiBcdHUzMiBvZmZzZXQ7XG4gXHR1MTYgcnNuX2NhcDtcbiBcdHUzMiBtZnA7XG5AQCAtMjEyMiw2ICsyMTI0LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcbiBcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FO1xuIFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IGZhbHNlO1xuK1x0cHJvZmlsZS1cdTAwM2Vpc19va2MgPSBmYWxzZTtcbitcdGZ3c3VwX3JvYW0gPSBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZCVCkgfHxcbitcdFx0ICAgICBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX09LQyk7XG4gXG4gXHRpZiAoIXNtZS1cdTAwM2VjcnlwdG8ubl9ha21fc3VpdGVzKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0yMTM4LDYgKzIxNDMsOCBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEO1xuIFx0XHRcdGlmIChzbWUtXHUwMDNld2FudF8xeClcbiBcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDtcbitcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuK1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfUFNLOlxuIFx0XHRcdHZhbCA9IFdQQV9BVVRIX1BTSztcbkBAIC0yMTUzLDExICsyMTYwLDE1IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG4gXHRcdFx0dmFsID0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEO1xuIFx0XHRcdGlmIChzbWUtXHUwMDNld2FudF8xeClcbiBcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWDtcbitcdFx0XHRlbHNlIGlmIChmd3N1cF9yb2FtKVxuK1x0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU07XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfODAyMVhfU0hBMjU2OlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XG4gXHRcdFx0aWYgKHNtZS1cdTAwM2V3YW50XzF4KVxuIFx0XHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYO1xuK1x0XHRcdGVsc2UgaWYgKGZ3c3VwX3JvYW0pXG4rXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBXTEFOX0FLTV9TVUlURV9QU0tfU0hBMjU2OlxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0tfU0hBMjU2O1xuQEAgLTIxNzAsMTAgKzIxODEsMTYgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbiBcdFx0XHRwcm9maWxlLVx1MDAzZWlzX2Z0ID0gdHJ1ZTtcbiBcdFx0XHRpZiAoc21lLVx1MDAzZXdhbnRfMXgpXG4gXHRcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVg7XG4rXHRcdFx0ZWxzZSBpZiAoZndzdXBfcm9hbSlcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX0ZUX1BTSzpcbiBcdFx0XHR2YWwgPSBXUEEyX0FVVEhfUFNLIHwgV1BBMl9BVVRIX0ZUO1xuIFx0XHRcdHByb2ZpbGUtXHUwMDNlaXNfZnQgPSB0cnVlO1xuK1x0XHRcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSlcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4rXHRcdFx0ZWxzZSBpZiAoZndzdXBfcm9hbSlcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6XG4gXHRcdFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xuQEAgLTIyMDQsOCArMjIyMSwyMiBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFxuIFx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpXG4gXHRcdGJyY21mX2RiZyhJTkZPLCBcInVzaW5nIDFYIG9mZmxvYWRcXG5cIik7XG4rXG4rXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF8xWCB8fFxuK1x0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUk9BTSkge1xuK1x0XHRlcnIgPSBicmNtZl9maWxfYnNzY2ZnX2ludF9nZXQoaWZwLCBcIm9rY19lbmFibGVcIixcbitcdFx0XHRcdFx0ICAgICAgIFx1MDAyNm9rY19lbmFibGUpO1xuK1x0XHRpZiAoZXJyKSB7XG4rXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJnZXQgb2tjX2VuYWJsZSBmYWlsZWQgKCVkKVxcblwiLCBlcnIpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGJyY21mX2RiZyhJTkZPLCBcIm9rY19lbmFibGUgKCVkKVxcblwiLCBva2NfZW5hYmxlKTtcbitcdFx0XHRwcm9maWxlLVx1MDAzZWlzX29rYyA9IG9rY19lbmFibGU7XG4rXHRcdH1cbitcdH1cbiBcdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSlcbiBcdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgU0FFIG9mZmxvYWRcXG5cIik7XG4rXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKVxuK1x0XHRicmNtZl9kYmcoSU5GTywgXCJ1c2luZyByb2FtaW5nIG9mZmxvYWRcXG5cIik7XG4gXG4gXHRpZiAoIWJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfTUZQKSlcbiBcdFx0Z290byBza2lwX21mcF9jb25maWc7XG5AQCAtMjQ5NCwxMyArMjUyNSwxNCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFxuIFx0XHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2ICFpc19zYWVfYWttIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbi1cdFx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuLVx0XHRcdFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbitcdFx0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4rXHRcdFx0XHRicmNtZl9kYmcoSU5GTywgXCJ1c2luZyBQU0sgb2ZmbG9hZFxcblwiKTtcbitcdFx0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4rXHRcdFx0fSBlbHNlIGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9XG4rXHRcdFx0XHRcdCAgIEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKSkge1xuIFx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRcdGdvdG8gZG9uZTtcbiBcdFx0XHR9XG4tXHRcdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgUFNLIG9mZmxvYWRcXG5cIik7XG4tXHRcdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbiBcdFx0fVxuIFx0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4gXHRcdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG5AQCAtNTk1MywxNyArNTk4NSwyOSBAQCBzdGF0aWMgaW50IGJyY21mX2NmZzgwMjExX3NldF9wbWsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGNmZzgwMjExX3Bta19jb25mICpjb25mKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuK1x0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbitcdGludCByZXQ7XG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwiZW50ZXJcXG5cIik7XG4gXG4tXHQvKiBleHBlY3QgdXNpbmcgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgMVggKi9cbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRpZiAoV0FSTl9PTihpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUudXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfMVgpKVxuK1x0ZHJ2ciA9IGlmcC1cdTAwM2VkcnZyO1xuK1x0aWYgKFdBUk5fT04oaWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlLnVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgIWlmcC1cdTAwM2V2aWYtXHUwMDNlcHJvZmlsZS5pc19mdCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUuaXNfb2tjKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRpZiAoY29uZi1cdTAwM2VwbWtfbGVuIFx1MDAzZSBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKVxuIFx0XHRyZXR1cm4gLUVSQU5HRTtcbiBcbitcdGlmIChpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGUuaXNfb2tjKSB7XG4rXHRcdHJldCA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwib2tjX2luZm9fcG1rXCIsXG4rXHRcdFx0XHRcdCAgICAgICBjb25mLVx1MDAzZXBtaywgY29uZi1cdTAwM2VwbWtfbGVuKTtcbitcdFx0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0XHRicGh5X2VycihkcnZyLCBcIm9rY19pbmZvX3BtayBpb3ZhciBmYWlsZWQ6IHJldD0lZFxcblwiLFxuK1x0XHRcdFx0IHJldCk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gYnJjbWZfc2V0X3BtayhpZnAsIGNvbmYtXHUwMDNlcG1rLCBjb25mLVx1MDAzZXBta19sZW4pO1xuIH1cbiBcbkBAIC02NDIyLDYgKzY0NjYsNDcgQEAgc3RhdGljIHMzMiBicmNtZl9nZXRfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBicmNtZl9oYXNfcG1raWQoY29uc3QgdTggKnBhcnNlLCB1MzIgbGVuKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBicmNtZl90bHYgKnJzbl9pZTtcbitcdGNvbnN0IHU4ICppZTtcbitcdHUzMiBpZV9sZW47XG4rXHR1MzIgb2Zmc2V0O1xuK1x0dTE2IGNvdW50O1xuK1xuK1x0aWYgKCFwYXJzZSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cnNuX2llID0gYnJjbWZfcGFyc2VfdGx2cyhwYXJzZSwgbGVuLCBXTEFOX0VJRF9SU04pO1xuK1x0aWYgKCFyc25faWUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGllID0gKGNvbnN0IHU4ICopcnNuX2llO1xuK1x0aWVfbGVuID0gcnNuX2llLVx1MDAzZWxlbiArIFRMVl9IRFJfTEVOO1xuK1xuK1x0b2Zmc2V0ID0gVExWX0hEUl9MRU4gKyBXUEFfSUVfVkVSU0lPTl9MRU4gKyBXUEFfSUVfTUlOX09VSV9MRU47XG4rXHRpZiAob2Zmc2V0ICsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcdTAwM2U9IGllX2xlbilcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0Y291bnQgPSBpZVtvZmZzZXRdICsgKGllW29mZnNldCArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdG9mZnNldCArPSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICsgY291bnQgKiBXUEFfSUVfTUlOX09VSV9MRU47XG4rXHRpZiAob2Zmc2V0ICsgV1BBX0lFX1NVSVRFX0NPVU5UX0xFTiBcdTAwM2U9IGllX2xlbilcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0Y291bnQgPSBpZVtvZmZzZXRdICsgKGllW29mZnNldCArIDFdIFx1MDAzY1x1MDAzYyA4KTtcbitcdG9mZnNldCArPSBXUEFfSUVfU1VJVEVfQ09VTlRfTEVOICsgY291bnQgKiBXUEFfSUVfTUlOX09VSV9MRU47XG4rXHRpZiAob2Zmc2V0ICsgUlNOX0NBUF9MRU4gXHUwMDNlPSBpZV9sZW4pXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdG9mZnNldCArPSBSU05fQ0FQX0xFTjtcbitcdGlmIChvZmZzZXQgKyBSU05fUE1LSURfQ09VTlRfTEVOIFx1MDAzZSBpZV9sZW4pXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdGNvdW50ID0gaWVbb2Zmc2V0XSArIChpZVtvZmZzZXQgKyAxXSBcdTAwM2NcdTAwM2MgOCk7XG4rXG4rXHRyZXR1cm4gY291bnQgXHUwMDNlIDA7XG4rfVxuK1xuIHN0YXRpYyBzMzJcbiBicmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbkBAIC02NDM2LDYgKzY1MjEsNyBAQCBicmNtZl9ic3Nfcm9hbWluZ19kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRzdHJ1Y3QgYnJjbWZfYnNzX2luZm9fbGUgKmJpO1xuIFx0c3RydWN0IGJyY211X2NoYW4gY2g7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfcm9hbV9pbmZvIHJvYW1faW5mbyA9IHt9O1xuK1x0Ym9vbCBhdXRob3JpemVkID0gZmFsc2U7XG4gXHR1MzIgZnJlcTtcbiBcdHMzMiBlcnIgPSAwO1xuIFx0dTggKmJ1ZjtcbkBAIC02NDgyLDE0ICs2NTY4LDE4IEBAIGJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHJvYW1faW5mby5yZXNwX2llID0gY29ubl9pbmZvLVx1MDAzZXJlc3BfaWU7XG4gXHRyb2FtX2luZm8ucmVzcF9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVzcF9pZV9sZW47XG4gXG4rXHRpZiAoKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggfHxcbitcdCAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbitcdCAgICAoYnJjbWZfaGFzX3Bta2lkKHJvYW1faW5mby5yZXFfaWUsIHJvYW1faW5mby5yZXFfaWVfbGVuKSB8fFxuK1x0ICAgICBwcm9maWxlLVx1MDAzZWlzX2Z0IHx8IHByb2ZpbGUtXHUwMDNlaXNfb2tjKSlcbitcdFx0YXV0aG9yaXplZCA9IHRydWU7XG4rXG4gXHRjZmc4MDIxMV9yb2FtZWQobmRldiwgXHUwMDI2cm9hbV9pbmZvLCBHRlBfS0VSTkVMKTtcbitcdGlmIChhdXRob3JpemVkKVxuK1x0XHRjZmc4MDIxMV9wb3J0X2F1dGhvcml6ZWQobmRldiwgcHJvZmlsZS1cdTAwM2Vic3NpZCwgTlVMTCwgMCxcbitcdFx0XHRcdFx0IEdGUF9LRVJORUwpO1xuIFx0YnJjbWZfZGJnKENPTk4sIFwiUmVwb3J0IHJvYW1pbmcgcmVzdWx0XFxuXCIpO1xuIFxuLVx0aWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfMVggXHUwMDI2XHUwMDI2IHByb2ZpbGUtXHUwMDNlaXNfZnQpIHtcbi1cdFx0Y2ZnODAyMTFfcG9ydF9hdXRob3JpemVkKG5kZXYsIHByb2ZpbGUtXHUwMDNlYnNzaWQsIE5VTEwsIDAsIEdGUF9LRVJORUwpO1xuLVx0XHRicmNtZl9kYmcoQ09OTiwgXCJSZXBvcnQgcG9ydCBhdXRob3JpemVkXFxuXCIpO1xuLVx0fVxuLVxuIFx0c2V0X2JpdChCUkNNRl9WSUZfU1RBVFVTX0NPTk5FQ1RFRCwgXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2VzbWVfc3RhdGUpO1xuIFx0YnJjbWZfZGJnKFRSQUNFLCBcIkV4aXRcXG5cIik7XG4gXHRyZXR1cm4gZXJyO1xuQEAgLTY1MDQsNiArNjU5NCw3IEBAIGJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlO1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcbiBcdHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3Jlc3BfcGFyYW1zIGNvbm5fcGFyYW1zO1xuK1x0Ym9vbCBhdXRob3JpemVkO1xuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcIkVudGVyXFxuXCIpO1xuIFxuQEAgLTY1MjgsNyArNjYxOSwxNSBAQCBicmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdGNvbm5fcGFyYW1zLnJlcV9pZV9sZW4gPSBjb25uX2luZm8tXHUwMDNlcmVxX2llX2xlbjtcbiBcdFx0Y29ubl9wYXJhbXMucmVzcF9pZSA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llO1xuIFx0XHRjb25uX3BhcmFtcy5yZXNwX2llX2xlbiA9IGNvbm5faW5mby1cdTAwM2VyZXNwX2llX2xlbjtcbitcdFx0YXV0aG9yaXplZCA9IGNvbXBsZXRlZCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQXzFYIHx8XG4rXHRcdFx0ICAgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9ST0FNKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIGJyY21mX2hhc19wbWtpZChjb25uX3BhcmFtcy5yZXFfaWUsXG4rXHRcdFx0XHRcdCAgICAgY29ubl9wYXJhbXMucmVxX2llX2xlbik7XG4gXHRcdGNmZzgwMjExX2Nvbm5lY3RfZG9uZShuZGV2LCBcdTAwMjZjb25uX3BhcmFtcywgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmIChhdXRob3JpemVkKVxuK1x0XHRcdGNmZzgwMjExX3BvcnRfYXV0aG9yaXplZChuZGV2LCBwcm9maWxlLVx1MDAzZWJzc2lkLCBOVUxMLCAwLFxuK1x0XHRcdFx0XHRcdCBHRlBfS0VSTkVMKTtcbiBcdFx0YnJjbWZfZGJnKENPTk4sIFwiUmVwb3J0IGNvbm5lY3QgcmVzdWx0IC0gY29ubmVjdGlvbiAlc1xcblwiLFxuIFx0XHRcdCAgY29tcGxldGVkID8gXCJzdWNjZWVkZWRcIiA6IFwiZmFpbGVkXCIpO1xuIFx0fVxuQEAgLTc3MzEsNiArNzgzMCwxMCBAQCBzdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFx0fVxuIFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFX0VYVCkpXG4gXHRcdHdpcGh5LVx1MDAzZWZlYXR1cmVzIHw9IE5MODAyMTFfRkVBVFVSRV9TQUU7XG4rXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GQlQpIHx8XG4rXHQgICAgYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9PS0MpKVxuK1x0XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXG4rXHRcdFx0XHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XG4gXHR3aXBoeS1cdTAwM2VtZ210X3N0eXBlcyA9IGJyY21mX3R4cnhfc3R5cGVzO1xuIFx0d2lwaHktXHUwMDNlbWF4X3JlbWFpbl9vbl9jaGFubmVsX2R1cmF0aW9uID0gNTAwMDtcbiBcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1BOTykpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5pbmRleCA2M2U1MzQ1MjNmNTE4Li4xYWE5OTM5MGE5NTEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5AQCAtMTI3LDcgKzEyNyw4IEBAIGVudW0gYnJjbWZfcHJvZmlsZV9md3N1cCB7XG4gXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUsXG4gXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSyxcbiBcdEJSQ01GX1BST0ZJTEVfRldTVVBfMVgsXG4tXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRVxuK1x0QlJDTUZfUFJPRklMRV9GV1NVUF9TQUUsXG4rXHRCUkNNRl9QUk9GSUxFX0ZXU1VQX1JPQU1cbiB9O1xuIFxuIC8qKlxuQEAgLTE2NCw2ICsxNjUsNyBAQCBlbnVtIGJyY21mX21nbXRfdHhfc3RhdHVzIHtcbiAgKiBAYnNzaWQ6IGJzc2lkIG9mIGpvaW5lZC9qb2luaW5nIGlic3MuXG4gICogQHNlYzogc2VjdXJpdHkgaW5mb3JtYXRpb24uXG4gICogQGtleToga2V5IGluZm9ybWF0aW9uXG4rICogQGlzX29rYzogT0tDIGlzIHVzZWQgZm9yIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgKi9cbiBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSB7XG4gXHR1OCBic3NpZFtFVEhfQUxFTl07XG5AQCAtMTcyLDYgKzE3NCw3IEBAIHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlIHtcbiBcdGVudW0gYnJjbWZfcHJvZmlsZV9md3N1cCB1c2VfZndzdXA7XG4gXHR1MTYgdXNlX2Z3YXV0aDtcbiBcdGJvb2wgaXNfZnQ7XG4rXHRib29sIGlzX29rYztcbiB9O1xuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5jXG5pbmRleCA0ODgzNjRlZjhmZjJhLi5jYzE5ZTVlN2ViZjU3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuY1xuQEAgLTQ1LDYgKzQ1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9mZWF0X2Z3Y2FwIGJyY21mX2Z3Y2FwX21hcFtdID0ge1xuIFx0eyBCUkNNRl9GRUFUX1NBRSwgXCJzYWUgXCIgfSxcbiBcdHsgQlJDTUZfRkVBVF9GV0FVVEgsIFwiaWRhdXRoXCIgfSxcbiBcdHsgQlJDTUZfRkVBVF9TQUVfRVhULCBcInNhZV9leHRcIiB9LFxuK1x0eyBCUkNNRl9GRUFUX0ZCVCwgXCJmYnQgXCIgfSxcbitcdHsgQlJDTUZfRkVBVF9PS0MsIFwib2tjXCIgfSxcbiB9O1xuIFxuICNpZmRlZiBERUJVR1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9mZWF0dXJlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmVhdHVyZS5oXG5pbmRleCAzMWY4Njk1Y2E0MTc2Li44MTY1YTI4NmI2MzA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2ZlYXR1cmUuaFxuQEAgLTU5LDcgKzU5LDkgQEBcbiBcdEJSQ01GX0ZFQVRfREVGKFNDQU5fVjIpIFxcXG4gXHRCUkNNRl9GRUFUX0RFRihQTUtJRF9WMikgXFxcbiBcdEJSQ01GX0ZFQVRfREVGKFBNS0lEX1YzKSBcXFxuLVx0QlJDTUZfRkVBVF9ERUYoU0FFX0VYVClcbitcdEJSQ01GX0ZFQVRfREVGKFNBRV9FWFQpIFxcXG4rXHRCUkNNRl9GRUFUX0RFRihGQlQpIFxcXG4rXHRCUkNNRl9GRUFUX0RFRihPS0MpXG4gXG4gLypcbiAgKiBRdWlya3M6XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLjlmOGQ5ZTNkNTk5MGIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oXG5AQCAtNzExMCw2ICs3MTEwLDkgQEAgZW51bSBubDgwMjExX2ZlYXR1cmVfZmxhZ3Mge1xuICAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1BST0JFX0FQOiBEcml2ZXIgc3VwcG9ydHMgcHJvYmluZyB0aGUgYXNzb2NpYXRlZCBBUFxuICAqXHRpbiBTVEEgbW9kZSB1c2luZyBATkw4MDIxMV9DTURfUFJPQkVfUEVFUi5cbiAgKlxuKyAqIEBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRDogRHJpdmVyIHN1cHBvcnRzIEZhc3QgVHJhbnNpdGlvbiBvclxuKyAqXHRPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIHJvYW1pbmcgb2ZmbG9hZCBpbiBzdGF0aW9uIG1vZGUuXG4rICpcbiAgKiBATlVNX05MODAyMTFfRVhUX0ZFQVRVUkVTOiBudW1iZXIgb2YgZXh0ZW5kZWQgZmVhdHVyZXMuXG4gICogQE1BWF9OTDgwMjExX0VYVF9GRUFUVVJFUzogaGlnaGVzdCBleHRlbmRlZCBmZWF0dXJlIGluZGV4LlxuICAqL1xuQEAgLTcxOTIsNiArNzE5NSw3IEBAIGVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XG4gXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQ19BRERSX0ZJTFRFUixcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfU0VUX0tFWV9MVEZfU0VFRCxcbiBcdE5MODAyMTFfRVhUX0ZFQVRVUkVfUFJPQkVfQVAsXG4rXHROTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCxcbiBcbiBcdC8qIGFkZCBuZXcgZmVhdHVyZXMgYmVmb3JlIHRoZSBkZWZpbml0aW9uIGJlbG93ICovXG4gXHROVU1fTkw4MDIxMV9FWFRfRkVBVFVSRVMsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLjE1NzMxNDQwYzU3YTQgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtMTg0MzQsNiArMTg0MzQsNyBAQCBzdGF0aWMgaW50IG5sODAyMTFfc2V0X211bHRpY2FzdF90b191bmljYXN0KHN0cnVjdCBza19idWZmICpza2IsXG4gc3RhdGljIGludCBubDgwMjExX3NldF9wbWsoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiB7XG4gXHRzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSBpbmZvLVx1MDAzZXVzZXJfcHRyWzBdO1xuK1x0c3RydWN0IHdpcGh5ICp3aXBoeSA9IFx1MDAyNnJkZXYtXHUwMDNld2lwaHk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gaW5mby1cdTAwM2V1c2VyX3B0clsxXTtcbiBcdHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYgPSBkZXYtXHUwMDNlaWVlZTgwMjExX3B0cjtcbiBcdHN0cnVjdCBjZmc4MDIxMV9wbWtfY29uZiBwbWtfY29uZiA9IHt9O1xuQEAgLTE4NDQyLDggKzE4NDQzLDEwIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHQgICAgd2Rldi1cdTAwM2VpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfUDJQX0NMSUVOVClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKCF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuLVx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXG4rXHRpZiAoIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxuK1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxuK1x0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmICghaW5mby1cdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfTUFDXSB8fCAhaW5mby1cdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfUE1LXSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjI3Ljg3ODUzNDk0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MDYwNTYzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCB0byB0aGUgYGJyY21mbWFjYCBkcml2ZXIsIGFsb25nc2lkZSBhIG5ldyBmZWF0dXJlIGZsYWcgaW4gYG5sODAyMTFgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJDYW4gSSBldmVuICpyZWFjaCogdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/XCIgVGhlIHByb21wdCBpcyB2ZXJ5IHNwZWNpZmljIGFib3V0IGV4Y2x1ZGluZyBwYXRjaGVzIHRoYXQgaGl0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuXG5cbmBicmNtZm1hY2AgaXMgYSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyLCB3aGljaCByaW5ncyBhbGFybSBiZWxscy4gVHlwaWNhbGx5LCB0aGVzZSBkcml2ZXJzIHJlbHkgb24gc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgKFNESU8sIFBDSWUsIFVTQikuIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoYXQgaGFyZHdhcmUgZGlyZWN0bHksIHVubGlrZSwgc2F5LCBgbWFjODAyMTFfaHdzaW1gLiBUaGlzIGlzIHRoZSBmaXJzdCBodXJkbGUuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGZsYWdzIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBQQ0llIGNhcmRzIGFzIHVuaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcgcHVycG9zZXMuIElzIGBicmNtZm1hY2Agb25lIG9mIHRob3NlPyBZZXMsIGl0J3MgZGVmaW5pdGVseSB0aWVkIHRvIHNwZWNpZmljIEJyb2FkY29tIGNoaXBzLlxuXG5Ib3dldmVyLCBtYXliZSB0aGVyZeKAmXMgYSB3b3JrYXJvdW5kLiBDb3VsZCBJIHBlcmhhcHMgdHJpZ2dlciB0aGUgVVNCIGludGVyZmFjZSBvZiBgYnJjbWZtYWNgIHRocm91Z2ggYSBVU0IgZ2FkZ2V0IHNldHVwPyBJIGtub3cgc3l6a2FsbGVyIGhhcyBzb21lIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyAobGlrZSBgc3l6X3VzYl9jb25uZWN0YCkuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiBgYnJjbWZtYWNgIHN1cHBvcnRzIHByb2Jpbmcgb3IgYmVpbmcgY29udHJvbGxlZCB2aWEgVVNCLiBJZiB0aGF0J3MgcG9zc2libGUsIGl0IG1pZ2h0IHByb3ZpZGUgYSB3YXkgaW4sIGV2ZW4gaWYgdGhlIGRyaXZlciB1c3VhbGx5IHdhbnRzIGEgUENJZSBvciBTRElPIGludGVyZmFjZS4gTGV0J3Mgc2VlIGlmIFVTQiBpcyBhIHZpYWJsZSBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6MzUuMzg0NTkzNjc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDgzMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3VzYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfYnVzX29wcyBicmNtZl91c2JfYnVzX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTc2OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTc3LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ1LVxcdFxcdFxcdCAgICAgIGVudW0gYnJjbWZfZnd2ZW5kb3IgZnd2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwOTpcXHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzEwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMzQ0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTM0NTpicmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTQ0NjpcXHRyZXQgPSBicmNtZl91c2JfcHJvYmVfY2IoZGV2aW5mbywgaWQtXFx1MDAzZWRyaXZlcl9pbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcXHUwMDI2dXNiLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyOC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTY4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBicmNtZl91c2JkcnZyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTY5LVxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NzA6XFx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTcxLVxcdC5kaXNjb25uZWN0ID0gYnJjbWZfdXNiX2Rpc2Nvbm5lY3QsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjM1LjQzNDY3OTk0M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTkzMjE3OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBQYXRjaCBSZWxhdGVkIHRvIFdpLUZpIFBNSyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGJyYWluIGdvZXMgaW50byBhbmFseXNpcyBtb2RlLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCB0b3VjaGVzIGJvdGggYSBkcml2ZXIgYW5kIGNvcmUga2VybmVsIGxvZ2ljLiBTcGVjaWZpY2FsbHksIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCLCB3aGljaCBtZWFucyBpdCAqY291bGQqIGJlIGEgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0IHZpYSBhIFVTQiBnYWRnZXQgc2V0dXAuIEJ1dCB0aGUgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2UgYXBwZWFycyB0byBiZSBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHNwZWNpZmljYWxseSBgbmw4MDIxMV9zZXRfcG1rYC5cblxuQWxyaWdodCwgdGhlIGNvZGUgbW9kaWZpZXMgYG5sODAyMTFfc2V0X3Bta2AsIGFuZCBmcm9tIHdoYXQgSSBjYW4gc2VlLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0J3MgYWxsb3dpbmcgYG5sODAyMTFfc2V0X3Bta2AgdG8gcHJvY2VlZCBldmVuIGlmIHRoZSBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGZlYXR1cmUgaXMgc2V0LiBUaGUgcHJldmlvdXMgY2hlY2sgd2FzIGEgYml0IG1vcmUgcmVzdHJpY3RpdmUuIE5vdyBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgY2hhbmdlIHdvcmtzLlxuXG5UaGlzIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIGlzIHJlYWNoZWQgdmlhIG5ldGxpbmssIHdoaWNoIG1lYW5zIGEgdXNlci1zcGFjZSBwcm9jZXNzIGNhbiB0cmlnZ2VyIGl0LiBJdCdzIGtleSB0byByZW1lbWJlciB0aGF0IGEgZHJpdmVyIHNldHMgdGhpcyBmZWF0dXJlIGZsYWcuIE5vdywgbXkgbWluZCBpcyByYWNpbmcuIFdoaWNoIGRyaXZlcnMgbWlnaHQgc2V0IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGA/IFRoZSBvYnZpb3VzIGNhbmRpZGF0ZXMgYXJlIGBtYWM4MDIxMV9od3NpbWAgYW5kIGBicmNtZm1hY2AsIGJlY2F1c2UgdGhleSdyZSBjb21tb24uXG5cbkkgaGF2ZSB0byB2ZXJpZnkgd2hldGhlciBgbWFjODAyMTFfaHdzaW1gIHNldHMgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYC4gSXQncyBsaWtlbHkgdGhhdCBhIGRyaXZlciBtYXkgc2V0IHRoaXMgZmVhdHVyZSwgd2hpY2ggbWVhbnMgSSBjYW4gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzIG5ldywgc2xpZ2h0bHkgbW9kaWZpZWQsIGNvZGUgcGF0aC4gVGltZSB0byBnbyBkaWcgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6NDYuMDI3OTAwMjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMTgwMDk3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Nzc1OD1zdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgzNS1cXHRcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgzNjpcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgzNy1cXHR3aXBoeS1cXHUwMDNlbWdtdF9zdHlwZXMgPSBicmNtZl90eHJ4X3N0eXBlcztcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg9NjgzMj1lbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMTItICpcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjcxMTM6ICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEOiBEcml2ZXIgc3VwcG9ydHMgRmFzdCBUcmFuc2l0aW9uIG9yXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTE0LSAqXFx0T3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyByb2FtaW5nIG9mZmxvYWQgaW4gc3RhdGlvbiBtb2RlLlxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxOTctXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9QUk9CRV9BUCxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjcxOTg6XFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQsXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC03MTk5LVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODQzND1zdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ0OC1cXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0NDk6XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ1MC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA2OjQ3LjUzOTcwNTQ5M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODY5NTM4MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBEcml2ZXIgYW5kIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgZmxhZyBpcyBjdXJyZW50bHkgb25seSBzZXQgYnkgdGhlIGBicmNtZm1hY2AgZHJpdmVyLiBUaGlzIG1lYW5zIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluIGBubDgwMjExX3NldF9wbWtgIHN0ZW1taW5nIGZyb20gdGhpcyBmbGFnIGFyZSB0aWVkIGRpcmVjdGx5IHRvIHdoZXRoZXIgb3Igbm90IGBicmNtZm1hY2AgaXMgbG9hZGVkIGFuZCBzcGVjaWZpY2FsbHkgZW5hYmxlcyB0aGlzIGZlYXR1cmUuIEEgcXVpY2sgYXNzZXNzbWVudCBzdWdnZXN0cyB0aGF0IGBicmNtZm1hY2AgKmNvdWxkKiBiZSBhIHRhcmdldCBmb3IgZnV6emluZy4gQ3J1Y2lhbGx5LCBpdCBoYXMgYSBVU0IgaW50ZXJmYWNlLCBhbmQgc3l6a2FsbGVyIGNhbiBzdXBwb3NlZGx5IGVtdWxhdGUgVVNCIGRldmljZXMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEJ1dCBJIG5lZWQgdG8gYmUgc3VyZTsgZG9lcyBzeXprYWxsZXIgKmFjdHVhbGx5KiB0YXJnZXQgYGJyY21mbWFjYD8gQmVmb3JlIEkgc3RhcnQgZG93biB0aGF0IHBhdGgsIEkgbmVlZCB0byBjaGVjayBob3cgY29tbW9uIG9yIHNwZWNpYWxpemVkIGBicmNtZm1hY2AgaXMuIEknbGwgcXVpY2tseSB2ZXJpZnkgd2hldGhlciBpdCdzIGVuYWJsZWQgaW4gdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zIG9yIGlmIGl0IG5lY2Vzc2l0YXRlcyBzb21lIHNwZWNpZmljIGtlcm5lbCBidWlsZCBvcHRpb25zLiBUaGlzIHdpbGwgYWZmZWN0IHRoZSBwcmlvcml0eSBmb3IgYSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAwOSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNjo1MS45MjY2NjEyODhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MzIxNDU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlJDTUZNQUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE6Y29uZmlnIEJSQ01GTUFDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjExOmNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTItXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE0OmNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xNS1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTc6Y29uZmlnIEJSQ01GTUFDX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xOC1cXHRib29sIFxcXCJTRElPIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVxcdGJvb2wgXFxcIlBDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6NTMuNTc5ODgwMDM4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2ODE4ODQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEJyb2FkY29tIFdpRmkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zIGZvciB0aGlzIEJyb2FkY29tIFdpRmkgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYGJyY21mbWFjYC4gTGV0J3MgZGl2ZSByaWdodCBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZSBsb2NhdGVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBsb2dpYyByZXNpZGVzLiBJJ2xsIG5lZWQgdG8gc2VlIHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgY29tcG9uZW50cyB0aGlzIG1vZHVsZSByZWxpZXMgb24sIHdoYXQgY29uZmlndXJhdGlvbnMgZW5hYmxlIG9yIGRpc2FibGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgc3lzdGVtLiBLbm93aW5nIHRoZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGJ1aWxkLCBhbmQgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzIGRvd24gdGhlIGxpbmUuIEl0J3MgdGltZSB0byBwYXJzZSB0aGUgS2NvbmZpZyBhbmQgaWRlbnRpZnkgdGhlIGNyaXRpY2FsIHZhcmlhYmxlcyBhbmQgdGhlIGxvZ2ljIGdvdmVybmluZyB0aGVpciBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwMTIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNjo1Ni44NDgwNzk3MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdGNvbmZpZyBCUkNNRk1BQ1xcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAgNDpcXHRcXHRzZWxlY3QgQlJDTVVUSUxcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBCcm9hZGNvbVxcbiAgIDc6XFx0XFx0ICBGdWxsTUFDIGNoaXBzZXRzLiBJdCBoYXMgdG8gd29yayB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgYnVzXFxuICAgODpcXHRcXHQgIGludGVyZmFjZSBzdXBwb3J0LiBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWRcXG4gICA5OlxcdFxcdCAgYnJjbWZtYWMua28uXFxuICAxMDpcXHRcXG4gIDExOlxcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuICAxMjpcXHRcXHRib29sXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcXG4gIDE1OlxcdFxcdGJvb2xcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIEJSQ01GTUFDX1NESU9cXG4gIDE4OlxcdFxcdGJvb2wgXFxcIlNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gKE1NQyA9IHkgfHwgTU1DID0gQlJDTUZNQUMpXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIEJSQ01GTUFDXFxuICAyMTpcXHRcXHRzZWxlY3QgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbiAgMjI6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMjM6XFx0XFx0ZGVmYXVsdCB5XFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFNESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBCcm9hZGNvbVxcbiAgMjY6XFx0XFx0ICBJRUVFODAyLjExbiBlbWJlZGRlZCBGdWxsTUFDIFdMQU4gZHJpdmVyLiBTYXkgWSBpZiB5b3Ugd2FudCB0b1xcbiAgMjc6XFx0XFx0ICB1c2UgdGhlIGRyaXZlciBmb3IgYSBTRElPIHdpcmVsZXNzIGNhcmQuXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBCUkNNRk1BQ19VU0JcXG4gIDMwOlxcdFxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiAoVVNCID0geSB8fCBVU0IgPSBCUkNNRk1BQylcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gQlJDTUZNQUNcXG4gIDMzOlxcdFxcdHNlbGVjdCBCUkNNRk1BQ19QUk9UT19CQ0RDXFxuICAzNDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICAzNTpcXHRcXHRoZWxwXFxuICAzNjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEJyb2FkY29tXFxuICAzNzpcXHRcXHQgIElFRUU4MDIuMTFuIGVtYmVkZGVkIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFNheSBZIGlmIHlvdSB3YW50IHRvXFxuICAzODpcXHRcXHQgIHVzZSB0aGUgZHJpdmVyIGZvciBhbiBVU0Igd2lyZWxlc3MgY2FyZC5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDY6NTYuODQ4MTUzNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM0OTI4MzM5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBQYXRjaCBmb3IgV2lGaSBSb2FtaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYm90aCBgQlJDTUZNQUNgIGFuZCBgQlJDTUZNQUNfVVNCYCBjb25maWd1cmF0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEJ1dCwgdGhlIHJlYWwga2lja2VyIGlzIHRoZSBtb2RpZmljYXRpb24gdG8gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBUaGF0J3MgY29yZSBrZXJuZWwgbG9naWMsIGFuZCBhbnkgY2hhbmdlcyB0aGVyZSBhcmUgd29ydGggYSBjbG9zZSBsb29rLlxuXG5UaGUgY2hhbmdlIGl0c2VsZiBpcyBwcmV0dHkgc3BlY2lmaWM6IGl0J3MgbW9kaWZ5aW5nIHRoZSBjaGVjayB0aGF0IGdvdmVybnMgd2hldGhlciBgbmw4MDIxMV9zZXRfcG1rYCBpcyBwZXJtaXR0ZWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGNoZWNrZWQgZm9yIHRoZSBwcmVzZW5jZSBvZiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgLiBOb3csIGl0J3MgYWRkaW5nIGFub3RoZXIgY2hlY2s6IGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAuIEVmZmVjdGl2ZWx5LCB0aGlzIGFsbG93cyBgbmw4MDIxMV9zZXRfcG1rYCB0byBiZSBjYWxsZWQgaWYgKmVpdGhlciogb2YgdGhvc2UgZmVhdHVyZXMgaXMgcHJlc2VudC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgYGJyY21mbWFjYCBpcyB0aGUgb25seSBkcml2ZXIgc2V0dGluZyB0aGlzIG5ldyBgUk9BTV9PRkZMT0FEYCBmZWF0dXJlIGZsYWcsIHRoZW4gdGhpcyBwYXRjaCBpcyBtYWtpbmcgdGhlIGBubDgwMjExX3NldF9wbWtgIGZ1bmN0aW9uIHJlYWNoYWJsZSB1bmRlciB0aGUgbmV3IGNvbmRpdGlvbiBvbmx5IGlmIGBicmNtZm1hY2AgaXMgbG9hZGVkIGFuZCB0aGUgZmVhdHVyZSBpcyBhY3RpdmUuIEl0IGlzIGVuYWJsaW5nIHRoZSByb2FtaW5nIG9mZmxvYWQgZnVuY3Rpb25hbGl0eSB0aHJvdWdoIHRoaXMgY2FsbC5cblxuSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLiBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIHdhcyAqYWxyZWFkeSogYmVpbmcgY2hlY2tlZC4gU28sIGBubDgwMjExX3NldF9wbWtgICp3YXMqIGFscmVhZHkgcmVhY2hhYmxlIGlmICp0aGF0KiBmZWF0dXJlIHdhcyBzZXQuIFNvLCB0aGlzIHBhdGNoIGlzIG9ubHkgcmVsZXZhbnQgaWYgYFJPQU1fT0ZGTE9BRGAgaXMgc2V0LiBJZiBub3QsIHRoaXMgaXMgbm90IGFuIGlzc3VlLlxuXG5Ob3csIEknbSBjdXJpb3VzIGlmIGBtYWM4MDIxMV9od3NpbWAgc2V0cyBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGluIGl0cyB2aXJ0dWFsIGhhcmR3YXJlIGVtdWxhdGlvbiwgYXMgdGhpcyB3b3VsZCBpbXBhY3QgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY2hhbmdlJ3MgaW1wbGljYXRpb25zIGluIHNpbXVsYXRlZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byBjaGVjayBvbiB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzgzNywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjA0LjE5NzQzOTczNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzODQ1MzEzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Nzc1OD1zdGF0aWMgaW50IGJyY21mX3NldHVwX3dpcGh5KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBicmNtZl9pZiAqaWZwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgxOC1cXHRcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQod2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NzgxOTpcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNzgyMC1cXHRcXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9TQUUpKVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC0xOTEtICpcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjE5MjogKiBTaW1pbGFybHkgQE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYIGZsYWcgY2FuIGJlXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaC0xOTMtICogc2V0IGJ5IGRyaXZlcnMgaW5kaWNhdGluZyBvZmZsb2FkIHN1cHBvcnQgb2YgdGhlIFBUSy9HVEsgRUFQT0xcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg9NjgzMj1lbnVtIG5sODAyMTFfZmVhdHVyZV9mbGFncyB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTUtICpcXHRhbmQgYXNzb2NpYXRlIGNvbW1hbmRzKSwgZG9pbmcgaXQgaW4gdGhlIGhvc3QgbWlnaHQgbm90IGJlIHN1cHBvcnRlZC5cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oOjY5MTY6ICogQE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYOiBEZXZpY2Ugd2FudHMgdG8gZG8gZG9pbmcgNC13YXlcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTY5MTctICpcXHRoYW5kc2hha2Ugd2l0aCA4MDIuMVggaW4gc3RhdGlvbiBtb2RlICh3aWxsIHBhc3MgRUFQIGZyYW1lcyB0byB0aGUgaG9zdFxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaD03MTE5PWVudW0gbmw4MDIxMV9leHRfZmVhdHVyZV9pbmRleCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMzUtXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfUFNLLFxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6NzEzNjpcXHROTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCxcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTcxMzctXFx0Tkw4MDIxMV9FWFRfRkVBVFVSRV9GSUxTX01BWF9DSEFOTkVMX1RJTUUsXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5jPTg1Mz1pbnQgd2lwaHlfcmVnaXN0ZXIoc3RydWN0IHdpcGh5ICp3aXBoeSlcXG4tLVxcbm5ldC93aXJlbGVzcy9jb3JlLmMtOTY4LVxcdGlmIChXQVJOX09OKHdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSxcXG5uZXQvd2lyZWxlc3MvY29yZS5jOjk2OTpcXHRcXHRcXHRcXHRcXHQgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3dpcmVsZXNzL2NvcmUuYy05NzAtXFx0XFx0ICAgICghcmRldi1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfcG1rIHx8ICFyZGV2LVxcdTAwM2VvcHMtXFx1MDAzZWRlbF9wbWspKSlcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTM5OTU9c3RhdGljIGludCBubDgwMjExX2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQwMjMtXFx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDAyNDpcXHRcXHRcXHRcXHQgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYKSlcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0MDI1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODQzND1zdGF0aWMgaW50IG5sODAyMTFfc2V0X3BtayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ0Ni1cXHRpZiAoIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KHdpcGh5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0NDc6XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDQ4LVxcdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQod2lwaHksXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NDc1PXN0YXRpYyBpbnQgbmw4MDIxMV9kZWxfcG1rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NDg2LVxcdGlmICghd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg0ODc6XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWCkpXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODQ4OC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjA1LjYzNTg5ODA5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NjkyOTc2MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJyY21mbWFjYCBEcml2ZXIgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBOTDgwMjExX0VYVF9GRUFUVVJFXzRXQVlfSEFORFNIQUtFX1NUQV8xWGAgZmVhdHVyZSBhbmQgaXQgbG9va3MgbGlrZSBgYnJjbWZtYWNgIGlzIHRoZSBvbmx5IGRyaXZlciBzZXR0aW5nIGl0LiBMZXQgbWUganVzdCBjb25maXJtIHRoYXQgd2l0aCBhIHF1aWNrIGdyZXAuLi4geWVwLCB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNgIGlzIHRoZSBvbmx5IG1hdGNoLiBKdXN0IHRvIGJlIHN1cmUsIEkgY2hlY2tlZCBpZiBgbWFjODAyMTFgIHdhcyBpbnZvbHZlZCwgYnV0IG5vLCBpdCdzIG5vdCBzZXR0aW5nIHRoYXQgZmxhZy5cblxuVGhpcyBtZWFucyBgbmw4MDIxMV9zZXRfcG1rYCBpcyBvbmx5IHJlYWNoYWJsZSB3aGVuIHRoZSBgYnJjbWZtYWNgIG1vZHVsZSBpcyBsb2FkZWQuIFRoYXQncyBnb29kIGludGVsLiBOb3csIGBicmNtZm1hY2AgaXMgYSBkcml2ZXIgZm9yIEJyb2FkY29tIEZ1bGxNQUMgaGFyZHdhcmUuIEdpdmVuIHRoYXQsIGNhbiB3ZSBmdXp6IGl0IHZpYSBVU0I/XG5cblRoZSBnb29kIG5ld3MgaXMgdGhhdCBzeXprYWxsZXIgaGFzIFVTQiBmdXp6aW5nIHN1cHBvcnQuIEFuZCwgYSBxdWljayBsb29rIHNob3dzIGBicmNtZm1hY2AgaGFzIGEgVVNCIGRyaXZlciwgYEJSQ01GTUFDX1VTQmAuIEV4Y2VsbGVudC4gTGV0J3Mgc2VlIGlmIHN5emthbGxlciBjYW4gYWN0dWFsbHkgKnJlYWNoKiB0aGUgYGJyY21mbWFjYCBjb2RlLiBJZiBgQlJDTUZNQUNfVVNCYCBpcyBlbmFibGVkLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZW11bGF0ZSB0aGUgVVNCIGRldmljZSwgd2hpY2ggd2lsbCB0cmlnZ2VyIGBicmNtZl91c2JfcHJvYmVgLiAgVGhhdCBzaG91bGQsIGluIHR1cm4sIGNhbGwgYGJyY21mX3VzYl9wcm9iZV9jYmAsIHdoaWNoLCBJIGJlbGlldmUsIHJlcXVlc3RzIGZpcm13YXJlLlxuXG5BaCwgcmlnaHQsIGBicmNtZm1hY2AgbmVlZHMgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZS4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlLi4uIFllcCwgdGhlcmUgaXQgaXM6ICBgYnJjbWZfZndfZ2V0X2Zpcm13YXJlcygpYC4gIElmIHRoZSBmaXJtd2FyZSBpc24ndCBwcmVzZW50LCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAgbWlnaHQgZmFpbCwgYW5kIHRoZSBkZXZpY2Ugd29uJ3QgcmVnaXN0ZXIgd2l0aCBgY2ZnODAyMTFgLiBXZSBuZWVkIHRvIGludmVzdGlnYXRlIGBicmNtZl91c2JfcHJvYmVfcGhhc2UyYCB0byBzZWUgaWYgdGhhdCdzIGEgYmxvY2tpbmcgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTIyLCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjE0LjIwNTIwMDE1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1ODAwMTA4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcHJvYmVfcGhhc2UyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMwOC1cXHQvKiByZXF1ZXN0IGZpcm13YXJlIGhlcmUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwOTpcXHRyZXQgPSBicmNtZl9md19nZXRfZmlybXdhcmVzKGRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzEwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTE0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoXFx1MDAyNnVzYi1cXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjE1LjI2MzIwODczMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk3MjY2NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIG9uLCBzdW1tYXJpemVkIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGgga2VybmVsLWxldmVsIFVTQiBkcml2ZXIgZGV2ZWxvcG1lbnQuXG5cbioqRGl2aW5nIGludG8gYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgKipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAuIFRoZSBuYW1lIGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgdGhlICpzZWNvbmQqIHBoYXNlIG9mIHRoZSBVU0IgZGV2aWNlIHByb2JpbmcgcHJvY2VzcyBmb3IgdGhpcyBCcm9hZGNvbSBXaS1GaSBhZGFwdGVyLiBTbywgd2UndmUgYWxyZWFkeSBnb3R0ZW4gcGFzdCB0aGUgaW5pdGlhbCBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIHByb2JhYmx5IHNvbWUgYmFzaWMgcmVzb3VyY2UgYWxsb2NhdGlvbi4gTm93LCB3ZSdyZSBsaWtlbHkgaW4gdGhlIHRoaWNrIG9mIGRldmljZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbi5cblxuTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHN0ZXBzOiBXZSdyZSBwcm9iYWJseSBoYW5kbGluZyB0aGUgYWN0dWFsIGNvbW11bmljYXRpb24gc2V0dXAgd2l0aCB0aGUgZGV2aWNlIGhlcmUuIElzIHRoaXMgd2hlcmUgd2UncmUgbWFwcGluZyB0aGUgVVNCIGVuZHBvaW50cywgc2V0dGluZyB1cCB0aGUgVVJCcyAoVVNCIFJlcXVlc3QgQmxvY2tzKSwgYW5kIGluaXRpYWxpemluZyB0aGUgbmVjZXNzYXJ5IGRhdGEgc3RydWN0dXJlcyB0byB0YWxrIHRvIHRoZSBCcm9hZGNvbSBjaGlwPyBEZWZpbml0ZWx5IGV4cGVjdGluZyB0byBzZWUgc29tZSBjcml0aWNhbCByZWdpc3RlciB3cml0ZXMgYW5kIHJlYWRzLiBBcmUgd2UgY29uZmlndXJpbmcgdGhlIERNQSAoRGlyZWN0IE1lbW9yeSBBY2Nlc3MpIGNoYW5uZWxzIHRvbz8gUHJvYmFibHkuIEdpdmVuIHRoZSB0YXJnZXQsIEknbSBleHBlY3RpbmcgdG8gZGVhbCB3aXRoIHRoZSBjaGlwJ3MgaW50ZXJuYWwgZmlybXdhcmUgbG9hZGluZyBtZWNoYW5pc20g4oCTIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSB3aGVyZSB0aGUgZHJpdmVyIHdvdWxkIGJlIGluaXRpYXRpbmcgdGhlIGZpcm13YXJlIHVwbG9hZCBhbmQgd2FpdGluZyBmb3IgdGhlIGNoaXAgdG8gY29tZSBvbmxpbmUuIFdoYXQgYXJlIHRoZSByZXRyeSBtZWNoYW5pc21zIGlmIHRoZSBmaXJtd2FyZSBsb2FkIGZhaWxzPyBWZXJ5IGltcG9ydGFudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlIGFyZSBkZWFsaW5nIHdpdGggcG93ZXIgbWFuYWdlbWVudCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIHBoYXNlLiBBcmUgd2UgdGVtcG9yYXJpbHkgZW5hYmxpbmcgYW55IGhpZ2gtcG93ZXIgbW9kZXM/IEhvdyBhcmUgd2UgaGFuZGxpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGFjY2Vzc2luZyB0aGUgVVNCIGJ1cz8gTXkgZm9jdXMgaXMgZXNwZWNpYWxseSBkaXJlY3RlZCB0b3dhcmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzIGluIHRoZSBkYXRhIHRyYW5zZmVyIGFuZCBlbnN1cmluZyBhIHJvYnVzdCBzb2x1dGlvbi4gTGV0J3Mgc2VlIGhvdyB0aGV5IGhhdmUgaGFuZGxlZCBhbnkgaGFyZHdhcmUgcXVpcmtzOyBzb21lIEJyb2FkY29tIGNoaXBzIGFyZSBub3RvcmlvdXMgZm9yIGhhdmluZy4uLiBpbnRlcmVzdGluZy4uLiBoYXJkd2FyZSBiZWhhdmlvci4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyByb2NrIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzYxNSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjE5LjU2MDQ3Nzg2OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE3NixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE3NjpcXHRzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG4xMTc3OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpmd3JlcSlcXG4xMTc4OlxcdHtcXG4xMTc5OlxcdFxcdHN0cnVjdCBicmNtZl9idXMgKmJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbjExODA6XFx0XFx0c3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvID0gYnVzLVxcdTAwM2VidXNfcHJpdi51c2ItXFx1MDAzZWRldmluZm87XFxuMTE4MTpcXHRcXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3O1xcbjExODI6XFx0XFxuMTE4MzpcXHRcXHRpZiAocmV0KVxcbjExODQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMTg1OlxcdFxcbjExODY6XFx0XFx0YnJjbWZfZGJnKFVTQiwgXFxcIlN0YXJ0IGZ3IGRvd25sb2FkaW5nXFxcXG5cXFwiKTtcXG4xMTg3OlxcdFxcbjExODg6XFx0XFx0ZncgPSBmd3JlcS1cXHUwMDNlaXRlbXNbQlJDTUZfVVNCX0ZXX0NPREVdLmJpbmFyeTtcXG4xMTg5OlxcdFxcdGtmcmVlKGZ3cmVxKTtcXG4xMTkwOlxcdFxcbjExOTE6XFx0XFx0cmV0ID0gY2hlY2tfZmlsZShmdy1cXHUwMDNlZGF0YSk7XFxuMTE5MjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjExOTM6XFx0XFx0XFx0YnJjbWZfZXJyKFxcXCJpbnZhbGlkIGZpcm13YXJlXFxcXG5cXFwiKTtcXG4xMTk0OlxcdFxcdFxcdHJlbGVhc2VfZmlybXdhcmUoZncpO1xcbjExOTU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMTk2OlxcdFxcdH1cXG4xMTk3OlxcdFxcbjExOTg6XFx0XFx0ZGV2aW5mby1cXHUwMDNlaW1hZ2UgPSBmdy1cXHUwMDNlZGF0YTtcXG4xMTk5OlxcdFxcdGRldmluZm8tXFx1MDAzZWltYWdlX2xlbiA9IGZ3LVxcdTAwM2VzaXplO1xcbjEyMDA6XFx0XFxuMTIwMTpcXHRcXHRyZXQgPSBicmNtZl91c2JfZndfZG93bmxvYWQoZGV2aW5mbyk7XFxuMTIwMjpcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcXG4xMjAzOlxcdFxcdGlmIChyZXQpXFxuMTIwNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMDU6XFx0XFxuMTIwNjpcXHRcXHRyZXQgPSBicmNtZl9hbGxvYyhkZXZpbmZvLVxcdTAwM2VkZXYsIGRldmluZm8tXFx1MDAzZXNldHRpbmdzKTtcXG4xMjA3OlxcdFxcdGlmIChyZXQpXFxuMTIwODpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRcXHQvKiBBdHRhY2ggdG8gdGhlIGNvbW1vbiBkcml2ZXIgaW50ZXJmYWNlICovXFxuMTIxMTpcXHRcXHRyZXQgPSBicmNtZl9hdHRhY2goZGV2aW5mby1cXHUwMDNlZGV2KTtcXG4xMjEyOlxcdFxcdGlmIChyZXQpXFxuMTIxMzpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbjEyMTQ6XFx0XFxuMTIxNTpcXHRcXHRjb21wbGV0ZShcXHUwMDI2ZGV2aW5mby1cXHUwMDNlZGV2X2luaXRfZG9uZSk7XFxuMTIxNjpcXHRcXHRyZXR1cm47XFxuMTIxNzpcXHRlcnJvcjpcXG4xMjE4OlxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcImZhaWxlZDogZGV2PSVzLCBlcnI9JWRcXFxcblxcXCIsIGRldl9uYW1lKGRldiksIHJldCk7XFxuMTIxOTpcXHRcXHRjb21wbGV0ZShcXHUwMDI2ZGV2aW5mby1cXHUwMDNlZGV2X2luaXRfZG9uZSk7XFxuMTIyMDpcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoZGV2KTtcXG4xMjIxOlxcdH1cXG4xMjIyOlxcdFxcbjEyMjM6XFx0c3RhdGljIHN0cnVjdCBicmNtZl9md19yZXF1ZXN0ICpcXG4xMjI0OlxcdGJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbjEyMjU6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQyMjowNzoxOS41NjA1NzI2NjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzNjYxMDAyMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIENvZGUgYW5kIFdvcnRoRnV6emluZyoqXG5cbk9rYXksIHNvIGhlcmUncyB0aGUgYnJlYWtkb3duIG9mIHdoZXRoZXIgdGhpcyBwYXRjaCBpcyBcIldvcnRoRnV6emluZ1wiIG9yIG5vdC4gVGhlIGtleSBpcyB3aGV0aGVyIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlIGluIGEgZnV6emluZyBlbnZpcm9ubWVudC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGBicmNtZm1hY2AgZHJpdmVyIGlzIGludm9sdmVkLCBhbmQgdGhhdCdzIHVzdWFsbHkgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLiBBbmQgaXQgZXhwbGljaXRseSBuZWVkcyBmaXJtd2FyZS4gU28gdGhlIGBicmNtZm1hY2AgY29kZSBwYXRoIHdvdWxkIG5vcm1hbGx5IGJlIGEgcHJvYmxlbSBmb3IgZnV6emluZyBpbiBhIHN0YW5kYXJkIFN5emthbGxlciBlbnZpcm9ubWVudCBiZWNhdXNlIHdlIG9mdGVuIGRvbid0IGluY2x1ZGUgdGhhdCBmaXJtd2FyZSBpbiB0aGUgdGVzdCBpbWFnZS5cblxuSG93ZXZlciwgU3l6a2FsbGVyICpjYW4qIHByb3ZpZGUgZmlybXdhcmUgaWYgaXQgaXMgYnVpbHQgaW4uXG5cbkJ1dCwgdGhlIHByb21wdCBleHBsaWNpdGx5IHN0YXRlcyB0aGF0IHdlIHNob3VsZCBhdm9pZCBsb29raW5nIGF0IHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzLCBvciBkcml2ZXJzIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBoYXJkd2FyZS5cblxuQnV0IHRoZW4sIEkgc2VlIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgd2hpY2ggaXMgY29yZSBrZXJuZWwgd2lyZWxlc3MgbG9naWMuIFRoYXQgaW1tZWRpYXRlbHkgY2hhbmdlcyB0aGluZ3MuIFRoaXMgaXNuJ3QganVzdCBhIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2UgYW55bW9yZS5cblxuVGhlIGNoYW5nZSBpbiBgbmw4MDIxMS5jYCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbC4gVGhpcyBpcyBnb29kIG5ld3MsIGFzIGl0IHBvdGVudGlhbGx5IHdpZGVucyB0aGUgYXBwbGljYWJpbGl0eSBvZiB0aGUgcGF0Y2guIFRoZSByZWxldmFudCBjb2RlIGlzIG9ubHkgcmVhY2hhYmxlIGlmIGEgZHJpdmVyIHNldHMgdGhlIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAgb3IgYE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYYCBmbGFncy5cblxuU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiB3aGljaCBkcml2ZXJzIHNldCB0aGVzZSBmZWF0dXJlcz8gSSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRGAsIGFuZCBmb3VuZCB0aGF0IGl0J3MgKm9ubHkqIHNldCBieSBgYnJjbWZtYWMvY2ZnODAyMTEuY2AuIEFuZCBJIGFsc28gZ3JlcHBlZCBmb3IgYE5MODAyMTFfRVhUX0ZFQVRVUkVfNFdBWV9IQU5EU0hBS0VfU1RBXzFYYCBhbmQgZm91bmQgdGhhdCBpdCBpcyBvbmx5IHNldCBieSBgYnJjbWZtYWMvY2ZnODAyMTEuY2AgYXMgd2VsbC4gVGhhdCBtZWFucyB0aGlzIHBhdGggaXMsIGF0IGxlYXN0IGRpcmVjdGx5LCBvbmx5IHJlYWNoYWJsZSBieSB0aGUgYGJyY21mbWFjYCBkcml2ZXIuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgKm90aGVyKiBwbGFjZXMgd2hlcmUgdGhpcyBmZWF0dXJlIGZsYWcgaXMgc2V0LiBFdmVuIGEgYnJpZWYgbG9vayBpbiB0aGUgYG5ldC93aXJlbGVzcy9gIGRpcmVjdG9yeSBtaWdodCBiZSB3b3J0aCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3OTQsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzEuOTI2Njc2MDM0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg1NDYwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTc3NTg9c3RhdGljIGludCBicmNtZl9zZXR1cF93aXBoeShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MTgtXFx0XFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KHdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjc4MTk6XFx0XFx0XFx0XFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTc4MjAtXFx0XFx0aWYgKGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzIuMjE1MjI2MTI4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MTY5NzgyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWdWxuZXJhYmlsaXR5IFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBgTkw4MDIxMV9FWFRfRkVBVFVSRV80V0FZX0hBTkRTSEFLRV9TVEFfMVhgIGZsYWcgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBubDgwMjExX3NldF9wbWtgLiBSaWdodCwgaXQgbG9va3MgbGlrZSBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciBzZXRzIHRoYXQgZmxhZy4gU28sIHRoYXQgbWVhbnMgYG5sODAyMTFfc2V0X3Bta2AgaXMgKm9ubHkqIHJlYWNoYWJsZSBpZiBgYnJjbWZtYWNgIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQuIE15IG5leHQgdGhvdWdodCBpczogY2FuIGBicmNtZm1hY2AgZXZlbiBiZSBpbml0aWFsaXplZCB3aXRoaW4gdGhlIHN5emthbGxlciBlbnZpcm9ubWVudD9cblxuUmVtZW1iZXJpbmcgaG93IHN5emthbGxlciBvcGVyYXRlcywgaXQgdHlwaWNhbGx5IHVzZXMgYG1hYzgwMjExX2h3c2ltYCBmb3IgaXRzIFdpLUZpIGZ1enppbmcgZWZmb3J0cy4gSXQgZG9lc24ndCB1c2UgYGJyY21mbWFjYC4gRXZlbiBpZiB0aGVyZSB3ZXJlIHNvbWUgVVNCIGZ1enppbmcgY29uZmlndXJhdGlvbiwgYGJyY21mbWFjYCBzcGVjaWZpY2FsbHkgbmVlZHMgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBjb3JyZWN0bHkuIE5vdyBJJ20gcmVjYWxsaW5nIHRoZSBjb2RlIHBhdGguLi4gSWYgYGJyY21mX2Z3X2dldF9maXJtd2FyZXNgIGZhaWxzIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIGJhaWxzIG91dCwgY2FsbGluZyBgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKGRldilgLiBUaGF0J3MgaW1wb3J0YW50LlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBEb2VzIGBicmNtZl9md19nZXRfZmlybXdhcmVzYCAqYWN0dWFsbHkqIGZhaWwgaW4gc3l6a2FsbGVyPyBJIG5lZWQgdG8gY2hlY2suIEl0J3MgaGlnaGx5IHByb2JhYmxlIHRoYXQgc3l6a2FsbGVyIGltYWdlcyBkb24ndCBpbmNsdWRlIHRoZSBuZWNlc3NhcnkgQnJvYWRjb20gZmlybXdhcmUsIGFuZCB0aGlzIHdvdWxkIGV4cGxhaW4gdGhlIG9ic2VydmVkIGJlaGF2aW9yLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBicmNtZl9md19nZXRfZmlybXdhcmVzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1OTgsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzcuODMyMjA2NjQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTYzNDg3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9md19nZXRfZmlybXdhcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmM9NzQxPXN0YXRpYyBib29sIGJyY21mX2Z3X3JlcXVlc3RfaXNfdmFsaWQoc3RydWN0IGJyY21mX2Z3X3JlcXVlc3QgKnJlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jLTc1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZmlybXdhcmUuYzo3NTY6aW50IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5jLTc1Ny1cXHRcXHRcXHQgICB2b2lkICgqZndfY2IpKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGVycixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oPTgxPWJyY21mX2Z3X2FsbG9jX3JlcXVlc3QodTMyIGNoaXAsIHUzMiBjaGlwcmV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmgtOTAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Zpcm13YXJlLmg6OTE6aW50IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqcmVxLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9maXJtd2FyZS5oLTkyLVxcdFxcdFxcdCAgIHZvaWQgKCpmd19jYikoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgZXJyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xNTUwPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTE1NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxNTc1OlxcdGVyciA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfcGNpZV9zZXR1cCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xNTc2LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQ0Mz1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTU3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoYnVzLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl9wY2llX3NldHVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1NTgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmM9NDQ0OT1pbnQgYnJjbWZfc2Rpb19wcm9iZShzdHJ1Y3QgYnJjbWZfc2Rpb19kZXYgKnNkaW9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTQ1NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYzo0NTQ3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoc2Rpb2Rldi1cXHUwMDNlZGV2LCBmd3JlcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jLTQ1NDgtXFx0XFx0XFx0XFx0ICAgICBicmNtZl9zZGlvX2Zpcm13YXJlX2NhbGxiYWNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA4LVxcdC8qIHJlcXVlc3QgZmlybXdhcmUgaGVyZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMzA5OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMTAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTQ9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1Mjc6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhcXHUwMDI2dXNiLVxcdTAwM2VkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUyOC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6MzcuODgxODQ0MjgzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1ODU3ODQxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnJjbWZfZndfZ2V0X2Zpcm13YXJlc2AgdXNlcyBgcmVxdWVzdF9maXJtd2FyZV9ub3dhaXRgLiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGZpcm13YXJlIGlzbid0IHByZXNlbnQsIHRoZSBjYWxsYmFjayB3aWxsIGV2ZW50dWFsbHkgcmVwb3J0IGFuIGVycm9yIG9yIGEgTlVMTCBmaXJtd2FyZSBzdHJ1Y3QuIFRoaXMsIGluIHR1cm4sIHdpbGwgY2F1c2UgYGJyY21mX3VzYl9wcm9iZV9waGFzZTJgIHRvIGZhaWwgZHVlIHRvIHRoZSBgaWYgKHJldClgIGNoZWNrLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gcHJvdmlkZSB0aGlzIGZpcm13YXJlLiBJIGtub3cgc3l6a2FsbGVyIGhhcyBhIGZlYXR1cmUgZm9yIGZpcm13YXJlLCBidXQgaXQgdXN1YWxseSBkb2Vzbid0IHdvcmsgZm9yIEJyb2FkY29tIGJlY2F1c2UgdGhlIGZpcm13YXJlIGlzIG1hc3NpdmUgYW5kIHByb3ByaWV0YXJ5LlxuXG5UaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIGludm9sdmVzIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBbmQgaXQgc2VlbXMgbGlrZSB0aGlzIGZhbGxzIHVuZGVyIHRoYXQgY2F0ZWdvcnksIHNpbmNlIGBicmNtZm1hY2AgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCBhbmQgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gZmlybXdhcmUgYW5kIGxpa2VseSBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIGVtdWxhdGVkLlxuXG5TbywgaXMgYGJyY21mbWFjYCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXI/IFllcywgaXQncyBleHBsaWNpdGx5IGZvciBCcm9hZGNvbSBGdWxsTUFDIGNoaXBzLiBJdCByZXF1aXJlcyBzcGVjaWZpYyBmaXJtd2FyZSBhbmQgaGFyZHdhcmUgdG8gZnVuY3Rpb24gcHJvcGVybHkuXG5cbk9rYXksIGJ1dCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gRG9lcyBhbm90aGVyIGRyaXZlciBzZXQgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYD8gTm8sIHdlIGNoZWNrZWQuIE9ubHkgYGJyY21mbWFjYCBzZXRzIGl0LiBUaGlzIG1lYW5zIHRoZSBjaGFuZ2UgaW4gYG5sODAyMTEuY2AgaXMgZWZmZWN0aXZlbHkgZGVhZCBjb2RlIHVubGVzcyBgYnJjbWZtYWNgIGxvYWRzIGFuZCBpbml0aWFsaXplcyBzdWNjZXNzZnVsbHkuIEFuZCB0aGF0J3MgaGlnaGx5IHVubGlrZWx5IGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCB3aXRob3V0IHRoZSBjb3JyZWN0IEJyb2FkY29tIGZpcm13YXJlLlxuXG5UaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgbWFjODAyMTFfaHdzaW1gIHNldHMgdGhpcyBzcGVjaWZpYyBmZWF0dXJlLCBidXQgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCBpdCdzIGhpZ2hseSB1bmxpa2VseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2MDgsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6NDcuNDY3NjMwMjYzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyMzMyOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDc6NDcuNTE1NTU4NzcyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NjMzNjAzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZSwgd2l0aCBhIG5vZCB0byB0aGUgZmFjdCB0aGF0IEknbSBvcGVyYXRpbmcgd2l0aGluIGFuIGFyZWEgSSBrbm93IHdlbGw6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU291cmNlIG9mIHRoZSBTZXR0aW5nKipcblxuUmlnaHQsIHNvLCB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIEkgaGFkLCB0aGF0IGBtYWM4MDIxMV9od3NpbWAgd2FzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSB0aGluZyBpbiBxdWVzdGlvbiwgaXNuJ3QgaG9sZGluZyB3YXRlci4gTmVlZCB0byBnbyBiYWNrIGFuZCByZWFzc2Vzcy4gVGhhdCBhdmVudWUgaXMgY2xlYXJseSBhIGRlYWQgZW5kLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2ssIHRha2UgYSBicmVhdGgsIGFuZCBmb2N1cy4gSWYgaXQncyAqbm90KiBpbiB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBsYXllciwgdGhlIG1vc3QgbG9naWNhbCBuZXh0IHBsYWNlIHRvIGRpZyBpcyB0aGUgYG1hYzgwMjExYCBjb3JlIGl0c2VsZi4gVGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgV2lGaSBzdGFjayBpbiB0aGlzIHNjZW5hcmlvLiBJdCdzIHRoZSBjZW50cmFsIHBvaW50IHdoZXJlIHRoZXNlIGtpbmRzIG9mIGNvbmZpZ3VyYXRpb25zIGFuZCBvcGVyYXRpb25zIGFyZSBtYW5hZ2VkLiBJIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgY29yZSBmdW5jdGlvbnMsIGxvb2sgZm9yIGNhbGxzIHJlbGF0ZWQgdG8gdGhlIHJlbGV2YW50IHBhcmFtZXRlciwgYW5kIHNlZSB3aGVyZSBhbmQgKmhvdyogdGhpcyBzcGVjaWZpYyBzZXR0aW5nIGlzIHVsdGltYXRlbHkgYmVpbmcgaGFuZGxlZC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCBkZWJ1Z2dpbmcgdG9vbHMgYW5kIGtub3dsZWRnZSBvZiB0aGUgY29yZSB0byBkaWcgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU5NSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjUxLjI3ODkyMTMyMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NDE5MjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA3OjUxLjMyMjU2OTk4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTYyNzI3MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gYSBWZW5kb3ItU3BlY2lmaWMgRHJpdmVyKipcblxuT2theSwgc28gdGhlIGBtYWM4MDIxMWAgY29yZSBkb2Vzbid0IHNldCBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgLCB3aGljaCBtZWFucyBvbmx5IHRoZSBgYnJjbWZtYWNgIGRyaXZlciwgd2hpY2ggaXMgc3BlY2lmaWMgdG8gQnJvYWRjb20gY2hpcHMsIHNldHMgdGhpcyBmZWF0dXJlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIHRoaXMgY29kZSB1c2luZyBzeXprYWxsZXIncyBVU0IgZ2FkZ2V0IGVtdWxhdGlvbj9cblxuSSBjYW4gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIHRvIGVtdWxhdGUgYSBVU0IgZGV2aWNlLiBJZiBJIGdpdmUgaXQgdGhlIGNvcnJlY3QgdmVuZG9yL3Byb2R1Y3QgSURzLCB0aGUga2VybmVsIHNob3VsZCBiaW5kIHRoZSBgYnJjbWZtYWNgIFVTQiBkcml2ZXIgdG8gdGhlIGVtdWxhdGVkIGRldmljZS4gVGhhdCB0cmlnZ2VycyBgcmVxdWVzdF9maXJtd2FyZWAuIEhvd2V2ZXIsIGlmIHRoZSBmaXJtd2FyZSBpc24ndCBpbiB0aGUgcm9vdGZzLCB3aGljaCBpcyBsaWtlbHksIGByZXF1ZXN0X2Zpcm13YXJlYCBmYWlscywgdGhlIGRyaXZlciBwcm9iZSBmYWlscywgdGhlIGB3aXBoeWAgaXNuJ3QgcmVnaXN0ZXJlZCwgYW5kIHRoZSBgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQURgIGZlYXR1cmUgaXMgbmV2ZXIgZXhwb3NlZCB0byBgbmw4MDIxMWAuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYG5sODAyMTEuY2AgYW5kIGBicmNtZm1hYy9jZmc4MDIxMS5jYCBiZWNvbWVzIHVucmVhY2hhYmxlLlxuXG5Eb2VzIHN5emthbGxlciBwcm92aWRlIGZpcm13YXJlIGZvciBgYnJjbWZtYWNgPyBNeSBpbnN0aW5jdCBzYXlzIGl0IHByb2JhYmx5IGRvZXNuJ3QsIHVzdWFsbHkgc3l6a2FsbGVyIG9ubHkgaGFzIGZpcm13YXJlIGZvciBhIGZldyBzcGVjaWZpYyBkcml2ZXJzLCBsaWtlIGBhdGg5a19odGNgIG9yIGBjYXJsOTE3MGAuIEknZCBuZWVkIHRvIGNvbmZpcm0gZGlyZWN0bHksIGJ1dCBwcmFjdGljYWxseSwgdmVuZG9yLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMgdGhhdCByZWx5IG9uIGZpcm13YXJlIGFyZSByYXJlbHkgc3VjY2Vzc2Z1bGx5IGZ1enplZCBiZXlvbmQgdGhlIHByb2JlIGZhaWx1cmUuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGludm9sdmUgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgdGhhdCBpbmNsdWRlcyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoaXMgcGF0Y2ggcHJpbWFyaWx5IGltcGFjdHMgYGJyY21mbWFjYCDigJMgYSB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgZHJpdmVyLCB3aXRoIGNoYW5nZXMgbW9zdGx5IGluIGBicmNtZm1hYy9jZmc4MDIxMS5jYC4gVGhlIGNoYW5nZSBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AgaXMganVzdCBvbmUgbGluZSB3aGljaCBvbmx5IGVuYWJsZXMgYG5sODAyMTFfc2V0X3Bta2AgaWYgYE5MODAyMTFfRVhUX0ZFQVRVUkVfUk9BTV9PRkZMT0FEYCBpcyBzZXQsIGFuZCBpdCdzIHNldCBieSBgYnJjbWZtYWNgLCB0aGUgYG5sODAyMTEuY2AgY2hhbmdlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGFzIHdlbGwuXG5cbkxldCdzIGRvdWJsZSBjaGVjayBgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMmAuIFllcywgaXQgKmFic29sdXRlbHkqIHJlcXVpcmVzIGZpcm13YXJlLiBUaGVyZSdzIG5vIG9idmlvdXMgd2F5IGFyb3VuZCB0aGF0OyB0aGUgY29kZSBjaGVja3MgZm9yIGZpcm13YXJlIGxvYWRpbmcgZmFpbHVyZXMuIFNvLCB3aXRob3V0IGZpcm13YXJlLCB0aGUgcHJvYmUgZmFpbHMuIFRoZSBgd2lwaHlgIGRvZXNuJ3QgcmVnaXN0ZXIsIGFuZCB0aGUgcmVsYXRlZCBgbmw4MDIxMWAgY29kZSBpcyBpbmFjY2Vzc2libGUuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhhdCBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciAoYGJyY21mbWFjYCkgdGhhdCBuZWVkcyB1bmF2YWlsYWJsZSBoYXJkd2FyZS9maXJtd2FyZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHRoYXQgdGhlIGNvcmUga2VybmVsIGNoYW5nZXMgaW4gYG5sODAyMTEuY2AgaXMgb25seSByZWFjaGVkIHRocm91Z2ggc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHNwZWNpZmljIGRyaXZlciwgdGhpcyBwYXRjaCBpcyAqbm90KiB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkxNywiT3V0cHV0VG9rZW5zIjoyMDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMjI6MDg6MDQuODg1Mjk5MjAxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcHJpbWFyaWx5IG1vZGlmaWVzIHRoZSBicmNtZm1hYyBkcml2ZXIgKGEgdmVuZG9yLXNwZWNpZmljIEJyb2FkY29tIHdpcmVsZXNzIGRyaXZlcikgdG8gYWRkIEZhc3QgVHJhbnNpdGlvbiAoRkJUKSBhbmQgT3Bwb3J0dW5pc3RpYyBLZXkgQ2FjaGluZyAoT0tDKSByb2FtaW5nIG9mZmxvYWQgc3VwcG9ydC4gSXQgYWxzbyBhZGRzIGEgbWlub3IgY2hlY2sgaW4gdGhlIGNvcmUgbmw4MDIxMSBjb2RlIHRvIGFsbG93IHNldHRpbmcgUE1LIGlmIHRoZSBuZXcgTkw4MDIxMV9FWFRfRkVBVFVSRV9ST0FNX09GRkxPQUQgZmxhZyBpcyBzZXQuIEhvd2V2ZXIsIHRoaXMgZmxhZyBpcyBleGNsdXNpdmVseSBzZXQgYnkgdGhlIGJyY21mbWFjIGRyaXZlci4gU2luY2UgYnJjbWZtYWMgcmVxdWlyZXMgc3BlY2lmaWMgQnJvYWRjb20gaGFyZHdhcmUgb3IgZmlybXdhcmUgKGV2ZW4gd2hlbiBwcm9iZWQgdmlhIFVTQiBnYWRnZXQsIGl0IGZhaWxzIGR1cmluZyByZXF1ZXN0X2Zpcm13YXJlIGlmIHRoZSBwcm9wcmlldGFyeSBmaXJtd2FyZSBpcyBtaXNzaW5nKSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgaW4gYm90aCB0aGUgZHJpdmVyIGFuZCBubDgwMjExIGNhbm5vdCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBwcmltYXJpbHkgbW9kaWZpZXMgdGhlIGJyY21mbWFjIGRyaXZlciAoYSB2ZW5kb3Itc3BlY2lmaWMgQnJvYWRjb20gd2lyZWxlc3MgZHJpdmVyKSB0byBhZGQgRmFzdCBUcmFuc2l0aW9uIChGQlQpIGFuZCBPcHBvcnR1bmlzdGljIEtleSBDYWNoaW5nIChPS0MpIHJvYW1pbmcgb2ZmbG9hZCBzdXBwb3J0LiBJdCBhbHNvIGFkZHMgYSBtaW5vciBjaGVjayBpbiB0aGUgY29yZSBubDgwMjExIGNvZGUgdG8gYWxsb3cgc2V0dGluZyBQTUsgaWYgdGhlIG5ldyBOTDgwMjExX0VYVF9GRUFUVVJFX1JPQU1fT0ZGTE9BRCBmbGFnIGlzIHNldC4gSG93ZXZlciwgdGhpcyBmbGFnIGlzIGV4Y2x1c2l2ZWx5IHNldCBieSB0aGUgYnJjbWZtYWMgZHJpdmVyLiBTaW5jZSBicmNtZm1hYyByZXF1aXJlcyBzcGVjaWZpYyBCcm9hZGNvbSBoYXJkd2FyZSBvciBmaXJtd2FyZSAoZXZlbiB3aGVuIHByb2JlZCB2aWEgVVNCIGdhZGdldCwgaXQgZmFpbHMgZHVyaW5nIHJlcXVlc3RfZmlybXdhcmUgaWYgdGhlIHByb3ByaWV0YXJ5IGZpcm13YXJlIGlzIG1pc3NpbmcpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBpbiBib3RoIHRoZSBkcml2ZXIgYW5kIG5sODAyMTEgY2Fubm90IGJlIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDIyOjA4OjA0Ljg4NTMyNDM2MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdqzqz[1] Phase: Running StartedAt: 2026-08-24 22:08:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdqzqz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-24 22:08:17 +0000 UTC FinishedAt: 2026-08-24 22:08:21 +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,}