Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBUYWcgbGlicmFyeQovLwovLyBEZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIGJ5Ci8vIC0gSGVydukgRHJvbG9uIDxkcm9sb25AaW5mb25pZS5mcj4KLy8KLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgRnJlZUltYWdlIDMKLy8KLy8gQ09WRVJFRCBDT0RFIElTIFBST1ZJREVEIFVOREVSIFRISVMgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRZCi8vIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBXQVJSQU5USUVTCi8vIFRIQVQgVEhFIENPVkVSRUQgQ09ERSBJUyBGUkVFIE9GIERFRkVDVFMsIE1FUkNIQU5UQUJMRSwgRklUIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQovLyBPUiBOT04tSU5GUklOR0lORy4gVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgQ09WRVJFRAovLyBDT0RFIElTIFdJVEggWU9VLiBTSE9VTEQgQU5ZIENPVkVSRUQgQ09ERSBQUk9WRSBERUZFQ1RJVkUgSU4gQU5ZIFJFU1BFQ1QsIFlPVSAoTk9UCi8vIFRIRSBJTklUSUFMIERFVkVMT1BFUiBPUiBBTlkgT1RIRVIgQ09OVFJJQlVUT1IpIEFTU1VNRSBUSEUgQ09TVCBPRiBBTlkgTkVDRVNTQVJZCi8vIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uIFRISVMgRElTQ0xBSU1FUiBPRiBXQVJSQU5UWSBDT05TVElUVVRFUyBBTiBFU1NFTlRJQUwKLy8gUEFSVCBPRiBUSElTIExJQ0VOU0UuIE5PIFVTRSBPRiBBTlkgQ09WRVJFRCBDT0RFIElTIEFVVEhPUklaRUQgSEVSRVVOREVSIEVYQ0VQVCBVTkRFUgovLyBUSElTIERJU0NMQUlNRVIuCi8vCi8vIFVzZSBhdCB5b3VyIG93biByaXNrIQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEltcGxlbWVudGF0aW9uIG5vdGVzIDogCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGhlIHRhZyBpbmZvIHRhYmxlcyBkZWNsYXJlZCBpbiB0aGlzIGZpbGUgc2hvdWxkIHByb2JhYmx5IAovLyBiZSBsb2FkZWQgZnJvbSBhbiBYTUwgZmlsZS4gCi8vIFRoaXMgd291bGQgYWxsb3cgaW50ZXJuYXRpb25hbGl6YXRpb24gZmVhdHVyZXMgYW5kIGFsc28gCi8vIG1vcmUgZXh0ZW5zaWJpbGl0eS4gCi8vIE1heWJlIGluIGEgZnV0dXJlIHJlbGVhc2UgPyAKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKI2lmZGVmIF9NU0NfVkVSIAojcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0Nzg2KSAvLyBpZGVudGlmaWVyIHdhcyB0cnVuY2F0ZWQgdG8gJ251bWJlcicgY2hhcmFjdGVycwojZW5kaWYKCiNpbmNsdWRlICJGcmVlSW1hZ2UuaCIKI2luY2x1ZGUgIlV0aWxpdGllcy5oIgojaW5jbHVkZSAiRnJlZUltYWdlVGFnLmgiCgovKioKIEhPVy1UTyA6IGFkZCBhIG5ldyBUYWdJbmZvIHRhYmxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSkgYWRkIGEgdGFibGUgaWRlbnRpZmllciBpbiB0aGUgVGFnTGliIGNsYXNzIGRlZmluaXRpb24gKHNlZSBlbnVtIE1ETU9ERUwpCiAyKSBkZWNsYXJlIHRoZSB0YWcgdGFibGUgYXMgc3RhdGljIGFuZCB1c2UgYSAwL05VTEwgdmFsdWUgYXMgbGFzdCBlbnRyeQogMykgaW5pdGlhbGl6ZSB0aGUgdGFibGUgaW4gVGFnTGliOjpUYWdMaWIKIDQpIHByb3ZpZGUgYSBjb252ZXJzaW9uIGluIFRhZ0xpYjo6Z2V0RnJlZUltYWdlTW9kZWwKKi8KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEVYSUYgc3RhbmRhcmQgdGFncyBkZWZpbml0aW9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdGF0aWMgVGFnSW5mbwogIGV4aWZfZXhpZl90YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHgwMTAwLCAoY2hhciAqKSAiSW1hZ2VXaWR0aCIsIChjaGFyICopICJJbWFnZSB3aWR0aCJ9LAogICAgeyAgMHgwMTAxLCAoY2hhciAqKSAiSW1hZ2VMZW5ndGgiLCAoY2hhciAqKSAiSW1hZ2UgaGVpZ2h0In0sCiAgICB7ICAweDAxMDIsIChjaGFyICopICJCaXRzUGVyU2FtcGxlIiwgKGNoYXIgKikgIk51bWJlciBvZiBiaXRzIHBlciBjb21wb25lbnQifSwKICAgIHsgIDB4MDEwMywgKGNoYXIgKikgIkNvbXByZXNzaW9uIiwgKGNoYXIgKikgIkNvbXByZXNzaW9uIHNjaGVtZSJ9LAogICAgeyAgMHgwMTA2LCAoY2hhciAqKSAiUGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbiIsIChjaGFyICopICJQaXhlbCBjb21wb3NpdGlvbiJ9LAogICAgeyAgMHgwMTBBLCAoY2hhciAqKSAiRmlsbE9yZGVyIiwgKGNoYXIqKSBOVUxMfSwKICAgIHsgIDB4MDEwRCwgKGNoYXIgKikgIkRvY3VtZW50TmFtZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTBFLCAoY2hhciAqKSAiSW1hZ2VEZXNjcmlwdGlvbiIsIChjaGFyICopICJJbWFnZSB0aXRsZSJ9LAogICAgeyAgMHgwMTBGLCAoY2hhciAqKSAiTWFrZSIsIChjaGFyICopICJJbWFnZSBpbnB1dCBlcXVpcG1lbnQgbWFudWZhY3R1cmVyIn0sCiAgICB7ICAweDAxMTAsIChjaGFyICopICJNb2RlbCIsIChjaGFyICopICJJbWFnZSBpbnB1dCBlcXVpcG1lbnQgbW9kZWwifSwKICAgIHsgIDB4MDExMSwgKGNoYXIgKikgIlN0cmlwT2Zmc2V0cyIsIChjaGFyICopICJJbWFnZSBkYXRhIGxvY2F0aW9uIn0sCiAgICB7ICAweDAxMTIsIChjaGFyICopICJPcmllbnRhdGlvbiIsIChjaGFyICopICJPcmllbnRhdGlvbiBvZiBpbWFnZSJ9LAogICAgeyAgMHgwMTE1LCAoY2hhciAqKSAiU2FtcGxlc1BlclBpeGVsIiwgKGNoYXIgKikgIk51bWJlciBvZiBjb21wb25lbnRzIn0sCiAgICB7ICAweDAxMTYsIChjaGFyICopICJSb3dzUGVyU3RyaXAiLCAoY2hhciAqKSAiTnVtYmVyIG9mIHJvd3MgcGVyIHN0cmlwIn0sCiAgICB7ICAweDAxMTcsIChjaGFyICopICJTdHJpcEJ5dGVDb3VudHMiLCAoY2hhciAqKSAiQnl0ZXMgcGVyIGNvbXByZXNzZWQgc3RyaXAifSwKICAgIHsgIDB4MDExQSwgKGNoYXIgKikgIlhSZXNvbHV0aW9uIiwgKGNoYXIgKikgIkltYWdlIHJlc29sdXRpb24gaW4gd2lkdGggZGlyZWN0aW9uIn0sCiAgICB7ICAweDAxMUIsIChjaGFyICopICJZUmVzb2x1dGlvbiIsIChjaGFyICopICJJbWFnZSByZXNvbHV0aW9uIGluIGhlaWdodCBkaXJlY3Rpb24ifSwKICAgIHsgIDB4MDExQywgKGNoYXIgKikgIlBsYW5hckNvbmZpZ3VyYXRpb24iLCAoY2hhciAqKSAiSW1hZ2UgZGF0YSBhcnJhbmdlbWVudCJ9LAoJeyAgMHgwMTFELCAoY2hhciAqKSAiUGFnZU5hbWUiLCAoY2hhciAqKSAiTmFtZSBvZiB0aGUgcGFnZSJ9LAoJeyAgMHgwMTFFLCAoY2hhciAqKSAiWFBvc2l0aW9uIiwgKGNoYXIgKikgIlggcG9zaXRpb24gb2YgdGhlIGltYWdlIn0sCgl7ICAweDAxMUYsIChjaGFyICopICJZUG9zaXRpb24iLCAoY2hhciAqKSAiWSBwb3NpdGlvbiBvZiB0aGUgaW1hZ2UifSwKICAgIHsgIDB4MDEyOCwgKGNoYXIgKikgIlJlc29sdXRpb25Vbml0IiwgKGNoYXIgKikgIlVuaXQgb2YgWCBhbmQgWSByZXNvbHV0aW9uIn0sCgl7ICAweDAxMjksIChjaGFyICopICJQYWdlTnVtYmVyIiwgKGNoYXIgKikgIlBhZ2UgbnVtYmVyIn0sCiAgICB7ICAweDAxMkQsIChjaGFyICopICJUcmFuc2ZlckZ1bmN0aW9uIiwgKGNoYXIgKikgIlRyYW5zZmVyIGZ1bmN0aW9uIn0sCiAgICB7ICAweDAxMzEsIChjaGFyICopICJTb2Z0d2FyZSIsIChjaGFyICopICJTb2Z0d2FyZSB1c2VkIn0sCiAgICB7ICAweDAxMzIsIChjaGFyICopICJEYXRlVGltZSIsIChjaGFyICopICJGaWxlIGNoYW5nZSBkYXRlIGFuZCB0aW1lIn0sCiAgICB7ICAweDAxM0IsIChjaGFyICopICJBcnRpc3QiLCAoY2hhciAqKSAiUGVyc29uIHdobyBjcmVhdGVkIHRoZSBpbWFnZSJ9LAoJeyAgMHgwMTNDLCAoY2hhciAqKSAiSG9zdENvbXB1dGVyIiwgKGNoYXIgKikgIkhvc3QgY29tcHV0ZXIgdXNlZCB0byBnZW5lcmF0ZSB0aGUgaW1hZ2UifSwKICAgIHsgIDB4MDEzRSwgKGNoYXIgKikgIldoaXRlUG9pbnQiLCAoY2hhciAqKSAiV2hpdGUgcG9pbnQgY2hyb21hdGljaXR5In0sCiAgICB7ICAweDAxM0YsIChjaGFyICopICJQcmltYXJ5Q2hyb21hdGljaXRpZXMiLCAoY2hhciAqKSAiQ2hyb21hdGljaXRpZXMgb2YgcHJpbWFyaWVzIn0sCiAgICB7ICAweDAxNTYsIChjaGFyICopICJUcmFuc2ZlclJhbmdlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDAsIChjaGFyICopICJKUEVHUHJvYyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMjAxLCAoY2hhciAqKSAiSlBFR0ludGVyY2hhbmdlRm9ybWF0IiwgKGNoYXIgKikgIk9mZnNldCB0byBKUEVHIFNPSSJ9LAogICAgeyAgMHgwMjAyLCAoY2hhciAqKSAiSlBFR0ludGVyY2hhbmdlRm9ybWF0TGVuZ3RoIiwgKGNoYXIgKikgIkJ5dGVzIG9mIEpQRUcgZGF0YSJ9LAogICAgeyAgMHgwMjExLCAoY2hhciAqKSAiWUNiQ3JDb2VmZmljaWVudHMiLCAoY2hhciAqKSAiQ29sb3Igc3BhY2UgdHJhbnNmb3JtYXRpb24gbWF0cml4IGNvZWZmaWNpZW50cyJ9LAogICAgeyAgMHgwMjEyLCAoY2hhciAqKSAiWUNiQ3JTdWJTYW1wbGluZyIsIChjaGFyICopICJTdWJzYW1wbGluZyByYXRpbyBvZiBZIHRvIEMifSwKICAgIHsgIDB4MDIxMywgKGNoYXIgKikgIllDYkNyUG9zaXRpb25pbmciLCAoY2hhciAqKSAiWSBhbmQgQyBwb3NpdGlvbmluZyJ9LAogICAgeyAgMHgwMjE0LCAoY2hhciAqKSAiUmVmZXJlbmNlQmxhY2tXaGl0ZSIsIChjaGFyICopICJQYWlyIG9mIGJsYWNrIGFuZCB3aGl0ZSByZWZlcmVuY2UgdmFsdWVzIn0sCiAgICB7ICAweDgyOEQsIChjaGFyICopICJDRkFSZXBlYXRQYXR0ZXJuRGltIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDgyOEUsIChjaGFyICopICJDRkFQYXR0ZXJuIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDgyOEYsIChjaGFyICopICJCYXR0ZXJ5TGV2ZWwiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4ODI5OCwgKGNoYXIgKikgIkNvcHlyaWdodCIsIChjaGFyICopICJDb3B5cmlnaHQgaG9sZGVyIn0sCiAgICB7ICAweDgyOUEsIChjaGFyICopICJFeHBvc3VyZVRpbWUiLCAoY2hhciAqKSAiRXhwb3N1cmUgdGltZSJ9LAogICAgeyAgMHg4MjlELCAoY2hhciAqKSAiRk51bWJlciIsIChjaGFyICopICJGIG51bWJlciJ9LAogICAgeyAgMHg4M0JCLCAoY2hhciAqKSAiSVBUQy9OQUEiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4ODc3MywgKGNoYXIgKikgIkludGVyQ29sb3JQcm9maWxlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDg4MjIsIChjaGFyICopICJFeHBvc3VyZVByb2dyYW0iLCAoY2hhciAqKSAiRXhwb3N1cmUgcHJvZ3JhbSJ9LAogICAgeyAgMHg4ODI0LCAoY2hhciAqKSAiU3BlY3RyYWxTZW5zaXRpdml0eSIsIChjaGFyICopICJTcGVjdHJhbCBzZW5zaXRpdml0eSJ9LAogICAgeyAgMHg4ODI1LCAoY2hhciAqKSAiR1BTSW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg4ODI3LCAoY2hhciAqKSAiSVNPU3BlZWRSYXRpbmdzIiwgKGNoYXIgKikgIklTTyBzcGVlZCByYXRpbmcifSwKICAgIHsgIDB4ODgyOCwgKGNoYXIgKikgIk9FQ0YiLCAoY2hhciAqKSAiT3B0b2VsZWN0cmljIGNvbnZlcnNpb24gZmFjdG9yIn0sCiAgICB7ICAweDkwMDAsIChjaGFyICopICJFeGlmVmVyc2lvbiIsIChjaGFyICopICJFeGlmIHZlcnNpb24ifSwKICAgIHsgIDB4OTAwMywgKGNoYXIgKikgIkRhdGVUaW1lT3JpZ2luYWwiLCAoY2hhciAqKSAiRGF0ZSBhbmQgdGltZSBvZiBvcmlnaW5hbCBkYXRhIGdlbmVyYXRpb24ifSwKICAgIHsgIDB4OTAwNCwgKGNoYXIgKikgIkRhdGVUaW1lRGlnaXRpemVkIiwgKGNoYXIgKikgIkRhdGUgYW5kIHRpbWUgb2YgZGlnaXRhbCBkYXRhIGdlbmVyYXRpb24ifSwKICAgIHsgIDB4OTEwMSwgKGNoYXIgKikgIkNvbXBvbmVudHNDb25maWd1cmF0aW9uIiwgKGNoYXIgKikgIk1lYW5pbmcgb2YgZWFjaCBjb21wb25lbnQifSwKICAgIHsgIDB4OTEwMiwgKGNoYXIgKikgIkNvbXByZXNzZWRCaXRzUGVyUGl4ZWwiLCAoY2hhciAqKSAiSW1hZ2UgY29tcHJlc3Npb24gbW9kZSJ9LAogICAgeyAgMHg5MjAxLCAoY2hhciAqKSAiU2h1dHRlclNwZWVkVmFsdWUiLCAoY2hhciAqKSAiU2h1dHRlciBzcGVlZCJ9LAogICAgeyAgMHg5MjAyLCAoY2hhciAqKSAiQXBlcnR1cmVWYWx1ZSIsIChjaGFyICopICJBcGVydHVyZSJ9LAogICAgeyAgMHg5MjAzLCAoY2hhciAqKSAiQnJpZ2h0bmVzc1ZhbHVlIiwgKGNoYXIgKikgIkJyaWdodG5lc3MifSwKICAgIHsgIDB4OTIwNCwgKGNoYXIgKikgIkV4cG9zdXJlQmlhc1ZhbHVlIiwgKGNoYXIgKikgIkV4cG9zdXJlIGJpYXMifSwKICAgIHsgIDB4OTIwNSwgKGNoYXIgKikgIk1heEFwZXJ0dXJlVmFsdWUiLCAoY2hhciAqKSAiTWF4aW11bSBsZW5zIGFwZXJ0dXJlIn0sCiAgICB7ICAweDkyMDYsIChjaGFyICopICJTdWJqZWN0RGlzdGFuY2UiLCAoY2hhciAqKSAiU3ViamVjdCBkaXN0YW5jZSJ9LAogICAgeyAgMHg5MjA3LCAoY2hhciAqKSAiTWV0ZXJpbmdNb2RlIiwgKGNoYXIgKikgIk1ldGVyaW5nIG1vZGUifSwKICAgIHsgIDB4OTIwOCwgKGNoYXIgKikgIkxpZ2h0U291cmNlIiwgKGNoYXIgKikgIkxpZ2h0IHNvdXJjZSJ9LAogICAgeyAgMHg5MjA5LCAoY2hhciAqKSAiRmxhc2giLCAoY2hhciAqKSAiRmxhc2gifSwKICAgIHsgIDB4OTIwQSwgKGNoYXIgKikgIkZvY2FsTGVuZ3RoIiwgKGNoYXIgKikgIkxlbnMgZm9jYWwgbGVuZ3RoIn0sCgl7ICAweDkyMTQsIChjaGFyICopICJTdWJqZWN0QXJlYSIsIChjaGFyICopICJTdWJqZWN0IGFyZWEifSwKICAgIHsgIDB4OTI3QywgKGNoYXIgKikgIk1ha2VyTm90ZSIsIChjaGFyICopICJNYW51ZmFjdHVyZXIgbm90ZXMifSwKICAgIHsgIDB4OTI4NiwgKGNoYXIgKikgIlVzZXJDb21tZW50IiwgKGNoYXIgKikgIlVzZXIgY29tbWVudHMifSwKICAgIHsgIDB4OTI5MCwgKGNoYXIgKikgIlN1YlNlY1RpbWUiLCAoY2hhciAqKSAiRGF0ZVRpbWUgc3Vic2Vjb25kcyJ9LAogICAgeyAgMHg5MjkxLCAoY2hhciAqKSAiU3ViU2VjVGltZU9yaWdpbmFsIiwgKGNoYXIgKikgIkRhdGVUaW1lT3JpZ2luYWwgc3Vic2Vjb25kcyJ9LAogICAgeyAgMHg5MjkyLCAoY2hhciAqKSAiU3ViU2VjVGltZURpZ2l0aXplZCIsIChjaGFyICopICJEYXRlVGltZURpZ2l0aXplZCBzdWJzZWNvbmRzIn0sCiAgICB7ICAweEEwMDAsIChjaGFyICopICJGbGFzaFBpeFZlcnNpb24iLCAoY2hhciAqKSAiU3VwcG9ydGVkIEZsYXNocGl4IHZlcnNpb24ifSwKICAgIHsgIDB4QTAwMSwgKGNoYXIgKikgIkNvbG9yU3BhY2UiLCAoY2hhciAqKSAiQ29sb3Igc3BhY2UgaW5mb3JtYXRpb24ifSwKICAgIHsgIDB4QTAwMiwgKGNoYXIgKikgIlBpeGVsWERpbWVuc2lvbiIsIChjaGFyICopICJWYWxpZCBpbWFnZSB3aWR0aCJ9LAogICAgeyAgMHhBMDAzLCAoY2hhciAqKSAiUGl4ZWxZRGltZW5zaW9uIiwgKGNoYXIgKikgIlZhbGlkIGltYWdlIGhlaWdodCJ9LAogICAgeyAgMHhBMDA0LCAoY2hhciAqKSAiUmVsYXRlZFNvdW5kRmlsZSIsIChjaGFyICopICJSZWxhdGVkIGF1ZGlvIGZpbGUifSwKICAgIHsgIDB4QTAwNSwgKGNoYXIgKikgIkludGVyb3BlcmFiaWxpdHlPZmZzZXQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QTIwQiwgKGNoYXIgKikgIkZsYXNoRW5lcmd5IiwgKGNoYXIgKikgIkZsYXNoIGVuZXJneSJ9LAogICAgeyAgMHhBMjBDLCAoY2hhciAqKSAiU3BhdGlhbEZyZXF1ZW5jeVJlc3BvbnNlIiwgKGNoYXIgKikgIlNwYXRpYWwgZnJlcXVlbmN5IHJlc3BvbnNlIn0sCiAgICB7ICAweEEyMEUsIChjaGFyICopICJGb2NhbFBsYW5lWFJlc29sdXRpb24iLCAoY2hhciAqKSAiRm9jYWwgcGxhbmUgWCByZXNvbHV0aW9uIn0sCiAgICB7ICAweEEyMEYsIChjaGFyICopICJGb2NhbFBsYW5lWVJlc29sdXRpb24iLCAoY2hhciAqKSAiRm9jYWwgcGxhbmUgWSByZXNvbHV0aW9uIn0sCiAgICB7ICAweEEyMTAsIChjaGFyICopICJGb2NhbFBsYW5lUmVzb2x1dGlvblVuaXQiLCAoY2hhciAqKSAiRm9jYWwgcGxhbmUgcmVzb2x1dGlvbiB1bml0In0sCiAgICB7ICAweEEyMTQsIChjaGFyICopICJTdWJqZWN0TG9jYXRpb24iLCAoY2hhciAqKSAiU3ViamVjdCBsb2NhdGlvbiJ9LAogICAgeyAgMHhBMjE1LCAoY2hhciAqKSAiRXhwb3N1cmVJbmRleCIsIChjaGFyICopICJFeHBvc3VyZSBpbmRleCJ9LAogICAgeyAgMHhBMjE3LCAoY2hhciAqKSAiU2Vuc2luZ01ldGhvZCIsIChjaGFyICopICJTZW5zaW5nIG1ldGhvZCJ9LAogICAgeyAgMHhBMzAwLCAoY2hhciAqKSAiRmlsZVNyYyIsIChjaGFyICopICJGaWxlIHNvdXJjZSJ9LAogICAgeyAgMHhBMzAxLCAoY2hhciAqKSAiU2NlbmVUeXBlIiwgKGNoYXIgKikgIlNjZW5lIHR5cGUifSwKICAgIHsgIDB4QTMwMiwgKGNoYXIgKikgIkNGQVBhdHRlcm4iLCAoY2hhciAqKSAiQ0ZBIHBhdHRlcm4ifSwKICAgIHsgIDB4QTQwMSwgKGNoYXIgKikgIkN1c3RvbVJlbmRlcmVkIiwgKGNoYXIgKikgIkN1c3RvbSBpbWFnZSBwcm9jZXNzaW5nIn0sCiAgICB7ICAweEE0MDIsIChjaGFyICopICJFeHBvc3VyZU1vZGUiLCAoY2hhciAqKSAiRXhwb3N1cmUgbW9kZSJ9LAogICAgeyAgMHhBNDAzLCAoY2hhciAqKSAiV2hpdGVCYWxhbmNlIiwgKGNoYXIgKikgIldoaXRlIGJhbGFuY2UifSwKICAgIHsgIDB4QTQwNCwgKGNoYXIgKikgIkRpZ2l0YWxab29tUmF0aW8iLCAoY2hhciAqKSAiRGlnaXRhbCB6b29tIHJhdGlvIn0sCiAgICB7ICAweEE0MDUsIChjaGFyICopICJGb2NhbExlbmd0aEluMzVtbUZpbG0iLCAoY2hhciAqKSAiRm9jYWwgbGVuZ3RoIGluIDM1IG1tIGZpbG0ifSwKICAgIHsgIDB4QTQwNiwgKGNoYXIgKikgIlNjZW5lQ2FwdHVyZVR5cGUiLCAoY2hhciAqKSAiU2NlbmUgY2FwdHVyZSB0eXBlIn0sCiAgICB7ICAweEE0MDcsIChjaGFyICopICJHYWluQ29udHJvbCIsIChjaGFyICopICJHYWluIGNvbnRyb2wifSwKICAgIHsgIDB4QTQwOCwgKGNoYXIgKikgIkNvbnRyYXN0IiwgKGNoYXIgKikgIkNvbnRyYXN0In0sCiAgICB7ICAweEE0MDksIChjaGFyICopICJTYXR1cmF0aW9uIiwgKGNoYXIgKikgIlNhdHVyYXRpb24ifSwKICAgIHsgIDB4QTQwQSwgKGNoYXIgKikgIlNoYXJwbmVzcyIsIChjaGFyICopICJTaGFycG5lc3MifSwKICAgIHsgIDB4QTQwQiwgKGNoYXIgKikgIkRldmljZVNldHRpbmdEZXNjcmlwdGlvbiIsIChjaGFyICopICJEZXZpY2Ugc2V0dGluZ3MgZGVzY3JpcHRpb24ifSwKICAgIHsgIDB4QTQwQywgKGNoYXIgKikgIlN1YmplY3REaXN0YW5jZVJhbmdlIiwgKGNoYXIgKikgIlN1YmplY3QgZGlzdGFuY2UgcmFuZ2UifSwKICAgIHsgIDB4QTQyMCwgKGNoYXIgKikgIkltYWdlVW5pcXVlSUQiLCAoY2hhciAqKSAiVW5pcXVlIGltYWdlIElEIn0sCiAgICB7ICAweEE0MzAsIChjaGFyICopICJDYW1lcmFPd25lck5hbWUiLCAoY2hhciAqKSAiQ2FtZXJhIG93bmVyIG5hbWUifSwKICAgIHsgIDB4QTQzMSwgKGNoYXIgKikgIkJvZHlTZXJpYWxOdW1iZXIiLCAoY2hhciAqKSAiQm9keSBzZXJpYWwgbnVtYmVyIn0sCiAgICB7ICAweEE0MzIsIChjaGFyICopICJMZW5zU3BlY2lmaWNhdGlvbiIsIChjaGFyICopICJMZW5zIHNwZWNpZmljYXRpb24ifSwKICAgIHsgIDB4QTQzMywgKGNoYXIgKikgIkxlbnNNYWtlIiwgKGNoYXIgKikgIkxlbnMgbWFrZSJ9LAogICAgeyAgMHhBNDM0LCAoY2hhciAqKSAiTGVuc01vZGVsIiwgKGNoYXIgKikgIkxlbnMgbW9kZWwifSwKICAgIHsgIDB4QTQzNSwgKGNoYXIgKikgIkxlbnNTZXJpYWxOdW1iZXIiLCAoY2hhciAqKSAiTGVucyBzZXJpYWwgbnVtYmVyIn0sCgoJLy8gVGhlc2UgdGFncyBhcmUgbm90IHBhcnQgb2YgdGhlIEV4aXYgdjIuMyBzcGVjaWZpY2F0aW9ucyBidXQgYXJlIG9mdGVuIGxvYWRlZCBieSBhcHBsaWNhdGlvbnMgYXMgRXhpZiBkYXRhCgl7ICAweDQ3NDYsIChjaGFyICopICJSYXRpbmciLCAoY2hhciAqKSAiUmF0aW5nIHRhZyB1c2VkIGJ5IFdpbmRvd3MifSwKCXsgIDB4NDc0OSwgKGNoYXIgKikgIlJhdGluZ1BlcmNlbnQiLCAoY2hhciAqKSAiUmF0aW5nIHRhZyB1c2VkIGJ5IFdpbmRvd3MsIHZhbHVlIGluIHBlcmNlbnQifSwKCXsgIDB4OUM5QiwgKGNoYXIgKikgIlhQVGl0bGUiLCAoY2hhciAqKSAiVGl0bGUgdGFnIHVzZWQgYnkgV2luZG93cywgZW5jb2RlZCBpbiBVQ1MyIn0sCgl7ICAweDlDOUMsIChjaGFyICopICJYUENvbW1lbnQiLCAoY2hhciAqKSAiQ29tbWVudCB0YWcgdXNlZCBieSBXaW5kb3dzLCBlbmNvZGVkIGluIFVDUzIifSwKCXsgIDB4OUM5RCwgKGNoYXIgKikgIlhQQXV0aG9yIiwgKGNoYXIgKikgIkF1dGhvciB0YWcgdXNlZCBieSBXaW5kb3dzLCBlbmNvZGVkIGluIFVDUzIifSwKCXsgIDB4OUM5RSwgKGNoYXIgKikgIlhQS2V5d29yZHMiLCAoY2hhciAqKSAiS2V5d29yZHMgdGFnIHVzZWQgYnkgV2luZG93cywgZW5jb2RlZCBpbiBVQ1MyIn0sCgl7ICAweDlDOUYsIChjaGFyICopICJYUFN1YmplY3QiLCAoY2hhciAqKSAiU3ViamVjdCB0YWcgdXNlZCBieSBXaW5kb3dzLCBlbmNvZGVkIGluIFVDUzIifSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRVhJRiBHUFMgdGFncyBkZWZpbml0aW9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdGF0aWMgVGFnSW5mbwogIGV4aWZfZ3BzX3RhZ190YWJsZVtdID0KICB7CiAgICB7ICAweDAwMDAsIChjaGFyICopICJHUFNWZXJzaW9uSUQiLCAoY2hhciAqKSAiR1BTIHRhZyB2ZXJzaW9uIn0sCgl7ICAweDAwMDEsIChjaGFyICopICJHUFNMYXRpdHVkZVJlZiIsIChjaGFyICopICJOb3J0aCBvciBTb3V0aCBMYXRpdHVkZSJ9LAogICAgeyAgMHgwMDAyLCAoY2hhciAqKSAiR1BTTGF0aXR1ZGUiLCAoY2hhciAqKSAiTGF0aXR1ZGUifSwKICAgIHsgIDB4MDAwMywgKGNoYXIgKikgIkdQU0xvbmdpdHVkZVJlZiIsIChjaGFyICopICJFYXN0IG9yIFdlc3QgTG9uZ2l0dWRlIn0sCiAgICB7ICAweDAwMDQsIChjaGFyICopICJHUFNMb25naXR1ZGUiLCAoY2hhciAqKSAiTG9uZ2l0dWRlIn0sCiAgICB7ICAweDAwMDUsIChjaGFyICopICJHUFNBbHRpdHVkZVJlZiIsIChjaGFyICopICJBbHRpdHVkZSByZWZlcmVuY2UifSwKICAgIHsgIDB4MDAwNiwgKGNoYXIgKikgIkdQU0FsdGl0dWRlIiwgKGNoYXIgKikgIkFsdGl0dWRlIn0sCiAgICB7ICAweDAwMDcsIChjaGFyICopICJHUFNUaW1lU3RhbXAiLCAoY2hhciAqKSAiR1BTIHRpbWUgKGF0b21pYyBjbG9jaykifSwKICAgIHsgIDB4MDAwOCwgKGNoYXIgKikgIkdQU1NhdGVsbGl0ZXMiLCAoY2hhciAqKSAiR1BTIHNhdGVsbGl0ZXMgdXNlZCBmb3IgbWVhc3VyZW1lbnQifSwKICAgIHsgIDB4MDAwOSwgKGNoYXIgKikgIkdQU1N0YXR1cyIsIChjaGFyICopICJHUFMgcmVjZWl2ZXIgc3RhdHVzIn0sCiAgICB7ICAweDAwMEEsIChjaGFyICopICJHUFNNZWFzdXJlTW9kZSIsIChjaGFyICopICJHUFMgbWVhc3VyZW1lbnQgbW9kZSJ9LAogICAgeyAgMHgwMDBCLCAoY2hhciAqKSAiR1BTRE9QIiwgKGNoYXIgKikgIk1lYXN1cmVtZW50IHByZWNpc2lvbiJ9LAogICAgeyAgMHgwMDBDLCAoY2hhciAqKSAiR1BTU3BlZWRSZWYiLCAoY2hhciAqKSAiU3BlZWQgdW5pdCJ9LAogICAgeyAgMHgwMDBELCAoY2hhciAqKSAiR1BTU3BlZWQiLCAoY2hhciAqKSAiU3BlZWQgb2YgR1BTIHJlY2VpdmVyIn0sCiAgICB7ICAweDAwMEUsIChjaGFyICopICJHUFNUcmFja1JlZiIsIChjaGFyICopICJSZWZlcmVuY2UgZm9yIGRpcmVjdGlvbiBvZiBtb3ZlbWVudCJ9LAogICAgeyAgMHgwMDBGLCAoY2hhciAqKSAiR1BTVHJhY2siLCAoY2hhciAqKSAiRGlyZWN0aW9uIG9mIG1vdmVtZW50In0sCiAgICB7ICAweDAwMTAsIChjaGFyICopICJHUFNJbWdEaXJlY3Rpb25SZWYiLCAoY2hhciAqKSAiUmVmZXJlbmNlIGZvciBkaXJlY3Rpb24gb2YgaW1hZ2UifSwKICAgIHsgIDB4MDAxMSwgKGNoYXIgKikgIkdQU0ltZ0RpcmVjdGlvbiIsIChjaGFyICopICJEaXJlY3Rpb24gb2YgaW1hZ2UifSwKICAgIHsgIDB4MDAxMiwgKGNoYXIgKikgIkdQU01hcERhdHVtIiwgKGNoYXIgKikgIkdlb2RldGljIHN1cnZleSBkYXRhIHVzZWQifSwKICAgIHsgIDB4MDAxMywgKGNoYXIgKikgIkdQU0Rlc3RMYXRpdHVkZVJlZiIsIChjaGFyICopICJSZWZlcmVuY2UgZm9yIGxhdGl0dWRlIG9mIGRlc3RpbmF0aW9uIn0sCiAgICB7ICAweDAwMTQsIChjaGFyICopICJHUFNEZXN0TGF0aXR1ZGUiLCAoY2hhciAqKSAiTGF0aXR1ZGUgb2YgZGVzdGluYXRpb24ifSwKICAgIHsgIDB4MDAxNSwgKGNoYXIgKikgIkdQU0Rlc3RMb25naXR1ZGVSZWYiLCAoY2hhciAqKSAiUmVmZXJlbmNlIGZvciBsb25naXR1ZGUgb2YgZGVzdGluYXRpb24ifSwKICAgIHsgIDB4MDAxNiwgKGNoYXIgKikgIkdQU0Rlc3RMb25naXR1ZGUiLCAoY2hhciAqKSAiTG9uZ2l0dWRlIG9mIGRlc3RpbmF0aW9uIn0sCiAgICB7ICAweDAwMTcsIChjaGFyICopICJHUFNEZXN0QmVhcmluZ1JlZiIsIChjaGFyICopICJSZWZlcmVuY2UgZm9yIGJlYXJpbmcgb2YgZGVzdGluYXRpb24ifSwKICAgIHsgIDB4MDAxOCwgKGNoYXIgKikgIkdQU0Rlc3RCZWFyaW5nIiwgKGNoYXIgKikgIkJlYXJpbmcgb2YgZGVzdGluYXRpb24ifSwKICAgIHsgIDB4MDAxOSwgKGNoYXIgKikgIkdQU0Rlc3REaXN0YW5jZVJlZiIsIChjaGFyICopICJSZWZlcmVuY2UgZm9yIGRpc3RhbmNlIHRvIGRlc3RpbmF0aW9uIn0sCiAgICB7ICAweDAwMUEsIChjaGFyICopICJHUFNEZXN0RGlzdGFuY2UiLCAoY2hhciAqKSAiRGlzdGFuY2UgdG8gZGVzdGluYXRpb24ifSwKICAgIHsgIDB4MDAxQiwgKGNoYXIgKikgIkdQU1Byb2Nlc3NpbmdNZXRob2QiLCAoY2hhciAqKSAiTmFtZSBvZiBHUFMgcHJvY2Vzc2luZyBtZXRob2QifSwKICAgIHsgIDB4MDAxQywgKGNoYXIgKikgIkdQU0FyZWFJbmZvcm1hdGlvbiIsIChjaGFyICopICJOYW1lIG9mIEdQUyBhcmVhIn0sCiAgICB7ICAweDAwMUQsIChjaGFyICopICJHUFNEYXRlU3RhbXAiLCAoY2hhciAqKSAiR1BTIGRhdGUifSwKICAgIHsgIDB4MDAxRSwgKGNoYXIgKikgIkdQU0RpZmZlcmVudGlhbCIsIChjaGFyICopICJHUFMgZGlmZmVyZW50aWFsIGNvcnJlY3Rpb24ifSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRVhJRiBpbnRlcm9wZXJhYmlsaXR5IHRhZ3MgZGVmaW5pdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3RhdGljIFRhZ0luZm8KICBleGlmX2ludGVyb3BfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIkludGVyb3BlcmFiaWxpdHlJbmRleCIsIChjaGFyICopICJJbnRlcm9wZXJhYmlsaXR5IElkZW50aWZpY2F0aW9uIn0sCiAgICB7ICAweDAwMDIsIChjaGFyICopICJJbnRlcm9wZXJhYmlsaXR5VmVyc2lvbiIsIChjaGFyICopICJJbnRlcm9wZXJhYmlsaXR5IHZlcnNpb24ifSwKICAgIHsgIDB4MTAwMCwgKGNoYXIgKikgIlJlbGF0ZWRJbWFnZUZpbGVGb3JtYXQiLCAoY2hhciAqKSAiRmlsZSBmb3JtYXQgb2YgaW1hZ2UgZmlsZSJ9LAogICAgeyAgMHgxMDAxLCAoY2hhciAqKSAiUmVsYXRlZEltYWdlV2lkdGgiLCAoY2hhciAqKSAiSW1hZ2Ugd2lkdGgifSwKICAgIHsgIDB4MTAwMiwgKGNoYXIgKikgIlJlbGF0ZWRJbWFnZUxlbmd0aCIsIChjaGFyICopICJJbWFnZSBoZWlnaHQifSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRVhJRiBtYWtlciBub3RlIHRhZ3MgZGVmaW5pdGlvbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCkNhbm9uIG1ha2VyIG5vdGUKKi8Kc3RhdGljIFRhZ0luZm8KICBleGlmX2Nhbm9uX3RhZ190YWJsZVtdID0KICB7CiAgICB7ICAweDAwMDEsIChjaGFyICopICJDYW5vbkNhbWVyYVNldHRpbmdzIiwgKGNoYXIgKikgIkNhbm9uIENhbWVyYVNldHRpbmdzIFRhZ3MifSwKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIkNhbm9uRm9jYWxMZW5ndGgiLCAoY2hhciAqKSAiQ2Fub24gRm9jYWxMZW5ndGggVGFncyJ9LAogICAgeyAgMHgwMDAzLCAoY2hhciAqKSAiQ2Fub25GbGFzaEluZm8/IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDQsIChjaGFyICopICJDYW5vblNob3RJbmZvIiwgKGNoYXIgKikgIkNhbm9uIFNob3RJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDAwNSwgKGNoYXIgKikgIkNhbm9uUGFub3JhbWEiLCAoY2hhciAqKSAiQ2Fub24gUGFub3JhbWEgVGFncyJ9LAogICAgeyAgMHgwMDA2LCAoY2hhciAqKSAiQ2Fub25JbWFnZVR5cGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNywgKGNoYXIgKikgIkNhbm9uRmlybXdhcmVWZXJzaW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDgsIChjaGFyICopICJGaWxlTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDksIChjaGFyICopICJPd25lck5hbWUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQSwgKGNoYXIgKikgIlVua25vd25EMzAiLCAoY2hhciAqKSAiQ2Fub24gVW5rbm93bkQzMCBUYWdzIn0sCiAgICB7ICAweDAwMEMsIChjaGFyICopICJTZXJpYWxOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRCwgKGNoYXIgKikgIkNhbm9uQ2FtZXJhSW5mbyIsIChjaGFyICopICJDYW5vbiBDYW1lcmFJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDAwRSwgKGNoYXIgKikgIkNhbm9uRmlsZUxlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBGLCAoY2hhciAqKSAiQ2Fub25DdXN0b21GdW5jdGlvbnMiLCAoY2hhciAqKSAiQ3VzdG9tIEZ1bmN0aW9ucyJ9LAogICAgeyAgMHgwMDEwLCAoY2hhciAqKSAiQ2Fub25Nb2RlbElEIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTIsIChjaGFyICopICJDYW5vbkFGSW5mbyIsIChjaGFyICopICJDYW5vbiBBRkluZm8gVGFncyJ9LAogICAgeyAgMHgwMDEzLCAoY2hhciAqKSAiVGh1bWJuYWlsSW1hZ2VWYWxpZEFyZWEiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNSwgKGNoYXIgKikgIlNlcmlhbE51bWJlckZvcm1hdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFBLCAoY2hhciAqKSAiU3VwZXJNYWNybyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFDLCAoY2hhciAqKSAiRGF0ZVN0YW1wTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFELCAoY2hhciAqKSAiTXlDb2xvcnMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRSwgKGNoYXIgKikgIkZpcm13YXJlUmV2aXNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyMywgKGNoYXIgKikgIkNhdGVnb3JpZXMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyNCwgKGNoYXIgKikgIkZhY2VEZXRlY3QxIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMjUsIChjaGFyICopICJGYWNlRGV0ZWN0MiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDI2LCAoY2hhciAqKSAiQ2Fub25BRkluZm8yIiwgKGNoYXIgKikgIkNhbm9uIEFGSW5mbzIgVGFncyJ9LAogICAgeyAgMHgwMDI4LCAoY2hhciAqKSAiSW1hZ2VVbmlxdWVJRCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDgxLCAoY2hhciAqKSAiUmF3RGF0YU9mZnNldCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDgzLCAoY2hhciAqKSAiT3JpZ2luYWxEZWNpc2lvbkRhdGFPZmZzZXQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA5MCwgKGNoYXIgKikgIkN1c3RvbUZ1bmN0aW9uczFEIiwgKGNoYXIgKikgIkNhbm9uQ3VzdG9tIEZ1bmN0aW9uczFEIFRhZ3MifSwKICAgIHsgIDB4MDA5MSwgKGNoYXIgKikgIlBlcnNvbmFsRnVuY3Rpb25zIiwgKGNoYXIgKikgIkNhbm9uQ3VzdG9tIFBlcnNvbmFsRnVuY3MgVGFncyJ9LAogICAgeyAgMHgwMDkyLCAoY2hhciAqKSAiUGVyc29uYWxGdW5jdGlvblZhbHVlcyIsIChjaGFyICopICJDYW5vbkN1c3RvbSBQZXJzb25hbEZ1bmNWYWx1ZXMgVGFncyJ9LAogICAgeyAgMHgwMDkzLCAoY2hhciAqKSAiQ2Fub25GaWxlSW5mbyIsIChjaGFyICopICJDYW5vbiBGaWxlSW5mbyBUYWdzIn0sCiAgICB7ICAweDAwOTQsIChjaGFyICopICJBRlBvaW50c0luRm9jdXMxRCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDk1LCAoY2hhciAqKSAiTGVuc01vZGVsIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwOTYsIChjaGFyICopICJTZXJpYWxJbmZvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwOTcsIChjaGFyICopICJEdXN0UmVtb3ZhbERhdGEiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA5OCwgKGNoYXIgKikgIkNyb3BJbmZvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwOTksIChjaGFyICopICJDdXN0b21GdW5jdGlvbnMyIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwOUEsIChjaGFyICopICJBc3BlY3RJbmZvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQTAsIChjaGFyICopICJQcm9jZXNzaW5nSW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEExLCAoY2hhciAqKSAiVG9uZUN1cnZlVGFibGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBMiwgKGNoYXIgKikgIlNoYXJwbmVzc1RhYmxlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQTMsIChjaGFyICopICJTaGFycG5lc3NGcmVxVGFibGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBNCwgKGNoYXIgKikgIldoaXRlQmFsYW5jZVRhYmxlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQTksIChjaGFyICopICJDb2xvckJhbGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBQSwgKGNoYXIgKikgIk1lYXN1cmVkQ29sb3IiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBRSwgKGNoYXIgKikgIkNvbG9yVGVtcGVyYXR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBCMCwgKGNoYXIgKikgIkNhbm9uRmxhZ3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBCMSwgKGNoYXIgKikgIk1vZGlmaWVkSW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEIyLCAoY2hhciAqKSAiVG9uZUN1cnZlTWF0Y2hpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBCMywgKGNoYXIgKikgIldoaXRlQmFsYW5jZU1hdGNoaW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQjQsIChjaGFyICopICJDb2xvclNwYWNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQjYsIChjaGFyICopICJQcmV2aWV3SW1hZ2VJbmZvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwRDAsIChjaGFyICopICJWUkRPZmZzZXQiLCAoY2hhciAqKSAiT2Zmc2V0IG9mIFZSRCAncmVjaXBlIGRhdGEnIGlmIGl0IGV4aXN0cyJ9LAogICAgeyAgMHgwMEUwLCAoY2hhciAqKSAiU2Vuc29ySW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg0MDAxLCAoY2hhciAqKSAiQ29sb3JEYXRhIiwgKGNoYXIgKikgIkNhbm9uIENvbG9yRGF0YSBUYWdzIn0sCiAgICB7ICAweDQwMDIsIChjaGFyICopICJDUldQYXJhbT8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4NDAwMywgKGNoYXIgKikgIkNvbG9ySW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg0MDA1LCAoY2hhciAqKSAiRmxhdm9yPyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg0MDA4LCAoY2hhciAqKSAiQmxhY2tMZXZlbD8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4NDAxMCwgKGNoYXIgKikgIkN1c3RvbVBpY3R1cmVTdHlsZUZpbGVOYW1lIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDQwMTMsIChjaGFyICopICJBRk1pY3JvQWRqIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDQwMTUsIChjaGFyICopICJWaWduZXR0aW5nQ29yciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg0MDE2LCAoY2hhciAqKSAiVmlnbmV0dGluZ0NvcnIyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDQwMTgsIChjaGFyICopICJMaWdodGluZ09wdCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHg0MDE5LCAoY2hhciAqKSAiTGVuc0luZm8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4NDAyMCwgKGNoYXIgKikgIkFtYmllbmNlSW5mbyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHg0MDI0LCAoY2hhciAqKSAiRmlsdGVySW5mbyIsIChjaGFyICopIE5VTEx9LAoKCS8vIFRoZXNlICdzdWInLXRhZyB2YWx1ZXMgaGF2ZSBiZWVuIGNyZWF0ZWQgZm9yIGNvbnNpc3RlbmN5IC0tIHRoZXkgZG9uJ3QgZXhpc3Qgd2l0aGluIHRoZSBleGlmIHNlZ21lbnQKCgkvLyBGaWVsZHMgdW5kZXIgdGFnIDB4MDAwMSAod2UgYWRkIDB4QzEwMCB0byBtYWtlIHVuaXF1ZSB0YWcgaWQpCiAgICB7ICAweEMxMDAgKyAxLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6TWFjcm9Nb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAyLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6U2VsZlRpbWVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAzLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6UXVhbGl0eSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgNCwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOkNhbm9uRmxhc2hNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyA1LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6Q29udGludW91c0RyaXZlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEMxMDAgKyA2LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6MHgwMDA2IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyA3LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6Rm9jdXNNb2RlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEMxMDAgKyA4LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6MHgwMDA4IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyA5LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6UmVjb3JkTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMTAsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpDYW5vbkltYWdlU2l6ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMTEsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpFYXN5TW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMTIsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpEaWdpdGFsWm9vbSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMTMsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpDb250cmFzdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMTQsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpTYXR1cmF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAxNSwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMTYsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpDYW1lcmFJU08iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDE3LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6TWV0ZXJpbmdNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAxOCwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOkZvY3VzUmFuZ2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDE5LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6QUZQb2ludCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMjAsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpDYW5vbkV4cG9zdXJlTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDMTAwICsgMjEsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczoweDAwMTUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDIyLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6TGVuc1R5cGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDIzLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6TG9uZ0ZvY2FsIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAyNCwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOlNob3J0Rm9jYWwiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDI1LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6Rm9jYWxVbml0cyIsIChjaGFyICopICJGb2NhbCBVbml0cyBwZXIgbW0ifSwKICAgIHsgIDB4QzEwMCArIDI2LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6TWF4QXBlcnR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDI3LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6TWluQXBlcnR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDI4LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6Rmxhc2hBY3Rpdml0eSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMjksIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpGbGFzaEJpdHMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4QzEwMCArIDMwLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6MHgwMDFFIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEMxMDAgKyAzMSwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOjB4MDAxRiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMzIsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpGb2N1c0NvbnRpbnVvdXMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDMzLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6QUVTZXR0aW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAzNCwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOkltYWdlU3RhYmlsaXphdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgMzUsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpEaXNwbGF5QXBlcnR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDM2LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6Wm9vbVNvdXJjZVdpZHRoIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEMxMDAgKyAzNywgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOlpvb21UYXJnZXRXaWR0aCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDMTAwICsgMzgsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczoweDAwMjYiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDM5LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6U3BvdE1ldGVyaW5nTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgNDAsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpQaG90b0VmZmVjdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgNDEsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpNYW51YWxGbGFzaE91dHB1dCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMTAwICsgNDIsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczpDb2xvclRvbmUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4QzEwMCArIDQzLCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6MHgwMDJCIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEMxMDAgKyA0NCwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOjB4MDAyQyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDMTAwICsgNDUsIChjaGFyICopICJDYW1lcmFTZXR0aW5nczoweDAwMkQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzEwMCArIDQ2LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6U1JBV1F1YWxpdHkiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4QzEwMCArIDQ3LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3M6MHgwMDJGIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEMxMDAgKyA0OCwgKGNoYXIgKikgIkNhbWVyYVNldHRpbmdzOjB4MDAzMCIsIChjaGFyICopIE5VTEx9LAoKCS8vIEZpZWxkcyB1bmRlciB0YWcgMHgwMDAyICh3ZSBhZGQgMHhDMjAwIHRvIG1ha2UgdW5pcXVlIHRhZyBpZCkKICAgIHsgIDB4QzIwMCArIDAsIChjaGFyICopICJGb2NhbExlbmd0aDpGb2NhbFR5cGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzIwMCArIDEsIChjaGFyICopICJGb2NhbExlbmd0aDpGb2NhbExlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMjAwICsgMiwgKGNoYXIgKikgIkZvY2FsTGVuZ3RoOkZvY2FsUGxhbmVYU2l6ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDMjAwICsgMywgKGNoYXIgKikgIkZvY2FsTGVuZ3RoOkZvY2FsUGxhbmVZU2l6ZSIsIChjaGFyICopIE5VTEx9LAoJCgkvLyBGaWVsZHMgdW5kZXIgdGFnIDB4MDAwNCAod2UgYWRkIDB4QzQwMCB0byBtYWtlIHVuaXF1ZSB0YWcgaWQpCiAgICB7ICAweEM0MDAgKyAxLCAoY2hhciAqKSAiU2hvdEluZm86QXV0b0lTTyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDNDAwICsgMiwgKGNoYXIgKikgIlNob3RJbmZvOkJhc2VJU08iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4QzQwMCArIDMsIChjaGFyICopICJTaG90SW5mbzpNZWFzdXJlZEVWIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyA0LCAoY2hhciAqKSAiU2hvdEluZm86VGFyZ2V0QXBlcnR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDUsIChjaGFyICopICJTaG90SW5mbzpUYXJnZXRFeHBvc3VyZVRpbWUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDYsIChjaGFyICopICJTaG90SW5mbzpFeHBvc3VyZUNvbXBlbnNhdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgNywgKGNoYXIgKikgIlNob3RJbmZvOldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgOCwgKGNoYXIgKikgIlNob3RJbmZvOlNsb3dTaHV0dGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyA5LCAoY2hhciAqKSAiU2hvdEluZm86U2VxdWVuY2VOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDEwLCAoY2hhciAqKSAiU2hvdEluZm86T3B0aWNhbFpvb21Db2RlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEM0MDAgKyAxMSwgKGNoYXIgKikgIlNob3RJbmZvOjB4MDAwQiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDNDAwICsgMTIsIChjaGFyICopICJTaG90SW5mbzpDYW1lcmFUZW1wZXJhdHVyZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgMTMsIChjaGFyICopICJTaG90SW5mbzpGbGFzaEd1aWRlTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAxNCwgKGNoYXIgKikgIlNob3RJbmZvOkFGUG9pbnRzSW5Gb2N1cyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgMTUsIChjaGFyICopICJTaG90SW5mbzpGbGFzaEV4cG9zdXJlQ29tcCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgMTYsIChjaGFyICopICJTaG90SW5mbzpBdXRvRXhwb3N1cmVCcmFja2V0aW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAxNywgKGNoYXIgKikgIlNob3RJbmZvOkFFQkJyYWNrZXRWYWx1ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgMTgsIChjaGFyICopICJTaG90SW5mbzpDb250cm9sTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgMTksIChjaGFyICopICJTaG90SW5mbzpGb2N1c0Rpc3RhbmNlVXBwZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDIwLCAoY2hhciAqKSAiU2hvdEluZm86Rm9jdXNEaXN0YW5jZUxvd2VyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAyMSwgKGNoYXIgKikgIlNob3RJbmZvOkZOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDIyLCAoY2hhciAqKSAiU2hvdEluZm86RXhwb3N1cmVUaW1lIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAyMywgKGNoYXIgKikgIlNob3RJbmZvOk1lYXN1cmVkRVYyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAyNCwgKGNoYXIgKikgIlNob3RJbmZvOkJ1bGJEdXJhdGlvbiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDNDAwICsgMjUsIChjaGFyICopICJTaG90SW5mbzoweDAwMTkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDI2LCAoY2hhciAqKSAiU2hvdEluZm86Q2FtZXJhVHlwZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDNDAwICsgMjcsIChjaGFyICopICJTaG90SW5mbzpBdXRvUm90YXRlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAyOCwgKGNoYXIgKikgIlNob3RJbmZvOk5ERmlsdGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEM0MDAgKyAyOSwgKGNoYXIgKikgIlNob3RJbmZvOlNlbGZUaW1lcjIiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4QzQwMCArIDMwLCAoY2hhciAqKSAiU2hvdEluZm86MHgwMDFFIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweEM0MDAgKyAzMSwgKGNoYXIgKikgIlNob3RJbmZvOjB4MDAxRiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHhDNDAwICsgMzIsIChjaGFyICopICJTaG90SW5mbzoweDAwMjAiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QzQwMCArIDMzLCAoY2hhciAqKSAiU2hvdEluZm86Rmxhc2hPdXRwdXQiLCAoY2hhciAqKSBOVUxMfSwKCgkvLyBGaWVsZHMgdW5kZXIgdGFnIDB4MDAxMiAod2UgYWRkIDB4MTIwMCB0byBtYWtlIHVuaXF1ZSB0YWcgaWQpCiAgICB7ICAweDEyMDAgKyAwLCAoY2hhciAqKSAiQUZJbmZvOk51bUFGUG9pbnRzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEyMDAgKyAxLCAoY2hhciAqKSAiQUZJbmZvOlZhbGlkQUZQb2ludHMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTIwMCArIDIsIChjaGFyICopICJBRkluZm86Q2Fub25JbWFnZVdpZHRoIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEyMDAgKyAzLCAoY2hhciAqKSAiQUZJbmZvOkNhbm9uSW1hZ2VIZWlnaHQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTIwMCArIDQsIChjaGFyICopICJBRkluZm86QUZJbWFnZVdpZHRoIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEyMDAgKyA1LCAoY2hhciAqKSAiQUZJbmZvOkFGSW1hZ2VIZWlnaHQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTIwMCArIDYsIChjaGFyICopICJBRkluZm86QUZBcmVhV2lkdGgiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTIwMCArIDcsIChjaGFyICopICJBRkluZm86QUZBcmVhSGVpZ2h0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEyMDAgKyA4LCAoY2hhciAqKSAiQUZJbmZvOkFGQXJlYVhQb3NpdGlvbnMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTIwMCArIDksIChjaGFyICopICJBRkluZm86QUZBcmVhWVBvc2l0aW9ucyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMjAwICsgMTAsIChjaGFyICopICJBRkluZm86QUZQb2ludHNJbkZvY3VzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEyMDAgKyAxMSwgKGNoYXIgKikgIkFGSW5mbzpQcmltYXJ5QUZQb2ludD8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTIwMCArIDEyLCAoY2hhciAqKSAiQUZJbmZvOlByaW1hcnlBRlBvaW50IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEyMDAgKyAxMywgKGNoYXIgKikgIkFGSW5mbzoweDAwMEQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTIwMCArIDE0LCAoY2hhciAqKSAiQUZJbmZvOjB4MDAwRSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMjAwICsgMTUsIChjaGFyICopICJBRkluZm86MHgwMDBGIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEyMDAgKyAxNiwgKGNoYXIgKikgIkFGSW5mbzoweDAwMTAiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTIwMCArIDE3LCAoY2hhciAqKSAiQUZJbmZvOjB4MDAxMSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMjAwICsgMTgsIChjaGFyICopICJBRkluZm86MHgwMDEyIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEyMDAgKyAxOSwgKGNoYXIgKikgIkFGSW5mbzoweDAwMTMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTIwMCArIDIwLCAoY2hhciAqKSAiQUZJbmZvOjB4MDAxNCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMjAwICsgMjEsIChjaGFyICopICJBRkluZm86MHgwMDE1IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEyMDAgKyAyMiwgKGNoYXIgKikgIkFGSW5mbzoweDAwMTYiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTIwMCArIDIzLCAoY2hhciAqKSAiQUZJbmZvOjB4MDAxNyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMjAwICsgMjQsIChjaGFyICopICJBRkluZm86MHgwMDE4IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEyMDAgKyAyNSwgKGNoYXIgKikgIkFGSW5mbzoweDAwMTkiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTIwMCArIDI2LCAoY2hhciAqKSAiQUZJbmZvOjB4MDAxQSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMjAwICsgMjcsIChjaGFyICopICJBRkluZm86MHgwMDFCIiwgKGNoYXIgKikgTlVMTH0sCgoJLy8gRmllbGRzIHVuZGVyIHRhZyAweDAwQTAgKHdlIGFkZCAweENBMDAgdG8gbWFrZSB1bmlxdWUgdGFnIGlkKQogICAgeyAgMHhDQTAwICsgMSwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOlRvbmVDdXJ2ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDQTAwICsgMiwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDQTAwICsgMywgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOlNoYXJwbmVzc0ZyZXF1ZW5jeSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDQTAwICsgNCwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOlNlbnNvclJlZExldmVsIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENBMDAgKyA1LCAoY2hhciAqKSAiUHJvY2Vzc2luZ0luZm86U2Vuc29yQmx1ZUxldmVsIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENBMDAgKyA2LCAoY2hhciAqKSAiUHJvY2Vzc2luZ0luZm86V2hpdGVCYWxhbmNlUmVkIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENBMDAgKyA3LCAoY2hhciAqKSAiUHJvY2Vzc2luZ0luZm86V2hpdGVCYWxhbmNlQmx1ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDQTAwICsgOCwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDQTAwICsgOSwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOkNvbG9yVGVtcGVyYXR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4Q0EwMCArIDEwLCAoY2hhciAqKSAiUHJvY2Vzc2luZ0luZm86UGljdHVyZVN0eWxlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENBMDAgKyAxMSwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOkRpZ2l0YWxHYWluIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENBMDAgKyAxMiwgKGNoYXIgKikgIlByb2Nlc3NpbmdJbmZvOldCU2hpZnRBQiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDQTAwICsgMTMsIChjaGFyICopICJQcm9jZXNzaW5nSW5mbzpXQlNoaWZ0R00iLCAoY2hhciAqKSBOVUxMfSwKCgkvLyBGaWVsZHMgdW5kZXIgdGFnIDB4MDBFMCAod2UgYWRkIDB4Q0UwMCB0byBtYWtlIHVuaXF1ZSB0YWcgaWQpCiAgICB7ICAweENFMDAgKyAxLCAoY2hhciAqKSAiU2Vuc29ySW5mbzpTZW5zb3JXaWR0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDRTAwICsgMiwgKGNoYXIgKikgIlNlbnNvckluZm86U2Vuc29ySGVpZ2h0IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweENFMDAgKyAzLCAoY2hhciAqKSAiU2Vuc29ySW5mbzoweDAwMDMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4Q0UwMCArIDQsIChjaGFyICopICJTZW5zb3JJbmZvOjB4MDAwNCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDRTAwICsgNSwgKGNoYXIgKikgIlNlbnNvckluZm86U2Vuc29yTGVmdEJvcmRlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDRTAwICsgNiwgKGNoYXIgKikgIlNlbnNvckluZm86U2Vuc29yVG9wQm9yZGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENFMDAgKyA3LCAoY2hhciAqKSAiU2Vuc29ySW5mbzpTZW5zb3JSaWdodEJvcmRlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhDRTAwICsgOCwgKGNoYXIgKikgIlNlbnNvckluZm86U2Vuc29yQm90dG9tQm9yZGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENFMDAgKyA5LCAoY2hhciAqKSAiU2Vuc29ySW5mbzpCbGFja01hc2tMZWZ0Qm9yZGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENFMDAgKyAxMCwgKGNoYXIgKikgIlNlbnNvckluZm86QmxhY2tNYXNrVG9wQm9yZGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweENFMDAgKyAxMSwgKGNoYXIgKikgIlNlbnNvckluZm86QmxhY2tNYXNrUmlnaHRCb3JkZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4Q0UwMCArIDEyLCAoY2hhciAqKSAiU2Vuc29ySW5mbzpCbGFja01hc2tCb3R0b21Cb3JkZXIiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4Q0UwMCArIDEzLCAoY2hhciAqKSAiU2Vuc29ySW5mbzoweDAwMEQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4Q0UwMCArIDE0LCAoY2hhciAqKSAiU2Vuc29ySW5mbzoweDAwMEUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4Q0UwMCArIDE1LCAoY2hhciAqKSAiU2Vuc29ySW5mbzoweDAwMEYiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4Q0UwMCArIDE2LCAoY2hhciAqKSAiU2Vuc29ySW5mbzoweDAwMTAiLCAoY2hhciAqKSBOVUxMfSwKCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpDYXNpbyB0eXBlIDEgbWFrZXIgbm90ZQoqLwpzdGF0aWMgVGFnSW5mbwogIGV4aWZfY2FzaW9fdHlwZTFfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIlJlY29yZGluZ01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIlF1YWxpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMywgKGNoYXIgKikgIkZvY3VzTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA0LCAoY2hhciAqKSAiRmxhc2hNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDUsIChjaGFyICopICJGbGFzaEludGVuc2l0eSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA2LCAoY2hhciAqKSAiT2JqZWN0RGlzdGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNywgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBBLCAoY2hhciAqKSAiRGlnaXRhbFpvb20iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQiwgKGNoYXIgKikgIlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBDLCAoY2hhciAqKSAiQ29udHJhc3QiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRCwgKGNoYXIgKikgIlNhdHVyYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNCwgKGNoYXIgKikgIklTTyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDE1LCAoY2hhciAqKSAiRmlybXdhcmVEYXRlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTYsIChjaGFyICopICJFbmhhbmNlbWVudCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE3LCAoY2hhciAqKSAiQ29sb3JGaWx0ZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOCwgKGNoYXIgKikgIkFGUG9pbnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOSwgKGNoYXIgKikgIkZsYXNoSW50ZW5zaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBFMDAsIChjaGFyICopICJQcmludElNIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpDYXNpbyB0eXBlIDIgbWFrZXIgbm90ZQoqLwpzdGF0aWMgVGFnSW5mbwogIGV4aWZfY2FzaW9fdHlwZTJfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIlByZXZpZXdJbWFnZVNpemUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMywgKGNoYXIgKikgIlByZXZpZXdJbWFnZUxlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA0LCAoY2hhciAqKSAiUHJldmlld0ltYWdlU3RhcnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwOCwgKGNoYXIgKikgIlF1YWxpdHlNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDksIChjaGFyICopICJDYXNpb0ltYWdlU2l6ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBELCAoY2hhciAqKSAiRm9jdXNNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTQsIChjaGFyICopICJJU08iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOSwgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFELCAoY2hhciAqKSAiRm9jYWxMZW5ndGgiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRiwgKGNoYXIgKikgIlNhdHVyYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyMCwgKGNoYXIgKikgIkNvbnRyYXN0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMjEsIChjaGFyICopICJTaGFycG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwMCwgKGNoYXIgKikgIlByaW50SU0iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAwMCwgKGNoYXIgKikgIlByZXZpZXdJbWFnZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgyMDAxLCAoY2hhciAqKSAiRmlybXdhcmVEYXRlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMTEsIChjaGFyICopICJXaGl0ZUJhbGFuY2VCaWFzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMTIsIChjaGFyICopICJXaGl0ZUJhbGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAyMSwgKGNoYXIgKikgIkFGUG9pbnRQb3NpdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgyMDIyLCAoY2hhciAqKSAiT2JqZWN0RGlzdGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAzNCwgKGNoYXIgKikgIkZsYXNoRGlzdGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MjA3NiwgKGNoYXIgKikgIlNwZWNpYWxFZmZlY3RNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMDAsIChjaGFyICopICJSZWNvcmRNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMDEsIChjaGFyICopICJSZWxlYXNlTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDAyLCAoY2hhciAqKSAiUXVhbGl0eSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDAzLCAoY2hhciAqKSAiRm9jdXNNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMDYsIChjaGFyICopICJIb21ldG93bkNpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MzAwNywgKGNoYXIgKikgIkJlc3RTaG90TW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDA4LCAoY2hhciAqKSAiQXV0b0lTTyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDA5LCAoY2hhciAqKSAiQUZNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMTEsIChjaGFyICopICJTaGFycG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MzAxMiwgKGNoYXIgKikgIkNvbnRyYXN0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMTMsIChjaGFyICopICJTYXR1cmF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMTQsIChjaGFyICopICJJU08iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MzAxNSwgKGNoYXIgKikgIkNvbG9yTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDE2LCAoY2hhciAqKSAiRW5oYW5jZW1lbnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MzAxNywgKGNoYXIgKikgIkNvbG9yRmlsdGVyIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDMwMUIsIChjaGFyICopICJBcnRNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMUMsIChjaGFyICopICJTZXF1ZW5jZU51bWJlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDFELCAoY2hhciAqKSAiQnJhY2tldFNlcXVlbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMjAsIChjaGFyICopICJJbWFnZVN0YWJpbGl6YXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MzAyQSwgKGNoYXIgKikgIkxpZ2h0aW5nTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgzMDJCLCAoY2hhciAqKSAiUG9ydHJhaXRSZWZpbmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMzAsIChjaGFyICopICJTcGVjaWFsRWZmZWN0TGV2ZWwiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MzAzMSwgKGNoYXIgKikgIlNwZWNpYWxFZmZlY3RTZXR0aW5nIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDMxMDMsIChjaGFyICopICJEcml2ZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4NDAwMSwgKGNoYXIgKikgIkNhcHR1cmVGcmFtZVJhdGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4NDAwMywgKGNoYXIgKikgIlZpZGVvUXVhbGl0eSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAwLCAoY2hhciAqKSBOVUxMLCAoY2hhciAqKSBOVUxMfQogIH07CgovKioKRnVqaUZpbG0gbWFrZXIgbm90ZQoqLwpzdGF0aWMgVGFnSW5mbwogIGV4aWZfZnVqaWZpbG1fdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgIlZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxMCwgKGNoYXIgKikgIkludGVybmFsU2VyaWFsTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMDAsIChjaGFyICopICJRdWFsaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMDEsIChjaGFyICopICJTaGFycG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAwMiwgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMDAzLCAoY2hhciAqKSAiU2F0dXJhdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMDA0LCAoY2hhciAqKSAiQ29udHJhc3QiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwNSwgKGNoYXIgKikgIkNvbG9yVGVtcGVyYXR1cmUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwQSwgKGNoYXIgKikgIldoaXRlQmFsYW5jZUZpbmVUdW5lIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMEIsIChjaGFyICopICJOb2lzZVJlZHVjdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMDEwLCAoY2hhciAqKSAiRnVqaUZsYXNoTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMDExLCAoY2hhciAqKSAiRmxhc2hFeHBvc3VyZUNvbXAiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAyMCwgKGNoYXIgKikgIk1hY3JvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMjEsIChjaGFyICopICJGb2N1c01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAyMywgKGNoYXIgKikgIkZvY3VzUGl4ZWwiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAzMCwgKGNoYXIgKikgIlNsb3dTeW5jIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMzEsIChjaGFyICopICJQaWN0dXJlTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDMzLCAoY2hhciAqKSAiRVhSQXV0byIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDM0LCAoY2hhciAqKSAiRVhSTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMTAwLCAoY2hhciAqKSAiQXV0b0JyYWNrZXR0aW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDExMDEsIChjaGFyICopICJTZXF1ZW5jZU51bWJlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMjEwLCAoY2hhciAqKSAiQ29sb3JNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEzMDAsIChjaGFyICopICJCbHVyV2FybmluZyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMzAxLCAoY2hhciAqKSAiRm9jdXNXYXJuaW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEzMDIsIChjaGFyICopICJFeHBvc3VyZVdhcm5pbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTQwMCwgKGNoYXIgKikgIkR5bmFtaWNSYW5nZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxNDAxLCAoY2hhciAqKSAiRmlsbU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTQwMiwgKGNoYXIgKikgIkR5bmFtaWNSYW5nZVNldHRpbmciLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTQwMywgKGNoYXIgKikgIkRldmVsb3BtZW50RHluYW1pY1JhbmdlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDE0MDQsIChjaGFyICopICJNaW5Gb2NhbExlbmd0aCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxNDA1LCAoY2hhciAqKSAiTWF4Rm9jYWxMZW5ndGgiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTQwNiwgKGNoYXIgKikgIk1heEFwZXJ0dXJlQXRNaW5Gb2NhbCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxNDA3LCAoY2hhciAqKSAiTWF4QXBlcnR1cmVBdE1heEZvY2FsIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDQxMDAsIChjaGFyICopICJGYWNlc0RldGVjdGVkIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDQxMDMsIChjaGFyICopICJGYWNlUG9zaXRpb25zIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDgwMDAsIChjaGFyICopICJGaWxlU291cmNlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDgwMDIsIChjaGFyICopICJPcmRlck51bWJlciIsIChjaGFyICopIE5VTEx9LAoJeyAgMHg4MDAzLCAoY2hhciAqKSAiRnJhbWVOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4QjIxMSwgKGNoYXIgKikgIlBhcmFsbGF4IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpLeW9jZXJhIG1ha2VyIG5vdGUKKi8Kc3RhdGljIFRhZ0luZm8KICBleGlmX2t5b2NlcmFfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIlRodW1ibmFpbEltYWdlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBFMDAsIChjaGFyICopICJQcmludElNIiwgKGNoYXIgKikgIlByaW50IEltYWdlIE1hdGNoaW5nIEluZm8ifSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLyoqCk9seW1wdXMgVHlwZSAxIC8gRXBzb24gLyBBZ2ZhIG1ha2VyIG5vdGUKKi8Kc3RhdGljIFRhZ0luZm8KICBleGlmX29seW1wdXNfdHlwZTFfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgIk1ha2VyTm90ZVZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIk1pbm9sdGFDYW1lcmFTZXR0aW5nc09sZCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAzLCAoY2hhciAqKSAiTWlub2x0YUNhbWVyYVNldHRpbmdzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwNDAsIChjaGFyICopICJDb21wcmVzc2VkSW1hZ2VTaXplIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwODEsIChjaGFyICopICJQcmV2aWV3SW1hZ2VEYXRhIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwODgsIChjaGFyICopICJQcmV2aWV3SW1hZ2VTdGFydCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDg5LCAoY2hhciAqKSAiUHJldmlld0ltYWdlTGVuZ3RoIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMDAsIChjaGFyICopICJUaHVtYm5haWxJbWFnZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTA0LCAoY2hhciAqKSAiQm9keUZpcm13YXJlVmVyc2lvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMjAwLCAoY2hhciAqKSAiU3BlY2lhbE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwMSwgKGNoYXIgKikgIlF1YWxpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwMiwgKGNoYXIgKikgIk1hY3JvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDMsIChjaGFyICopICJCV01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwNCwgKGNoYXIgKikgIkRpZ2l0YWxab29tIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDUsIChjaGFyICopICJGb2NhbFBsYW5lRGlhZ29uYWwiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDIwNiwgKGNoYXIgKikgIkxlbnNEaXN0b3J0aW9uUGFyYW1zIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDcsIChjaGFyICopICJDYW1lcmFUeXBlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDgsIChjaGFyICopICJUZXh0SW5mbyIsIChjaGFyICopICJPbHltcHVzIFRleHRJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDIwOSwgKGNoYXIgKikgIkNhbWVyYUlEIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMEIsIChjaGFyICopICJFcHNvbkltYWdlV2lkdGgiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwQywgKGNoYXIgKikgIkVwc29uSW1hZ2VIZWlnaHQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwRCwgKGNoYXIgKikgIkVwc29uU29mdHdhcmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDI4MCwgKGNoYXIgKikgIlByZXZpZXdJbWFnZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMzAwLCAoY2hhciAqKSAiUHJlQ2FwdHVyZUZyYW1lcyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMzAxLCAoY2hhciAqKSAiV2hpdGVCb2FyZCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMzAyLCAoY2hhciAqKSAiT25lVG91Y2hXQiIsIChjaGFyICopIE5VTEx9LCAKCXsgIDB4MDMwMywgKGNoYXIgKikgIldoaXRlQmFsYW5jZUJyYWNrZXQiLCAoY2hhciAqKSBOVUxMfSwgCgl7ICAweDAzMDQsIChjaGFyICopICJXaGl0ZUJhbGFuY2VCaWFzIiwgKGNoYXIgKikgTlVMTH0sIAoJeyAgMHgwNDAzLCAoY2hhciAqKSAiU2NlbmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sIAogICAgeyAgMHgwNDA0LCAoY2hhciAqKSAiU2VyaWFsTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sIAoJeyAgMHgwNDA1LCAoY2hhciAqKSAiRmlybXdhcmUiLCAoY2hhciAqKSBOVUxMfSwgCiAgICB7ICAweDBFMDAsIChjaGFyICopICJQcmludElNIiwgKGNoYXIgKikgIlByaW50SU0gVGFncyJ9LCAKCXsgIDB4MEYwMCwgKGNoYXIgKikgIkRhdGFEdW1wIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDBGMDEsIChjaGFyICopICJEYXRhRHVtcDIiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwMCwgKGNoYXIgKikgIlNodXR0ZXJTcGVlZFZhbHVlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMDEsIChjaGFyICopICJJU09WYWx1ZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDAyLCAoY2hhciAqKSAiQXBlcnR1cmVWYWx1ZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDAzLCAoY2hhciAqKSAiQnJpZ2h0bmVzc1ZhbHVlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMDQsIChjaGFyICopICJGbGFzaE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwNSwgKGNoYXIgKikgIkZsYXNoRGV2aWNlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMDYsIChjaGFyICopICJFeHBvc3VyZUNvbXBlbnNhdGlvbiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDA3LCAoY2hhciAqKSAiU2Vuc29yVGVtcGVyYXR1cmUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwOCwgKGNoYXIgKikgIkxlbnNUZW1wZXJhdHVyZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDA5LCAoY2hhciAqKSAiTGlnaHRDb25kaXRpb24iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwQSwgKGNoYXIgKikgIkZvY3VzUmFuZ2UiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwQiwgKGNoYXIgKikgIkZvY3VzTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDBDLCAoY2hhciAqKSAiTWFudWFsRm9jdXNEaXN0YW5jZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDBELCAoY2hhciAqKSAiWm9vbVN0ZXBDb3VudCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDBFLCAoY2hhciAqKSAiRm9jdXNTdGVwQ291bnQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAwRiwgKGNoYXIgKikgIlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDEwLCAoY2hhciAqKSAiRmxhc2hDaGFyZ2VMZXZlbCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDExLCAoY2hhciAqKSAiQ29sb3JNYXRyaXgiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAxMiwgKGNoYXIgKikgIkJsYWNrTGV2ZWwiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAxNSwgKGNoYXIgKikgIldCTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDE3LCAoY2hhciAqKSAiUmVkQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDE4LCAoY2hhciAqKSAiQmx1ZUJhbGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAxOSwgKGNoYXIgKikgIkNvbG9yTWF0cml4TnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMUEsIChjaGFyICopICJTZXJpYWxOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyMywgKGNoYXIgKikgIkZsYXNoRXhwb3N1cmVDb21wIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMjQsIChjaGFyICopICJJbnRlcm5hbEZsYXNoVGFibGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyNSwgKGNoYXIgKikgIkV4dGVybmFsRmxhc2hHVmFsdWUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyNiwgKGNoYXIgKikgIkV4dGVybmFsRmxhc2hCb3VuY2UiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyNywgKGNoYXIgKikgIkV4dGVybmFsRmxhc2hab29tIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMjgsIChjaGFyICopICJFeHRlcm5hbEZsYXNoTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDI5LCAoY2hhciAqKSAiQ29udHJhc3QiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyQSwgKGNoYXIgKikgIlNoYXJwbmVzc0ZhY3RvciIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDJCLCAoY2hhciAqKSAiQ29sb3JDb250cm9sIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMkMsIChjaGFyICopICJWYWxpZEJpdHMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyRCwgKGNoYXIgKikgIkNvcmluZ0ZpbHRlciIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDJFLCAoY2hhciAqKSAiT2x5bXB1c0ltYWdlV2lkdGgiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAyRiwgKGNoYXIgKikgIk9seW1wdXNJbWFnZUhlaWdodCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDMwLCAoY2hhciAqKSAiU2NlbmVEZXRlY3QiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzMSwgKGNoYXIgKikgIlNjZW5lQXJlYT8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzMywgKGNoYXIgKikgIlNjZW5lRGV0ZWN0RGF0YT8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzNCwgKGNoYXIgKikgIkNvbXByZXNzaW9uUmF0aW8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzNSwgKGNoYXIgKikgIlByZXZpZXdJbWFnZVZhbGlkIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMzYsIChjaGFyICopICJQcmV2aWV3SW1hZ2VTdGFydCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDM3LCAoY2hhciAqKSAiUHJldmlld0ltYWdlTGVuZ3RoIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwMzgsIChjaGFyICopICJBRlJlc3VsdCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgxMDM5LCAoY2hhciAqKSAiQ0NEU2Nhbk1vZGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzQSwgKGNoYXIgKikgIk5vaXNlUmVkdWN0aW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwM0IsIChjaGFyICopICJJbmZpbml0eUxlbnNTdGVwIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDEwM0MsIChjaGFyICopICJOZWFyTGVuc1N0ZXAiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzRCwgKGNoYXIgKikgIkxpZ2h0VmFsdWVDZW50ZXIiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MTAzRSwgKGNoYXIgKikgIkxpZ2h0VmFsdWVQZXJpcGhlcnkiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MjAxMCwgKGNoYXIgKikgIkVxdWlwbWVudCIsIChjaGFyICopICJPbHltcHVzIEVxdWlwbWVudCBUYWdzIn0sCgl7ICAweDIwMjAsIChjaGFyICopICJDYW1lcmFTZXR0aW5ncyIsIChjaGFyICopICJPbHltcHVzIENhbWVyYVNldHRpbmdzIFRhZ3MifSwKCXsgIDB4MjAzMCwgKGNoYXIgKikgIlJhd0RldmVsb3BtZW50IiwgKGNoYXIgKikgIk9seW1wdXMgUmF3RGV2ZWxvcG1lbnQgVGFncyJ9LAoJeyAgMHgyMDQwLCAoY2hhciAqKSAiSW1hZ2VQcm9jZXNzaW5nIiwgKGNoYXIgKikgIk9seW1wdXMgSW1hZ2VQcm9jZXNzaW5nIFRhZ3MifSwKCXsgIDB4MjA1MCwgKGNoYXIgKikgIkZvY3VzSW5mbyIsIChjaGFyICopICJPbHltcHVzIEZvY3VzSW5mbyBUYWdzIn0sCgl7ICAweDIxMDAsIChjaGFyICopICJPbHltcHVzMjEwMCIsIChjaGFyICopICJPbHltcHVzIEZFIFRhZ3MifSwKCXsgIDB4MjIwMCwgKGNoYXIgKikgIk9seW1wdXMyMjAwIiwgKGNoYXIgKikgIk9seW1wdXMgRkUgVGFncyJ9LAoJeyAgMHgyMzAwLCAoY2hhciAqKSAiT2x5bXB1czIzMDAiLCAoY2hhciAqKSAiT2x5bXB1cyBGRSBUYWdzIn0sCgl7ICAweDI0MDAsIChjaGFyICopICJPbHltcHVzMjQwMCIsIChjaGFyICopICJPbHltcHVzIEZFIFRhZ3MifSwKCXsgIDB4MjUwMCwgKGNoYXIgKikgIk9seW1wdXMyNTAwIiwgKGNoYXIgKikgIk9seW1wdXMgRkUgVGFncyJ9LAoJeyAgMHgyNjAwLCAoY2hhciAqKSAiT2x5bXB1czI2MDAiLCAoY2hhciAqKSAiT2x5bXB1cyBGRSBUYWdzIn0sCgl7ICAweDI3MDAsIChjaGFyICopICJPbHltcHVzMjcwMCIsIChjaGFyICopICJPbHltcHVzIEZFIFRhZ3MifSwKCXsgIDB4MjgwMCwgKGNoYXIgKikgIk9seW1wdXMyODAwIiwgKGNoYXIgKikgIk9seW1wdXMgRkUgVGFncyJ9LAoJeyAgMHgyOTAwLCAoY2hhciAqKSAiT2x5bXB1czI5MDAiLCAoY2hhciAqKSAiT2x5bXB1cyBGRSBUYWdzIn0sCgl7ICAweDMwMDAsIChjaGFyICopICJSYXdJbmZvIiwgKGNoYXIgKikgIk9seW1wdXMgUmF3SW5mbyBUYWdzIn0sCgl7ICAweDQwMDAsIChjaGFyICopICJNYWluSW5mbyIsIChjaGFyICopICJPbHltcHVzIE1haW5JbmZvIFRhZ3MifSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLyoqCk1pbm9sdGEgbWFrZXIgbm90ZQoqLwpzdGF0aWMgVGFnSW5mbwogIGV4aWZfbWlub2x0YV90YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHgwMDAwLCAoY2hhciAqKSAiTWFrZXJOb3RlVmVyc2lvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAxLCAoY2hhciAqKSAiTWlub2x0YUNhbWVyYVNldHRpbmdzT2xkIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDMsIChjaGFyICopICJNaW5vbHRhQ2FtZXJhU2V0dGluZ3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNCwgKGNoYXIgKikgIk1pbm9sdGFDYW1lcmFTZXR0aW5nczdEIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTgsIChjaGFyICopICJJbWFnZVN0YWJpbGl6YXRpb24iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA0MCwgKGNoYXIgKikgIkNvbXByZXNzZWRJbWFnZVNpemUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4MSwgKGNoYXIgKikgIlByZXZpZXdJbWFnZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDg4LCAoY2hhciAqKSAiUHJldmlld0ltYWdlU3RhcnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4OSwgKGNoYXIgKikgIlByZXZpZXdJbWFnZUxlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTAwLCAoY2hhciAqKSAiU2NlbmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMDEsIChjaGFyICopICJDb2xvck1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDEwMiwgKGNoYXIgKikgIk1pbm9sdGFRdWFsaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMDMsIChjaGFyICopICJNaW5vbHRhSW1hZ2VTaXplIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMDQsIChjaGFyICopICJGbGFzaEV4cG9zdXJlQ29tcCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTA1LCAoY2hhciAqKSAiVGVsZWNvbnZlcnRlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTA3LCAoY2hhciAqKSAiSW1hZ2VTdGFiaWxpemF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMDksIChjaGFyICopICJSYXdBbmRKcGdSZWNvcmRpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDEwQSwgKGNoYXIgKikgIlpvbmVNYXRjaGluZyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTBCLCAoY2hhciAqKSAiQ29sb3JUZW1wZXJhdHVyZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTBDLCAoY2hhciAqKSAiTGVuc1R5cGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDExMSwgKGNoYXIgKikgIkNvbG9yQ29tcGVuc2F0aW9uRmlsdGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMTIsIChjaGFyICopICJXaGl0ZUJhbGFuY2VGaW5lVHVuZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTEzLCAoY2hhciAqKSAiSW1hZ2VTdGFiaWxpemF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMTQsIChjaGFyICopICJNaW5vbHRhQ2FtZXJhU2V0dGluZ3M1RCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTE1LCAoY2hhciAqKSAiV2hpdGVCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBFMDAsIChjaGFyICopICJQcmludElNIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBGMDAsIChjaGFyICopICJNaW5vbHRhQ2FtZXJhU2V0dGluZ3MyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpUaGVyZSBhcmUgMyBmb3JtYXRzIG9mIE5pa29uJ3MgTWFrZXJOb3RlLiBNYWtlck5vdGUgb2YgRTcwMC9FODAwL0U5MDAvRTkwMFMvRTkxMC9FOTUwCnN0YXJ0cyBmcm9tIEFTQ0lJIHN0cmluZyAiTmlrb24iLiBEYXRhIGZvcm1hdCBpcyB0aGUgc2FtZSBhcyBJRkQsIGJ1dCBpdCBzdGFydHMgZnJvbQpvZmZzZXQgMHgwOC4gVGhpcyBpcyB0aGUgc2FtZSBhcyBPbHltcHVzIGV4Y2VwdCBzdGFydCBzdHJpbmcuIAoqLwoKLyoqClRZUEUgMSBpcyBmb3IgRS1TZXJpZXMgY2FtZXJhcyBwcmlvciB0byAobm90IGluY2x1ZGluZykgRTk5MAoqLwpzdGF0aWMgVGFnSW5mbwogIGV4aWZfbmlrb25fdHlwZTFfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIkZhbWlseUlEIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDMsIChjaGFyICopICJRdWFsaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDQsIChjaGFyICopICJDb2xvck1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNSwgKGNoYXIgKikgIkltYWdlQWRqdXN0bWVudCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA2LCAoY2hhciAqKSAiQ0NEU2Vuc2l0aXZpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNywgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA4LCAoY2hhciAqKSAiRm9jdXMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQSwgKGNoYXIgKikgIkRpZ2l0YWxab29tIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEIsIChjaGFyICopICJGaXNoZXllQ29udmVydGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpOaWtvbiB0eXBlIDIgbWFrZXIgbm90ZQoqLwpzdGF0aWMgVGFnSW5mbwogIGV4aWZfbmlrb25fdHlwZTJfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIk1ha2VyTm90ZVZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIklTTyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAzLCAoY2hhciAqKSAiQ29sb3JNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDQsIChjaGFyICopICJRdWFsaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDUsIChjaGFyICopICJXaGl0ZUJhbGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNiwgKGNoYXIgKikgIlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA3LCAoY2hhciAqKSAiRm9jdXNNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDgsIChjaGFyICopICJGbGFzaFNldHRpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwOSwgKGNoYXIgKikgIkZsYXNoVHlwZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBCLCAoY2hhciAqKSAiV2hpdGVCYWxhbmNlRmluZVR1bmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRiwgKGNoYXIgKikgIklTT1NlbGVjdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDEwLCAoY2hhciAqKSAiRGF0YUR1bXAiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4MCwgKGNoYXIgKikgIkltYWdlQWRqdXN0bWVudCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDgyLCAoY2hhciAqKSAiQXV4aWxpYXJ5TGVucyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDg1LCAoY2hhciAqKSAiTWFudWFsRm9jdXNEaXN0YW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDg2LCAoY2hhciAqKSAiRGlnaXRhbFpvb20iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4OCwgKGNoYXIgKikgIkFGSW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDg5LCAoY2hhciAqKSAiU2hvb3RpbmdNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwOEQsIChjaGFyICopICJDb2xvck1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4RiwgKGNoYXIgKikgIlNjZW5lTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDkyLCAoY2hhciAqKSAiSHVlQWRqdXN0bWVudCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDk0LCAoY2hhciAqKSAiU2F0dXJhdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDk1LCAoY2hhciAqKSAiTm9pc2VSZWR1Y3Rpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwMCwgKGNoYXIgKikgIlByaW50SU0iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLyoqClRoZSB0eXBlLTMgZGlyZWN0b3J5IGlzIGZvciBELVNlcmllcyBjYW1lcmFzIHN1Y2ggYXMgdGhlIEQxIGFuZCBEMTAwLgpzZWUgaHR0cDovL3d3dy50aW1lbGVzc3dhbmRlcmluZ3MubmV0L2VxdWlwbWVudC9EMTAwL05FRi5odG1sCiovCnN0YXRpYyBUYWdJbmZvCiAgZXhpZl9uaWtvbl90eXBlM190YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHgwMDAxLCAoY2hhciAqKSAiTWFrZXJOb3RlVmVyc2lvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAyLCAoY2hhciAqKSAiSVNPIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDMsIChjaGFyICopICJDb2xvck1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNCwgKGNoYXIgKikgIlF1YWxpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNSwgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA2LCAoY2hhciAqKSAiU2hhcnBuZXNzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDcsIChjaGFyICopICJGb2N1c01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwOCwgKGNoYXIgKikgIkZsYXNoU2V0dGluZyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA5LCAoY2hhciAqKSAiRmxhc2hUeXBlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEIsIChjaGFyICopICJXaGl0ZUJhbGFuY2VGaW5lVHVuZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBDLCAoY2hhciAqKSAiV0JfUkJMZXZlbHMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRCwgKGNoYXIgKikgIlByb2dyYW1TaGlmdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBFLCAoY2hhciAqKSAiRXhwb3N1cmVEaWZmZXJlbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEYsIChjaGFyICopICJJU09TZWxlY3Rpb24iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAxMCwgKGNoYXIgKikgIkRhdGFEdW1wIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTEsIChjaGFyICopICJQcmV2aWV3SUZEIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTIsIChjaGFyICopICJGbGFzaEV4cG9zdXJlQ29tcCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDEzLCAoY2hhciAqKSAiSVNPU2V0dGluZyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDE0LCAoY2hhciAqKSAiQ29sb3JCYWxhbmNlQSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE2LCAoY2hhciAqKSAiSW1hZ2VCb3VuZGFyeSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDE3LCAoY2hhciAqKSAiRmxhc2hFeHBvc3VyZUNvbXAiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOCwgKGNoYXIgKikgIkZsYXNoRXhwb3N1cmVCcmFja2V0VmFsdWUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOSwgKGNoYXIgKikgIkV4cG9zdXJlQnJhY2tldFZhbHVlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUEsIChjaGFyICopICJJbWFnZVByb2Nlc3NpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxQiwgKGNoYXIgKikgIkNyb3BIaVNwZWVkIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMUMsIChjaGFyICopICJFeHBvc3VyZVR1bmluZyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFELCAoY2hhciAqKSAiU2VyaWFsTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUUsIChjaGFyICopICJDb2xvclNwYWNlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMUYsIChjaGFyICopICJWUkluZm8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAyMCwgKGNoYXIgKikgIkltYWdlQXV0aGVudGljYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAyMiwgKGNoYXIgKikgIkFjdGl2ZUQtTGlnaHRpbmciLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAyMywgKGNoYXIgKikgIlBpY3R1cmVDb250cm9sIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMjQsIChjaGFyICopICJXb3JsZFRpbWUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAyNSwgKGNoYXIgKikgIklTT0luZm8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAyQSwgKGNoYXIgKikgIlZpZ25ldHRlQ29udHJvbCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDJCLCAoY2hhciAqKSAiRGlzdG9ydEluZm8iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA4MCwgKGNoYXIgKikgIkltYWdlQWRqdXN0bWVudCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDgxLCAoY2hhciAqKSAiVG9uZUNvbXAiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA4MiwgKGNoYXIgKikgIkF1eGlsaWFyeUxlbnMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA4MywgKGNoYXIgKikgIkxlbnNUeXBlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwODQsIChjaGFyICopICJMZW5zIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwODUsIChjaGFyICopICJNYW51YWxGb2N1c0Rpc3RhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwODYsIChjaGFyICopICJEaWdpdGFsWm9vbSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDg3LCAoY2hhciAqKSAiRmxhc2hNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwODgsIChjaGFyICopICJBRkluZm8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4OSwgKGNoYXIgKikgIlNob290aW5nTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDhCLCAoY2hhciAqKSAiTGVuc0ZTdG9wcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDhDLCAoY2hhciAqKSAiQ29udHJhc3RDdXJ2ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDhELCAoY2hhciAqKSAiQ29sb3JIdWUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA4RiwgKGNoYXIgKikgIlNjZW5lTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDkwLCAoY2hhciAqKSAiTGlnaHRTb3VyY2UiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA5MSwgKGNoYXIgKikgIlNob3RJbmZvIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwOTIsIChjaGFyICopICJIdWVBZGp1c3RtZW50IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwOTMsIChjaGFyICopICJORUZDb21wcmVzc2lvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDk0LCAoY2hhciAqKSAiU2F0dXJhdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDk1LCAoY2hhciAqKSAiTm9pc2VSZWR1Y3Rpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA5NiwgKGNoYXIgKikgIkxpbmVhcml6YXRpb25UYWJsZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDk3LCAoY2hhciAqKSAiQ29sb3JCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwOTgsIChjaGFyICopICJMZW5zRGF0YSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDk5LCAoY2hhciAqKSAiUmF3SW1hZ2VDZW50ZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA5QSwgKGNoYXIgKikgIlNlbnNvclBpeGVsU2l6ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDlDLCAoY2hhciAqKSAiU2NlbmVBc3Npc3QiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA5RSwgKGNoYXIgKikgIlJldG91Y2hIaXN0b3J5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQTAsIChjaGFyICopICJTZXJpYWxOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBMiwgKGNoYXIgKikgIkltYWdlRGF0YVNpemUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBNSwgKGNoYXIgKikgIkltYWdlQ291bnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBNiwgKGNoYXIgKikgIkRlbGV0ZWRJbWFnZUNvdW50IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQTcsIChjaGFyICopICJTaHV0dGVyQ291bnQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDBBOCwgKGNoYXIgKikgIkZsYXNoSW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEE5LCAoY2hhciAqKSAiSW1hZ2VPcHRpbWl6YXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBQSwgKGNoYXIgKikgIlNhdHVyYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBQiwgKGNoYXIgKikgIlZhcmlQcm9ncmFtIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQUMsIChjaGFyICopICJJbWFnZVN0YWJpbGl6YXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBBRCwgKGNoYXIgKikgIkFGUmVzcG9uc2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBCMCwgKGNoYXIgKikgIk11bHRpRXhwb3N1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBCMSwgKGNoYXIgKikgIkhpZ2hJU09Ob2lzZVJlZHVjdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEIzLCAoY2hhciAqKSAiVG9uaW5nRWZmZWN0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwQjYsIChjaGFyICopICJQb3dlclVwVGltZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEI3LCAoY2hhciAqKSAiQUZJbmZvMiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEI4LCAoY2hhciAqKSAiRmlsZUluZm8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDBCOSwgKGNoYXIgKikgIkFGVHVuZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMEJELCAoY2hhciAqKSAiUGljdHVyZUNvbnRyb2wiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwMCwgKGNoYXIgKikgIlByaW50SU0iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwMSwgKGNoYXIgKikgIk5pa29uQ2FwdHVyZURhdGEiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwOSwgKGNoYXIgKikgIk5pa29uQ2FwdHVyZVZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwRSwgKGNoYXIgKikgIk5pa29uQ2FwdHVyZU9mZnNldHMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUxMCwgKGNoYXIgKikgIk5pa29uU2NhbklGRCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwRTFELCAoY2hhciAqKSAiTmlrb25JQ0NQcm9maWxlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBFMUUsIChjaGFyICopICJOaWtvbkNhcHR1cmVPdXRwdXQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MEUyMiwgKGNoYXIgKikgIk5FRkJpdERlcHRoIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpQYW5hc29uaWMgLyBMZWljYSBtYWtlciBub3RlCiovCnN0YXRpYyBUYWdJbmZvCiAgZXhpZl9wYW5hc29uaWNfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIkltYWdlUXVhbGl0eSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAyLCAoY2hhciAqKSAiRmlybXdhcmVWZXJzaW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDMsIChjaGFyICopICJXaGl0ZUJhbGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNywgKGNoYXIgKikgIkZvY3VzTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBGLCAoY2hhciAqKSAiQUZBcmVhTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFBLCAoY2hhciAqKSAiSW1hZ2VTdGFiaWxpemF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUMsIChjaGFyICopICJNYWNyb01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRiwgKGNoYXIgKikgIlNob290aW5nTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDIwLCAoY2hhciAqKSAiQXVkaW8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyMSwgKGNoYXIgKikgIkRhdGFEdW1wIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMjIsIChjaGFyICopICJFYXN5TW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDIzLCAoY2hhciAqKSAiV2hpdGVCYWxhbmNlQmlhcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDI0LCAoY2hhciAqKSAiRmxhc2hCaWFzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMjUsIChjaGFyICopICJJbnRlcm5hbFNlcmlhbE51bWJlciIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDI2LCAoY2hhciAqKSAiUGFuYXNvbmljRXhpZlZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyOCwgKGNoYXIgKikgIkNvbG9yRWZmZWN0IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMjksIChjaGFyICopICJUaW1lU2luY2VQb3dlck9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMkEsIChjaGFyICopICJCdXJzdE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyQiwgKGNoYXIgKikgIlNlcXVlbmNlTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMkMsIChjaGFyICopICJDb250cmFzdE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyRCwgKGNoYXIgKikgIk5vaXNlUmVkdWN0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMkUsIChjaGFyICopICJTZWxmVGltZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzMCwgKGNoYXIgKikgIlJvdGF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMzEsIChjaGFyICopICJBRkFzc2lzdExhbXAiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzMiwgKGNoYXIgKikgIkNvbG9yTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDMzLCAoY2hhciAqKSAiQmFieUFnZV8weDAwMzMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAzNCwgKGNoYXIgKikgIk9wdGljYWxab29tTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDM1LCAoY2hhciAqKSAiQ29udmVyc2lvbkxlbnMiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAzNiwgKGNoYXIgKikgIlRyYXZlbERheSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDM5LCAoY2hhciAqKSAiQ29udHJhc3QiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDAzQSwgKGNoYXIgKikgIldvcmxkVGltZUxvY2F0aW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwM0IsIChjaGFyICopICJUZXh0U3RhbXBfMHgwMDNCIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwM0MsIChjaGFyICopICJQcm9ncmFtSVNPIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwM0QsIChjaGFyICopICJBZHZhbmNlZFNjZW5lTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDNFLCAoY2hhciAqKSAiVGV4dFN0YW1wXzB4MDAzRSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDNGLCAoY2hhciAqKSAiRmFjZXNEZXRlY3RlZCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDQwLCAoY2hhciAqKSAiU2F0dXJhdGlvbiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDQxLCAoY2hhciAqKSAiU2hhcnBuZXNzIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNDIsIChjaGFyICopICJGaWxtTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDQ2LCAoY2hhciAqKSAiV0JBZGp1c3RBQiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDQ3LCAoY2hhciAqKSAiV0JBZGp1c3RHTSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDRCLCAoY2hhciAqKSAiUGFuYXNvbmljSW1hZ2VXaWR0aCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDRDLCAoY2hhciAqKSAiUGFuYXNvbmljSW1hZ2VIZWlnaHQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA0RCwgKGNoYXIgKikgIkFGUG9pbnRQb3NpdGlvbiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDRFLCAoY2hhciAqKSAiRmFjZURldEluZm8iLCAoY2hhciAqKSAiUGFuYXNvbmljIEZhY2VEZXRJbmZvIFRhZ3MifSwKCXsgIDB4MDA1MSwgKGNoYXIgKikgIkxlbnNUeXBlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNTIsIChjaGFyICopICJMZW5zU2VyaWFsTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNTMsIChjaGFyICopICJBY2Nlc3NvcnlUeXBlIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNTksIChjaGFyICopICJUcmFuc2Zvcm0iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA1RCwgKGNoYXIgKikgIkludGVsbGlnZW50RXhwb3N1cmUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA2MSwgKGNoYXIgKikgIkZhY2VSZWNJbmZvIiwgKGNoYXIgKikgIlBhbmFzb25pYyBGYWNlUmVjSW5mbyBUYWdzIn0sCgl7ICAweDAwNjIsIChjaGFyICopICJGbGFzaFdhcm5pbmciLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA2MywgKGNoYXIgKikgIlJlY29nbml6ZWRGYWNlRmxhZ3M/IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNjUsIChjaGFyICopICJUaXRsZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDY2LCAoY2hhciAqKSAiQmFieU5hbWUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA2NywgKGNoYXIgKikgIkxvY2F0aW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNjksIChjaGFyICopICJDb3VudHJ5IiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNkIsIChjaGFyICopICJTdGF0ZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDZELCAoY2hhciAqKSAiQ2l0eSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDZGLCAoY2hhciAqKSAiTGFuZG1hcmsiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA3MCwgKGNoYXIgKikgIkludGVsbGlnZW50UmVzb2x1dGlvbiIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDc5LCAoY2hhciAqKSAiSW50ZWxsaWdlbnRELVJhbmdlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBFMDAsIChjaGFyICopICJQcmludElNIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDgwMDAsIChjaGFyICopICJNYWtlck5vdGVWZXJzaW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDgwMDEsIChjaGFyICopICJTY2VuZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4ODAwNCwgKGNoYXIgKikgIldCUmVkTGV2ZWwiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4ODAwNSwgKGNoYXIgKikgIldCR3JlZW5MZXZlbCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHg4MDA2LCAoY2hhciAqKSAiV0JCbHVlTGV2ZWwiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4ODAwNywgKGNoYXIgKikgIkZsYXNoRmlyZWQiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4ODAwOCwgKGNoYXIgKikgIlRleHRTdGFtcF8weDgwMDgiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4ODAwOSwgKGNoYXIgKikgIlRleHRTdGFtcF8weDgwMDkiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4ODAxMCwgKGNoYXIgKikgIkJhYnlBZ2VfMHg4MDEwIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDgwMTIsIChjaGFyICopICJUcmFuc2Zvcm0iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLyoqClBlbnRheCAoQXNhaGkpIG1ha2VyIG5vdGUgdHlwZSAxCiovCnN0YXRpYyBUYWdJbmZvCiAgZXhpZl9hc2FoaV90YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHgwMDAxLCAoY2hhciAqKSAiQ2FwdHVyZSBNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDIsIChjaGFyICopICJRdWFsaXR5IExldmVsIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDMsIChjaGFyICopICJGb2N1cyBNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDQsIChjaGFyICopICJGbGFzaCBNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDcsIChjaGFyICopICJXaGl0ZSBCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEEsIChjaGFyICopICJEaWdpdGFsIFpvb20iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQiwgKGNoYXIgKikgIlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBDLCAoY2hhciAqKSAiQ29udHJhc3QiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRCwgKGNoYXIgKikgIlNhdHVyYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNCwgKGNoYXIgKikgIklTTyBTcGVlZCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE3LCAoY2hhciAqKSAiQ29sb3IiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MEUwMCwgKGNoYXIgKikgIlByaW50SU0iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAwMCwgKGNoYXIgKikgIlRpbWUgWm9uZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMDAxLCAoY2hhciAqKSAiRGF5bGlnaHQgU2F2aW5ncyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAwLCAoY2hhciAqKSBOVUxMLCAoY2hhciAqKSBOVUxMfQogIH07CgovKioKUGVudGF4IG1ha2VyIG5vdGUgdHlwZSAyCiovCnN0YXRpYyBUYWdJbmZvCiAgZXhpZl9wZW50YXhfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgIlBlbnRheFZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMSwgKGNoYXIgKikgIlBlbnRheE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIlByZXZpZXdJbWFnZVNpemUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMywgKGNoYXIgKikgIlByZXZpZXdJbWFnZUxlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA0LCAoY2hhciAqKSAiUHJldmlld0ltYWdlU3RhcnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNSwgKGNoYXIgKikgIlBlbnRheE1vZGVsSUQiLCAoY2hhciAqKSAiUGVudGF4IFBlbnRheE1vZGVsSUQgVmFsdWVzIn0sCiAgICB7ICAweDAwMDYsIChjaGFyICopICJEYXRlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDcsIChjaGFyICopICJUaW1lIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDgsIChjaGFyICopICJRdWFsaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDksIChjaGFyICopICJQZW50YXhJbWFnZVNpemUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQiwgKGNoYXIgKikgIlBpY3R1cmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEMsIChjaGFyICopICJGbGFzaE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRCwgKGNoYXIgKikgIkZvY3VzTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBFLCAoY2hhciAqKSAiQUZQb2ludFNlbGVjdGVkIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEYsIChjaGFyICopICJBRlBvaW50c0luRm9jdXMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxMCwgKGNoYXIgKikgIkZvY3VzUG9zaXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxMiwgKGNoYXIgKikgIkV4cG9zdXJlVGltZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDEzLCAoY2hhciAqKSAiRk51bWJlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE0LCAoY2hhciAqKSAiSVNPIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwMTUsIChjaGFyICopICJMaWdodFJlYWRpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNiwgKGNoYXIgKikgIkV4cG9zdXJlQ29tcGVuc2F0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTcsIChjaGFyICopICJNZXRlcmluZ01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOCwgKGNoYXIgKikgIkF1dG9CcmFja2V0aW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTksIChjaGFyICopICJXaGl0ZUJhbGFuY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxQSwgKGNoYXIgKikgIldoaXRlQmFsYW5jZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxQiwgKGNoYXIgKikgIkJsdWVCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUMsIChjaGFyICopICJSZWRCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUQsIChjaGFyICopICJGb2NhbExlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFFLCAoY2hhciAqKSAiRGlnaXRhbFpvb20iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRiwgKGNoYXIgKikgIlNhdHVyYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyMCwgKGNoYXIgKikgIkNvbnRyYXN0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMjEsIChjaGFyICopICJTaGFycG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyMiwgKGNoYXIgKikgIldvcmxkVGltZUxvY2F0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMjMsIChjaGFyICopICJIb21ldG93bkNpdHkiLCAoY2hhciAqKSAiUGVudGF4IENpdHkgVmFsdWVzIn0sCiAgICB7ICAweDAwMjQsIChjaGFyICopICJEZXN0aW5hdGlvbkNpdHkiLCAoY2hhciAqKSAiUGVudGF4IENpdHkgVmFsdWVzIn0sCiAgICB7ICAweDAwMjUsIChjaGFyICopICJIb21ldG93bkRTVCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDI2LCAoY2hhciAqKSAiRGVzdGluYXRpb25EU1QiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyNywgKGNoYXIgKikgIkRTUEZpcm13YXJlVmVyc2lvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDI4LCAoY2hhciAqKSAiQ1BVRmlybXdhcmVWZXJzaW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMjksIChjaGFyICopICJGcmFtZU51bWJlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDJELCAoY2hhciAqKSAiRWZmZWN0aXZlTFYiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzMiwgKGNoYXIgKikgIkltYWdlUHJvY2Vzc2luZyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDMzLCAoY2hhciAqKSAiUGljdHVyZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzNCwgKGNoYXIgKikgIkRyaXZlTW9kZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDM1LCAoY2hhciAqKSAiU2Vuc29yU2l6ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDM3LCAoY2hhciAqKSAiQ29sb3JTcGFjZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDM5LCAoY2hhciAqKSAiUmF3SW1hZ2VTaXplIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwM0MsIChjaGFyICopICJBRlBvaW50c0luRm9jdXMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzRSwgKGNoYXIgKikgIlByZXZpZXdJbWFnZUJvcmRlcnMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzRiwgKGNoYXIgKikgIkxlbnNUeXBlIiwgKGNoYXIgKikgIlBlbnRheCBMZW5zVHlwZSBWYWx1ZXMifSwKICAgIHsgIDB4MDA0MCwgKGNoYXIgKikgIlNlbnNpdGl2aXR5QWRqdXN0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwNDEsIChjaGFyICopICJJbWFnZVByb2Nlc3NpbmdDb3VudCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDQ3LCAoY2hhciAqKSAiQ2FtZXJhVGVtcGVyYXR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA0OCwgKGNoYXIgKikgIkFFTG9jayIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDQ5LCAoY2hhciAqKSAiTm9pc2VSZWR1Y3Rpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA0RCwgKGNoYXIgKikgIkZsYXNoRXhwb3N1cmVDb21wIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwNEYsIChjaGFyICopICJJbWFnZVRvbmUiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA1MCwgKGNoYXIgKikgIkNvbG9yVGVtcGVyYXR1cmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA1QywgKGNoYXIgKikgIlNoYWtlUmVkdWN0aW9uSW5mbyIsIChjaGFyICopICJQZW50YXggU1JJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDA1RCwgKGNoYXIgKikgIlNodXR0ZXJDb3VudCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDYwLCAoY2hhciAqKSAiRmFjZUluZm8iLCAoY2hhciAqKSAiUGVudGF4IEZhY2VJbmZvIFRhZ3MifSwKCXsgIDB4MDA2NywgKGNoYXIgKikgIkh1ZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDY4LCAoY2hhciAqKSAiQVdCSW5mbyIsIChjaGFyICopICJQZW50YXggQVdCSW5mbyBUYWdzIn0sCiAgICB7ICAweDAwNjksIChjaGFyICopICJEeW5hbWljUmFuZ2VFeHBhbnNpb24iLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA2QiwgKGNoYXIgKikgIlRpbWVJbmZvIiwgKGNoYXIgKikgIlBlbnRheCBUaW1lSW5mbyBUYWdzIn0sCgl7ICAweDAwNkMsIChjaGFyICopICJIaWdoTG93S2V5QWRqIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNkQsIChjaGFyICopICJDb250cmFzdEhpZ2hsaWdodCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDZFLCAoY2hhciAqKSAiQ29udHJhc3RTaGFkb3ciLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDA2RiwgKGNoYXIgKikgIkNvbnRyYXN0SGlnaGxpZ2h0U2hhZG93QWRqIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwNzAsIChjaGFyICopICJGaW5lU2hhcnBuZXNzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwNzEsIChjaGFyICopICJIaWdoSVNPTm9pc2VSZWR1Y3Rpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA3MiwgKGNoYXIgKikgIkFGQWRqdXN0bWVudCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDczLCAoY2hhciAqKSAiTW9ub2Nocm9tZUZpbHRlckVmZmVjdCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDc0LCAoY2hhciAqKSAiTW9ub2Nocm9tZVRvbmluZyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDc2LCAoY2hhciAqKSAiRmFjZURldGVjdCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDc3LCAoY2hhciAqKSAiRmFjZURldGVjdEZyYW1lU2l6ZSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDc5LCAoY2hhciAqKSAiU2hhZG93Q29tcGVuc2F0aW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwN0EsIChjaGFyICopICJJU09BdXRvUGFyYW1ldGVycyIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMDdCLCAoY2hhciAqKSAiQ3Jvc3NQcm9jZXNzIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAwN0QsIChjaGFyICopICJMZW5zQ29yciIsIChjaGFyICopICJQZW50YXggTGVuc0NvcnIgVGFncyJ9LAoJeyAgMHgwMDdGLCAoY2hhciAqKSAiQmxlYWNoQnlwYXNzVG9uaW5nIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDAsIChjaGFyICopICJCbGFja1BvaW50IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDEsIChjaGFyICopICJXaGl0ZVBvaW50IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMDMsIChjaGFyICopICJDb2xvck1hdHJpeEEiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwNCwgKGNoYXIgKikgIkNvbG9yTWF0cml4QiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMjA1LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3MiLCAoY2hhciAqKSAiUGVudGF4IENhbWVyYVNldHRpbmdzIFRhZ3MifSwKCXsgIDB4MDIwNiwgKGNoYXIgKikgIkFFSW5mbyIsIChjaGFyICopICJQZW50YXggQUVJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDIwNywgKGNoYXIgKikgIkxlbnNJbmZvIiwgKGNoYXIgKikgIlBlbnRheCBMZW5zSW5mbyBUYWdzIn0sCiAgICB7ICAweDAyMDgsIChjaGFyICopICJGbGFzaEluZm8iLCAoY2hhciAqKSAiUGVudGF4IEZsYXNoSW5mbyBUYWdzIn0sCiAgICB7ICAweDAyMDksIChjaGFyICopICJBRU1ldGVyaW5nU2VnbWVudHMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwQSwgKGNoYXIgKikgIkZsYXNoTWV0ZXJpbmdTZWdtZW50cyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMjBCLCAoY2hhciAqKSAiU2xhdmVGbGFzaE1ldGVyaW5nU2VnbWVudHMiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIwRCwgKGNoYXIgKikgIldCX1JHR0JMZXZlbHNEYXlsaWdodCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMjBFLCAoY2hhciAqKSAiV0JfUkdHQkxldmVsc1NoYWRlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMEYsIChjaGFyICopICJXQl9SR0dCTGV2ZWxzQ2xvdWR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAyMTAsIChjaGFyICopICJXQl9SR0dCTGV2ZWxzVHVuZ3N0ZW4iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIxMSwgKGNoYXIgKikgIldCX1JHR0JMZXZlbHNGbHVvcmVzY2VudEQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIxMiwgKGNoYXIgKikgIldCX1JHR0JMZXZlbHNGbHVvcmVzY2VudE4iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIxMywgKGNoYXIgKikgIldCX1JHR0JMZXZlbHNGbHVvcmVzY2VudFciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIxNCwgKGNoYXIgKikgIldCX1JHR0JMZXZlbHNGbGFzaCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMjE1LCAoY2hhciAqKSAiQ2FtZXJhSW5mbyIsIChjaGFyICopICJQZW50YXggQ2FtZXJhSW5mbyBUYWdzIn0sCiAgICB7ICAweDAyMTYsIChjaGFyICopICJCYXR0ZXJ5SW5mbyIsIChjaGFyICopICJQZW50YXggQmF0dGVyeUluZm8gVGFncyJ9LAogICAgeyAgMHgwMjFCLCAoY2hhciAqKSAiU2F0dXJhdGlvbkluZm8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDIxRiwgKGNoYXIgKikgIkFGSW5mbyIsIChjaGFyICopICJQZW50YXggQUZJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDIyMiwgKGNoYXIgKikgIkNvbG9ySW5mbyIsIChjaGFyICopICJQZW50YXggQ29sb3JJbmZvIFRhZ3MifSwKICAgIHsgIDB4MDIyNCwgKGNoYXIgKikgIkVWU3RlcEluZm8iLCAoY2hhciAqKSAiUGVudGF4IEVWU3RlcEluZm8gVGFncyJ9LAoJeyAgMHgwMjI2LCAoY2hhciAqKSAiU2hvdEluZm8iLCAoY2hhciAqKSAiUGVudGF4IFNob3RJbmZvIFRhZ3MifSwKCXsgIDB4MDIyNywgKGNoYXIgKikgIkZhY2VQb3MiLCAoY2hhciAqKSAiUGVudGF4IEZhY2VQb3MgVGFncyJ9LAoJeyAgMHgwMjI4LCAoY2hhciAqKSAiRmFjZVNpemUiLCAoY2hhciAqKSAiUGVudGF4IEZhY2VTaXplIFRhZ3MifSwKCXsgIDB4MDIyOSwgKGNoYXIgKikgIlNlcmlhbE51bWJlciIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMjJBLCAoY2hhciAqKSAiRmlsdGVySW5mbyIsIChjaGFyICopICJQZW50YXggRmlsdGVySW5mbyBUYWdzIn0sCgl7ICAweDAyMkIsIChjaGFyICopICJMZXZlbEluZm8iLCAoY2hhciAqKSAiUGVudGF4IExldmVsSW5mbyBUYWdzIn0sCgl7ICAweDAyMkUsIChjaGFyICopICJBcnRpc3QiLCAoY2hhciAqKSBOVUxMfSwKCXsgIDB4MDIyRiwgKGNoYXIgKikgIkNvcHlyaWdodCIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMjMwLCAoY2hhciAqKSAiRmlybXdhcmVWZXJzaW9uIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAyMzEsIChjaGFyICopICJDb250cmFzdERldGVjdEFGQXJlYSIsIChjaGFyICopIE5VTEx9LAoJeyAgMHgwMjM1LCAoY2hhciAqKSAiQ3Jvc3NQcm9jZXNzUGFyYW1zIiwgKGNoYXIgKikgTlVMTH0sCgl7ICAweDAzRkUsIChjaGFyICopICJEYXRhRHVtcCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwNDAyLCAoY2hhciAqKSAiVG9uZUN1cnZlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDA0MDMsIChjaGFyICopICJUb25lQ3VydmVzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDBFMDAsIChjaGFyICopICJQcmludElNIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMDAsIChjaGFyICopICJIb21ldG93bkNpdHlDb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMDEsIChjaGFyICopICJEZXN0aW5hdGlvbkNpdHlDb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMDAsIChjaGFyICopICJQcmV2aWV3SW1hZ2VEYXRhIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpTb255IG1ha2VyIG5vdGUKKi8Kc3RhdGljIFRhZ0luZm8KICBleGlmX3NvbnlfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDEwMiwgKGNoYXIgKikgIlF1YWxpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDEwNCwgKGNoYXIgKikgIkZsYXNoRXhwb3N1cmVDb21wIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMDUsIChjaGFyICopICJUZWxlY29udmVydGVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAxMTIsIChjaGFyICopICJXaGl0ZUJhbGFuY2VGaW5lVHVuZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMTE0LCAoY2hhciAqKSAiQ2FtZXJhU2V0dGluZ3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDExNSwgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwRTAwLCAoY2hhciAqKSAiUHJpbnRJTSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgxMDAwLCAoY2hhciAqKSAiTXVsdGlCdXJzdE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAwMSwgKGNoYXIgKikgIk11bHRpQnVyc3RJbWFnZVdpZHRoIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDEwMDIsIChjaGFyICopICJNdWx0aUJ1cnN0SW1hZ2VIZWlnaHQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MTAwMywgKGNoYXIgKikgIlBhbm9yYW1hIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMDEsIChjaGFyICopICJQcmV2aWV3SW1hZ2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAwNCwgKGNoYXIgKikgIkNvbnRyYXN0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMDUsIChjaGFyICopICJTYXR1cmF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMDYsIChjaGFyICopICJTaGFycG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAwNywgKGNoYXIgKikgIkJyaWdodG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAwOCwgKGNoYXIgKikgIkxvbmdFeHBvc3VyZU5vaXNlUmVkdWN0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDIwMDksIChjaGFyICopICJIaWdoSVNPTm9pc2VSZWR1Y3Rpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MjAwQSwgKGNoYXIgKikgIkhEUiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgyMDBCLCAoY2hhciAqKSAiTXVsdGlGcmFtZU5vaXNlUmVkdWN0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDMwMDAsIChjaGFyICopICJTaG90SW5mbyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDAwLCAoY2hhciAqKSAiRmlsZUZvcm1hdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDAxLCAoY2hhciAqKSAiU29ueU1vZGVsSUQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QjAyMCwgKGNoYXIgKikgIkNvbG9yUmVwcm9kdWN0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwMjEsIChjaGFyICopICJDb2xvclRlbXBlcmF0dXJlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwMjIsIChjaGFyICopICJDb2xvckNvbXBlbnNhdGlvbkZpbHRlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDIzLCAoY2hhciAqKSAiU2NlbmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwMjQsIChjaGFyICopICJab25lTWF0Y2hpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QjAyNSwgKGNoYXIgKikgIkR5bmFtaWNSYW5nZU9wdGltaXplciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDI2LCAoY2hhciAqKSAiSW1hZ2VTdGFiaWxpemF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwMjcsIChjaGFyICopICJMZW5zVHlwZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDI4LCAoY2hhciAqKSAiTWlub2x0YU1ha2VyTm90ZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDI5LCAoY2hhciAqKSAiQ29sb3JNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwMkIsIChjaGFyICopICJGdWxsSW1hZ2VTaXplIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwMkMsIChjaGFyICopICJQcmV2aWV3SW1hZ2VTaXplIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwNDAsIChjaGFyICopICJNYWNybyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDQxLCAoY2hhciAqKSAiRXhwb3N1cmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwNDIsIChjaGFyICopICJGb2N1c01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QjA0MywgKGNoYXIgKikgIkFGTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDQ0LCAoY2hhciAqKSAiQUZJbGx1bWluYXRvciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDQ3LCAoY2hhciAqKSAiUXVhbGl0eTIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QjA0OCwgKGNoYXIgKikgIkZsYXNoTGV2ZWwiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QjA0OSwgKGNoYXIgKikgIlJlbGVhc2VNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwNEEsIChjaGFyICopICJTZXF1ZW5jZU51bWJlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDRCLCAoY2hhciAqKSAiQW50aS1CbHVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwNEUsIChjaGFyICopICJMb25nRXhwb3N1cmVOb2lzZVJlZHVjdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHhCMDRGLCAoY2hhciAqKSAiRHluYW1pY1JhbmdlT3B0aW1pemVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweEIwNTIsIChjaGFyICopICJJbnRlbGxpZ2VudEF1dG8iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4QjA1NCwgKGNoYXIgKikgIldoaXRlQmFsYW5jZTIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLyoqClNpZ21hIFNEMSBtYWtlciBub3RlCiovCnN0YXRpYyBUYWdJbmZvCiAgZXhpZl9zaWdtYV9zZDFfdGFnX3RhYmxlW10gPQogIHsKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIlNlcmlhbE51bWJlciIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAzLCAoY2hhciAqKSAiRHJpdmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDQsIChjaGFyICopICJSZXNvbHV0aW9uTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA1LCAoY2hhciAqKSAiQUZNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDYsIChjaGFyICopICJGb2N1c1NldHRpbmciLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNywgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA4LCAoY2hhciAqKSAiRXhwb3N1cmVNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDksIChjaGFyICopICJNZXRlcmluZ01vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQSwgKGNoYXIgKikgIkxlbnNGb2NhbFJhbmdlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEIsIChjaGFyICopICJDb2xvclNwYWNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEMsIChjaGFyICopICJFeHBvc3VyZUNvbXBlbnNhdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBELCAoY2hhciAqKSAiQ29udHJhc3QiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwRSwgKGNoYXIgKikgIlNoYWRvdyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBGLCAoY2hhciAqKSAiSGlnaGxpZ2h0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTAsIChjaGFyICopICJTYXR1cmF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTEsIChjaGFyICopICJTaGFycG5lc3MiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxMiwgKGNoYXIgKikgIlgzRmlsbExpZ2h0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTQsIChjaGFyICopICJDb2xvckFkanVzdG1lbnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNSwgKGNoYXIgKikgIkFkanVzdG1lbnRNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTYsIChjaGFyICopICJRdWFsaXR5IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTcsIChjaGFyICopICJGaXJtd2FyZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE4LCAoY2hhciAqKSAiU29mdHdhcmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxOSwgKGNoYXIgKikgIkF1dG9CcmFja2V0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUEsIChjaGFyICopICJDaHJvbWluYW5jZU5vaXNlUmVkdWN0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUIsIChjaGFyICopICJMdW1pbmFuY2VOb2lzZVJlZHVjdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFDLCAoY2hhciAqKSAiUHJldmlld0ltYWdlU3RhcnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRCwgKGNoYXIgKikgIlByZXZpZXdJbWFnZUxlbmd0aCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDFGLCAoY2hhciAqKSAiTWFrZXJOb3RlVmVyc2lvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDI2LCAoY2hhciAqKSAiRmlsZUZvcm1hdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDJDLCAoY2hhciAqKSAiQ29sb3JNb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMzAsIChjaGFyICopICJDYWxpYnJhdGlvbiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDQ4LCAoY2hhciAqKSAiTGVuc0FwZXJ0dXJlUmFuZ2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA0OSwgKGNoYXIgKikgIkZOdW1iZXIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA0QSwgKGNoYXIgKikgIkV4cG9zdXJlVGltZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDRCLCAoY2hhciAqKSAiRXhwb3N1cmVUaW1lMiIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDRELCAoY2hhciAqKSAiRXhwb3N1cmVDb21wZW5zYXRpb25fU0QxIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwNTUsIChjaGFyICopICJTZW5zb3JUZW1wZXJhdHVyZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDU2LCAoY2hhciAqKSAiRmxhc2hFeHBvc3VyZUNvbXAiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDA1NywgKGNoYXIgKikgIkZpcm13YXJlX1NEMSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDU4LCAoY2hhciAqKSAiV2hpdGVCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDAsIChjaGFyICopIE5VTEwsIChjaGFyICopIE5VTEx9CiAgfTsKCi8qKgpTaWdtYSAvIEZvdmVvbiBtYWtlciBub3RlIChvdGhlcnMgdGhhbiBTRDEgbW9kZWxzKQpOQjogbWFueSB0YWdzIGFyZSBub3QgY29uc2lzdGVudCBiZXR3ZWVuIGRpZmZlcmVudCBtb2RlbHMKKi8Kc3RhdGljIFRhZ0luZm8KICBleGlmX3NpZ21hX2ZvdmVvbl90YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHgwMDAyLCAoY2hhciAqKSAiU2VyaWFsTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDMsIChjaGFyICopICJEcml2ZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNCwgKGNoYXIgKikgIlJlc29sdXRpb25Nb2RlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDUsIChjaGFyICopICJBRk1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwNiwgKGNoYXIgKikgIkZvY3VzU2V0dGluZyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDA3LCAoY2hhciAqKSAiV2hpdGVCYWxhbmNlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMDgsIChjaGFyICopICJFeHBvc3VyZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwOSwgKGNoYXIgKikgIk1ldGVyaW5nTW9kZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBBLCAoY2hhciAqKSAiTGVuc0ZvY2FsUmFuZ2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQiwgKGNoYXIgKikgIkNvbG9yU3BhY2UiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwQywgKGNoYXIgKikgIkV4cG9zdXJlQ29tcGVuc2F0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEQsIChjaGFyICopICJDb250cmFzdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDBFLCAoY2hhciAqKSAiU2hhZG93IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMEYsIChjaGFyICopICJIaWdobGlnaHQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxMCwgKGNoYXIgKikgIlNhdHVyYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxMSwgKGNoYXIgKikgIlNoYXJwbmVzcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDEyLCAoY2hhciAqKSAiWDNGaWxsTGlnaHQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNCwgKGNoYXIgKikgIkNvbG9yQWRqdXN0bWVudCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE1LCAoY2hhciAqKSAiQWRqdXN0bWVudE1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNiwgKGNoYXIgKikgIlF1YWxpdHkiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxNywgKGNoYXIgKikgIkZpcm13YXJlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMTgsIChjaGFyICopICJTb2Z0d2FyZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDE5LCAoY2hhciAqKSAiQXV0b0JyYWNrZXQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxQSwgKGNoYXIgKikgIlByZXZpZXdJbWFnZVN0YXJ0IiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMUIsIChjaGFyICopICJQcmV2aWV3SW1hZ2VMZW5ndGgiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxQywgKGNoYXIgKikgIlByZXZpZXdJbWFnZVNpemUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRCwgKGNoYXIgKikgIk1ha2VyTm90ZVZlcnNpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAxRiwgKGNoYXIgKikgIkFGUG9pbnQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyMiwgKGNoYXIgKikgIkZpbGVGb3JtYXQiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAyNCwgKGNoYXIgKikgIkNhbGlicmF0aW9uIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMkMsIChjaGFyICopICJDb2xvck1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzMCwgKGNoYXIgKikgIkxlbnNBcGVydHVyZVJhbmdlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMzEsIChjaGFyICopICJGTnVtYmVyIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwMzIsIChjaGFyICopICJFeHBvc3VyZVRpbWUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzMywgKGNoYXIgKikgIkV4cG9zdXJlVGltZTIiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzNCwgKGNoYXIgKikgIkJ1cnN0U2hvdCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDM1LCAoY2hhciAqKSAiRXhwb3N1cmVDb21wZW5zYXRpb24iLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzOSwgKGNoYXIgKikgIlNlbnNvclRlbXBlcmF0dXJlIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDAwM0EsIChjaGFyICopICJGbGFzaEV4cG9zdXJlQ29tcCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDNCLCAoY2hhciAqKSAiRmlybXdhcmUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAzQywgKGNoYXIgKikgIldoaXRlQmFsYW5jZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDNELCAoY2hhciAqKSAiUGljdHVyZU1vZGUiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSVBUQyB0YWdzIGRlZmluaXRpb24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN0YXRpYyBUYWdJbmZvCiAgaXB0Y190YWdfdGFibGVbXSA9CiAgewoJICAvLyBJUFRDLU5BQSBJSU0gdmVyc2lvbiA0CiAgICB7ICAweDAyMDAgKyAgIDAsIChjaGFyICopICJBcHBsaWNhdGlvblJlY29yZFZlcnNpb24iLCAoY2hhciAqKSAiQXBwbGljYXRpb24gUmVjb3JkIFZlcnNpb24ifSwKICAgIHsgIDB4MDIwMCArICAgMywgKGNoYXIgKikgIk9iamVjdFR5cGVSZWZlcmVuY2UiLCAoY2hhciAqKSAiT2JqZWN0IFR5cGUgUmVmZXJlbmNlIn0sCiAgICB7ICAweDAyMDAgKyAgIDQsIChjaGFyICopICJPYmplY3RBdHRyaWJ1dGVSZWZlcmVuY2UiLCAoY2hhciAqKSAiT2JqZWN0IEF0dHJpYnV0ZSBSZWZlcmVuY2UifSwKICAgIHsgIDB4MDIwMCArICAgNSwgKGNoYXIgKikgIk9iamVjdE5hbWUiLCAoY2hhciAqKSAiVGl0bGUifSwKICAgIHsgIDB4MDIwMCArICAgNywgKGNoYXIgKikgIkVkaXRTdGF0dXMiLCAoY2hhciAqKSAiRWRpdCBTdGF0dXMifSwKICAgIHsgIDB4MDIwMCArICAgOCwgKGNoYXIgKikgIkVkaXRvcmlhbFVwZGF0ZSIsIChjaGFyICopICJFZGl0b3JpYWwgVXBkYXRlIn0sCiAgICB7ICAweDAyMDAgKyAgMTAsIChjaGFyICopICJVcmdlbmN5IiwgKGNoYXIgKikgIlVyZ2VuY3kifSwKICAgIHsgIDB4MDIwMCArICAxMiwgKGNoYXIgKikgIlN1YmplY3RSZWZlcmVuY2UiLCAoY2hhciAqKSAiU3ViamVjdCBSZWZlcmVuY2UifSwKICAgIHsgIDB4MDIwMCArICAxNSwgKGNoYXIgKikgIkNhdGVnb3J5IiwgKGNoYXIgKikgIkNhdGVnb3J5In0sCiAgICB7ICAweDAyMDAgKyAgMjAsIChjaGFyICopICJTdXBwbGVtZW50YWxDYXRlZ29yaWVzIiwgKGNoYXIgKikgIlN1cHBsZW1lbnRhbCBDYXRlZ29yaWVzIn0sCiAgICB7ICAweDAyMDAgKyAgMjIsIChjaGFyICopICJGaXh0dXJlSWRlbnRpZmllciIsIChjaGFyICopICJGaXh0dXJlIElkZW50aWZpZXIifSwKICAgIHsgIDB4MDIwMCArICAyNSwgKGNoYXIgKikgIktleXdvcmRzIiwgKGNoYXIgKikgIktleXdvcmRzIn0sCiAgICB7ICAweDAyMDAgKyAgMjYsIChjaGFyICopICJDb250ZW50TG9jYXRpb25Db2RlIiwgKGNoYXIgKikgIkNvbnRlbnQgTG9jYXRpb24gQ29kZSJ9LAogICAgeyAgMHgwMjAwICsgIDI3LCAoY2hhciAqKSAiQ29udGVudExvY2F0aW9uTmFtZSIsIChjaGFyICopICJDb250ZW50IExvY2F0aW9uIE5hbWUifSwKICAgIHsgIDB4MDIwMCArICAzMCwgKGNoYXIgKikgIlJlbGVhc2VEYXRlIiwgKGNoYXIgKikgIlJlbGVhc2UgRGF0ZSJ9LAogICAgeyAgMHgwMjAwICsgIDM1LCAoY2hhciAqKSAiUmVsZWFzZVRpbWUiLCAoY2hhciAqKSAiUmVsZWFzZSBUaW1lIn0sCiAgICB7ICAweDAyMDAgKyAgMzcsIChjaGFyICopICJFeHBpcmF0aW9uRGF0ZSIsIChjaGFyICopICJFeHBpcmF0aW9uIERhdGUifSwKICAgIHsgIDB4MDIwMCArICAzOCwgKGNoYXIgKikgIkV4cGlyYXRpb25UaW1lIiwgKGNoYXIgKikgIkV4cGlyYXRpb24gVGltZSJ9LAogICAgeyAgMHgwMjAwICsgIDQwLCAoY2hhciAqKSAiU3BlY2lhbEluc3RydWN0aW9ucyIsIChjaGFyICopICJJbnN0cnVjdGlvbnMifSwKICAgIHsgIDB4MDIwMCArICA0MiwgKGNoYXIgKikgIkFjdGlvbkFkdmlzZWQiLCAoY2hhciAqKSAiQWN0aW9uIEFkdmlzZWQifSwKICAgIHsgIDB4MDIwMCArICA0NSwgKGNoYXIgKikgIlJlZmVyZW5jZVNlcnZpY2UiLCAoY2hhciAqKSAiUmVmZXJlbmNlIFNlcnZpY2UifSwKICAgIHsgIDB4MDIwMCArICA0NywgKGNoYXIgKikgIlJlZmVyZW5jZURhdGUiLCAoY2hhciAqKSAiUmVmZXJlbmNlIERhdGUifSwKICAgIHsgIDB4MDIwMCArICA1MCwgKGNoYXIgKikgIlJlZmVyZW5jZU51bWJlciIsIChjaGFyICopICJSZWZlcmVuY2UgTnVtYmVyIn0sCiAgICB7ICAweDAyMDAgKyAgNTUsIChjaGFyICopICJEYXRlQ3JlYXRlZCIsIChjaGFyICopICJEYXRlIENyZWF0ZWQifSwKICAgIHsgIDB4MDIwMCArICA2MCwgKGNoYXIgKikgIlRpbWVDcmVhdGVkIiwgKGNoYXIgKikgIlRpbWUgQ3JlYXRlZCJ9LAogICAgeyAgMHgwMjAwICsgIDYyLCAoY2hhciAqKSAiRGlnaXRhbENyZWF0aW9uRGF0ZSIsIChjaGFyICopICJEaWdpdGFsIENyZWF0aW9uIERhdGUifSwKICAgIHsgIDB4MDIwMCArICA2MywgKGNoYXIgKikgIkRpZ2l0YWxDcmVhdGlvblRpbWUiLCAoY2hhciAqKSAiRGlnaXRhbCBDcmVhdGlvbiBUaW1lIn0sCiAgICB7ICAweDAyMDAgKyAgNjUsIChjaGFyICopICJPcmlnaW5hdGluZ1Byb2dyYW0iLCAoY2hhciAqKSAiT3JpZ2luYXRpbmcgUHJvZ3JhbSJ9LAogICAgeyAgMHgwMjAwICsgIDcwLCAoY2hhciAqKSAiUHJvZ3JhbVZlcnNpb24iLCAoY2hhciAqKSAiUHJvZ3JhbSBWZXJzaW9uIn0sCiAgICB7ICAweDAyMDAgKyAgNzUsIChjaGFyICopICJPYmplY3RDeWNsZSIsIChjaGFyICopICJPYmplY3QgQ3ljbGUifSwKICAgIHsgIDB4MDIwMCArICA4MCwgKGNoYXIgKikgIkJ5LWxpbmUiLCAoY2hhciAqKSAiQXV0aG9yIn0sCiAgICB7ICAweDAyMDAgKyAgODUsIChjaGFyICopICJCeS1saW5lVGl0bGUiLCAoY2hhciAqKSAiQXV0aG9yJ3MgUG9zaXRpb24ifSwKICAgIHsgIDB4MDIwMCArICA5MCwgKGNoYXIgKikgIkNpdHkiLCAoY2hhciAqKSAiQ2l0eSJ9LAogICAgeyAgMHgwMjAwICsgIDkyLCAoY2hhciAqKSAiU3ViTG9jYXRpb24iLCAoY2hhciAqKSAiU3ViLUxvY2F0aW9uIn0sCiAgICB7ICAweDAyMDAgKyAgOTUsIChjaGFyICopICJQcm92aW5jZS1TdGF0ZSIsIChjaGFyICopICJTdGF0ZS9Qcm92aW5jZSJ9LAogICAgeyAgMHgwMjAwICsgMTAwLCAoY2hhciAqKSAiQ291bnRyeS1QcmltYXJ5TG9jYXRpb25Db2RlIiwgKGNoYXIgKikgIkNvdW50cnkgQ29kZSJ9LAogICAgeyAgMHgwMjAwICsgMTAxLCAoY2hhciAqKSAiQ291bnRyeS1QcmltYXJ5TG9jYXRpb25OYW1lIiwgKGNoYXIgKikgIkNvdW50cnkgTmFtZSJ9LAogICAgeyAgMHgwMjAwICsgMTAzLCAoY2hhciAqKSAiT3JpZ2luYWxUcmFuc21pc3Npb25SZWZlcmVuY2UiLCAoY2hhciAqKSAiVHJhbnNtaXNzaW9uIFJlZmVyZW5jZSJ9LAogICAgeyAgMHgwMjAwICsgMTA1LCAoY2hhciAqKSAiSGVhZGxpbmUiLCAoY2hhciAqKSAiSGVhZGxpbmUifSwKICAgIHsgIDB4MDIwMCArIDExMCwgKGNoYXIgKikgIkNyZWRpdCIsIChjaGFyICopICJDcmVkaXQifSwKICAgIHsgIDB4MDIwMCArIDExNSwgKGNoYXIgKikgIlNvdXJjZSIsIChjaGFyICopICJTb3VyY2UifSwKICAgIHsgIDB4MDIwMCArIDExNiwgKGNoYXIgKikgIkNvcHlyaWdodE5vdGljZSIsIChjaGFyICopICJDb3B5cmlnaHQgTm90aWNlIn0sCiAgICB7ICAweDAyMDAgKyAxMTgsIChjaGFyICopICJDb250YWN0IiwgKGNoYXIgKikgIkNvbnRhY3QifSwKICAgIHsgIDB4MDIwMCArIDEyMCwgKGNoYXIgKikgIkNhcHRpb24tQWJzdHJhY3QiLCAoY2hhciAqKSAiQ2FwdGlvbiJ9LAogICAgeyAgMHgwMjAwICsgMTIyLCAoY2hhciAqKSAiV3JpdGVyLUVkaXRvciIsIChjaGFyICopICJDYXB0aW9uIFdyaXRlciJ9LAogICAgeyAgMHgwMjAwICsgMTI1LCAoY2hhciAqKSAiUmFzdGVyaXplZENhcHRpb24iLCAoY2hhciAqKSAiUmFzdGVyaXplZCBDYXB0aW9uIn0sCiAgICB7ICAweDAyMDAgKyAxMzAsIChjaGFyICopICJJbWFnZVR5cGUiLCAoY2hhciAqKSAiSW1hZ2UgVHlwZSJ9LAogICAgeyAgMHgwMjAwICsgMTMxLCAoY2hhciAqKSAiSW1hZ2VPcmllbnRhdGlvbiIsIChjaGFyICopICJJbWFnZSBPcmllbnRhdGlvbiJ9LAogICAgeyAgMHgwMjAwICsgMTM1LCAoY2hhciAqKSAiTGFuZ3VhZ2VJZGVudGlmaWVyIiwgKGNoYXIgKikgIkxhbmd1YWdlIElkZW50aWZpZXIifSwKICAgIHsgIDB4MDIwMCArIDE1MCwgKGNoYXIgKikgIkF1ZGlvVHlwZSIsIChjaGFyICopICJBdWRpbyBUeXBlIn0sCiAgICB7ICAweDAyMDAgKyAxNTEsIChjaGFyICopICJBdWRpb1NhbXBsaW5nUmF0ZSIsIChjaGFyICopICJBdWRpbyBTYW1wbGluZyBSYXRlIn0sCiAgICB7ICAweDAyMDAgKyAxNTIsIChjaGFyICopICJBdWRpb1NhbXBsaW5nUmVzb2x1dGlvbiIsIChjaGFyICopICJBdWRpbyBTYW1wbGluZyBSZXNvbHV0aW9uIn0sCiAgICB7ICAweDAyMDAgKyAxNTMsIChjaGFyICopICJBdWRpb0R1cmF0aW9uIiwgKGNoYXIgKikgIkF1ZGlvIER1cmF0aW9uIn0sCiAgICB7ICAweDAyMDAgKyAxNTQsIChjaGFyICopICJBdWRpb091dGN1ZSIsIChjaGFyICopICJBdWRpbyBPdXRjdWUifSwKCQkvLyBNZXRhZGF0YSBzZWVuIGluIG90aGVyIHNvZnR3YXJlcyAoc2VlIGFsc28gaHR0cDovL293bC5waHkucXVlZW5zdS5jYS9+cGhpbC9leGlmdG9vbC9UYWdOYW1lcy9JUFRDLmh0bWwjQXBwbGljYXRpb25SZWNvcmQpCiAgICB7ICAweDAyMDAgKyAxODQsIChjaGFyICopICJKb2JJRCIsIChjaGFyICopICJKb2IgSUQifSwKICAgIHsgIDB4MDIwMCArIDE4NSwgKGNoYXIgKikgIk1hc3RlckRvY3VtZW50SUQiLCAoY2hhciAqKSAiTWFzdGVyIERvY3VtZW50IElEIn0sCiAgICB7ICAweDAyMDAgKyAxODYsIChjaGFyICopICJTaG9ydERvY3VtZW50SUQiLCAoY2hhciAqKSAiU2hvcnQgRG9jdW1lbnQgSUQifSwKICAgIHsgIDB4MDIwMCArIDE4NywgKGNoYXIgKikgIlVuaXF1ZURvY3VtZW50SUQiLCAoY2hhciAqKSAiVW5pcXVlIERvY3VtZW50IElEIn0sCiAgICB7ICAweDAyMDAgKyAxODgsIChjaGFyICopICJPd25lcklEIiwgKGNoYXIgKikgIk93bmVyIElEIn0sCgkJLy8gSVBUQy1OQUEgSUlNIHZlcnNpb24gNAogICAgeyAgMHgwMjAwICsgMjAwLCAoY2hhciAqKSAiT2JqZWN0UHJldmlld0ZpbGVGb3JtYXQiLCAoY2hhciAqKSAiT2JqZWN0IFByZXZpZXcgRmlsZSBGb3JtYXQifSwKICAgIHsgIDB4MDIwMCArIDIwMSwgKGNoYXIgKikgIk9iamVjdFByZXZpZXdGaWxlVmVyc2lvbiIsIChjaGFyICopICJPYmplY3QgUHJldmlldyBGaWxlIFZlcnNpb24ifSwKICAgIHsgIDB4MDIwMCArIDIwMiwgKGNoYXIgKikgIk9iamVjdFByZXZpZXdEYXRhIiwgKGNoYXIgKikgIkF1ZGlvIE91dGN1ZSJ9LAoJCS8vIE1ldGFkYXRhIHNlZW4gaW4gb3RoZXIgc29mdHdhcmVzIChzZWUgYWxzbyBodHRwOi8vb3dsLnBoeS5xdWVlbnN1LmNhL35waGlsL2V4aWZ0b29sL1RhZ05hbWVzL0lQVEMuaHRtbCNBcHBsaWNhdGlvblJlY29yZCkKICAgIHsgIDB4MDIwMCArIDIyMSwgKGNoYXIgKikgIlByZWZzIiwgKGNoYXIgKikgIlBob3RvTWVjaGFuaWMgcHJlZmVyZW5jZXMifSwKICAgIHsgIDB4MDIwMCArIDIyNSwgKGNoYXIgKikgIkNsYXNzaWZ5U3RhdGUiLCAoY2hhciAqKSAiQ2xhc3NpZnkgU3RhdGUifSwKICAgIHsgIDB4MDIwMCArIDIyOCwgKGNoYXIgKikgIlNpbWlsYXJpdHlJbmRleCIsIChjaGFyICopICJTaW1pbGFyaXR5IEluZGV4In0sCiAgICB7ICAweDAyMDAgKyAyMzAsIChjaGFyICopICJEb2N1bWVudE5vdGVzIiwgKGNoYXIgKikgIkRvY3VtZW50IE5vdGVzIn0sCiAgICB7ICAweDAyMDAgKyAyMzEsIChjaGFyICopICJEb2N1bWVudEhpc3RvcnkiLCAoY2hhciAqKSAiRG9jdW1lbnQgSGlzdG9yeSJ9LAogICAgeyAgMHgwMjAwICsgMjMyLCAoY2hhciAqKSAiRXhpZkNhbWVyYUluZm8iLCAoY2hhciAqKSAiRXhpZiBDYW1lcmEgSW5mbyJ9LAoKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR2VvVElGRiB0YWdzIGRlZmluaXRpb24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnN0YXRpYyBUYWdJbmZvCiAgZ2VvdGlmZl90YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHg4MzBFLCAoY2hhciAqKSAiR2VvUGl4ZWxTY2FsZSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg4NDgwLCAoY2hhciAqKSAiSW50ZXJncmFwaCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg4NDgyLCAoY2hhciAqKSAiR2VvVGllUG9pbnRzIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDg1RDcsIChjaGFyICopICJKUEwgQ2FydG8gSUZEIG9mZnNldCIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg4NUQ4LCAoY2hhciAqKSAiR2VvVHJhbnNmb3JtYXRpb25NYXRyaXgiLCAoY2hhciAqKSBOVUxMfSwKICAgIHsgIDB4ODdBRiwgKGNoYXIgKikgIkdlb0tleURpcmVjdG9yeSIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHg4N0IwLCAoY2hhciAqKSAiR2VvRG91YmxlUGFyYW1zIiwgKGNoYXIgKikgTlVMTH0sCiAgICB7ICAweDg3QjEsIChjaGFyICopICJHZW9BU0NJSVBhcmFtcyIsIChjaGFyICopIE5VTEx9LAogICAgeyAgMHgwMDAwLCAoY2hhciAqKSBOVUxMLCAoY2hhciAqKSBOVUxMfQogIH07CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBBbmltYXRpb24gdGFncyBkZWZpbml0aW9uCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdGF0aWMgVGFnSW5mbwogIGFuaW1hdGlvbl90YWdfdGFibGVbXSA9CiAgewogICAgeyAgMHgwMDAxLCAoY2hhciAqKSAiTG9naWNhbFdpZHRoIiwgKGNoYXIgKikgIkxvZ2ljYWwgd2lkdGgifSwKICAgIHsgIDB4MDAwMiwgKGNoYXIgKikgIkxvZ2ljYWxIZWlnaHQiLCAoY2hhciAqKSAiTG9naWNhbCBoZWlnaHQifSwKICAgIHsgIDB4MDAwMywgKGNoYXIgKikgIkdsb2JhbFBhbGV0dGUiLCAoY2hhciAqKSAiR2xvYmFsIFBhbGV0dGUifSwKICAgIHsgIDB4MDAwNCwgKGNoYXIgKikgIkxvb3AiLCAoY2hhciAqKSAibG9vcCJ9LAogICAgeyAgMHgxMDAxLCAoY2hhciAqKSAiRnJhbWVMZWZ0IiwgKGNoYXIgKikgIkZyYW1lIGxlZnQifSwKICAgIHsgIDB4MTAwMiwgKGNoYXIgKikgIkZyYW1lVG9wIiwgKGNoYXIgKikgIkZyYW1lIHRvcCJ9LAogICAgeyAgMHgxMDAzLCAoY2hhciAqKSAiTm9Mb2NhbFBhbGV0dGUiLCAoY2hhciAqKSAiTm8gTG9jYWwgUGFsZXR0ZSJ9LAogICAgeyAgMHgxMDA0LCAoY2hhciAqKSAiSW50ZXJsYWNlZCIsIChjaGFyICopICJJbnRlcmxhY2VkIn0sCiAgICB7ICAweDEwMDUsIChjaGFyICopICJGcmFtZVRpbWUiLCAoY2hhciAqKSAiRnJhbWUgZGlzcGxheSB0aW1lIn0sCiAgICB7ICAweDEwMDYsIChjaGFyICopICJEaXNwb3NhbE1ldGhvZCIsIChjaGFyICopICJGcmFtZSBkaXNwb3NhbCBtZXRob2QifSwKICAgIHsgIDB4MDAwMCwgKGNoYXIgKikgTlVMTCwgKGNoYXIgKikgTlVMTH0KICB9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGFnTGliIGNsYXNzIGRlZmluaXRpb24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovKioKVGhpcyBpcyB3aGVyZSB0aGUgdGFnIGluZm8gdGFibGVzIGFyZSBpbml0aWFsaXplZAoqLwpUYWdMaWI6OlRhZ0xpYigpIHsKCS8vIGluaXRpYWxpemUgYWxsIGtub3duIG1ldGFkYXRhIG1vZGVscwoJLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoJLy8gRXhpZgoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFJTiwgZXhpZl9leGlmX3RhZ190YWJsZSk7CglhZGRNZXRhZGF0YU1vZGVsKFRhZ0xpYjo6RVhJRl9FWElGLCBleGlmX2V4aWZfdGFnX3RhYmxlKTsKCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpFWElGX0dQUywgZXhpZl9ncHNfdGFnX3RhYmxlKTsKCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpFWElGX0lOVEVST1AsIGV4aWZfaW50ZXJvcF90YWdfdGFibGUpOwoKCS8vIEV4aWYgbWFrZXIgbm90ZQoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX0NBTk9OLCBleGlmX2Nhbm9uX3RhZ190YWJsZSk7CglhZGRNZXRhZGF0YU1vZGVsKFRhZ0xpYjo6RVhJRl9NQUtFUk5PVEVfQ0FTSU9UWVBFMSwgZXhpZl9jYXNpb190eXBlMV90YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX0NBU0lPVFlQRTIsIGV4aWZfY2FzaW9fdHlwZTJfdGFnX3RhYmxlKTsKCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpFWElGX01BS0VSTk9URV9GVUpJRklMTSwgZXhpZl9mdWppZmlsbV90YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX0tZT0NFUkEsIGV4aWZfa3lvY2VyYV90YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX01JTk9MVEEsIGV4aWZfbWlub2x0YV90YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX05JS09OVFlQRTEsIGV4aWZfbmlrb25fdHlwZTFfdGFnX3RhYmxlKTsKCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpFWElGX01BS0VSTk9URV9OSUtPTlRZUEUyLCBleGlmX25pa29uX3R5cGUyX3RhZ190YWJsZSk7CglhZGRNZXRhZGF0YU1vZGVsKFRhZ0xpYjo6RVhJRl9NQUtFUk5PVEVfTklLT05UWVBFMywgZXhpZl9uaWtvbl90eXBlM190YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX09MWU1QVVNUWVBFMSwgZXhpZl9vbHltcHVzX3R5cGUxX3RhZ190YWJsZSk7CglhZGRNZXRhZGF0YU1vZGVsKFRhZ0xpYjo6RVhJRl9NQUtFUk5PVEVfUEFOQVNPTklDLCBleGlmX3BhbmFzb25pY190YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX0FTQUhJLCBleGlmX2FzYWhpX3RhZ190YWJsZSk7CglhZGRNZXRhZGF0YU1vZGVsKFRhZ0xpYjo6RVhJRl9NQUtFUk5PVEVfUEVOVEFYLCBleGlmX3BlbnRheF90YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX1NPTlksIGV4aWZfc29ueV90YWdfdGFibGUpOwoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkVYSUZfTUFLRVJOT1RFX1NJR01BX1NEMSwgZXhpZl9zaWdtYV9zZDFfdGFnX3RhYmxlKTsKCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpFWElGX01BS0VSTk9URV9TSUdNQV9GT1ZFT04sIGV4aWZfc2lnbWFfZm92ZW9uX3RhZ190YWJsZSk7CgoJLy8gSVBUQy9OQUEKCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpJUFRDLCBpcHRjX3RhZ190YWJsZSk7CgoJLy8gR2VvVElGRgoJYWRkTWV0YWRhdGFNb2RlbChUYWdMaWI6OkdFT1RJRkYsIGdlb3RpZmZfdGFnX3RhYmxlKTsKCgkvLyBBbmltYXRpb24KCWFkZE1ldGFkYXRhTW9kZWwoVGFnTGliOjpBTklNQVRJT04sIGFuaW1hdGlvbl90YWdfdGFibGUpOwp9CgpCT09MIFRhZ0xpYjo6YWRkTWV0YWRhdGFNb2RlbChNRE1PREVMIG1kX21vZGVsLCBUYWdJbmZvICp0YWdfdGFibGUpIHsKCS8vIGNoZWNrIHRoYXQgdGhlIG1vZGVsIGRvZXNuJ3QgYWxyZWFkeSBleGlzdAoJaWYoKF90YWJsZV9tYXAuZmluZChtZF9tb2RlbCkgPT0gX3RhYmxlX21hcC5lbmQoKSkgJiYgKHRhZ190YWJsZSAhPSBOVUxMKSkgewoKCQkvLyBhZGQgdGhlIHRhZyBkZXNjcmlwdGlvbiB0YWJsZQoJCVRBR0lORk8gKmluZm9fbWFwID0gbmV3KHN0ZDo6bm90aHJvdykgVEFHSU5GTygpOwoJCWlmKCFpbmZvX21hcCkgcmV0dXJuIEZBTFNFOwoKCQlmb3IoaW50IGkgPSAwOyA7IGkrKykgewoJCQlpZigodGFnX3RhYmxlW2ldLnRhZyA9PSAwKSAmJiAodGFnX3RhYmxlW2ldLmZpZWxkbmFtZSA9PSBOVUxMKSkKCQkJCWJyZWFrOwoJCQkoKmluZm9fbWFwKVt0YWdfdGFibGVbaV0udGFnXSA9ICZ0YWdfdGFibGVbaV07CgkJfQoKCQkvLyBhZGQgdGhlIG1ldGFkYXRhIG1vZGVsCgkJX3RhYmxlX21hcFttZF9tb2RlbF0gPSBpbmZvX21hcDsKCgkJcmV0dXJuIFRSVUU7Cgl9CgoJcmV0dXJuIEZBTFNFOwp9CgpUYWdMaWI6On5UYWdMaWIoKSB7CgkvLyBkZWxldGUgbWV0YWRhdGEgbW9kZWxzCglmb3IoVEFCTEVNQVA6Oml0ZXJhdG9yIGkgPSBfdGFibGVfbWFwLmJlZ2luKCk7IGkgIT0gX3RhYmxlX21hcC5lbmQoKTsgaSsrKSB7CgkJVEFHSU5GTyAqaW5mb19tYXAgPSAoKmkpLnNlY29uZDsKCQlkZWxldGUgaW5mb19tYXA7Cgl9Cn0KCgpUYWdMaWImIApUYWdMaWI6Omluc3RhbmNlKCkgewoJc3RhdGljIFRhZ0xpYiBzOwoJcmV0dXJuIHM7Cn0KCmNvbnN0IFRhZ0luZm8qIApUYWdMaWI6OmdldFRhZ0luZm8oTURNT0RFTCBtZF9tb2RlbCwgV09SRCB0YWdJRCkgewoKCWlmKF90YWJsZV9tYXAuZmluZChtZF9tb2RlbCkgIT0gX3RhYmxlX21hcC5lbmQoKSkgewoKCQlUQUdJTkZPICppbmZvX21hcCA9IChUQUdJTkZPKilfdGFibGVfbWFwW21kX21vZGVsXTsKCQlpZihpbmZvX21hcC0+ZmluZCh0YWdJRCkgIT0gaW5mb19tYXAtPmVuZCgpKSB7CgkJCXJldHVybiAoKmluZm9fbWFwKVt0YWdJRF07CgkJfQoJfQoJcmV0dXJuIE5VTEw7Cn0KCmNvbnN0IGNoYXIqIApUYWdMaWI6OmdldFRhZ0ZpZWxkTmFtZShNRE1PREVMIG1kX21vZGVsLCBXT1JEIHRhZ0lELCBjaGFyICpkZWZhdWx0S2V5KSB7CgoJY29uc3QgVGFnSW5mbyAqaW5mbyA9IGdldFRhZ0luZm8obWRfbW9kZWwsIHRhZ0lEKTsKCWlmKE5VTEwgPT0gaW5mbykgewoJCWlmKGRlZmF1bHRLZXkgIT0gTlVMTCkgewoJCQlzcHJpbnRmKGRlZmF1bHRLZXksICJUYWcgMHglMDRYIiwgdGFnSUQpOwoJCQlyZXR1cm4gJmRlZmF1bHRLZXlbMF07CgkJfSBlbHNlIHsKCQkJcmV0dXJuIE5VTEw7CgkJfQoJfQoKCXJldHVybiBpbmZvLT5maWVsZG5hbWU7Cn0KCmNvbnN0IGNoYXIqIApUYWdMaWI6OmdldFRhZ0Rlc2NyaXB0aW9uKE1ETU9ERUwgbWRfbW9kZWwsIFdPUkQgdGFnSUQpIHsKCgljb25zdCBUYWdJbmZvICppbmZvID0gZ2V0VGFnSW5mbyhtZF9tb2RlbCwgdGFnSUQpOwoJaWYoaW5mbykgewoJCXJldHVybiBpbmZvLT5kZXNjcmlwdGlvbjsKCX0KCglyZXR1cm4gTlVMTDsKfQoKaW50IFRhZ0xpYjo6Z2V0VGFnSUQoTURNT0RFTCBtZF9tb2RlbCwgY29uc3QgY2hhciAqa2V5KSB7CgoJaWYoX3RhYmxlX21hcC5maW5kKG1kX21vZGVsKSAhPSBfdGFibGVfbWFwLmVuZCgpKSB7CgoJCVRBR0lORk8gKmluZm9fbWFwID0gKFRBR0lORk8qKV90YWJsZV9tYXBbbWRfbW9kZWxdOwoJCWZvcihUQUdJTkZPOjppdGVyYXRvciBpID0gaW5mb19tYXAtPmJlZ2luKCk7IGkgIT0gaW5mb19tYXAtPmVuZCgpOyBpKyspIHsKCQkJY29uc3QgVGFnSW5mbyAqaW5mbyA9ICgqaSkuc2Vjb25kOwoJCQlpZihpbmZvICYmIChzdHJjbXAoaW5mby0+ZmllbGRuYW1lLCBrZXkpID09IDApKSB7CgkJCQlyZXR1cm4gKGludClpbmZvLT50YWc7CgkJCX0KCQl9Cgl9CglyZXR1cm4gLTE7Cn0KCkZSRUVfSU1BR0VfTURNT0RFTCAKVGFnTGliOjpnZXRGcmVlSW1hZ2VNb2RlbChNRE1PREVMIG1vZGVsKSB7Cglzd2l0Y2gobW9kZWwpIHsKCQljYXNlIEVYSUZfTUFJTjoKCQkJcmV0dXJuIEZJTURfRVhJRl9NQUlOOwoKCQljYXNlIEVYSUZfRVhJRjoKCQkJcmV0dXJuIEZJTURfRVhJRl9FWElGOwoKCQljYXNlIEVYSUZfR1BTOiAKCQkJcmV0dXJuIEZJTURfRVhJRl9HUFM7CgoJCWNhc2UgRVhJRl9JTlRFUk9QOgoJCQlyZXR1cm4gRklNRF9FWElGX0lOVEVST1A7CgoJCWNhc2UgRVhJRl9NQUtFUk5PVEVfQ0FOT046CgkJY2FzZSBFWElGX01BS0VSTk9URV9DQVNJT1RZUEUxOgoJCWNhc2UgRVhJRl9NQUtFUk5PVEVfQ0FTSU9UWVBFMjoKCQljYXNlIEVYSUZfTUFLRVJOT1RFX0ZVSklGSUxNOgoJCWNhc2UgRVhJRl9NQUtFUk5PVEVfS1lPQ0VSQToKCQljYXNlIEVYSUZfTUFLRVJOT1RFX01JTk9MVEE6CgkJY2FzZSBFWElGX01BS0VSTk9URV9OSUtPTlRZUEUxOgoJCWNhc2UgRVhJRl9NQUtFUk5PVEVfTklLT05UWVBFMjoKCQljYXNlIEVYSUZfTUFLRVJOT1RFX05JS09OVFlQRTM6CgkJY2FzZSBFWElGX01BS0VSTk9URV9PTFlNUFVTVFlQRTE6CgkJY2FzZSBFWElGX01BS0VSTk9URV9QQU5BU09OSUM6CgkJY2FzZSBFWElGX01BS0VSTk9URV9BU0FISToKCQljYXNlIEVYSUZfTUFLRVJOT1RFX1BFTlRBWDoKCQljYXNlIEVYSUZfTUFLRVJOT1RFX1NPTlk6CgkJY2FzZSBFWElGX01BS0VSTk9URV9TSUdNQV9TRDE6CgkJY2FzZSBFWElGX01BS0VSTk9URV9TSUdNQV9GT1ZFT046CgkJCXJldHVybiBGSU1EX0VYSUZfTUFLRVJOT1RFOwoKCQljYXNlIElQVEM6CgkJCXJldHVybiBGSU1EX0lQVEM7CgoJCWNhc2UgR0VPVElGRjoKCQkJcmV0dXJuIEZJTURfR0VPVElGRjsKCgkJY2FzZSBBTklNQVRJT046CgkJCXJldHVybiBGSU1EX0FOSU1BVElPTjsKCX0KCglyZXR1cm4gRklNRF9OT0RBVEE7Cn0KCg==