Z3JvdXAgYmFzaWMgIkJhc2ljIFRlc3RzIgoKCWNhc2UgY29ycmVjdF9waGFzZXMKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZGVmaW5lIGUgKzEKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW1lZGl1bXAgaW50IG4gPSAxZTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9pZGVudGlmaWVyCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2RlZmluZSBlICsxCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQltZWRpdW1wIGludCAxeHl6ID0gMTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbnVsbF9kaXJlY3RpdmUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMC4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoKCQkJIwoJCSMgLy8gY29tbWVudAoJLypzZmQqLwkJIyAvKiAqLwoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDAuMDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9kaXJlY3RpdmUKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZGVmaW4gQUFBCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtaXNzaW5nX2lkZW50aWZpZXIKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZGVmaW5lCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbXB0eV9vYmplY3QKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gLTEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCSMgZGVmaW5lIFZBTFVFCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMVUUgLSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVtcHR5X2Z1bmN0aW9uCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IC0xLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgoJCQkjIGRlZmluZSBWQUxVRShhKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFKDIuMCkgLSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVtcHR5X2RpcmVjdGl2ZQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgoJCQkjCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gMS4wOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB0b2tlbl9wYXN0aW5nXzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoKCQkJI2RlZmluZSBBKFgpIHZhciMjWAoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJZmxvYXQgdmFyZm9vID0gMS4wOwoJCQkJZmxvYXQgdmFyID0gLTEuMDsKCQkJCW91dDAgPSBBKGZvbyk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHRva2VuX3Bhc3RpbmdfMgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgoJCQkjZGVmaW5lIEEoWCwgWSkgdmFyIyNYIyNZCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlmbG9hdCB2YXJmb28gPSAxLjA7CgkJCQlmbG9hdCB2YXJmID0gLTEuMDsKCQkJCW91dDAgPSBBKGYsIG9vKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugc3RyaW5naWZpY2F0aW9uCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2RlZmluZSBWRUM0X1NUUklOR19QQVJBTShhLCBiLCBjLCBkKSB2ZWM0KCNhLCAjYiwgYywgZCkKCQkJJHtERUNMQVJBVElPTlN9CgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIGJhc2ljCgpncm91cCBkZWZpbml0aW9ucyAiU3ltYm9sIERlZmluaXRpb24gVGVzdHMiCgoJY2FzZSBkZWZpbmVfdmFsdWVfYW5kX2Z1bmN0aW9uCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDYuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlM6c2luZ2xlLWxpbmV9CgkJCSMJZGVmaW5lCQlWQUxVRQkJCSgxLjUgKyAyLjUpCgkJCSMJZGVmaW5lCQlGVU5DVElPTihfX0xJTkVfXywgYikJX19MSU5FX18rYgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEZVTkNUSU9OKFZBTFVFLCAoKDAuMikgKyAxLjgpICk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lX29iamVjdF9pbnZhbGlkX3N5bnRheAoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjZGVmaW5lCQlWQUwJCQkyLjAKCQkJI3VuZGVmCQlWQUwJc2RmbGtqZmRzCgkJCSNkZWZpbmUJCVZBTAkJCTEuMAoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZV9mdW5jdGlvbgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZQkJRlVOQ1RJT04oYSxiKSBhK2IKCQkJI3VuZGVmCQlGVU5DVElPTgoJCQkjZGVmaW5lCQlGVU5DVElPTihhLGIpIGEtYgoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DVElPTigzLjAsIDIuMCk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuZGVmaW5lX3ZlcnNpb24KCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSN1bmRlZiBfX1ZFUlNJT05fXwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmIGRlZmluZWQoX19WRVJTSU9OX18pCgkJCQlvdXQwID0gLTEuMDsKCQkJI2Vsc2UKCQkJCW91dDAgPSAxLjA7CgkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZmluZV9jb3JlX3Byb2ZpbGUKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjdW5kZWYgR0xfY29yZV9wcm9maWxlCgkJCSR7REVDTEFSQVRJT05TfQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkjaWYgZGVmaW5lZChHTF9jb3JlX3Byb2ZpbGUpCgkJCQlvdXQwID0gLTEuMDsKCQkJI2Vsc2UKCQkJCW91dDAgPSAxLjA7CgkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBkZWZpbml0aW9ucwoKZ3JvdXAgaW52YWxpZF9kZWZpbml0aW9ucyAiSW52YWxpZCBEZWZpbml0aW9uIFRlc3RzIgoKCWNhc2UgZGVmaW5lX25vbl9pZGVudGlmaWVyCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSNkZWZpbmUgMTIzIDMyMQoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmRlZl9ub25faWRlbnRpZmllcl8xCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSN1bmRlZiAxMjMKCQkJJHtERUNMQVJBVElPTlN9CgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW5kZWZfbm9uX2lkZW50aWZpZXJfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjdW5kZWYgZm9vLmJhcgoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoKZW5kICMgaW52YWxpZF9kZWZpbml0aW9ucwoKZ3JvdXAgb2JqZWN0X3JlZGVmaW5pdGlvbnMgIk9iamVjdCBSZWRlZmluaXRpb24gVGVzdHMiCgoJY2FzZSBpbnZhbGlkX29iamVjdF9pZGVudAoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgQUFBCQkJMi4wCgkJCSMgZGVmaW5lIEFBQUEJCQkyLjEKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQUEgLSAxLjApCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX29iamVjdF93aGl0ZXNwYWNlCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJCQkyLjAKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQS0gMS4wKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9vYmplY3Rfb3AKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQkJCTIuMAoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMS4wKQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBICsgMS4wKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9vYmplY3RfZmxvYXR2YWxfMQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgQUFBCQkJMi4wCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxLjApCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxLjEpCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChWQUxVRSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX29iamVjdF9mbG9hdHZhbF8yCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJCQkyLjAKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMCkKCQkJIyBkZWZpbmUgVkFMVUUgKEFBQSAtIDEuMGUtMSkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfb2JqZWN0X2ludHZhbF8xCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJCQkyCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxKQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMikKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KFZBTFVFKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfb2JqZWN0X2ludHZhbF8yCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJCQkyCgkJCSMgZGVmaW5lIFZBTFVFIChBQUEgLSAxKQoJCQkjIGRlZmluZSBWQUxVRSAoQUFBIC0gMHgxKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoVkFMVUUpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0XzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNi4wOyB9CgoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIwlkZWZpbmUgIFZBTDEgMS4wCgkJCSNkZWZpbmUJCVZBTDIgMi4wCgoJCQkjZGVmaW5lIFJFUzIgKFJFUzEgKiBWQUwyKQoJCQkjZGVmaW5lIFJFUzEJKFZBTDIgLyBWQUwxKQoJCQkjZGVmaW5lIFJFUzIJKFJFUzEgKiBWQUwyKQoJCQkjZGVmaW5lIFZBTFVFCShSRVMyICsgUkVTMSkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0X2lmZGVmCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQURFRklORSAxCgkJCSNkZWZpbmUgQURFRklORSAxCgoJCQkjaWZkZWYgQURFRklORQoJCQkjZGVmaW5lIFZBTFVFIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTFVFIDAuMAoJCQkjZW5kaWYKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0X3VuZGVmX2lmZGVmCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQURFRklORSAxCgkJCSNkZWZpbmUgQURFRklORSAxCgkJCSN1bmRlZiBBREVGSU5FCgoJCQkjaWZkZWYgQURFRklORQoJCQkjZGVmaW5lIFZBTFVFIDAuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTFVFIDEuMAoJCQkjZW5kaWYKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0X2lmbmRlZgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjZGVmaW5lIEFERUZJTkUgMQoJCQkjZGVmaW5lIEFERUZJTkUgMQoKCQkJI2lmbmRlZiBBREVGSU5FCgkJCSNkZWZpbmUgVkFMVUUgMC4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMVUUgMS4wCgkJCSNlbmRpZgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWRlZmluZV9vYmplY3RfZGVmaW5lZF8xCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgQURFRklORSAxCgkJCSNkZWZpbmUgQURFRklORSAxCgoJCQkjaWYgZGVmaW5lZChBREVGSU5FKQoJCQkjZGVmaW5lIFZBTFVFIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTFVFIDAuMAoJCQkjZW5kaWYKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0X2RlZmluZWRfMgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjZGVmaW5lIEFERUZJTkUgMQoJCQkjZGVmaW5lIEFERUZJTkUgMQoKCQkJI2lmIGRlZmluZWQgQURFRklORQoJCQkjZGVmaW5lIFZBTFVFIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTFVFIDAuMAoJCQkjZW5kaWYKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUxVRTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVkZWZpbmVfb2JqZWN0X2NvbW1lbnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNi4wOyB9CgoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIwlkZWZpbmUgIFZBTDEgMS4wCgkJCSNkZWZpbmUJCVZBTDIgMi4wCgoJCQkjZGVmaW5lIFJFUzIgLyogZmRzamtsZmRzamtsIGRzZmpraGZkc2praCBmZHNqa2xoZmRzamtoICovIChSRVMxICogVkFMMikKCQkJI2RlZmluZSBSRVMxCShWQUwyIC8gVkFMMSkKCQkJI2RlZmluZSBSRVMyCS8qIGV3cmxramhzYWRmICovIChSRVMxICogVkFMMikKCQkJI2RlZmluZSBWQUxVRQkoUkVTMiArIFJFUzEpCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMVUU7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHJlZGVmaW5lX29iamVjdF9tdWx0aWxpbmVfY29tbWVudAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSA2LjA7IH0KCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjCWRlZmluZSAgVkFMMSAxLjAKCQkJI2RlZmluZQkJVkFMMiAyLjAKCgkJCSNkZWZpbmUgUkVTMiAvKiBmZHNqa2xmZHNqa2wKCQkJCQkJCWRzZmpraGZkc2praAoJCQkJCQkJZmRzamtsaGZkc2praCAqLyAoUkVTMSAqIFZBTDIpCgkJCSNkZWZpbmUgUkVTMQkoVkFMMiAvIFZBTDEpCgkJCSNkZWZpbmUgUkVTMgkvKiBld3Jsa2poc2FkZiAqLyAoUkVTMSAqIFZBTDIpCgkJCSNkZWZpbmUgVkFMVUUJKFJFUzIgKyBSRVMxKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTFVFOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBvYmplY3RfcmVkZWZpbml0aW9ucwoKZ3JvdXAgaW52YWxpZF9yZWRlZmluaXRpb25zICJJbnZhbGlkIFJlZGVmaW5pdGlvbnMgVGVzdHMiCgoJY2FzZSBpbnZhbGlkX2lkZW50aWZpZXJfMQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGludCBvdXQwID0gMTsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgX19WQUxVRV9fCTEKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBfX1ZBTFVFX187CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCiMgTk9URSBjYXNlIGludmFsaWRfaWRlbnRpZmllcl8yIGhhcyBiZWVuIG1vdmVkIHRvIGdsNDQvcHJlcHJvY2Vzc29yLnRleHQKCmVuZCAjIGludmFsaWRfcmVkZWZpbml0aW9ucwoKZ3JvdXAgY29tbWVudHMgIkNvbW1lbnQgVGVzdHMiCgoJY2FzZSBtdWx0aWxpbmVfY29tbWVudF9kZWZpbmUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gNC4yOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjZGVmaW5lIFZBTFVFIC8qIGN1cnJlbnQKCQkJCQkJdmFsdWUgKi8gNC4yCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMVUU7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9jb21tZW50CgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDAuMDsKCQkJCS8qIC8qICovCgkJCQlvdXQwID0gMS4wOwoJCQkJLy8gKi8KCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9jb21tZW50CgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkvKiAvKiAqLyAqLwoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IDEuMDsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9jb21tZW50XzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCS8qCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfY29tbWVudF8yCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJLyoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBjb21tZW50cwoKIyBOT1RFIGdyb3VwIGxpbmVfY29udGludWF0aW9uICJMaW5lIENvbnRpbnVhdGlvbiBUZXN0cyIgaGF2ZSBiZWVuIG1vdmVkIHRvCiMgZ2w0NC9wcmVwcm9jZXNzb3IudGV4dAoKZ3JvdXAgZnVuY3Rpb25fZGVmaW5pdGlvbnMgIkZ1bmN0aW9uIERlZmluaXRpb25zIFRlc3RzIgoKCWNhc2Ugc2FtZV9vYmplY3RfYW5kX2Z1bmN0aW9uX3BhcmFtCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSNkZWZpbmUgVkFMVUUgMS4wCgkJCSNkZWZpbmUgRlVOQ1RJT04oVkFMVUUsIEIpCShWQUxVRS1CKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEZVTkNUSU9OKDMuMCwgMi4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgY29tcGxleF9mdW5jCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDUxOC41OyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjZGVmaW5lIEFBQShhLGIpCWEqKEJCQihhLGIpKQoJCQkjZGVmaW5lIEJCQihhLGIpCWEtYgoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEJCQihBQUEoOC4wLzQuMCwgMi4wKSpCQkIoMi4wKjIuMCwwLjc1KjIuMCksIEFBQSg0MC4wLDEwLjAqQkJCKDUuMCwzLjApKSk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGZ1bmN0aW9uX2RlZmluaXRpb25fd2l0aF9jb21tZW50cwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCS8qIHNkZmxqayAqLwkJCSMvKiBzZGZsamsgKi9kZWZpbmUgLyogc2RmbGprICovIEZVTkMoIC8qIGprbHNmZCovYSAvKnNmZGprbGgqLywgLypzZGZrbGogKi9iIC8qc2Rma2xqKi8pCQlhK2IKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgZnVuY3Rpb25fZGVmaW5pdGlvbnMKCmdyb3VwIHJlY3Vyc2lvbiAiUmVjdXJzaW9ucyBUZXN0cyIKCgljYXNlIHJlY3Vyc2lvbl8xCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJQUFBCgoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChBQUEpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVjdXJzaW9uXzIKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQQlCQkIKCQkJI2RlZmluZSBCQkIJCUFBQQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoQUFBKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHJlY3Vyc2lvbl8zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjIGRlZmluZSBBQUEJKDEuMCtCQkIpCgkJCSNkZWZpbmUgQkJCCQkoMi4wK0FBQSkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEFBQSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByZWN1cnNpb25fNAoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJIyBkZWZpbmUgQUFBKGEpCUFBQShhKQoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoQUFBKDEuMCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcmVjdXJzaW9uXzUKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCSMgZGVmaW5lIEFBQShhLCBiKQlBQUEoYiwgYSkKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEFBQSgxLjAsIDIuMCkpOwoJCQl9CgkJIiIKCWVuZAoKZW5kICMgcmVjdXJzaW9uCgpncm91cCBmdW5jdGlvbl9yZWRlZmluaXRpb25zICJGdW5jdGlvbiBSZWRlZmluaXRpb24gVGVzdHMiCgoJY2FzZSBmdW5jdGlvbl9yZWRlZmluaXRpb25fMQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAzLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCQkJIyBkZWZpbmUgRlVOQyggYSwgYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZnVuY3Rpb25fcmVkZWZpbml0aW9uXzIKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMy4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJKGEgICtiKQoJCQkjIGRlZmluZSBGVU5DKCBhLCBiICkoYQkJCStiKQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBGVU5DKDEuMCwgMi4wKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZnVuY3Rpb25fcmVkZWZpbml0aW9uXzMKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMy4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJKGEgICtiKQoJCQkjIGRlZmluZSBGVU5DKGEsYikoYQkvKiBjb21tZW50CgkJCQkJCQkJCSAqLyArYikKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gRlVOQygxLjAsIDIuMCk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZnVuY3Rpb25fcmVkZWZpbml0aW9uX3BhcmFtXzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCQkJIyBkZWZpbmUgRlVOQyhBLGIpCQlBK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwgMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2Z1bmN0aW9uX3JlZGVmaW5pdGlvbl9wYXJhbV8yCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgkJCSMgZGVmaW5lIEZVTkMoYSxiLGMpCWErYitjCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsIDIuMCwgMy4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2Z1bmN0aW9uX3JlZGVmaW5pdGlvbl9wYXJhbV8zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYithCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsIDIuMCkpOwoJCQl9CgkJIiIKCWVuZAoKZW5kICMgZnVuY3Rpb25zX3JlZGVmaW5pdGlvbnMKCmdyb3VwIGludmFsaWRfZnVuY3Rpb25fZGVmaW5pdGlvbnMgIkludmFsaWQgRnVuY3Rpb24gRGVmaW5pdGlvbiBUZXN0cyIKCgljYXNlIGFyZ3VtZW50c18xCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQyk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfMwoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoKCgpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYXJndW1lbnRzXzQKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfNQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfNgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudHNfNwoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEsYikJCWErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYXJndW1lbnRzXzgKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhLGIpCQlhK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwgMi4wLCAzLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVuaXF1ZV9wYXJhbV9uYW1lCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoYSxhKQkJYSthCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudF9saXN0XzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQyhhIGIpCQlhK2IKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGFyZ3VtZW50X2xpc3RfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKGEgKyBiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhcmd1bWVudF9saXN0XzMKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQygsYSxiKQkJYStiCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoRlVOQygxLjAsMi4wKSk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub19jbG9zaW5nX3BhcmVudGhlc2lzXzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJIyBkZWZpbmUgRlVOQygKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIG5vX2Nsb3NpbmdfcGFyZW50aGVzaXNfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjIGRlZmluZSBGVU5DKEEgIGErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugbm9fY2xvc2luZ19wYXJlbnRoZXNpc18zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoQSxCLEMgIGErYgoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KEZVTkMoMS4wLDIuMCkpOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugbm9fY2xvc2luZ19wYXJlbnRoZXNpc180CgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSMgZGVmaW5lIEZVTkMoCgkJIiIKCWVuZAoKZW5kICMgaW52YWxpZF9mdW5jdGlvbl9kZWZpbml0aW9ucwoKZ3JvdXAgc2VtYW50aWMgIlNlbWFudGljIFRlc3RzIgoKCWNhc2Ugb3BzX2FzX2FyZ3VtZW50cwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAyMC4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQkjZGVmaW5lIEZPTyhhLCBiKQkJKDEgYSA5KSBiIDIKCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBmbG9hdChGT08oKywgKikpOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBjb3JyZWN0X29yZGVyCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJI2RlZmluZSBGVU5DKEEpIEEKCQkJI2RlZmluZSBBIDIuMAoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEZVTkMoQSAtIDEuMCk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIHNlbWFudGljCgpncm91cCBwcmVkZWZpbmVkX21hY3JvcyAiUHJlZGVmaW5lZCBNYWNyb3MgVGVzdHMiCgoJY2FzZSB2ZXJzaW9uCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDMzMC4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIEFBQSBfX1ZFUlNJT05fXwoJCQkJb3V0MCA9IGZsb2F0KEFBQSk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGNvcmVfcHJvZmlsZV9kZWZpbmVkCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmIGRlZmluZWQoR0xfY29yZV9wcm9maWxlKQoJCQkJb3V0MCA9IDEuMDsKCQkJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgY29yZV9wcm9maWxlX3ZhbHVlCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBmbG9hdChHTF9jb3JlX3Byb2ZpbGUpOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsaW5lXzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMi4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJY29uc3QgbWVkaXVtcCBpbnQgbGluZSA9IF9fTElORV9fOwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBmbG9hdChsaW5lKTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZmlsZQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAwLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBmbG9hdChfX0ZJTEVfXyk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGlmX2NvcmVfcHJvZmlsZQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBHTF9jb3JlX3Byb2ZpbGUKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaWZfdmVyc2lvbgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBfX1ZFUlNJT05fXyA9PSAzMzAKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgcHJlZGVmaW5lZF9tYWNyb3MKCmdyb3VwIGNvbmRpdGlvbmFsX2luY2x1c2lvbiAiQ29uZGl0aW9uYWwgSW5jbHVzaW9uIFRlc3RzIgoKCWNhc2UgYmFzaWNfMQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNkZWZpbmUgQUFBIGFzZGYKCgkjaWYgZGVmaW5lZCBBQUEgJiYgIWRlZmluZWQoQkJCKQoJCQkJb3V0MCA9IDEuMDsKCSNlbHNlCgkJCQlvdXQwID0gMC4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGJhc2ljXzIKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjZGVmaW5lIEFBQSBkZWZpbmVkKEJCQikKCgkjaWYgIUFBQQoJCQkJb3V0MCA9IDEuMDsKCSNlbHNlCgkJCQlvdXQwID0gMC4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGJhc2ljXzMKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMAoJCQkJb3V0MCA9IC0xLjA7CgkjZWxpZiAwCgkJCQlvdXQwID0gLTIuMDsKCSNlbGlmIDEKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0zLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYmFzaWNfNAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAwCgkJCQlvdXQwID0gLTEuMDsKCSNlbGlmIDAKCQkJCW91dDAgPSAtMi4wOwoJI2Vsc2UKCQkJCW91dDAgPSAxLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYmFzaWNfNQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkJCQlvdXQwID0gMS4wOwoJI2VsaWYgMAoJCQkJb3V0MCA9IC0yLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXhwcmVzc2lvbgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAhKCh+MiA+PiAxKSAmIDEpCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIGNvbmRpdGlvbmFsX2luY2x1c2lvbgoKZ3JvdXAgaW52YWxpZF9vcHMgIkludmFsaWQgT3BlcmF0aW9ucyBUZXN0cyIKCgljYXNlIGludmFsaWRfb3BfMQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmICEoKH4oKyArKzEgLSAtIC0gLTEpID4+IDEpICYgMSkKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfb3BfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmICEoKH4oKyArICsxIC0gLS0gLTEpID4+IDEpICYgMSkKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2Vsc2UKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9pZGVudGlmaWVyXzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZSBBQUEgMQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBkZWZpbmVkCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRfaWRlbnRpZmllcl8yCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSNkZWZpbmUgQUFBIDEKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgZGVmaW5lZCgpCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRfaWRlbnRpZmllcl8zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSNkZWZpbmUgQUFBIDEKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgZGVmaW5lZCgKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZGVmaW5lZF9leHBlY3RlZF9pZGVudGlmaWVyXzQKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJI2RlZmluZSBBQUEgMQoKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBkZWZpbmVkKQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9kZWZpbmVkX2V4cGVjdGVkX2lkZW50aWZpZXJfNQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjZGVmaW5lIEFBQSAxCgoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIGRlZmluZWQoKEFBQSkpCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNChGVU5DKDEuMCwyLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2RlZmluZWRfZXhwZWN0ZWRfcnBhcmVuCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSNkZWZpbmUgQUFBIDEKCgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgZGVmaW5lZChBQUEKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGRlZmluZWRfZGVmaW5lCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCSNkZWZpbmUgZGVmaW5lIDEKCSNkZWZpbmUgQUFBIDEuMAoKCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IEFBQTsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgaW52YWxpZF9vcHMKCmdyb3VwIHVuZGVmaW5lZF9pZGVudGlmaWVycyAiVW5kZWZpbmVkIElkZW50aWZpZXJzIFRlc3RzIgoKCWNhc2UgYmFzaWMKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgQUFBCgkJCQlvdXQwID0gLTEuMDsKCSNlbHNlCgkJCQlvdXQwID0gMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGluX2V4cHJlc3Npb24KCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMSAtIEFBQQoJCQkJb3V0MCA9IDEuMDsKCSNlbHNlCgkJCQlvdXQwID0gLTEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub3RfdXNlZF9pbl9ldmFsXzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMSB8fCBBQUEKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugbm90X3VzZWRfaW5fZXZhbF8yCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAgJiYgQUFBCgkJCQlvdXQwID0gLTEuMDsKCSNlbHNlCgkJCQlvdXQwID0gMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIHVuZGVmaW5lZF9pZGVudGlmaWVycwoKZ3JvdXAgaW52YWxpZF9jb25kaXRpb25hbHMgIkludmFsaWQgQ29uZGl0aW9uYWxzIFRlc3RzIgoKCWNhc2UgZW1wdHlfaWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGVtcHR5X2lmZGVmCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZkZWYKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbXB0eV9pZm5kZWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZm5kZWYKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2lmZGVmCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZkZWYgMQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9pZm5kZWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZm5kZWYgMQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZW1wdHlfaWZfZGVmaW5lZAoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIGRlZmluZWQKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfaWZfMQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfaWZfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfaWZkZWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZmRlZiBGT09CQVIKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfaWZuZGVmCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZuZGVmIEdMX2NvcmVfcHJvZmlsZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9lbHNlXzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9lbHNlXzIKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAwCgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHVudGVybWluYXRlZF9lbGlmXzEKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAwCgkjZWxpZiAxCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW50ZXJtaW5hdGVkX2VsaWZfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCSNlbGlmIDAKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bnRlcm1pbmF0ZWRfZWxpZl8zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMAoJI2VsaWYgMAoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMi4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGVsaWZfYWZ0ZXJfZWxzZQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZWxzZQoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZWxpZiAxCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgwLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbHNlX3dpdGhvdXRfaWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNlbHNlCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlbGlmX3dpdGhvdXRfaWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNlbGlmIDEKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGVuZGlmX3dpdGhvdXRfaWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIGVsc2VfYWZ0ZXJfZWxzZQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmICFHTF9jb3JlX3Byb2ZpbGUKCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCSNlbHNlCgkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KC0xLjApOwoJI2Vsc2UKCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoLTEuMCk7CgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9lbGlmX3dpdGhvdXRfaWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkjCWVsaWYKCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMC4wKTsKCSMJZW5kaWYKCSNlbmRpZgoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaWZfZmxvYXQKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxLjIzMQoJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJIwllbGlmCgkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDAuMCk7CgkjCWVuZGlmCgkjZW5kaWYKCQkJfQoJCSIiCgllbmQKCgljYXNlIHRva2Vuc19hZnRlcl9pZgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEgZm9vYmFyCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB0b2tlbnNfYWZ0ZXJfZWxpZgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCSNlbGlmIDEgZm9vYmFyCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJI2VuZGlmCgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB0b2tlbnNfYWZ0ZXJfZWxzZQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCSNlbHNlIGZvb2JhciAxLjIzMQoJI2VuZGlmCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdG9rZW5zX2FmdGVyX2VuZGlmCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWYgMQoJI2Vsc2UKCSNlbmRpZiBmb29iYXIKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB0b2tlbnNfYWZ0ZXJfaWZkZWYKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZmRlZiBGT09CQVIgZm9vYmFyCgkjZWxzZQoJI2VuZGlmCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdG9rZW5zX2FmdGVyX2lmbmRlZgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmbmRlZiBGT09CQVIgLCwgKy0gPDwgYmFyYmFyCgkjZWxzZQoJI2VuZGlmCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW50ZXJtaW5hdGVkX25lc3RlZF9ibG9ja3MKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiAxCgkjCWlmIDEKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBpbnZhbGlkX2NvbmRpdGlvbmFscwoKZ3JvdXAgY29uZGl0aW9uYWxzICJDb25kaXRpb25hbHMgVGVzdHMiCgoJY2FzZSBpZmRlZl8xCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCSN2ZXJzaW9uIDMzMAoJI2RlZmluZSBBQUEKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZkZWYgQUFBCgkJCQlvdXQwID0gMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGlmZGVmXzIKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJI3ZlcnNpb24gMzMwCgkjZGVmaW5lIEFBQQoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZiBkZWZpbmVkICAoIEFBQSkKCQkJCW91dDAgPSAxLjA7CgkjZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaWZkZWZfMwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNpZmRlZiBBQUEKCQkJCW91dDAgPSAtMS4wOwoJI2Vsc2UKCQkJCW91dDAgPSAxLjA7CgkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaWZuZGVmXzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZuZGVmIEFBQQoJCQkJb3V0MCA9IDEuMDsKCSNlbHNlCgkJCQlvdXQwID0gLTEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpZm5kZWZfMgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkjZGVmaW5lIEFBQQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZuZGVmIEFBQQoJCQkJb3V0MCA9IC0xLjA7CgkjZWxzZQoJCQkJb3V0MCA9IDEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtaXhlZF9jb25kaXRpb25hbF9pbmNsdXNpb24KCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkjaWZuZGVmIEFBQQoJCQkJb3V0MCA9IDEuMDsKCSNlbGlmIDEKCQkJCW91dDAgPSAtMS4wOwoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9pZl8xCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIEdMX2NvcmVfcHJvZmlsZQoJIwlpZiBfX1ZFUlNJT05fXyAhPSAzMzAKCQkJCW91dDAgPSAtMS4wOwoJIwllbHNlCgkJCQlvdXQwID0gMS4wOwoJIwllbmRpZgoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9pZl8yCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDEKCSMJaWYgMAoJCQkJb3V0MCA9IC0xLjA7CgkjCWVsc2UKCSMJCWlmIDAKCQkJCW91dDAgPSAtMS4wOwoJIwkJZWxpZiAxCgkJCQlvdXQwID0gMS4wOwoJIwkJZWxzZQoJCQkJb3V0MCA9IC0xLjA7CgkjCQllbmRpZgoJIwllbmRpZgoJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5lc3RlZF9pZl8zCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJI2lmIDAKCSMJaWYgMQoJCQkJb3V0MCA9IC0xLjA7CgkjCWVuZGlmCgkjZWxzZQoJCQkJb3V0MCA9IDEuMDsKCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBjb25kaXRpb25hbHMKCmdyb3VwIGRpcmVjdGl2ZSAiRGlyZWN0aXZlIFRlc3RzIgoKCWNhc2UgdmVyc2lvbl93aXRoX3Byb2ZpbGUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAgY29yZQoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25fbGVhZGluZ193aGl0ZXNwYWNlCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCgkJCSN2ZXJzaW9uIDMzMCBjb3JlCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDEuMDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdmVyc2lvbl9sZWFkaW5nX2NvbW1lbnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkvLyB0ZXN0CgoJCQkjdmVyc2lvbiAzMzAgY29yZQoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25faXNfbGVzcwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMzMAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzI5CgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25faXNfbW9yZQoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMzMAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMxCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25faW52YWxpZF9wcm9maWxlCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCXZlcnNpb24gMzMwCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAgZm9vCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIHZlcnNpb25fbWlzc2luZwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMzMAoJCWJvdGggIiIKCQkJI3ZlcnNpb24KCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdmVyc2lvbl9ub3RfZmlyc3Rfc3RhdGVtZW50XzEKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMzAKCQlib3RoICIiCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkjdmVyc2lvbiAzMzAKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB2ZXJzaW9uX25vdF9maXJzdF9zdGF0ZW1lbnRfMgoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMzMAoJCWJvdGggIiIKCQkJI2RlZmluZSBGT08gQkFSCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB2ZXJzaW9uX2ludmFsaWRfdG9rZW5fMQoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMzMAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwLjAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdmVyc2lvbl9pbnZhbGlkX3Rva2VuXzIKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMzAKCQlib3RoICIiCgkJCSN2ZXJzaW9uIGZvb2JhcgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX3ZlcnNpb24KCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJdmVyc2lvbiAzMzAKCQlib3RoICIiCgkJCSN2ZXJzaW9uIEFBQQoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhZGRpdGlvbmFsX3Rva2VucwoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQl2ZXJzaW9uIDMzMAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwIGZvb2JhcgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlcnJvcl93aXRoX25vX3Rva2VucwoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNlcnJvcgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlcnJvcgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNkZWZpbmUgQUFBIGFzZGYKCQkJI2Vycm9yIDEgKiBBQUEgLyogY29tbWVudCAqLwoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBkaXJlY3RpdmUKCmdyb3VwIGJ1aWx0aW4gIkJ1aWx0LWluIFN5bWJvbCBUZXN0cyIKCgljYXNlIGxpbmUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNsaW5lIDEKCQkJCW91dDAgPSBmbG9hdChfX0xJTkVfXyk7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxpbmVfYW5kX2ZpbGUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCB2ZWM0IG91dDAgPSB2ZWM0KDIzNC4wLCAyMzQuMCwgMTAuMCwgMTAuMCk7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCSNsaW5lIDIzNCAxMAoJCQkJb3V0MCA9IHZlYzQoX19MSU5FX18sIF9fTElORV9fLCBfX0ZJTEVfXywgX19GSUxFX18pOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBidWlsdGluCgpncm91cCBwcmFnbWFzICJQcmFnbWEgVGVzdHMiCgoJY2FzZSBwcmFnbWFfdmVydGV4CgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCXZlcnRleCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI3ByYWdtYQoJCQkjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpCgkJCSNwcmFnbWEgZGVidWcob2ZmKQoJCQkjcHJhZ21hIG9wdGltaXplKG9mZikKCgkJCSR7VkVSVEVYX0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtWRVJURVhfT1VUUFVUfQoJCQl9CgkJIiIKCQlmcmFnbWVudCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gMS4wOwoJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwcmFnbWFfZnJhZ21lbnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJdmVydGV4ICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkke1ZFUlRFWF9ERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7VkVSVEVYX09VVFBVVH0KCQkJfQoJCSIiCgkJZnJhZ21lbnQgIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNwcmFnbWEKCQkJI3ByYWdtYSBkZWJ1ZyhvZmYpCgkJCSNwcmFnbWEgb3B0aW1pemUob2ZmKQoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7RlJBR01FTlRfREVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gMS4wOwoJCQkJJHtGUkFHTUVOVF9PVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBwcmFnbWFfbWFjcm9fZXhwCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCSN2ZXJzaW9uIDMzMAoJI2RlZmluZSBvZmYJSU5WQUxJRAoJLyogcHJhZ21hIGxpbmUgbm90IG1hY3JvIGV4cGFuZGVkICovCgkjcHJhZ21hIGRlYnVnKG9mZikKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDEuMDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgcHJhZ21hcwoKZ3JvdXAgZXh0ZW5zaW9ucyAiRXh0ZW5zaW9uIFRlc3RzIgoKCWNhc2UgYmFzaWMKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSAxLjA7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1hY3JvX2V4cAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZGVmaW5lIHdhcm4gZW5hYmxlCgoJCQkjZXh0ZW5zaW9uIGFsbCA6IHdhcm4KCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IDEuMDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbWlzc2luZ19leHRlbnNpb25fbmFtZQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNleHRlbnNpb24KCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9leHRlbnNpb25fbmFtZQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNleHRlbnNpb24gMiA6IGFsbAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtaXNzaW5nX2NvbG9uCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2V4dGVuc2lvbiBhbGwKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXhwZWN0ZWRfY29sb24KCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZXh0ZW5zaW9uIGFsbCA7CgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIG1pc3NpbmdfYmVoYXZpb3IKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZXh0ZW5zaW9uIGFsbCA6CgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfYmVoYXZpb3JfMQoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNleHRlbnNpb24gYWxsIDogV0FSTgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2JlaGF2aW9yXzIKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZXh0ZW5zaW9uIGFsbCA6IHJlcXVpcmUKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgaW52YWxpZF9jaGFyX2luX25hbWUKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZXh0ZW5zaW9uIGFsbKQgOiB3YXJuCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfY2hhcl9pbl9iZWhhdmlvcgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNleHRlbnNpb24gYWxsIDogd2FypG4KCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgdW50ZXJtaW5hdGVkX2NvbW1lbnQKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjZXh0ZW5zaW9uIGFsbCA6IHdhcm4gLyphc2QKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYWZ0ZXJfbm9uX3ByZXByb2Nlc3NpbmdfdG9rZW5zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2V4dGVuc2lvbiBhbGwgOiB3YXJuCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2V4dGVuc2lvbiBhbGwgOiBkaXNhYmxlCgkJCQlvdXQwID0gMS4wOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCmVuZCAjIGV4dGVuc2lvbnMKCmdyb3VwIGV4cHJlc3Npb25zICJFeHByZXNzaW9uIFRlc3RzIgoKCWNhc2Ugc2hpZnRfbGVmdAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDQKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCA8PCAyKSA9PSAxNgoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugc2hpZnRfcmlnaHQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA1CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgPj4gMSkgPT0gMgoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgY21wX2xlc3NfdGhhbgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDUKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCA8IDYpICYmICgtVkFMIDwgLTQpCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsZXNzX29yX2VxdWFsCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgNgoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiAoVkFMIDw9IDYpICYmICgtVkFMIDw9IC02KQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugb3IKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA2CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgfCA1KSA9PSA3CgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhbmQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA2CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgJiA1KSA9PSA0CgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB4b3IKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA2CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgXiA1KSA9PSAzCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtb2QKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCAxMgoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiAoVkFMICUgNSkgPT0gMgoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfdmFsdWUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCAoKCAgKDQgICApICkgICkKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgVkFMID49IDQKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHBhcmVudGhlc2lzX3RyaWNreQoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMICgoICAoNCAgICkgKQoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiBWQUwpID49IDQKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHBhcmVudGhlc2lzX2lmX25vCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgNAoJCQkJb3V0MCA9IDAuMDsKCQkJCSNpZiBWQUwgPj0gNAoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfaWYKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA0CgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmIChWQUwgPj0gNCkKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHBhcmVudGhlc2lzX211bHRpX2lmCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgKDQpCgkJCQlvdXQwID0gMC4wOwoJCQkJI2lmICgoKFZBTCkpID49ICg0KSkKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHBhcmVudGhlc2lzX3NpbmdsZV9pZgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCSNkZWZpbmUgVkFMIDQKCQkJCW91dDAgPSAwLjA7CgkJCQkjaWYgKFZBTCA+PSA0KQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfaWZlbHNlX3RydWUKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjZGVmaW5lIFZBTCA0CgkJCQkjaWYgKFZBTCA+PSA0KQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZWxzZQoJCQkJCW91dDAgPSAwLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcGFyZW50aGVzaXNfaWZlbHNlX2ZhbHNlCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2RlZmluZSBWQUwgNAoJCQkJI2lmIChWQUwgPiA0KQoJCQkJCW91dDAgPSAwLjA7CgkJCQkjZWxzZQoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXZhbF9iYXNpY18wCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2lmIC00ICsgNSA9PSAxCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbHNlCgkJCQkJb3V0MCA9IDAuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBldmFsX2Jhc2ljXzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjaWYgKDIgKiAyKSAtIDMgPj0gMAoJCQkJCW91dDAgPSAxLjA7CgkJCQkjZWxzZQoJCQkJCW91dDAgPSAwLjA7CgkJCQkjZW5kaWYKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZXZhbF9zaW1wbGVfcHJlY2VkZW5jZV8wCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJI2lmIDIgKiAzIC0gMyA9PSAzCgkJCQkJb3V0MCA9IDEuMDsKCQkJCSNlbHNlCgkJCQkJb3V0MCA9IDAuMDsKCQkJCSNlbmRpZgoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBldmFsX3NpbXBsZV9wcmVjZWRlbmNlXzEKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQkjaWYgMiAtIDIgLyAyID09IDEKCQkJCQlvdXQwID0gMS4wOwoJCQkJI2Vsc2UKCQkJCQlvdXQwID0gMC4wOwoJCQkJI2VuZGlmCgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCmVuZCAjIGV4cHJlc3Npb25zCgpncm91cCBpbnZhbGlkX2V4cHJlc3Npb25zICJJbnZhbGlkIEV4cHJlc3Npb24gVGVzdHMiCgoJY2FzZSBpbnZhbGlkX3VuYXJ5X2V4cHIKCQl2ZXJzaW9uIDMzMAoJCWV4cGVjdCBjb21waWxlX2ZhaWwKCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJI2lmICEKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2JpbmFyeV9leHByCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZiAzKzQrCgkJCQkke1BPU0lUSU9OX0ZSQUdfQ09MT1J9ID0gdmVjNCgxLjApOwoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbWlzc2luZ19leHByCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZgoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZXhwcl8xCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZiA0IDQKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBpbnZhbGlkX2V4cHJfMgoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkjaWYgNCAqICogNAoJCQkJJHtQT1NJVElPTl9GUkFHX0NPTE9SfSA9IHZlYzQoMS4wKTsKCQkJfQoJCSIiCgllbmQKCgljYXNlIGludmFsaWRfZXhwcl8zCgkJdmVyc2lvbiAzMzAKCQlleHBlY3QgY29tcGlsZV9mYWlsCgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCSNpZiAoNCkoNCkKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bm9wZW5lZF9wYXJlbnRoZXNpcwoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkjaWYgNCkKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSB1bmNsb3NlZF9wYXJlbnRoZXNpcwoJCXZlcnNpb24gMzMwCgkJZXhwZWN0IGNvbXBpbGVfZmFpbAoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkjaWYgKCg0ICsgNykKCQkJCSR7UE9TSVRJT05fRlJBR19DT0xPUn0gPSB2ZWM0KDEuMCk7CgkJCX0KCQkiIgoJZW5kCgplbmQgIyBpbnZhbGlkX2V4cHJlc3Npb25zCgpncm91cCBvcGVyYXRvcl9wcmVjZWRlbmNlICJPcGVyYXRvciBwcmVjZWRlbmNlIgoKCgljYXNlIG1vZHVsb192c19ub3QKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCAlICEgMCApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZGl2X3ZzX25vdAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IC8gISAwICkgPT0gOAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtdWxfdnNfbm90CgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggKiAhIDAgKSA9PSA4CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1vZHVsb192c19iaXRfaW52ZXJ0CgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggJSB+IDQgKSA9PSAzCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG1vZHVsb192c19taW51cwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICUgLSAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtb2R1bG9fdnNfcGx1cwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICUgKyAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBkaXZfdnNfYml0X2ludmVydAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IC8gfiAyICkgPT0gLTIKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZGl2X3ZzX21pbnVzCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggLyAtIDIgKSA9PSAtNAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBkaXZfdnNfcGx1cwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IC8gKyAyICkgPT0gNAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBtdWxfdnNfYml0X2ludmVydAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICogfiAyICkgPT0gLTI0CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG11bF92c19taW51cwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICogLSAyICkgPT0gLTE2CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG11bF92c19wbHVzCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggKiArIDIgKSA9PSAxNgoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBzdWJfdnNfbW9kdWxvCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggLSAzICUgMiApID09IDcKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugc3ViX3ZzX2RpdgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IC0gMyAvIDIgKSA9PSA3CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHN1Yl92c19tdWwKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCAtIDMgKiAyICkgPT0gMgoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBhZGRfdnNfbW9kdWxvCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggKyAzICUgMiApID09IDkKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYWRkX3ZzX2RpdgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICsgMyAvIDIgKSA9PSA5CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGFkZF92c19tdWwKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCArIDMgKiAyICkgPT0gMTQKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgcnNoaWZ0X3ZzX3N1YgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ID4+IDMgLSAyICkgPT0gNAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSByc2hpZnRfdnNfYWRkCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggPj4gMyArIDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxzaGlmdF92c19zdWIKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA8PCAzIC0gMiApID09IDE2CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxzaGlmdF92c19hZGQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA8PCAzICsgMiApID09IDI1NgoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBncmVhdGVyX29yX2VxdWFsX3ZzX3JzaGlmdAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ID49IDMgPj4gMiApID09IDEKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZ3JlYXRlcl9vcl9lcXVhbF92c19sc2hpZnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA+PSAzIDw8IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxlc3Nfb3JfZXF1YWxfdnNfcnNoaWZ0CgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggPD0gMyA+PiAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsZXNzX29yX2VxdWFsX3ZzX2xzaGlmdAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IDw9IDMgPDwgMiApID09IDEKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZ3JlYXRlcl92c19yc2hpZnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA+IDMgPj4gMiApID09IDEKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgZ3JlYXRlcl92c19sc2hpZnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA+IDMgPDwgMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbGVzc192c19yc2hpZnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA8IDMgPj4gMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgbGVzc192c19sc2hpZnQKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA8IDMgPDwgMiApID09IDEKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2Ugbm90X2VxdWFsX3ZzX2dyZWF0ZXJfb3JfZXF1YWwKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCAhPSAzID49IDIgKSA9PSAxCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIG5vdF9lcXVhbF92c19sZXNzX29yX2VxdWFsCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggIT0gMyA8PSAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub3RfZXF1YWxfdnNfZ3JlYXRlcgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICE9IDMgPiAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBub3RfZXF1YWxfdnNfbGVzcwoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4ICE9IDMgPCAyICkgPT0gMQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlcXVhbF92c19ncmVhdGVyX29yX2VxdWFsCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggPT0gMyA+PSAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlcXVhbF92c19sZXNzX29yX2VxdWFsCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggPT0gMyA8PSAyICkgPT0gMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBlcXVhbF92c19ncmVhdGVyCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggPT0gMyA+IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGVxdWFsX3ZzX2xlc3MKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggOCA9PSAzIDwgMiApID09IDAKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKCWNhc2UgYml0d2lzZV9hbmRfdnNfbm90X2VxdWFsCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggJiAzICE9IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGJpdHdpc2VfYW5kX3ZzX2VxdWFsCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDggJiAzID09IDIgKSA9PSAwCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIHhvcl92c19iaXR3aXNlX2FuZAoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IF4gMyAmIDIgKSA9PSAxMAoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBiaXR3aXNlX29yX3ZzX3hvcgoJCXZlcnNpb24gMzMwCgkJdmFsdWVzIHsgb3V0cHV0IGZsb2F0IG91dDAgPSAxLjA7IH0KCQlib3RoICIiCgkJCSN2ZXJzaW9uIDMzMAoJCQkjaWYgKCA4IHwgMyBeIDIgKSA9PSA5CgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxvZ2ljYWxfYW5kX3ZzX2JpdHdpc2Vfb3IKCQl2ZXJzaW9uIDMzMAoJCXZhbHVlcyB7IG91dHB1dCBmbG9hdCBvdXQwID0gMS4wOyB9CgkJYm90aCAiIgoJCQkjdmVyc2lvbiAzMzAKCQkJI2lmICggMCAmJiAzIHwgMiApCgkJCSNkZWZpbmUgVkFMIDAuMAoJCQkjZWxzZQoJCQkjZGVmaW5lIFZBTCAxLjAKCQkJI2VuZGlmCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJJHtERUNMQVJBVElPTlN9CgkJCXZvaWQgbWFpbigpCgkJCXsKCQkJCW91dDAgPSBWQUw7CgkJCQkke09VVFBVVH0KCQkJfQoJCSIiCgllbmQKCgljYXNlIGxvZ2ljYWxfYW5kX3ZzX2JpdHdpc2VfYW5kCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDAgJiYgNCAmIDIgKQoJCQkjZGVmaW5lIFZBTCAwLjAKCQkJI2Vsc2UKCQkJI2RlZmluZSBWQUwgMS4wCgkJCSNlbmRpZgoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCSR7REVDTEFSQVRJT05TfQoJCQl2b2lkIG1haW4oKQoJCQl7CgkJCQlvdXQwID0gVkFMOwoJCQkJJHtPVVRQVVR9CgkJCX0KCQkiIgoJZW5kCgoJY2FzZSBsb2dpY2FsX29yX3ZzX2xvZ2ljYWxfYW5kCgkJdmVyc2lvbiAzMzAKCQl2YWx1ZXMgeyBvdXRwdXQgZmxvYXQgb3V0MCA9IDEuMDsgfQoJCWJvdGggIiIKCQkJI3ZlcnNpb24gMzMwCgkJCSNpZiAoIDAgfHwgNCAmJiAwICkKCQkJI2RlZmluZSBWQUwgMC4wCgkJCSNlbHNlCgkJCSNkZWZpbmUgVkFMIDEuMAoJCQkjZW5kaWYKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQkke0RFQ0xBUkFUSU9OU30KCQkJdm9pZCBtYWluKCkKCQkJewoJCQkJb3V0MCA9IFZBTDsKCQkJCSR7T1VUUFVUfQoJCQl9CgkJIiIKCWVuZAoKZW5kICMgb3BlcmF0b3JfcHJlY2VkZW5jZQo=