IyBUcmFuc2xhdGlvbiBvZiBzcGxpbmVzLnBvdCB0byBGcmVuY2gKIyBDb3B5cmlnaHQgKEMpIDIwMDUgVGhlIFIgRm91bmRhdGlvbgojIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBzcGxpbmVzIFIgcGFja2FnZS4KIyBQaGlsaXBwZSBHcm9zamVhbiA8cGhncm9zamVhbkBzY2l2aWV3cy5vcmc+LCAyMDA1LgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBSIDIuMTIuMFxuIgoiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTgtMDMtMjkgMDc6MDYtMDcwMFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAxMC0xMC0wMSAyMTowMCswMTAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IFBoaWxpcHBlIEdyb3NqZWFuIDxwaGdyb3NqZWFuQHNjaXZpZXdzLm9yZz5cbiIKIkxhbmd1YWdlLVRlYW06IEZyZW5jaCA8Ui1jb3JlQHItcHJvamVjdC5vcmc+XG4iCiJMYW5ndWFnZTogZnJcbiIKIk1JTUUtVmVyc2lvbjogMS4wXG4iCiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMVxuIgoiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgoiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gPiAxKTtcbiIKIlgtUG9lZGl0LUxhbmd1YWdlOiBGcmVuY2hcbiIKCiM6IHNwbGluZXMuYzoxNTQKbXNnaWQgIidvcmQnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIgptc2dzdHIgIidvcmQnIGRvaXQg6nRyZSB1biBlbnRpZXIgcG9zaXRpZiIKCiM6IHNwbGluZXMuYzoyMjIKIywgYy1mb3JtYXQKbXNnaWQgImRlcml2cyA9ICVkID49IG9yZCA9ICVkLCBidXQgc2hvdWxkIGJlIGluIHswLC4uLG9yZC0xfSIKbXNnc3RyICIiCgojOiBzcGxpbmVzLmM6MjI1CiMsIGMtZm9ybWF0Cm1zZ2lkICJkZXJpdnNbJWRdID0gJWQgPj0gb3JkID0gJWQsIGJ1dCBzaG91bGQgYmUgaW4gezAsLi4sb3JkLTF9Igptc2dzdHIgIiIK