IyAkTWlyT1M6IHNyYy9iaW4vbWtzaC9jaGVjay50LHYgMS41OTcgMjAxMy8wMi8xOSAxODo0NToxNyB0ZyBFeHAgJAojICRPcGVuQlNEOiBia3NsLW5sLnQsdiAxLjIgMjAwMS8wMS8yOCAyMzowNDo1NiBuaWtsYXMgRXhwICQKIyAkT3BlbkJTRDogaGlzdG9yeS50LHYgMS41IDIwMDEvMDEvMjggMjM6MDQ6NTYgbmlrbGFzIEV4cCAkCiMgJE9wZW5CU0Q6IHJlYWQudCx2IDEuMyAyMDAzLzAzLzEwIDAzOjQ4OjE2IGRhdmlkIEV4cCAkCiMtCiMgQ29weXJpZ2h0IMKpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCiMJICAgICAgMjAxMSwgMjAxMiwgMjAxMwojCVRob3JzdGVuIEdsYXNlciA8dGdAbWlyYnNkLm9yZz4KIwojIFByb3ZpZGVkIHRoYXQgdGhlc2UgdGVybXMgYW5kIGRpc2NsYWltZXIgYW5kIGFsbCBjb3B5cmlnaHQgbm90aWNlcwojIGFyZSByZXRhaW5lZCBvciByZXByb2R1Y2VkIGluIGFuIGFjY29tcGFueWluZyBkb2N1bWVudCwgcGVybWlzc2lvbgojIGlzIGdyYW50ZWQgdG8gZGVhbCBpbiB0aGlzIHdvcmsgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHVu4oCQCiMgbGltaXRlZCByaWdodHMgdG8gdXNlLCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlLCBzZWxsLCBtb2RpZnksCiMgbWVyZ2UsIGdpdmUgYXdheSwgb3Igc3VibGljZW5jZS4KIwojIFRoaXMgd29yayBpcyBwcm92aWRlZCDigJxBUyBJU+KAnSBhbmQgV0lUSE9VVCBXQVJSQU5UWSBvZiBhbnkga2luZCwgdG8KIyB0aGUgdXRtb3N0IGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsIG5laXRoZXIgZXhwcmVzcyBub3IKIyBpbXBsaWVkOyB3aXRob3V0IG1hbGljaW91cyBpbnRlbnQgb3IgZ3Jvc3MgbmVnbGlnZW5jZS4gSW4gbm8gZXZlbnQKIyBtYXkgYSBsaWNlbnNvciwgYXV0aG9yIG9yIGNvbnRyaWJ1dG9yIGJlIGhlbGQgbGlhYmxlIGZvciBpbmRpcmVjdCwKIyBkaXJlY3QsIG90aGVyIGRhbWFnZSwgbG9zcywgb3Igb3RoZXIgaXNzdWVzIGFyaXNpbmcgaW4gYW55IHdheSBvdXQKIyBvZiBkZWFsaW5nIGluIHRoZSB3b3JrLCBldmVuIGlmIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2gKIyBkYW1hZ2Ugb3IgZXhpc3RlbmNlIG9mIGEgZGVmZWN0LCBleGNlcHQgcHJvdmVuIHRoYXQgaXQgcmVzdWx0cyBvdXQKIyBvZiBzYWlkIHBlcnNvbuKAmXMgaW1tZWRpYXRlIGZhdWx0IHdoZW4gdXNpbmcgdGhlIHdvcmsgYXMgaW50ZW5kZWQuCiMtCiMgWW91IG1heSBhbHNvIHdhbnQgdG8gdGVzdCBJRlMgd2l0aCB0aGUgc2NyaXB0IGF0CiMgaHR0cDovL3d3dy5yZXNlYXJjaC5hdHQuY29tL35nc2YvcHVibGljL2lmcy5zaAojCiMgTW9yZSB0ZXN0c3VpdGVzIGF0OgojIGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvc3JjL3Rvb2xzL3JlZ3Jlc3Npb24vYmluL3Rlc3QvcmVncmVzcy5zaD9yZXY9SEVBRAoKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgjKU1JUkJTRCBLU0ggUjQzIDIwMTMvMDIvMTkKZGVzY3JpcHRpb246CglDaGVjayB2ZXJzaW9uIG9mIHNoZWxsLgpzdGRpbjoKCWVjaG8gJEtTSF9WRVJTSU9OCm5hbWU6IEtTSF9WRVJTSU9OCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8KLS0tCmV4cGVjdGVkLXN0ZG91dDoKCUAoIylMRUdBQ1kgS1NIIFI0MyAyMDEzLzAyLzE5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdmVyc2lvbiBvZiBsZWdhY3kgc2hlbGwuCnN0ZGluOgoJZWNobyAkS1NIX1ZFUlNJT04KbmFtZTogS1NIX1ZFUlNJT04tbGVnYWN5CmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCi0tLQpuYW1lOiBzZWxmdGVzdC0xCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmF6Ci0tLQpuYW1lOiBzZWxmdGVzdC0yCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFmb289YmFyIQpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyCi0tLQpuYW1lOiBzZWxmdGVzdC0zCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFFTlY9Zm5vcmQhCnN0ZGluOgoJZWNobyAiPCRFTlY+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8Zm5vcmQ+Ci0tLQpuYW1lOiBzZWxmdGVzdC1lbnYKZGVzY3JpcHRpb246CglKdXN0IG91dHB1dCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCAoYWx3YXlzIGZhaWxzKQpjYXRlZ29yeTogZGlzYWJsZWQKc3RkaW46CglzZXQKLS0tCm5hbWU6IHNlbGZ0ZXN0LWxlZ2FjeQpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgdGhpbmdzIGluIHRoZSBMRUdBQ1kgS1NICmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCnN0ZGluOgoJc2V0ICtvIGVtYWNzCglzZXQgK28gdmkKCVtbICIkKHNldCArbykgLW8iID0gKiItbyBlbWFjcyAtbyIqIF1dICYmIGVjaG8gMT1lbWFjcwoJW1sgIiQoc2V0ICtvKSAtbyIgPSAqIi1vIHZpIC1vIiogXV0gJiYgZWNobyAxPXZpCglzZXQgLW8gZW1hY3MKCXNldCAtbyB2aQoJW1sgIiQoc2V0ICtvKSAtbyIgPSAqIi1vIGVtYWNzIC1vIiogXV0gJiYgZWNobyAyPWVtYWNzCglbWyAiJChzZXQgK28pIC1vIiA9ICoiLW8gdmkgLW8iKiBdXSAmJiBlY2hvIDI9dmkKZXhwZWN0ZWQtc3Rkb3V0OgoJMj1lbWFjcwoJMj12aQotLS0KbmFtZTogc2VsZnRlc3QtZGlyZWN0LWJ1aWx0aW4tY2FsbApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZGlyZWN0IGJ1aWx0aW4gY2FsbHMgd29yawpzdGRpbjoKCWxuIC1zICIkX19wcm9nbmFtZSIgY2F0IHx8IGNwICIkX19wcm9nbmFtZSIgY2F0CglsbiAtcyAiJF9fcHJvZ25hbWUiIGVjaG8gfHwgY3AgIiRfX3Byb2duYW1lIiBlY2hvCgkuL2VjaG8gLWMgJ2VjaG8gIGZvbycgfCAuL2NhdCAtdQpleHBlY3RlZC1zdGRvdXQ6CgktYyBlY2hvICBmb28KLS0tCm5hbWU6IGFsaWFzLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCnN0ZGluOgoJYWxpYXMgZm9vQmFyPWZvb0JhcgoJZm9vQmFyCglleGl0IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm9vQmFyLipub3QgZm91bmQuKi8KLS0tCm5hbWU6IGFsaWFzLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCnN0ZGluOgoJYWxpYXMgZm9vQmFyPWJhckZvbwoJYWxpYXMgYmFyRm9vPWZvb0JhcgoJZm9vQmFyCgliYXJGb28KCWV4aXQgMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9mb29CYXIuKm5vdCBmb3VuZC4qXG4uKmJhckZvby4qbm90IGZvdW5kLwotLS0KbmFtZTogYWxpYXMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcmVjdXJzaW9uIGlzIGRldGVjdGVkL2F2b2lkZWQgaW4gYWxpYXNlcy4Kc3RkaW46CglhbGlhcyBFY2hvPSdlY2hvICcKCWFsaWFzIGZvb0Jhcj1iYXJGb28KCWFsaWFzIGJhckZvbz1mb29CYXIKCUVjaG8gZm9vQmFyCgl1bmFsaWFzIGJhckZvbwoJRWNobyBmb29CYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vQmFyCgliYXJGb28KLS0tCm5hbWU6IGFsaWFzLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBpc24ndCBkb25lIG9uIGtleXdvcmRzIChpbiBrZXl3b3JkCglwb3N0aXRpb25zKS4Kc3RkaW46CglhbGlhcyBFY2hvPSdlY2hvICcKCWFsaWFzIHdoaWxlPVdoaWxlCgl3aGlsZSBmYWxzZTsgZG8gZWNobyBoaSA7IGRvbmUKCUVjaG8gd2hpbGUKZXhwZWN0ZWQtc3Rkb3V0OgoJV2hpbGUKLS0tCm5hbWU6IGFsaWFzLTUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBkb25lIGFmdGVyIGFsaWFzIHdpdGggdHJhaWxpbmcgc3BhY2UuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb289J2JhciBzdHVmZiAnCglhbGlhcyBiYXI9J0JhcjEgQmFyMiAnCglhbGlhcyBzdHVmZj0nU3R1ZmYnCglhbGlhcyBibGFoPSdCbGFoJwoJRWNobyBmb28gYmxhaApleHBlY3RlZC1zdGRvdXQ6CglCYXIxIEJhcjIgU3R1ZmYgQmxhaAotLS0KbmFtZTogYWxpYXMtNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXMgZXhwYW5zaW9uIGRvbmUgYWZ0ZXIgYWxpYXMgd2l0aCB0cmFpbGluZyBzcGFjZS4Kc3RkaW46CglhbGlhcyBFY2hvPSdlY2hvICcKCWFsaWFzIGZvbz0nYmFyIGJhcicKCWFsaWFzIGJhcj0nQmFyICcKCWFsaWFzIGJsYWg9QmxhaAoJRWNobyBmb28gYmxhaApleHBlY3RlZC1zdGRvdXQ6CglCYXIgQmFyIEJsYWgKLS0tCm5hbWU6IGFsaWFzLTcKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBkb25lIGFmdGVyIGFsaWFzIHdpdGggdHJhaWxpbmcgc3BhY2UKCWFmdGVyIGEga2V5d29yZC4Kc3RkaW46CglhbGlhcyBYPSdjYXNlICcKCWFsaWFzIFk9WgoJWCBZIGluICdZJykgZWNobyBpcyB5IDs7IFopIGVjaG8gaXMgeiA7IGVzYWMKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgegotLS0KbmFtZTogYWxpYXMtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbmV3bGluZXMgaW4gYW4gYWxpYXMgZG9uJ3QgY2F1c2UgdGhlIGNvbW1hbmQgdG8gYmUgbG9zdC4Kc3RkaW46CglhbGlhcyBmb289JwoJCgkKCWVjaG8gaGkKCQoJCgkKCWVjaG8gdGhlcmUKCQoJCgknCglmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCi0tLQpuYW1lOiBhbGlhcy05CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgoJVGhpcyBjaGVjayBmYWlscyBmb3Igc2xvdyBtYWNoaW5lcyBvciBDeWd3aW4sIHJhaXNlCgl0aGUgdGltZS1saW1pdCBjbGF1c2UgKGUuZy4gdG8gNykgaWYgdGhpcyBvY2N1cnMuCnRpbWUtbGltaXQ6IDMKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmVjaG8gdGYnID5scQoJY2htb2QgK3ggbHEKCVBBVEg9JFBXRDokUEFUSAoJYWxpYXMgbHE9bHEKCWxxCgllY2hvID0gbm93CglpPWBscWAKCXByaW50IC1yIC0tICRpCgllY2hvID0gb3V0CglleGl0IDAKZXhwZWN0ZWQtc3Rkb3V0OgoJdGYKCT0gbm93Cgl0ZgoJPSBvdXQKLS0tCm5hbWU6IGFsaWFzLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgoJUmVncmVzc2lvbiwgaW50cm9kdWNlZCBkdXJpbmcgYW4gb2xkIGJ1Z2ZpeC4Kc3RkaW46CglhbGlhcyBmb289J3ByaW50IGhlbGxvICcKCWFsaWFzIGJhcj0nZm9vIHdvcmxkJwoJZWNobyAkKGJhcikKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8gd29ybGQKLS0tCm5hbWU6IGFyaXRoLWxhenktMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgb25seSBvbmUgc2lkZSBvZiB0ZXJuYXJ5IG9wZXJhdG9yIGlzIGV2YWx1YXRlZApzdGRpbjoKCXg9aSs9MgoJeT1qKz0yCgl0eXBlc2V0IC1pIGk9MSBqPTEKCWVjaG8gJCgoMSA/IDIwIDogKHgrPTIpKSkKCWVjaG8gJGksJHgKCWVjaG8gJCgoMCA/ICh5Kz0yKSA6IDMwKSkKCWVjaG8gJGosJHkKZXhwZWN0ZWQtc3Rkb3V0OgoJMjAKCTEsaSs9MgoJMzAKCTEsais9MgotLS0KbmFtZTogYXJpdGgtbGF6eS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhc3NpZ25tZW50cyBub3QgZG9uZSBvbiBub24tZXZhbHVhdGVkIHNpZGUgb2YgdGVybmFyeQoJb3BlcmF0b3IKc3RkaW46Cgl4PWkrPTIKCXk9ais9MgoJdHlwZXNldCAtaSBpPTEgaj0xCgllY2hvICQoKDEgPyAyMCA6ICh4Kz0yKSkpCgllY2hvICRpLCR4CgllY2hvICQoKDAgPyAoeSs9MikgOiAzMCkpCgllY2hvICRpLCR5CmV4cGVjdGVkLXN0ZG91dDoKCTIwCgkxLGkrPTIKCTMwCgkxLGorPTIKLS0tCm5hbWU6IGFyaXRoLWxhenktMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYXNzaWdubWVudHMgbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yIGFuZCB0aGlzIGNvbnN0cnVjdCBpcyBwYXJzZWQgY29ycmVjdGx5IChEZWJpYW4gIzQ0NTY1MSkKc3RkaW46Cgl4PTQKCXk9JCgoMCA/IHg9MSA6IDIpKQoJZWNobyA9ICR4ICR5ID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSA0IDIgPQotLS0KbmFtZTogYXJpdGgtdGVybmFyeS1wcmVjLTEKZGVzY3JpcHRpb246CglDaGVjayBwcmVjZWRlbmNlIG9mIHRlcm5hcnkgb3BlcmF0b3IgdnMgYXNzaWdubWVudApzdGRpbjoKCXR5cGVzZXQgLWkgeD0yCgl5PSQoKDEgPyAyMCA6IHgrPTIpKQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLio6LioxIFw/IDIwIDogeFwrPTIuKmx2YWx1ZS4qXG4kLwotLS0KbmFtZTogYXJpdGgtdGVybmFyeS1wcmVjLTIKZGVzY3JpcHRpb246CglDaGVjayBwcmVjZWRlbmNlIG9mIHRlcm5hcnkgb3BlcmF0b3IgdnMgYXNzaWdubWVudApzdGRpbjoKCXR5cGVzZXQgLWkgeD0yCgllY2hvICQoKDAgPyB4Kz0yIDogMjApKQpleHBlY3RlZC1zdGRvdXQ6CgkyMAotLS0KbmFtZTogYXJpdGgtZGl2LWFzc29jLTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NvY2lhdGl2aXR5IG9mIGRpdmlzaW9uIG9wZXJhdG9yCnN0ZGluOgoJZWNobyAkKCgyMCAvIDIgLyAyKSkKZXhwZWN0ZWQtc3Rkb3V0OgoJNQotLS0KbmFtZTogYXJpdGgtZGl2LWJ5emVybwpkZXNjcmlwdGlvbjoKCUNoZWNrIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3JzIG91dApzdGRpbjoKCXg9JChlY2hvICQoKDEgLyAwKSkpCgllY2hvID0kPzokeC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPTE6LgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmRpdmlzb3IvCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtMjE0NzQ4MzY0OCAvIC0xKSlyJCgoLTIxNDc0ODM2NDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC0yMTQ3NDgzNjQ4IC8gLTEpKXIkKCgjIC0yMTQ3NDgzNjQ4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi0yMTQ3NDgzNjQ4cjAuCgl1bnNpZ25lZDowcjIxNDc0ODM2NDguCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lLTY0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtOTIyMzM3MjAzNjg1NDc3NTgwOCAvIC0xKSlyJCgoLTkyMjMzNzIwMzY4NTQ3NzU4MDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4IC8gLTEpKXIkKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi05MjIzMzcyMDM2ODU0Nzc1ODA4cjAuCgl1bnNpZ25lZDowcjkyMjMzNzIwMzY4NTQ3NzU4MDguCi0tLQpuYW1lOiBhcml0aC1hc3NvcC1hc3NvYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYXNzb2NpYXRpdml0eSBvZiBhc3NpZ25tZW50LW9wZXJhdG9yIG9wZXJhdG9yCnN0ZGluOgoJdHlwZXNldCAtaSBpPTEgaj0yIGs9MwoJZWNobyAkKChpICs9IGogKz0gaykpCgllY2hvICRpLCRqLCRrCmV4cGVjdGVkLXN0ZG91dDoKCTYKCTYsNSwzCi0tLQpuYW1lOiBhcml0aC1tYW5kYXRvcnkKZGVzY3JpcHRpb246CglJZiBNS1NIX0dDQzU1MDA5IGlzIHNldCB3aGVuIGNvbXBpbGluZywgcGFzc2luZyBvZgoJdGhpcyB0ZXN0IGlzICptYW5kYXRvcnkqIGZvciBhIHZhbGlkIG1rc2ggZXhlY3V0YWJsZSEKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCXR5cGVzZXQgLWkgc2FyaT0wCgl0eXBlc2V0IC1VaSB1YXJpPTAKCXR5cGVzZXQgLWkgeD0wCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4KCWxldCAtLXNhcmkgLS11YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4KCXNhcmk9MjE0NzQ4MzY0NyB1YXJpPTIxNDc0ODM2NDcKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLgoJbGV0ICsrc2FyaSArK3VhcmkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLgoJbGV0IC0tc2FyaSAtLXVhcmkKCWxldCAnc2FyaSAqPSAyJyAndWFyaSAqPSAyJwoJbGV0ICsrc2FyaSArK3VhcmkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLgoJbGV0ICsrc2FyaSArK3VhcmkKCXByaW50IC1yIC0tICQoKHgrKykpOiRzYXJpPSR1YXJpLgoJc2FyaT0tMjE0NzQ4MzY0OCB1YXJpPS0yMTQ3NDgzNjQ4CglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4KCWxldCAtLXNhcmkgLS11YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4KZXhwZWN0ZWQtc3Rkb3V0OgoJMDowPTAuCgkxOi0xPTQyOTQ5NjcyOTUuCgkyOjIxNDc0ODM2NDc9MjE0NzQ4MzY0Ny4KCTM6LTIxNDc0ODM2NDg9MjE0NzQ4MzY0OC4KCTQ6LTE9NDI5NDk2NzI5NS4KCTU6MD0wLgoJNjotMjE0NzQ4MzY0OD0yMTQ3NDgzNjQ4LgoJNzoyMTQ3NDgzNjQ3PTIxNDc0ODM2NDcuCi0tLQpuYW1lOiBhcml0aC11bnNpZ25lZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdW5zaWduZWQgYXJpdGhtZXRpY3Mgd29yawpjYXRlZ29yeTogaW50OjMyCnN0ZGluOgoJIyBzaWduZWQgdnMgdW5zaWduZWQKCWVjaG8geDEgJCgoLTEpKSAkKCgjLTEpKQoJIyBjYWxjdWxhdGluZwoJdHlwZXNldCAtaSB2cwoJdHlwZXNldCAtVWkgdnUKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDIgJHZzICR2dQoJKCggdnMgJT0gMjE0NzQ4MzY0NyApKQoJKCggdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4MyAkdnMgJHZ1Cgl2cz00MTIzNDU2Nzg5OyB2dT00MTIzNDU2Nzg5CgkoKCAjIHZzICU9IDIxNDc0ODM2NDcgKSkKCSgoICMgdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4NCAkdnMgJHZ1CgkjIG1ha2Ugc3VyZSB0aGUgY2FsY3VsYXRpb24gZG9lcyBub3QgY2hhbmdlIHVuc2lnbmVkIGZsYWcKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDUgJHZzICR2dQoJIyBzaG9ydCBmb3JtCgllY2hvIHg2ICQoKCMgdnMgJSAyMTQ3NDgzNjQ3KSkgJCgoIyB2dSAlIDIxNDc0ODM2NDcpKQoJIyBhcnJheSByZWZzCglzZXQgLUEgdmEKCXZhWzE5NzU5NzMxNDJdPXJpZ2h0Cgl2YVs0MTIzNDU2Nzg5XT13cm9uZwoJZWNobyB4NyAke3ZhWyM0MTIzNDU2Nzg5JTIxNDc0ODM2NDddfQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXgzIC0xNzE1MTA1MDcgNDEyMzQ1Njc4OQoJeDQgMTk3NTk3MzE0MiAxOTc1OTczMTQyCgl4NSAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXg2IDE5NzU5NzMxNDIgMTk3NTk3MzE0MgoJeDcgcmlnaHQKLS0tCm5hbWU6IGFyaXRoLWxpbWl0MzItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFyaXRobWV0aWNzIGFyZSAzMiBiaXQKY2F0ZWdvcnk6IGludDozMgpzdGRpbjoKCSMgc2lnbmVkIHZzIHVuc2lnbmVkCgllY2hvIHgxICQoKC0xKSkgJCgoIy0xKSkKCSMgY2FsY3VsYXRpbmcKCXR5cGVzZXQgLWkgdnMKCXR5cGVzZXQgLVVpIHZ1Cgl2cz0yMTQ3NDgzNjQ3OyB2dT0yMTQ3NDgzNjQ3CgllY2hvIHgyICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDMgJHZzICR2dQoJdnM9NDI5NDk2NzI5NTsgdnU9NDI5NDk2NzI5NQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAyMTQ3NDgzNjQ3IDIxNDc0ODM2NDcKCXgzIC0yMTQ3NDgzNjQ4IDIxNDc0ODM2NDgKCXg0IC0xIDQyOTQ5NjcyOTUKCXg1IDAgMAoJeDYgMSAxCi0tLQpuYW1lOiBhcml0aC1saW1pdDY0LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBhcml0aG1ldGljcyBhcmUgNjQgYml0CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgkjIHNpZ25lZCB2cyB1bnNpZ25lZAoJZWNobyB4MSAkKCgtMSkpICQoKCMtMSkpCgkjIGNhbGN1bGF0aW5nCgl0eXBlc2V0IC1pIHZzCgl0eXBlc2V0IC1VaSB2dQoJdnM9OTIyMzM3MjAzNjg1NDc3NTgwNzsgdnU9OTIyMzM3MjAzNjg1NDc3NTgwNwoJZWNobyB4MiAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHgzICR2cyAkdnUKCXZzPTE4NDQ2NzQ0MDczNzA5NTUxNjE1OyB2dT0xODQ0Njc0NDA3MzcwOTU1MTYxNQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDIgOTIyMzM3MjAzNjg1NDc3NTgwNyA5MjIzMzcyMDM2ODU0Nzc1ODA3Cgl4MyAtOTIyMzM3MjAzNjg1NDc3NTgwOCA5MjIzMzcyMDM2ODU0Nzc1ODA4Cgl4NCAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDUgMCAwCgl4NiAxIDEKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIG5vdCBjb2xsYXBzZWQgYWZ0ZXIgIwpzdGRpbjoKCWVjaG8gaGkgI3RoZXJlIFwKCWVjaG8gZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLWlnbi0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBub3QgY29sbGFwc2VkIGluc2lkZSBzaW5nbGUgcXVvdGVzCnN0ZGluOgoJZWNobyAnaGkgXAoJdGhlcmUnCgllY2hvIGZvbGtzCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCglmb2xrcwotLS0KbmFtZTogYmtzbC1ubC1pZ24tMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgbm90IGNvbGxhcHNlZCBpbnNpZGUgc2luZ2xlIHF1b3RlcwpzdGRpbjoKCWNhdCA8PCBcRU9GCgloaSBcCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCi0tLQpuYW1lOiBia3NsLW5sLWlnbi00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaW50ZXJhY3Rpb24gb2YgYWxpYXNlcywgc2luZ2xlIHF1b3RlcyBhbmQgaGVyZS1kb2N1bWVudHMKCXdpdGggYmFja3NsYXNoLW5ld2xpbmUKCShkb24ndCBrbm93IHdoYXQgUE9TSVggaGFzIHRvIHNheSBhYm91dCB0aGlzKQpzdGRpbjoKCWE9MgoJYWxpYXMgeD0nZWNobyBoaQoJY2F0IDw8ICJFT0YiCglmb29cCgliYXIKCXNvbWUnCgl4Cgltb3JlXAoJc3R1ZmYkYQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29cCgliYXIKCXNvbWUKCW1vcmVcCglzdHVmZiRhCi0tLQpuYW1lOiBia3NsLW5sLWlnbi01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgd2hhdCBoYXBwZW5zIHdpdGggYmFja3NsYXNoIGF0IGVuZCBvZiBpbnB1dAoJKHRoZSBvbGQgQm91cm5lIHNoZWxsIHRyYXNoZXMgdGhlbTsgc28gZG8gd2UpCnN0ZGluOiAhCgllY2hvIGBlY2hvIGZvb1xcYGJhcgoJZWNobyBoaVwKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vYmFyCgloaQotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkCiMKbmFtZTogYmtzbC1ubC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgYmVmb3JlLCBpbiB0aGUgbWlkZGxlIG9mLCBhbmQKCWFmdGVyIHdvcmRzCnN0ZGluOgoJIAkgCVwKCQkJIGVjaG8gaGlcCglUaGVyZSwgXAoJZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlUaGVyZSwgZm9sa3MKLS0tCm5hbWU6IGJrc2wtbmwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQgc2VxdWVuY2VzCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CglhPTEyCglhYj0xOQoJZWNobyAkXAoJYQoJZWNobyAkYVwKCWIKCWVjaG8gJFwKCXthfQoJZWNobyAke2FcCglifQoJZWNobyAke2FiXAoJfQpleHBlY3RlZC1zdGRvdXQ6CgkxMgoJMTkKCTEyCgkxOQoJMTkKLS0tCm5hbWU6IGJrc2wtbmwtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQoLi4pIGFuZCBgLi4uYCBzZXF1ZW5jZXMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWVjaG8gJFwKCShlY2hvIGZvb2JhcjEpCgllY2hvICQoXAoJZWNobyBmb29iYXIyKQoJZWNobyAkKGVjaG8gZm9vXAoJYmFyMykKCWVjaG8gJChlY2hvIGZvb2JhcjRcCgkpCgllY2hvIGAKCWVjaG8gc3R1ZmYxYAoJZWNobyBgZWNobyBzdFwKCXVmZjJgCmV4cGVjdGVkLXN0ZG91dDoKCWZvb2JhcjEKCWZvb2JhcjIKCWZvb2JhcjMKCWZvb2JhcjQKCXN0dWZmMQoJc3R1ZmYyCi0tLQpuYW1lOiBia3NsLW5sLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiAkKCguLikpIHNlcXVlbmNlcwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJZWNobyAkXAoJKCgxKzIpKQoJZWNobyAkKFwKCSgxKzIrMykpCgllY2hvICQoKFwKCTErMiszKzQpKQoJZWNobyAkKCgxK1wKCTIrMys0KzUpKQoJZWNobyAkKCgxKzIrMys0KzUrNilcCgkpCmV4cGVjdGVkLXN0ZG91dDoKCTMKCTYKCTEwCgkxNQoJMjEKLS0tCm5hbWU6IGJrc2wtbmwtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluIGRvdWJsZSBxdW90ZWQgc3RyaW5ncwpzdGRpbjoKCWVjaG8gIlwKCWhpIgoJZWNobyAiZm9vXAoJYmFyIgoJZWNobyAiZm9sa3NcCgkiCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29iYXIKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiBoZXJlIGRvY3VtZW50IGRlbGltaXRlcnMKCShrc2g5MyBmYWlscyBzZWNvbmQgcGFydCBvZiB0aGlzKQpzdGRpbjoKCWE9MTIKCWNhdCA8PCBFT1wKCUYKCWE9JGEKCWZvb1wKCWJhcgoJRU9GCgljYXQgPDwgRV9PX0YKCWZvbwoJRV9PX1wKCUYKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhPTEyCglmb29iYXIKCWZvbwoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZG91YmxlLXF1b3RlZCBoZXJlLWRvY3VtZW50CglkZWxpbWl0ZXIuCnN0ZGluOgoJYT0xMgoJY2F0IDw8ICJFT1wKCUYiCglhPSRhCglmb29cCgliYXIKCUVPRgoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWE9JGEKCWZvb1wKCWJhcgoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gdmFyaW91cyAyKyBjaGFyYWN0ZXIgdG9rZW5zCglkZWxpbWl0ZXIuCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CgllY2hvIGhpICZcCgkmIGVjaG8gdGhlcmUKCWVjaG8gZm9vIHxcCgl8IGVjaG8gYmFyCgljYXQgPFwKCTwgRU9GCglzdHVmZgoJRU9GCgljYXQgPFwKCTxcCgktIEVPRgoJCW1vcmUgc3R1ZmYKCUVPRgoJY2F0IDw8XAoJRU9GCglhYmNkZWYKCUVPRgoJZWNobyBoaSA+XAoJPiAvZGV2L251bGwKCWVjaG8gJD8KCWk9MQoJY2FzZSAkaSBpbgoJKFwKCXh8XAoJMVwKCSkgZWNobyBoaTtcCgk7CgkoKikgZWNobyBvb3BzCgllc2FjCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZm9vCglzdHVmZgoJbW9yZSBzdHVmZgoJYWJjZGVmCgkwCgloaQotLS0KbmFtZTogYmtzbC1ubC05CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcIGF0IHRoZSBlbmQgb2YgYW4gYWxpYXMgaXMgY29sbGFwc2VkIHdoZW4gZm9sbG93ZWQKCWJ5IGEgbmV3bGluZQoJKGRvbid0IGtub3cgd2hhdCBQT1NJWCBoYXMgdG8gc2F5IGFib3V0IHRoaXMpCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaVwnCgl4CgllY2hvIHRoZXJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpZWNobyB0aGVyZQotLS0KbmFtZTogYmtzbC1ubC0xMApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaW4gYSBrZXl3b3JkIGlzIGNvbGxhcHNlZApzdGRpbjoKCWlcCglmIHRydWU7IHRoZW5cCgkgZWNobyBwYXNzOyBlbFwKCXNlIGVjaG8gZmFpbDsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJcGFzcwotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkIChrc2ggZXh0ZW5zaW9ucykKIwpuYW1lOiBia3NsLW5sLWtzaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZXh0ZW5kZWQgZ2xvYmJpbmcKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCXh4eD1mb28KCWNhc2UgJHh4eCBpbgoJKGYqXAoJKFwKCW9cCgkpXAoJKSBlY2hvIG9rIDs7CgkqKSBlY2hvIGJhZAoJZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglvawotLS0KbmFtZTogYmtzbC1ubC1rc2gtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICgoLi4uKSkgZXhwcmVzc2lvbnMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWk9MQoJKFwKCShcCglpPWkrMlwKCSlcCgkpCgllY2hvICRpCmV4cGVjdGVkLXN0ZG91dDoKCTMKLS0tCm5hbWU6IGJyZWFrLTEKZGVzY3JpcHRpb246CglTZWUgaWYgYnJlYWsgYnJlYWtzIG91dCBvZiBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhazsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTEKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhayAxOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtMgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWJyZWFrCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kLTMKZXhwZWN0ZWQtc3Rkb3V0OgoJYQoJZW5kLTEKCWEKCWVuZC0yCglhOngKCWVuZC1hCgliOngKCWVuZC1iCgljOngKCWVuZC1jCgllbmQtMwotLS0KbmFtZTogYnJlYWstMgpkZXNjcmlwdGlvbjoKCVNlZSBpZiBicmVhayBicmVha3Mgb3V0IG9mIG5lc3RlZCBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQlicmVhayAyCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWE6eAoJZW5kCi0tLQpuYW1lOiBicmVhay0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46CglicmVhawpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBicmVhay00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipicmVhay4qLwotLS0KbmFtZTogYnJlYWstNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGJyZWFrIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBjb250aW51ZS0xCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGNvbnRpbnVlcyBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC0xCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgY29udGludWUgMTsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTIKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQljb250aW51ZQoJCWVjaG8gYmFkLSRpLSRqCgkgICAgZG9uZQoJICAgIGVjaG8gZW5kLSRpCglkb25lCgllY2hvIGVuZC0zCmV4cGVjdGVkLXN0ZG91dDoKCWEKCWIKCWMKCWVuZC0xCglhCgliCgljCgllbmQtMgoJYTp4CglhOnkKCWE6egoJZW5kLWEKCWI6eAoJYjp5CgliOnoKCWVuZC1iCgljOngKCWM6eQoJYzp6CgllbmQtYwoJZW5kLTMKLS0tCm5hbWU6IGNvbnRpbnVlLTIKZGVzY3JpcHRpb246CglTZWUgaWYgY29udGludWUgYnJlYWtzIG91dCBvZiBuZXN0ZWQgbG9vcHMKc3RkaW46Cglmb3IgaSBpbiBhIGIgYzsgZG8KCSAgICBmb3IgaiBpbiB4IHkgejsgZG8KCQllY2hvICRpOiRqCgkJY29udGludWUgMgoJCWVjaG8gYmFkLSRpLSRqCgkgICAgZG9uZQoJICAgIGVjaG8gZW5kLSRpCglkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhOngKCWI6eAoJYzp4CgllbmQKLS0tCm5hbWU6IGNvbnRpbnVlLTMKZGVzY3JpcHRpb246CglXaGF0IGlmIGNvbnRpbnVlIHVzZWQgb3V0c2lkZSBvZiBhbnkgbG9vcHMKCShrc2g4OCxrc2g5MyBkb24ndCBwcmludCBlcnJvciBtZXNzYWdlcyBoZXJlKQpzdGRpbjoKCWNvbnRpbnVlCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qY29udGludWUuKi8KLS0tCm5hbWU6IGNvbnRpbnVlLTQKZGVzY3JpcHRpb246CglXaGF0IGlmIGNvbnRpbnVlIE4gdXNlZCB3aGVuIG9ubHkgTi0xIGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46Cglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgY29udGludWUgMjsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWEKCWIKCWMKCWVuZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjb250aW51ZS01CmRlc2NyaXB0aW9uOgoJRXJyb3IgaWYgY29udGludWUgYXJndW1lbnQgaXNuJ3QgYSBudW1iZXIKc3RkaW46Cglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgY29udGludWUgYWJjOyBlY2hvIG1vcmUtJGk7IGRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qY29udGludWUuKi8KLS0tCm5hbWU6IGNkLWhpc3RvcnkKZGVzY3JpcHRpb246CglUZXN0IHNvbWVvbmUncyBDRCBoaXN0b3J5IHBhY2thZ2UgKHVzZXMgYXJyYXlzKQpzdGRpbjoKCSMgZ28gdG8ga25vd24gcGxhY2UgYmVmb3JlIGRvaW5nIGFueXRoaW5nCgljZCAvCgkKCWFsaWFzIGNkPV9jZAoJZnVuY3Rpb24gX2NkCgl7CgkJdHlwZXNldCAtaSBjZGxlbiBpCgkJdHlwZXNldCB0CgkKCQlpZiBbICQjIC1lcSAwIF0KCQl0aGVuCgkJCXNldCAtLSAkSE9NRQoJCWZpCgkKCQlpZiBbICIkQ0RISVNURklMRSIgLWEgLXIgIiRDREhJU1RGSUxFIiBdICMgaWYgZGlyZWN0b3J5IGhpc3RvcnkgZXhpc3RzCgkJdGhlbgoJCQl0eXBlc2V0IENESElTVAoJCQlpPS0xCgkJCXdoaWxlIHJlYWQgLXIgdAkJCSMgcmVhZCBkaXJlY3RvcnkgaGlzdG9yeSBmaWxlCgkJCWRvCgkJCQlDREhJU1RbaT1pKzFdPSR0CgkJCWRvbmUgPCRDREhJU1RGSUxFCgkJZmkKCQoJCWlmIFsgIiR7Q0RISVNUWzBdfSIgIT0gIiRQV0QiIC1hICIkUFdEIiAhPSAiIiBdCgkJdGhlbgoJCQlfY2RpbnMJCQkJIyBpbnNlcnQgJFBXRCBpbnRvIGNkIGhpc3RvcnkKCQlmaQoJCgkJY2RsZW49JHsjQ0RISVNUWypdfQkJCSMgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhpc3RvcnkKCQoJCWNhc2UgIiRAIiBpbgoJCS0pCQkJCQkjIGNkIHRvIG5ldyBkaXIKCQkJaWYgWyAiJE9MRFBXRCIgPSAiIiBdICYmICgoY2RsZW4+MSkpCgkJCXRoZW4KCQkJCSdwcmludCcgJHtDREhJU1RbMV19CgkJCQknY2QnICR7Q0RISVNUWzFdfQoJCQkJX3B3ZAoJCQllbHNlCgkJCQknY2QnICRACgkJCQlfcHdkCgkJCWZpCgkJCTs7CgkJLWwpCQkJCQkjIHByaW50IGRpcmVjdG9yeSBsaXN0CgkJCXR5cGVzZXQgLVIzIG51bQoJCQkoKGk9Y2RsZW4pKQoJCQl3aGlsZSAoKChpPWktMSk+PTApKQoJCQlkbwoJCQkJbnVtPSRpCgkJCQkncHJpbnQnICIkbnVtICR7Q0RISVNUW2ldfSIKCQkJZG9uZQoJCQlyZXR1cm4KCQkJOzsKCQktWzAtOV18LVswLTldWzAtOV0pCQkJIyBjZCB0byBkaXIgaW4gbGlzdAoJCQlpZiAoKChpPSR7MSMtfSk8Y2RsZW4pKQoJCQl0aGVuCgkJCQkncHJpbnQnICR7Q0RISVNUW2ldfQoJCQkJJ2NkJyAke0NESElTVFtpXX0KCQkJCV9wd2QKCQkJZWxzZQoJCQkJJ2NkJyAkQAoJCQkJX3B3ZAoJCQlmaQoJCQk7OwoJCS0qKQkJCQkJIyBjZCB0byBtYXRjaGVkIGRpciBpbiBsaXN0CgkJCXQ9JHsxIy19CgkJCWk9MQoJCQl3aGlsZSAoKGk8Y2RsZW4pKQoJCQlkbwoJCQkJY2FzZSAke0NESElTVFtpXX0gaW4KCQkJCSokdCopCgkJCQkJJ3ByaW50JyAke0NESElTVFtpXX0KCQkJCQknY2QnICR7Q0RISVNUW2ldfQoJCQkJCV9wd2QKCQkJCQlicmVhawoJCQkJCTs7CgkJCQllc2FjCgkJCQkoKGk9aSsxKSkKCQkJZG9uZQoJCQlpZiAoKGk+PWNkbGVuKSkKCQkJdGhlbgoJCQkJJ2NkJyAkQAoJCQkJX3B3ZAoJCQlmaQoJCQk7OwoJCSopCQkJCQkjIGNkIHRvIG5ldyBkaXIKCQkJJ2NkJyAkQAoJCQlfcHdkCgkJCTs7CgkJZXNhYwoJCgkJX2NkaW5zCQkJCQkjIGluc2VydCAkUFdEIGludG8gY2QgaGlzdG9yeQoJCgkJaWYgWyAiJENESElTVEZJTEUiIF0KCQl0aGVuCgkJCWNkbGVuPSR7I0NESElTVFsqXX0JCSMgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhpc3RvcnkKCQoJCQlpPTAKCQkJd2hpbGUgKChpPGNkbGVuKSkKCQkJZG8KCQkJCSdwcmludCcgLXIgJHtDREhJU1RbaV19CSMgdXBkYXRlIGRpcmVjdG9yeSBoaXN0b3J5CgkJCQkoKGk9aSsxKSkKCQkJZG9uZSA+JENESElTVEZJTEUKCQlmaQoJfQoJCglmdW5jdGlvbiBfY2RpbnMJCQkJCSMgaW5zZXJ0ICRQV0QgaW50byBjZCBoaXN0b3J5Cgl7CQkJCQkJIyBtZWFudCB0byBiZSBjYWxsZWQgb25seSBieSBfY2QKCQl0eXBlc2V0IC1pIGkKCQoJCSgoaT0wKSkKCQl3aGlsZSAoKGk8JHsjQ0RISVNUWypdfSkpCQkjIHNlZSBpZiBkaXIgaXMgYWxyZWFkeSBpbiBsaXN0CgkJZG8KCQkJaWYgWyAiJHtDREhJU1RbJGldfSIgPSAiJFBXRCIgXQoJCQl0aGVuCgkJCQlicmVhawoJCQlmaQoJCQkoKGk9aSsxKSkKCQlkb25lCgkKCQlpZiAoKGk+MjIpKQkJCQkjIGxpbWl0IG1heCBzaXplIG9mIGxpc3QKCQl0aGVuCgkJCWk9MjIKCQlmaQoJCgkJd2hpbGUgKCgoaT1pLTEpPj0wKSkJCQkjIGJ1bXAgb2xkIGRpcnMgaW4gbGlzdAoJCWRvCgkJCUNESElTVFtpKzFdPSR7Q0RISVNUW2ldfQoJCWRvbmUKCQoJCUNESElTVFswXT0kUFdECQkJCSMgaW5zZXJ0IG5ldyBkaXJlY3RvcnkgaW4gbGlzdAoJfQoJCgkKCWZ1bmN0aW9uIF9wd2QKCXsKCQlpZiBbIC1uICIkRUNEIiBdCgkJdGhlbgoJCQlwd2QgMT4mNgoJCWZpCgl9CgkjIFN0YXJ0IG9mIHRlc3QKCWNkIC90bXAKCWNkIC9iaW4KCWNkIC9ldGMKCWNkIC0KCWNkIC0yCgljZCAtbApleHBlY3RlZC1zdGRvdXQ6CgkvYmluCgkvdG1wCgkgIDMgLwoJICAyIC9ldGMKCSAgMSAvYmluCgkgIDAgL3RtcAotLS0KbmFtZTogY2QtcGUKZGVzY3JpcHRpb246CglDaGVjayBwYWNrYWdlIGZvciBjZCAtUGUKbmVlZC1wYXNzOiBubwojIHRoZSBtdiBjb21tYW5kIGZhaWxzIG9uIEN5Z3dpbgojIEh1cmQgYWJvcnRzIHRoZSB0ZXN0c3VpdGUgKHBlcm1pc3Npb24gZGVuaWVkKQojIFFOWCBkb2VzIG5vdCBmaW5kIHN1YmRpciB0byBjZCBpbnRvCmNhdGVnb3J5OiAhb3M6Y3lnd2luLCFvczpnbnUsIW9zOm1zeXMsIW9zOm50bywhbm9zeW1saW5rCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4IgoJbWtkaXIgbm9yZWFkIG5vcmVhZC90YXJnZXQgbm9yZWFkL3RhcmdldC9zdWJkaXIKCWxuIC1zIG5vcmVhZCBsaW5rCgljaG1vZCAzMTEgbm9yZWFkCgljZCAtUCQxIC4KCWVjaG8gMD0kPwoJYndkPSRQV0QKCWNkIC1QJDEgbGluay90YXJnZXQKCWVjaG8gMT0kPywke1BXRCMkYndkL30KCWVwd2Q9JCgkVFNIRUxMIC1jIHB3ZCAyPi9kZXYvbnVsbCkKCSMgVGhpcyB1bmV4cGVjdGVkbHkgc3VjY2VlZHMgb24gR05VL0xpbnV4IGFuZCBNaWRuaWdodEJTRAoJI2VjaG8gcHdkPSQ/LCRlcHdkCgkjIGV4cGVjdDoJcHdkPTEsCgltdiAuLi8uLi9ub3JlYWQgLi4vLi4vcmVuYW1lZAoJY2QgLVAkMSBzdWJkaXIKCWVjaG8gMj0kPywke1BXRCMkYndkL30KCWNkICRid2QKCWNobW9kIDc1NSByZW5hbWVkCglybSAtcmYgbm9yZWFkIGxpbmsgcmVuYW1lZApzdGRpbjoKCWV4cG9ydCBUU0hFTEw9IiRfX3Byb2duYW1lIgoJIiRfX3Byb2duYW1lIiB4CgllY2hvICJub3cgd2l0aCAtZToiCgkiJF9fcHJvZ25hbWUiIHggZQpleHBlY3RlZC1zdGRvdXQ6CgkwPTAKCTE9MCxub3JlYWQvdGFyZ2V0CgkyPTAsbm9yZWFkL3RhcmdldC9zdWJkaXIKCW5vdyB3aXRoIC1lOgoJMD0wCgkxPTAsbm9yZWFkL3RhcmdldAoJMj0xLG5vcmVhZC90YXJnZXQvc3ViZGlyCi0tLQpuYW1lOiBlbnYtcHJvbXB0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcm9tcHQgbm90IHByaW50ZWQgd2hlbiBwcm9jZXNzaW5nIEVOVgplbnYtc2V0dXA6ICFFTlY9Li9mb28hCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJmb28iCglYWFg9XwoJUFMxPVgKCWZhbHNlICYmIGVjaG8gaG1tbQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgllY2hvIGhpJHtYWFh9dGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlfdGhlcmUKZXhwZWN0ZWQtc3RkZXJyOiAhCglYWAotLS0KbmFtZTogZXhwYW5kLXVnbHkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlaXJkICR7Zm9vK2Jhcn0gY29uc3RydWN0cyBhcmUgcGFyc2VkIGNvcnJlY3RseQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIjwkeD4gIjsgZG9uZScgPnBmcwoJY2htb2QgK3ggcGZuIHBmcwoJKGVjaG8gMSAke0lGUysnfSd6fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMQoJKGVjaG8gMiAiJHtJRlMrJ30nen0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyCgkoZWNobyAzICJmb28gJHtJRlMrJ2Jhcn0gYmF6IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMwoJKGVjaG8gLW4gJzQgJzsgLi9wZm4gImZvbyAke0lGUysiYiAgIGMifSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0CgkoZWNobyAtbiAnNSAnOyAuL3BmbiAiZm9vICR7SUZTK2IgICBjfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA1CgkoZWNobyA2ICR7SUZTKyJ9Inp9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA2CgkoZWNobyA3ICIke0lGUysifSJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDcKCShlY2hvIDggIiR7SUZTK1wifVwien0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA4CgkoZWNobyA5ICIke0lGUytcIlx9XCJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDkKCShlY2hvIDEwIGZvbyAke0lGUysnYmFyfSBiYXonfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTAKCShlY2hvIDExICIkKGVjaG8gIiR7SUZTKyd9J3p9IikiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMQoJKGVjaG8gMTIgIiQoZWNobyAke0lGUysnfSd6fSkiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMgoJKGVjaG8gMTMgJHtJRlMrXH16fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTMKCShlY2hvIDE0ICIke0lGUytcfXp9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTQKCXU9eDsgKGVjaG8gLW4gJzE1ICc7IC4vcGZzICJmb28gJHtJRlMrYSJiJHV7IHsie3tcfWJ9IGMgJHtJRlMrZHt9fSBiYXIiICR7SUZTLWV7fX0gYmF6OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE1CglsPXQ7IChlY2hvIDE2ICR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTYKCWw9dDsgKGVjaG8gMTcgJHtJRlMraCQoZWNobyAtbiBpICR7SUZTKyRsfWgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTcKCWw9dDsgKGVjaG8gMTggIiR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE4CglsPXQ7IChlY2hvIDE5ICIke0lGUytoJChlY2hvIC1uIGkgJHtJRlMrJGx9aCllcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTkKCWw9dDsgKGVjaG8gMjAgJHtJRlMraGBlY2hvIC1uIGkgIiR7SUZTKyRsfSJoYGVyZX0pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIwCglsPXQ7IChlY2hvIDIxICR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjEKCWw9dDsgKGVjaG8gMjIgIiR7SUZTK2hgZWNobyAtbiBpICIke0lGUyskbH0iaGBlcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjIKCWw9dDsgKGVjaG8gMjMgIiR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIzCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNCAnOyAuL3BmbiAiJHtJRlMrJyRrZXknfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDI0CglrZXk9dmFsdWU7IChlY2hvIC1uICcyNSAnOyAuL3BmbiAiJHtJRlMrIicka2V5JyJ9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjUJIyBrc2g5Mzog4oCcJyRrZXkn4oCdCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNiAnOyAuL3BmbiAke0lGUysnJGtleSd9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNgoJa2V5PXZhbHVlOyAoZWNobyAtbiAnMjcgJzsgLi9wZm4gJHtJRlMrIicka2V5JyJ9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNwoJKGVjaG8gLW4gJzI4ICc7IC4vcGZuICIke0lGUysiJyJ4IH4geCd9J3giJ30ieH0iICMnKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOAoJdT14OyAoZWNobyAtbiAnMjkgJzsgLi9wZnMgZm9vICR7SUZTK2EiYiR1eyB7Insge1x9Yn0gYyAke0lGUytke319IGJhciAke0lGUy1le319IGJhejsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOQoJKGVjaG8gLW4gJzMwICc7IC4vcGZzICR7SUZTK2ZvbyAnYlwKCWFyJyBiYXp9OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IChlY2hvIGZhaWxlZCBpbiAzMDsgZWNobyBmYWlsZWQgaW4gMzEpCgkoZWNobyAtbiAnMzIgJzsgLi9wZnMgJHtJRlMrZm9vICJiXAoJYXIiIGJhen07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzIKCShlY2hvIC1uICczMyAnOyAuL3BmcyAiJHtJRlMrZm9vICdiXAoJYXInIGJhen0iOyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDMzCgkoZWNobyAtbiAnMzQgJzsgLi9wZnMgIiR7SUZTK2ZvbyAiYlwKCWFyIiBiYXp9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNAoJKGVjaG8gLW4gJzM1ICc7IC4vcGZzICR7dj1hXCBifSB4ICR7dj1jXCBkfTsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNQoJKGVjaG8gLW4gJzM2ICc7IC4vcGZzICIke3Y9YVwgYn0iIHggIiR7dj1jXCBkfSI7IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzYKCShlY2hvIC1uICczNyAnOyAuL3BmcyAke3YtYVwgYn0geCAke3YtY1wgZH07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzcKCShlY2hvIDM4ICR7SUZTK3gnYSd5fSAvICIke0lGUyt4J2EneX0iIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDM4Cglmb289IngnYSd5IjsgKGVjaG8gMzkgJHtmb28lKidhJyp9IC8gIiR7Zm9vJSonYScqfSIgLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzkKCWZvbz0iYSBiIGMiOyAoZWNobyAtbiAnNDAgJzsgLi9wZnMgIiR7Zm9vI2F9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0MApleHBlY3RlZC1zdGRvdXQ6CgkxIH16CgkyICcnen0KCTMgZm9vICdiYXIgYmF6Cgk0IGZvbyBiICAgYyBiYXoKCTUgZm9vIGIgICBjIGJhegoJNiB9egoJNyB9egoJOCAiInp9Cgk5ICJ9InoKCTEwIGZvbyBiYXJ9IGJhegoJMTEgJyd6fQoJMTIgfXoKCTEzIH16CgkxNCB9egoJMTUgPGZvbyBhYnh7IHt7e31iIGMgZHt9IGJhcj4gPH0+IDxiYXo+IC4KCTE2IGhpIHRoZXJlCgkxNyBoaSB0aGVyZQoJMTggaGkgdGhlcmUKCTE5IGhpIHRoZXJlCgkyMCBoaSB0aGVyZQoJMjEgaGkgdGhlcmUKCTIyIGhpIHRoZXJlCgkyMyBoaSB0aGVyZQoJMjQgJ3ZhbHVlJwoJMjUgJ3ZhbHVlJwoJMjYgJGtleQoJMjcgJ3ZhbHVlJwoJMjggJ3ggfiB4Jyd4fSJ4fSIgIwoJMjkgPGZvbz4gPGFieHsge3s+IDx7fWI+IDxjPiA8ZHt9PiA8YmFyPiA8fT4gPGJhej4gLgoJMzAgPGZvbz4gPGJcCglhcj4gPGJhej4gLgoJMzIgPGZvbz4gPGJhcj4gPGJhej4gLgoJMzMgPGZvbyAnYmFyJyBiYXo+IC4KCTM0IDxmb28gYmFyIGJhej4gLgoJMzUgPGE+IDxiPiA8eD4gPGE+IDxiPiAuCgkzNiA8YVwgYj4gPHg+IDxhXCBiPiAuCgkzNyA8YSBiPiA8eD4gPGMgZD4gLgoJMzggeGF5IC8geCdhJ3kgLgoJMzkgeCcgLyB4JyAuCgk0MCA8IGIgYz4gLgotLS0KbmFtZTogZXhwYW5kLXVuZ2xvYi1kYmxxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWd1bGFyICIke2ZvbytiYXJ9IiBjb25zdHJ1Y3RzIGFyZSBwYXJzZWQgY29ycmVjdGx5CnN0ZGluOgoJdT14Cgl0bF9ub3JtKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gIiQxIHBsdXMgbm9ybSBmb28gJHt2KydiYXInfSBiYXoiKQoJCShlY2hvICIkMSBkYXNoIG5vcm0gZm9vICR7di0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgZXFhbCBub3JtIGZvbyAke3Y9J2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIHFzdG4gbm9ybSBmb28gJHt2PydiYXInfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gbm9ybSAtPiBlcnJvciIKCQkoZWNobyAiJDEgUExVUyBub3JtIGZvbyAke3Y6KydiYXInfSBiYXoiKQoJCShlY2hvICIkMSBEQVNIIG5vcm0gZm9vICR7djotJ2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIEVRQUwgbm9ybSBmb28gJHt2Oj0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgUVNUTiBub3JtIGZvbyAke3Y6PydiYXInfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gbm9ybSAtPiBlcnJvciIKCX0KCXRsX3BhcmVuKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gIiQxIHBsdXMgcGFybiBmb28gJHt2KyhiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBkYXNoIHBhcm4gZm9vICR7di0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgZXFhbCBwYXJuIGZvbyAke3Y9KGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIHFzdG4gcGFybiBmb28gJHt2PyhiYXIpfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gcGFybiAtPiBlcnJvciIKCQkoZWNobyAiJDEgUExVUyBwYXJuIGZvbyAke3Y6KyhiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBEQVNIIHBhcm4gZm9vICR7djotKGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIEVRQUwgcGFybiBmb28gJHt2Oj0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgUVNUTiBwYXJuIGZvbyAke3Y6PyhiYXIpfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gcGFybiAtPiBlcnJvciIKCX0KCXRsX2JyYWNlKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gIiQxIHBsdXMgYnJhYyBmb28gJHt2K2EkdXt7e1x9Yn0gYyAke3YrZHt9fSBiYXoiKQoJCShlY2hvICIkMSBkYXNoIGJyYWMgZm9vICR7di1hJHV7e3tcfWJ9IGMgJHt2LWR7fX0gYmF6IikKCQkoZWNobyAiJDEgZXFhbCBicmFjIGZvbyAke3Y9YSR1e3t7XH1ifSBjICR7dj1ke319IGJheiIpCgkJKGVjaG8gIiQxIHFzdG4gYnJhYyBmb28gJHt2P2EkdXt7e1x9Yn0gYyAke3Y/ZHt9fSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gYnJhYyAtPiBlcnJvciIKCQkoZWNobyAiJDEgUExVUyBicmFjIGZvbyAke3Y6K2EkdXt7e1x9Yn0gYyAke3Y6K2R7fX0gYmF6IikKCQkoZWNobyAiJDEgREFTSCBicmFjIGZvbyAke3Y6LWEkdXt7e1x9Yn0gYyAke3Y6LWR7fX0gYmF6IikKCQkoZWNobyAiJDEgRVFBTCBicmFjIGZvbyAke3Y6PWEkdXt7e1x9Yn0gYyAke3Y6PWR7fX0gYmF6IikKCQkoZWNobyAiJDEgUVNUTiBicmFjIGZvbyAke3Y6P2EkdXt7e1x9Yn0gYyAke3Y6P2R7fX0gYmF6IikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBRU1ROIGJyYWMgLT4gZXJyb3IiCgl9Cgl0bF9ub3JtIDEgLQoJdGxfbm9ybSAyICcnCgl0bF9ub3JtIDMgeAoJdGxfcGFyZW4gNCAtCgl0bF9wYXJlbiA1ICcnCgl0bF9wYXJlbiA2IHgKCXRsX2JyYWNlIDcgLQoJdGxfYnJhY2UgOCAnJwoJdGxfYnJhY2UgOSB4CmV4cGVjdGVkLXN0ZG91dDoKCTEgcGx1cyBub3JtIGZvbyAgYmF6CgkxIGRhc2ggbm9ybSBmb28gJ2JhcicgYmF6CgkxIGVxYWwgbm9ybSBmb28gJ2JhcicgYmF6CgkxIHFzdG4gbm9ybSAtPiBlcnJvcgoJMSBQTFVTIG5vcm0gZm9vICBiYXoKCTEgREFTSCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgRVFBTCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgUVNUTiBub3JtIC0+IGVycm9yCgkyIHBsdXMgbm9ybSBmb28gJ2JhcicgYmF6CgkyIGRhc2ggbm9ybSBmb28gIGJhegoJMiBlcWFsIG5vcm0gZm9vICBiYXoKCTIgcXN0biBub3JtIGZvbyAgYmF6CgkyIFBMVVMgbm9ybSBmb28gIGJhegoJMiBEQVNIIG5vcm0gZm9vICdiYXInIGJhegoJMiBFUUFMIG5vcm0gZm9vICdiYXInIGJhegoJMiBRU1ROIG5vcm0gLT4gZXJyb3IKCTMgcGx1cyBub3JtIGZvbyAnYmFyJyBiYXoKCTMgZGFzaCBub3JtIGZvbyB4IGJhegoJMyBlcWFsIG5vcm0gZm9vIHggYmF6CgkzIHFzdG4gbm9ybSBmb28geCBiYXoKCTMgUExVUyBub3JtIGZvbyAnYmFyJyBiYXoKCTMgREFTSCBub3JtIGZvbyB4IGJhegoJMyBFUUFMIG5vcm0gZm9vIHggYmF6CgkzIFFTVE4gbm9ybSBmb28geCBiYXoKCTQgcGx1cyBwYXJuIGZvbyAgYmF6Cgk0IGRhc2ggcGFybiBmb28gKGJhcikgYmF6Cgk0IGVxYWwgcGFybiBmb28gKGJhcikgYmF6Cgk0IHFzdG4gcGFybiAtPiBlcnJvcgoJNCBQTFVTIHBhcm4gZm9vICBiYXoKCTQgREFTSCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgRVFBTCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgUVNUTiBwYXJuIC0+IGVycm9yCgk1IHBsdXMgcGFybiBmb28gKGJhcikgYmF6Cgk1IGRhc2ggcGFybiBmb28gIGJhegoJNSBlcWFsIHBhcm4gZm9vICBiYXoKCTUgcXN0biBwYXJuIGZvbyAgYmF6Cgk1IFBMVVMgcGFybiBmb28gIGJhegoJNSBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNSBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNSBRU1ROIHBhcm4gLT4gZXJyb3IKCTYgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgZGFzaCBwYXJuIGZvbyB4IGJhegoJNiBlcWFsIHBhcm4gZm9vIHggYmF6Cgk2IHFzdG4gcGFybiBmb28geCBiYXoKCTYgUExVUyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgREFTSCBwYXJuIGZvbyB4IGJhegoJNiBFUUFMIHBhcm4gZm9vIHggYmF6Cgk2IFFTVE4gcGFybiBmb28geCBiYXoKCTcgcGx1cyBicmFjIGZvbyAgYyB9IGJhegoJNyBkYXNoIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk3IGVxYWwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJNyBxc3RuIGJyYWMgLT4gZXJyb3IKCTcgUExVUyBicmFjIGZvbyAgYyB9IGJhegoJNyBEQVNIIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk3IEVRQUwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJNyBRU1ROIGJyYWMgLT4gZXJyb3IKCTggcGx1cyBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOCBkYXNoIGJyYWMgZm9vICBjIH0gYmF6Cgk4IGVxYWwgYnJhYyBmb28gIGMgfSBiYXoKCTggcXN0biBicmFjIGZvbyAgYyB9IGJhegoJOCBQTFVTIGJyYWMgZm9vICBjIH0gYmF6Cgk4IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTggRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk4IFFTVE4gYnJhYyAtPiBlcnJvcgoJOSBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk5IGRhc2ggYnJhYyBmb28geCBjIHh9IGJhegoJOSBlcWFsIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgcXN0biBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IFBMVVMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTkgREFTSCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IEVRQUwgYnJhYyBmb28geCBjIHh9IGJhegoJOSBRU1ROIGJyYWMgZm9vIHggYyB4fSBiYXoKLS0tCm5hbWU6IGV4cGFuZC11bmdsb2ItdW5xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWd1bGFyICR7Zm9vK2Jhcn0gY29uc3RydWN0cyBhcmUgcGFyc2VkIGNvcnJlY3RseQpzdGRpbjoKCXU9eAoJdGxfbm9ybSgpIHsKCQl2PSQyCgkJdGVzdCB4IiR2IiA9IHgiLSIgJiYgdW5zZXQgdgoJCShlY2hvICQxIHBsdXMgbm9ybSBmb28gJHt2KydiYXInfSBiYXopCgkJKGVjaG8gJDEgZGFzaCBub3JtIGZvbyAke3YtJ2Jhcid9IGJheikKCQkoZWNobyAkMSBlcWFsIG5vcm0gZm9vICR7dj0nYmFyJ30gYmF6KQoJCShlY2hvICQxIHFzdG4gbm9ybSBmb28gJHt2PydiYXInfSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBub3JtIC0+IGVycm9yIgoJCShlY2hvICQxIFBMVVMgbm9ybSBmb28gJHt2OisnYmFyJ30gYmF6KQoJCShlY2hvICQxIERBU0ggbm9ybSBmb28gJHt2Oi0nYmFyJ30gYmF6KQoJCShlY2hvICQxIEVRQUwgbm9ybSBmb28gJHt2Oj0nYmFyJ30gYmF6KQoJCShlY2hvICQxIFFTVE4gbm9ybSBmb28gJHt2Oj8nYmFyJ30gYmF6KSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gbm9ybSAtPiBlcnJvciIKCX0KCXRsX3BhcmVuKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gJDEgcGx1cyBwYXJuIGZvbyAke3YrXChiYXInKSd9IGJheikKCQkoZWNobyAkMSBkYXNoIHBhcm4gZm9vICR7di1cKGJhcicpJ30gYmF6KQoJCShlY2hvICQxIGVxYWwgcGFybiBmb28gJHt2PVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgcXN0biBwYXJuIGZvbyAke3Y/XChiYXInKSd9IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBxc3RuIHBhcm4gLT4gZXJyb3IiCgkJKGVjaG8gJDEgUExVUyBwYXJuIGZvbyAke3Y6K1woYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgREFTSCBwYXJuIGZvbyAke3Y6LVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgRVFBTCBwYXJuIGZvbyAke3Y6PVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgUVNUTiBwYXJuIGZvbyAke3Y6P1woYmFyJyknfSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBwYXJuIC0+IGVycm9yIgoJfQoJdGxfYnJhY2UoKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAkMSBwbHVzIGJyYWMgZm9vICR7dithJHV7e3tcfWJ9IGMgJHt2K2R7fX0gYmF6KQoJCShlY2hvICQxIGRhc2ggYnJhYyBmb28gJHt2LWEkdXt7e1x9Yn0gYyAke3YtZHt9fSBiYXopCgkJKGVjaG8gJDEgZXFhbCBicmFjIGZvbyAke3Y9YSR1e3t7XH1ifSBjICR7dj1ke319IGJheikKCQkoZWNobyAkMSBxc3RuIGJyYWMgZm9vICR7dj9hJHV7e3tcfWJ9IGMgJHt2P2R7fX0gYmF6KSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gYnJhYyAtPiBlcnJvciIKCQkoZWNobyAkMSBQTFVTIGJyYWMgZm9vICR7djorYSR1e3t7XH1ifSBjICR7djorZHt9fSBiYXopCgkJKGVjaG8gJDEgREFTSCBicmFjIGZvbyAke3Y6LWEkdXt7e1x9Yn0gYyAke3Y6LWR7fX0gYmF6KQoJCShlY2hvICQxIEVRQUwgYnJhYyBmb28gJHt2Oj1hJHV7e3tcfWJ9IGMgJHt2Oj1ke319IGJheikKCQkoZWNobyAkMSBRU1ROIGJyYWMgZm9vICR7djo/YSR1e3t7XH1ifSBjICR7djo/ZHt9fSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBicmFjIC0+IGVycm9yIgoJfQoJdGxfbm9ybSAxIC0KCXRsX25vcm0gMiAnJwoJdGxfbm9ybSAzIHgKCXRsX3BhcmVuIDQgLQoJdGxfcGFyZW4gNSAnJwoJdGxfcGFyZW4gNiB4Cgl0bF9icmFjZSA3IC0KCXRsX2JyYWNlIDggJycKCXRsX2JyYWNlIDkgeApleHBlY3RlZC1zdGRvdXQ6CgkxIHBsdXMgbm9ybSBmb28gYmF6CgkxIGRhc2ggbm9ybSBmb28gYmFyIGJhegoJMSBlcWFsIG5vcm0gZm9vIGJhciBiYXoKCTEgcXN0biBub3JtIC0+IGVycm9yCgkxIFBMVVMgbm9ybSBmb28gYmF6CgkxIERBU0ggbm9ybSBmb28gYmFyIGJhegoJMSBFUUFMIG5vcm0gZm9vIGJhciBiYXoKCTEgUVNUTiBub3JtIC0+IGVycm9yCgkyIHBsdXMgbm9ybSBmb28gYmFyIGJhegoJMiBkYXNoIG5vcm0gZm9vIGJhegoJMiBlcWFsIG5vcm0gZm9vIGJhegoJMiBxc3RuIG5vcm0gZm9vIGJhegoJMiBQTFVTIG5vcm0gZm9vIGJhegoJMiBEQVNIIG5vcm0gZm9vIGJhciBiYXoKCTIgRVFBTCBub3JtIGZvbyBiYXIgYmF6CgkyIFFTVE4gbm9ybSAtPiBlcnJvcgoJMyBwbHVzIG5vcm0gZm9vIGJhciBiYXoKCTMgZGFzaCBub3JtIGZvbyB4IGJhegoJMyBlcWFsIG5vcm0gZm9vIHggYmF6CgkzIHFzdG4gbm9ybSBmb28geCBiYXoKCTMgUExVUyBub3JtIGZvbyBiYXIgYmF6CgkzIERBU0ggbm9ybSBmb28geCBiYXoKCTMgRVFBTCBub3JtIGZvbyB4IGJhegoJMyBRU1ROIG5vcm0gZm9vIHggYmF6Cgk0IHBsdXMgcGFybiBmb28gYmF6Cgk0IGRhc2ggcGFybiBmb28gKGJhcikgYmF6Cgk0IGVxYWwgcGFybiBmb28gKGJhcikgYmF6Cgk0IHFzdG4gcGFybiAtPiBlcnJvcgoJNCBQTFVTIHBhcm4gZm9vIGJhegoJNCBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNCBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNCBRU1ROIHBhcm4gLT4gZXJyb3IKCTUgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgZGFzaCBwYXJuIGZvbyBiYXoKCTUgZXFhbCBwYXJuIGZvbyBiYXoKCTUgcXN0biBwYXJuIGZvbyBiYXoKCTUgUExVUyBwYXJuIGZvbyBiYXoKCTUgREFTSCBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgRVFBTCBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgUVNUTiBwYXJuIC0+IGVycm9yCgk2IHBsdXMgcGFybiBmb28gKGJhcikgYmF6Cgk2IGRhc2ggcGFybiBmb28geCBiYXoKCTYgZXFhbCBwYXJuIGZvbyB4IGJhegoJNiBxc3RuIHBhcm4gZm9vIHggYmF6Cgk2IFBMVVMgcGFybiBmb28gKGJhcikgYmF6Cgk2IERBU0ggcGFybiBmb28geCBiYXoKCTYgRVFBTCBwYXJuIGZvbyB4IGJhegoJNiBRU1ROIHBhcm4gZm9vIHggYmF6Cgk3IHBsdXMgYnJhYyBmb28gYyB9IGJhegoJNyBkYXNoIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk3IGVxYWwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJNyBxc3RuIGJyYWMgLT4gZXJyb3IKCTcgUExVUyBicmFjIGZvbyBjIH0gYmF6Cgk3IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IFFTVE4gYnJhYyAtPiBlcnJvcgoJOCBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk4IGRhc2ggYnJhYyBmb28gYyB9IGJhegoJOCBlcWFsIGJyYWMgZm9vIGMgfSBiYXoKCTggcXN0biBicmFjIGZvbyBjIH0gYmF6Cgk4IFBMVVMgYnJhYyBmb28gYyB9IGJhegoJOCBEQVNIIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk4IEVRQUwgYnJhYyBmb28gYXh7e3t9YiBjIGF4e3t7fWJ9IGJhegoJOCBRU1ROIGJyYWMgLT4gZXJyb3IKCTkgcGx1cyBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOSBkYXNoIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgZXFhbCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IHFzdG4gYnJhYyBmb28geCBjIHh9IGJhegoJOSBQTFVTIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk5IERBU0ggYnJhYyBmb28geCBjIHh9IGJhegoJOSBFUUFMIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgUVNUTiBicmFjIGZvbyB4IGMgeH0gYmF6Ci0tLQpuYW1lOiBleHBhbmQtdGhyZWVjb2xvbnMtZGJscQpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBhIHBhcnRpY3VsYXIgdGhpbmcgdGhhdCB1c2VkIHRvIHNlZ2ZhdWx0CnN0ZGluOgoJVEVTVD0xMjM0CgllY2hvICIke1RFU1Q6MToyOjN9IgoJZWNobyAkPyBidXQgc3RpbGwgbGl2aW5nCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4cGFuZC10aHJlZWNvbG9ucy11bnEKZGVzY3JpcHRpb246CglDaGVjayBmb3IgYSBwYXJ0aWN1bGFyIHRoaW5nIHRoYXQgdXNlZCB0byBub3QgZXJyb3Igb3V0CnN0ZGluOgoJVEVTVD0xMjM0CgllY2hvICR7VEVTVDoxOjI6M30KCWVjaG8gJD8gYnV0IHN0aWxsIGxpdmluZwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiBleHBhbmQtd2VpcmQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGNvcm5lciBjYXNlIG9mIHRyaW0gZXhwYW5zaW9uIHZzLiAkIyB2cy4gJHsjdmFyfQpzdGRpbjoKCXNldCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMQoJZWNobyAkeyN9CSMgdmFsdWUgb2YgJCMKCWVjaG8gJHsjI30JIyBsZW5ndGggb2YgJCMKCWVjaG8gJHsjIzF9CSMgJCMgdHJpbW1lZCAxCglzZXQgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIKCWVjaG8gJHsjIzF9CmV4cGVjdGVkLXN0ZG91dDoKCTExCgkyCgkxCgkyCi0tLQpuYW1lOiBleHBhbmQtd2VpcmQtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGNvcm5lciBjYXNlIG9mICR7dmFyP30gdnMuICR7I3Zhcn0Kc3RkaW46CgkoZXhpdCAwKQoJZWNobyAkPyA9ICR7Iz99IC4KCShleGl0IDExMSkKCWVjaG8gJD8gPSAkeyM/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTAgPSAxIC4KCTExMSA9IDMgLgotLS0KbmFtZTogZXhwYW5kLXdlaXJkLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRyaW1taW5nIHdvcmtzIHdpdGggcG9zaXRpb25hbCBwYXJhbWV0ZXJzIChEZWJpYW4gIzQ4NDUzKQpzdGRpbjoKCUE9OTk5OS0wMgoJQj05OTk5CgllY2hvIDE9JHtBIyRCP30uCglzZXQgLS0gJEEgJEIKCWVjaG8gMj0kezEjJDI/fS4KZXhwZWN0ZWQtc3Rkb3V0OgoJMT0wMi4KCTI9MDIuCi0tLQpuYW1lOiBlZ2xvYi1iYWQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgaXNuJ3QgZG9uZSB3aGVuIGdsb2IgaGFzIHN5bnRheCBlcnJvcgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeCIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiY3oiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCnN0ZGluOgoJZWNobyAhKFsqKSoKCWVjaG8gKyhhfGJbKSoKZXhwZWN0ZWQtc3Rkb3V0OgoJIShbKikqCgkrKGF8YlspKgotLS0KbmFtZTogZWdsb2ItYmFkLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdsb2JiaW5nIGlzbid0IGRvbmUgd2hlbiBnbG9iIGhhcyBzeW50YXggZXJyb3IKCShBVCZUIGtzaCBmYWlscyB0aGlzIHRlc3QpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeiIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKc3RkaW46CgllY2hvIFthKihdKil6CmV4cGVjdGVkLXN0ZG91dDoKCVthKihdKil6Ci0tLQpuYW1lOiBlZ2xvYi1pbmZpbml0ZS1wbHVzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaGVsbCBkb2Vzbid0IGdvIGludG8gaW5maW5pdGUgbG9vcCBleHBhbmRpbmcgKyguLi4pCglleHByZXNzaW9ucy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKdGltZS1saW1pdDogMwpzdGRpbjoKCWVjaG8gKygpYwoJZWNobyArKCl4CgllY2hvICsoKiljCgllY2hvICsoKil4CmV4cGVjdGVkLXN0ZG91dDoKCSsoKWMKCSsoKXgKCWFiYwoJKygqKXgKLS0tCm5hbWU6IGVnbG9iLXN1YnN0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGVnbG9iYmluZyBpc24ndCBkb25lIG9uIHN1YnN0aXR1dGlvbiByZXN1bHRzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCnN0ZGluOgoJeD0nQCgqKScKCWVjaG8gJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgqKQotLS0KbmFtZTogZWdsb2Itbm9tYXRjaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgcGF0dGVybiBkb2Vzbid0IG1hdGNoCnN0ZGluOgoJZWNobyAxOiBuby1maWxlKyhhfGIpc3R1ZmYKCWVjaG8gMjogbm8tZmlsZSsoYSooYyl8YilzdHVmZgoJZWNobyAzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogbm8tZmlsZSsoYXxiKXN0dWZmCgkyOiBuby1maWxlKyhhKihjKXxiKXN0dWZmCgkzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKLS0tCm5hbWU6IGVnbG9iLW1hdGNoLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBwYXR0ZXJuIG1hdGNoZXMgY29ycmVjdGx5CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmQiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhY2QiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmFjIgpzdGRpbjoKCWVjaG8gMTogYSsoYnxjKWQKCWVjaG8gMjogYSEoQChifEIpKWQKCWVjaG8gMzogKihhKGJ8YykpCQkjICguLi58Li4uKSBjYW4gYmUgdXNlZCB3aXRoaW4gWCguLikKCWVjaG8gNDogYVtiKihmb298YmFyKV1kCQkjIHBhdHRlcm5zIG5vdCBzcGVjaWFsIGluc2lkZSBbLi4uXQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBhYmQgYWNkCgkyOiBhY2QKCTM6IGFiYWMKCTQ6IGFiZAotLS0KbmFtZTogZWdsb2ItY2FzZS0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIG5lZ2F0aW9uIHRlc3RzCnN0ZGluOgoJY2FzZSBmb28gaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwoJY2FzZSBiYXIgaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglubwoJbm8KLS0tCm5hbWU6IGVnbG9iLWNhc2UtMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSBrbGVlbmUgdGVzdHMKc3RkaW46CgljYXNlIGZvbyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlIGZvbyBpbiAqKGF8YlspfGYqKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICcqKGF8YlspJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCmV4cGVjdGVkLXN0ZG91dDoKCW5vCgl5ZXMKCXllcwotLS0KbmFtZTogZWdsb2ItdHJpbS0xCmRlc2NyaXB0aW9uOgoJRWdsb2JiaW5nIGluIHRyaW0gZXhwcmVzc2lvbnMuLi4KCShBVCZUIGtzaCBmYWlscyB0aGlzIC0gZG9jcyBzYXkgIyBtYXRjaGVzIHNob3J0ZXN0IHN0cmluZywgIyMgbWF0Y2hlcwoJbG9uZ2VzdC4uLikKc3RkaW46Cgl4PWFiY2RlZgoJZWNobyAxOiAke3gjYXxhYmN9CgllY2hvIDI6ICR7eCMjYXxhYmN9CgllY2hvIDM6ICR7eCVkZWZ8Zn0KCWVjaG8gNDogJHt4JSVmfGRlZn0KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogYmNkZWYKCTI6IGRlZgoJMzogYWJjZGUKCTQ6IGFiYwotLS0KbmFtZTogZWdsb2ItdHJpbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHRyaW1zLi4uCnN0ZGluOgoJeD1hYmNkZWYKCWVjaG8gMTogJHt4IyooYXxiKWNkfQoJZWNobyAyOiAiJHt4IyooYXxiKWNkfSIKCWVjaG8gMzogJHt4IyIqKGF8YiljZCJ9CgllY2hvIDQ6ICR7eCNhKGJ8Yyl9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IGVmCgkyOiBlZgoJMzogYWJjZGVmCgk0OiBjZGVmCi0tLQpuYW1lOiBlZ2xvYi10cmltLTMKZGVzY3JpcHRpb246CglDaGVjayBlZ2xvYmJpbmcgd29ya3MgaW4gdHJpbXMsIGZvciBLb3JuIFNoZWxsCglFbnN1cmUgZWdsb2JiaW5nIGRvZXMgbm90IHdvcmsgZm9yIHJlZHVjZWQtZmVhdHVyZSAvYmluL3NoCnN0ZGluOgoJc2V0ICtvIHNoCgl4PWZvb2JhcgoJeT1mb29iYXoKCXo9Zm9vYmFcPwoJZWNobyAiPCR7eCViYXJ8YmF6fSwke3klYmFyfGJhen0sJHt6JVw/fT4iCgllY2hvICI8JHt4JWJhKHJ8eil9LCR7eSViYShyfHopfT4iCglzZXQgLW8gc2gKCWVjaG8gIjwke3glYmFyfGJhen0sJHt5JWJhcnxiYXp9LCR7eiVcP30+IgoJej0nZm9vKGJhcicKCWVjaG8gIjwke3olKCp9PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvbyxmb28sZm9vYmE+Cgk8Zm9vLGZvbz4KCTxmb29iYXIsZm9vYmF6LGZvb2JhPgoJPGZvbz4KLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTEKZGVzY3JpcHRpb246CglDaGVjayBlZ2xvYmJpbmcgd29ya3MgaW4gc3Vic3RzLi4uIGFuZCB0aGV5IHdvcmsgYXQgYWxsCnN0ZGluOgoJW1sgLW4gJEJBU0hfVkVSU0lPTiBdXSAmJiBzaG9wdCAtcyBleHRnbG9iCgl4PTEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgl5PXh5egoJZWNobyAxOiAke3gvMn0KCWVjaG8gMjogJHt4Ly8yfQoJZWNobyAzOiAke3gvKygyKX0KCWVjaG8gNDogJHt4Ly8rKDIpfQoJZWNobyA1OiAke3gvMi80fQoJZWNobyA2OiAke3gvLzIvNH0KCWVjaG8gNzogJHt4LysoMikvNH0KCWVjaG8gODogJHt4Ly8rKDIpLzR9CgllY2hvIDk6ICR7eC9iL2MvZS9mfQoJZWNobyAxMDogJHt4L2JcL2MvZS9mfQoJZWNobyAxMTogJHt4L2JcL2MvZVwvZn0KCWVjaG8gMTI6ICR7eC9iXC9jL2VcXC9mfQoJZWNobyAxMzogJHt4L2JcXC9jL2VcXC9mfQoJZWNobyAxNDogJHt4Ly9iL2MvZS9mfQoJZWNobyAxNTogJHt4Ly9iXC9jL2UvZn0KCWVjaG8gMTY6ICR7eC8vYlwvYy9lXC9mfQoJZWNobyAxNzogJHt4Ly9iXC9jL2VcXC9mfQoJZWNobyAxODogJHt4Ly9iXFwvYy9lXFwvZn0KCWVjaG8gMTk6ICR7eC9iXC8qXC9jL3h9CgllY2hvIDIwOiAke3gvXC8vLn0KCWVjaG8gMjE6ICR7eC8vXC8vLn0KCWVjaG8gMjI6ICR7eC8vLy59CgllY2hvIDIzOiAke3gvLyMxLzl9CgllY2hvIDI0OiAke3gvLyUxLzl9CgllY2hvIDI1OiAke3gvL1wlMS85fQoJZWNobyAyNjogJHt4Ly9cXCUxLzl9CgllY2hvIDI3OiAke3gvL1xhLzl9CgllY2hvIDI4OiAke3gvL1xcYS85fQoJZWNobyAyOTogJHt4LzIvJHl9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IDEyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI6IDEzMV9hYi9jZGVfYi9jXzExCgkzOiAxMzIxX2FiL2NkZV9iL2NfMTIyMQoJNDogMTMxX2FiL2NkZV9iL2NfMTEKCTU6IDE0MjIzMjFfYWIvY2RlX2IvY18xMjIxCgk2OiAxNDQ0MzQxX2FiL2NkZV9iL2NfMTQ0MQoJNzogMTQzMjFfYWIvY2RlX2IvY18xMjIxCgk4OiAxNDM0MV9hYi9jZGVfYi9jXzE0MQoJOTogMTIyMjMyMV9hYy9lL2YvY2RlX2IvY18xMjIxCgkxMDogMTIyMjMyMV9hZS9mZGVfYi9jXzEyMjEKCTExOiAxMjIyMzIxX2FlL2ZkZV9iL2NfMTIyMQoJMTI6IDEyMjIzMjFfYWVcL2ZkZV9iL2NfMTIyMQoJMTM6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkxNDogMTIyMjMyMV9hYy9lL2YvY2RlX2MvZS9mL2NfMTIyMQoJMTU6IDEyMjIzMjFfYWUvZmRlX2UvZl8xMjIxCgkxNjogMTIyMjMyMV9hZS9mZGVfZS9mXzEyMjEKCTE3OiAxMjIyMzIxX2FlXC9mZGVfZVwvZl8xMjIxCgkxODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTE5OiAxMjIyMzIxX2F4XzEyMjEKCTIwOiAxMjIyMzIxX2FiLmNkZV9iL2NfMTIyMQoJMjE6IDEyMjIzMjFfYWIuY2RlX2IuY18xMjIxCgkyMjogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTIzOiA5MjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjQ6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjI5CgkyNTogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjkKCTI2OiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjc6IDEyMjIzMjFfOWIvY2RlX2IvY18xMjIxCgkyODogMTIyMjMyMV85Yi9jZGVfYi9jXzEyMjEKCTI5OiAxeHl6MjIzMjFfYWIvY2RlX2IvY18xMjIxCi0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYW5jaG9yZWQgc3Vic3RyaW5nIHJlcGxhY2VtZW50IHdvcmtzLCBjb3JuZXIgY2FzZXMKc3RkaW46Cglmb289MTIzCgllY2hvIDE6ICR7Zm9vLyMveH0KCWVjaG8gMjogJHtmb28vJS94fQoJZWNobyAzOiAke2Zvby8jL30KCWVjaG8gNDogJHtmb28vI30KCWVjaG8gNTogJHtmb28vJS99CgllY2hvIDY6ICR7Zm9vLyV9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IHgxMjMKCTI6IDEyM3gKCTM6IDEyMwoJNDogMTIzCgk1OiAxMjMKCTY6IDEyMwotLS0KbmFtZTogZWdsb2Itc3Vic3RycGwtM2EKZGVzY3JpcHRpb246CglDaGVjayBzdWJzdHJpbmcgcmVwbGFjZW1lbnQgd29ya3Mgd2l0aCB2YXJpYWJsZXMgYW5kIHNsYXNoZXMsIHRvbwpzdGRpbjoKCXBmeD0vaG9tZS91c2VyCgl3ZD0vaG9tZS91c2VyL3RtcAoJZWNobyAiJHt3ZC8jJHBmeC9+fSIKCWVjaG8gIiR7d2QvI1wkcGZ4L359IgoJZWNobyAiJHt3ZC8jIiRwZngiL359IgoJZWNobyAiJHt3ZC8jJyRwZngnL359IgoJZWNobyAiJHt3ZC8jIlwkcGZ4Ii9+fSIKCWVjaG8gIiR7d2QvIydcJHBmeCcvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCX4vdG1wCgkvaG9tZS91c2VyL3RtcAoJfi90bXAKCS9ob21lL3VzZXIvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNiCmRlc2NyaXB0aW9uOgoJTW9yZSBvZiB0aGlzLCBiYXNoIGZhaWxzIGl0IChiYXNoNCBwYXNzZXMpCnN0ZGluOgoJcGZ4PS9ob21lL3VzZXIKCXdkPS9ob21lL3VzZXIvdG1wCgllY2hvICIke3dkLyMkKGVjaG8gL2hvbWUvdXNlcikvfn0iCgllY2hvICIke3dkLyMiJChlY2hvIC9ob21lL3VzZXIpIi9+fSIKCWVjaG8gIiR7d2QvIyckKGVjaG8gL2hvbWUvdXNlciknL359IgpleHBlY3RlZC1zdGRvdXQ6Cgl+L3RtcAoJfi90bXAKCS9ob21lL3VzZXIvdG1wCi0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0zYwpkZXNjcmlwdGlvbjoKCUV2ZW4gbW9yZSB3ZWlyZCBjYXNlcwpzdGRpbjoKCXBmeD0vaG9tZS91c2VyCgl3ZD0nJHBmeC90bXAnCgllY2hvIDE6ICR7d2QvIyRwZngvfn0KCWVjaG8gMjogJHt3ZC8jXCRwZngvfn0KCWVjaG8gMzogJHt3ZC8jIiRwZngiL359CgllY2hvIDQ6ICR7d2QvIyckcGZ4Jy9+fQoJZWNobyA1OiAke3dkLyMiXCRwZngiL359CgllY2hvIDY6ICR7d2QvIydcJHBmeCcvfn0KCXRzPSdhL2JhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCknCgl0cD1hL2IKCXRyPWMvZAoJW1sgLW4gJEJBU0hfVkVSU0lPTiBdXSAmJiBzaG9wdCAtcyBleHRnbG9iCgllY2hvIDc6ICR7dHMvYVwvYi8kdHJ9CgllY2hvIDg6ICR7dHMvYVwvYi9cJHRyfQoJZWNobyA5OiAke3RzLyR0cC8kdHJ9CgllY2hvIDEwOiAke3RzL1wkdHAvJHRyfQoJZWNobyAxMTogJHt0cy9cXCR0cC8kdHJ9CgllY2hvIDEyOiAke3RzLyR0cC9jL2R9CgllY2hvIDEzOiAke3RzLyR0cC9jXC9kfQoJZWNobyAxNDogJHt0cy8kdHAvY1xcL2R9CgllY2hvIDE1OiAke3RzLysoYVwvYikvJHRyfQoJZWNobyAxNjogJHt0cy8rKGFcL2IpL1wkdHJ9CgllY2hvIDE3OiAke3RzLysoJHRwKS8kdHJ9CgllY2hvIDE4OiAke3RzLysoJHRwKS9jL2R9CgllY2hvIDE5OiAke3RzLysoJHRwKS9jXC9kfQoJZWNobyAyNTogJHt0cy8vYVwvYi8kdHJ9CgllY2hvIDI2OiAke3RzLy9hXC9iL1wkdHJ9CgllY2hvIDI3OiAke3RzLy8kdHAvJHRyfQoJZWNobyAyODogJHt0cy8vJHRwL2MvZH0KCWVjaG8gMjk6ICR7dHMvLyR0cC9jXC9kfQoJZWNobyAzMDogJHt0cy8vKyhhXC9iKS8kdHJ9CgllY2hvIDMxOiAke3RzLy8rKGFcL2IpL1wkdHJ9CgllY2hvIDMyOiAke3RzLy8rKCR0cCkvJHRyfQoJZWNobyAzMzogJHt0cy8vKygkdHApL2MvZH0KCWVjaG8gMzQ6ICR7dHMvLysoJHRwKS9jXC9kfQoJdHA9IisoJHRwKSIKCWVjaG8gNDA6ICR7dHMvJHRwLyR0cn0KCWVjaG8gNDE6ICR7dHMvLyR0cC8kdHJ9CmV4cGVjdGVkLXN0ZG91dDoKCTE6ICRwZngvdG1wCgkyOiB+L3RtcAoJMzogJHBmeC90bXAKCTQ6IH4vdG1wCgk1OiB+L3RtcAoJNjogfi90bXAKCTc6IGMvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJODogJHRyYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgk5OiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTEwOiBhL2JhL2JjL2QkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTExOiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTEyOiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTEzOiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTE0OiBjXC9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxNTogYy9kJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxNjogJHRyJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxNzogYy9kJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxODogYy9kJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxOTogYy9kJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkyNTogYy9kYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkyNjogJHRyJHRyJHRwJHRwXyR0ciR0cF8qKCR0cilfKigkdHApCgkyNzogYy9kYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkyODogYy9kYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkyOTogYy9kYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkzMDogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkzMTogJHRyJHRwJHRwXyR0ciR0cF8qKCR0cilfKigkdHApCgkzMjogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkzMzogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgkzNDogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCgk0MDogYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgk0MTogYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCiMJVGhpcyBpcyB3aGF0IEdOVSBiYXNoIGRvZXM6CiMJNDA6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQojCTQxOiBjL2QkdHAkdHBfYy9kJHRwXyooYy9kKV8qKCR0cCkKLS0tCm5hbWU6IGVnbG9iLXV0ZjgtMQpkZXNjcmlwdGlvbjoKCVVURi04IG1vZGUgZGlmZmVyZW5jZXMgZm9yIGVnbG9iYmluZwpzdGRpbjoKCXM9YmzDtmQKCXNldCArVQoJcHJpbnQgMTogJHtzJT8/P30gLgoJcHJpbnQgMjogJHtzL2I/Pz9kL3h9IC4KCXNldCAtVQoJcHJpbnQgMzogJHtzJT8/P30gLgoJcHJpbnQgNDogJHtzL2I/P2QveH0gLgoJeD1uw7YKCXByaW50IDU6ICR7eCU/fSAke3glJT99IC4KCXg9w6RoCglwcmludCA2OiAke3gjP30gJHt4IyM/fSAuCgl4PYGCCglwcmludCA3OiAke3glP30gJHt4JSU/fSAuCgl4PW3DpIAKCXByaW50IDg6ICR7eCU/fSAke3glJT99IC4KCXg95L2VCglwcmludCA5OiAke3glP30gJHt4JSU/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTE6IGJsIC4KCTI6IHggLgoJMzogYiAuCgk0OiB4IC4KCTU6IG4gbiAuCgk2OiBoIGggLgoJNzoggSCBIC4KCTg6IG3DpCBtw6QgLgoJOTogLgotLS0KbmFtZTogZ2xvYi1iYWQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgaXNuJ3QgZG9uZSB3aGVuIGdsb2IgaGFzIHN5bnRheCBlcnJvcgpmaWxlLXNldHVwOiBkaXIgNzU1ICJbeCIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIlt4L2ZvbyIKc3RkaW46CgllY2hvIFsqCgllY2hvICpbeAoJZWNobyBbeC8qCmV4cGVjdGVkLXN0ZG91dDoKCVsqCgkqW3gKCVt4L2ZvbwotLS0KbmFtZTogZ2xvYi1iYWQtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3ltYm9saWMgbGlua3MgYXJlbid0IHN0YXQoKSdkCiMgYnJlYWtzIG9uIEZyZWVNaU5UIChjYW5ub3QgdW5saW5rIGRhbmdsaW5nIHN5bWxpbmtzKQojIGJyZWFrcyBvbiBNU1lTIChkb2VzIG5vdCBzdXBwb3J0IHN5bWxpbmtzKQojIGJyZWFrcyBvbiBEZWxsIFVOSVggNC4wIFIyLjIgKFNWUjQpIHdoZXJlIHVubGluayBhbHNvIGZhaWxzCmNhdGVnb3J5OiAhb3M6bWludCwhb3M6bXN5cywhb3M6c3ZyNC4wLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZGlyIDc1NSAiZGlyIgpmaWxlLXNldHVwOiBzeW1saW5rIDY0NCAiZGlyL2FiYyIKCW5vbi1leGlzdGVudC1maWxlCnN0ZGluOgoJZWNobyBkKi8qCgllY2hvIGQqL2FiYwpleHBlY3RlZC1zdGRvdXQ6CglkaXIvYWJjCglkaXIvYWJjCi0tLQpuYW1lOiBnbG9iLXJhbmdlLTEKZGVzY3JpcHRpb246CglUZXN0IHJhbmdlIG1hdGNoaW5nCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIuYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJjYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICItYmMiCnN0ZGluOgoJZWNobyBbYWItXSoKCWVjaG8gWy1hYl0qCgllY2hvIFshLWFiXSoKCWVjaG8gWyFhYl0qCgllY2hvIFtdYWJdKgpleHBlY3RlZC1zdGRvdXQ6CgktYmMgYWJjIGJiYwoJLWJjIGFiYyBiYmMKCWNiYwoJLWJjIGNiYwoJYWJjIGJiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS0yCmRlc2NyaXB0aW9uOgoJVGVzdCByYW5nZSBtYXRjaGluZwoJKEFUJlQga3NoIGZhaWxzIHRoaXM7IFBPU0lYIHNheXMgaW52YWxpZCkKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKc3RkaW46CgllY2hvIFthLS1dKgpleHBlY3RlZC1zdGRvdXQ6CglbYS0tXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgbWF0Y2hlcyB0aGUgcmlnaHQgdGhpbmdzLi4uCiMgYnJlYWtzIG9uIE1hYyBPU1ggKEhGUysgbm9uLXN0YW5kYXJkIFVuaWNvZGUgY2Fub25pY2FsIGRlY29tcG9zaXRpb24pCiMgYnJlYWtzIG9uIEN5Z3dpbiAxLjcgKGZpbGVzIGFyZSBub3cgVVRGLTE2IG9yIHNvbWV0aGluZykKIyBicmVha3Mgb24gUU5YIDYuNC4xIChzYXlzIFJUKQpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6ZGFyd2luLCFvczptc3lzLCFvczpudG8KbmVlZC1wYXNzOiBubwpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYcJjIgpzdGRpbjoKCWVjaG8gYVvBLdpdKgpleHBlY3RlZC1zdGRvdXQ6CglhwmMKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtNApkZXNjcmlwdGlvbjoKCVJlc3VsdHMgdW5zcGVjaWZpZWQgYWNjb3JkaW5nIHRvIFBPU0lYCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIuYmMiCnN0ZGluOgoJZWNobyBbYS5dKgpleHBlY3RlZC1zdGRvdXQ6CglbYS5dKgotLS0KbmFtZTogZ2xvYi1yYW5nZS01CmRlc2NyaXB0aW9uOgoJUmVzdWx0cyB1bnNwZWNpZmllZCBhY2NvcmRpbmcgdG8gUE9TSVgKCShBVCZUIGtzaCB0cmVhdHMgdGhpcyBsaWtlIFthLWNjLWVdKikKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImNiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImRiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImViYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi1iYyIKc3RkaW46CgllY2hvIFthLWMtZV0qCmV4cGVjdGVkLXN0ZG91dDoKCS1iYyBhYmMgYmJjIGNiYyBlYmMKLS0tCm5hbWU6IGhlcmVkb2MtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9yZGVyaW5nL2NvbnRlbnQgb2YgcmVkdW5kZW50IGhlcmUgZG9jdW1lbnRzLgpzdGRpbjoKCWNhdCA8PCBFT0YxIDw8IEVPRjIKCWhpCglFT0YxCgl0aGVyZQoJRU9GMgpleHBlY3RlZC1zdGRvdXQ6Cgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcXVvdGVkIGhlcmUtZG9jIGlzIHByb3RlY3RlZC4Kc3RkaW46CglhPWZvbwoJY2F0IDw8ICdFT0YnCgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKLS0tCm5hbWU6IGhlcmVkb2MtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbmV3bGluZSBpc24ndCBuZWVkZWQgYWZ0ZXIgaGVyZWRvYy1kZWxpbWl0ZXIgbWFya2VyLgpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCi0tLQpuYW1lOiBoZXJlZG9jLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFuIGVycm9yIG9jY3VycyBpZiB0aGUgaGVyZWRvYy1kZWxpbWl0ZXIgaXMgbWlzc2luZy4Kc3RkaW46ICEKCWNhdCA8PCBFT0YKCWhpCgl0aGVyZQpleHBlY3RlZC1leGl0OiBlID4gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogaGVyZWRvYy01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBiYWNrc2xhc2ggcXVvdGVzIGEgJCwgYCBhbmQgXCBhbmQga2lsbHMgYSBcbmV3bGluZQpzdGRpbjoKCWE9QkFECgliPW9rCgljYXQgPDwgRU9GCgloXCR7YX1pCgloXFwke2J9aQoJdGhcYGVjaG8gbm90LXJ1blxgZXJlCgl0aFxcYGVjaG8gaXMtcnVuYGVyZQoJZm9sXFxrcwoJbW9yZVxcCglsYXN0IFwKCWxpbmUKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloJHthfWkKCWhcb2tpCgl0aGBlY2hvIG5vdC1ydW5gZXJlCgl0aFxpcy1ydW5lcmUKCWZvbFxrcwoJbW9yZVwKCWxhc3QgbGluZQotLS0KbmFtZTogaGVyZWRvYy02CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpbiBpbml0aWFsIGhlcmUtZGVsaW0gd29yZCBkb2Vzbid0IGltcGx5CglhIHF1b3RlZCBoZXJlLWRvYy4Kc3RkaW46CglhPWkKCWNhdCA8PCBFT1wKCUYKCWgkYQoJdGhlcmUKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKLS0tCm5hbWU6IGhlcmVkb2MtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZG91YmxlIHF1b3RlZCAkIGV4cHJlc3Npb25zIGluIGhlcmUgZGVsaW1pdGVycyBhcmUKCW5vdCBleHBhbmRlZCBhbmQgbWF0Y2ggdGhlIGRlbGltaXRlci4KCVBPU0lYIHNheXMgb25seSBxdW90ZSByZW1vdmFsIGlzIGFwcGxpZWQgdG8gdGhlIGRlbGltaXRlci4Kc3RkaW46CglhPWIKCWNhdCA8PCAiRSRhIgoJaGkKCWgkYQoJaGIKCUUkYQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgloJGEKCWhiCglkb25lCi0tLQpuYW1lOiBoZXJlZG9jLTgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGRvdWJsZSBxdW90ZWQgZXNjYXBlZCAkIGV4cHJlc3Npb25zIGluIGhlcmUKCWRlbGltaXRlcnMgYXJlIG5vdCBleHBhbmRlZCBhbmQgbWF0Y2ggdGhlIGRlbGltaXRlci4KCVBPU0lYIHNheXMgb25seSBxdW90ZSByZW1vdmFsIGlzIGFwcGxpZWQgdG8gdGhlIGRlbGltaXRlcgoJKFwgY291bnRzIGFzIGEgcXVvdGUpLgpzdGRpbjoKCWE9YgoJY2F0IDw8ICJFXCRhIgoJaGkKCWgkYQoJaFwkYQoJaGIKCWhcYgoJRSRhCgllY2hvIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWgkYQoJaFwkYQoJaGIKCWhcYgoJZG9uZQotLS0KbmFtZTogaGVyZWRvYy05YQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZSBzdHJpbmdzIHdvcmsuCnN0ZGluOgoJYmFyPSJiYXIKCQliYXoiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDxmb28KCSIkX19wcm9nbmFtZSIgLWMgInRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PGZvbyIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCIkYmFyIgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8JyRiYXInCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDxcJGJhcgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8LWZvbwoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8IiQoZWNobyAiZm9vIGJhciIpIgpleHBlY3RlZC1zdGRvdXQ6CglzYmIKCXNiYgoJb25lCgkJb25tCgkkb25lCgkkb25lCgktc2JiCglzYmIgb25lCi0tLQpuYW1lOiBoZXJlZG9jLTliCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhIGNvcm5lciBjYXNlIG9mIGhlcmUgc3RyaW5ncyB3b3JrcyBsaWtlIGJhc2gKc3RkaW46Cglmbm9yZD00MgoJYmFyPSJiYXIKCQkgXCRmbm9yZCBiYXoiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwkYmFyCmV4cGVjdGVkLXN0ZG91dDoKCW9uZSAkc2FiZXEgb25tCmNhdGVnb3J5OiBiYXNoCi0tLQpuYW1lOiBoZXJlZG9jLTljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhIGNvcm5lciBjYXNlIG9mIGhlcmUgc3RyaW5ncyB3b3JrcyBsaWtlIGtzaDkzLCB6c2gKc3RkaW46Cglmbm9yZD00MgoJYmFyPSJiYXIKCQkgXCRmbm9yZCBiYXoiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwkYmFyCmV4cGVjdGVkLXN0ZG91dDoKCW9uZQoJCSAkc2FiZXEgb25tCi0tLQpuYW1lOiBoZXJlZG9jLTlkCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYW5vdGhlciBjb3JuZXIgY2FzZSBvZiBoZXJlIHN0cmluZ3MKc3RkaW46Cgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwgYmFyCmV4cGVjdGVkLXN0ZG91dDoKCW9uZQotLS0KbmFtZTogaGVyZWRvYy05ZQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgc3RyaW5nIHJlbGF0ZWQgcmVncmVzc2lvbiB3aXRoIG11bHRpcGxlIGlvcHMKc3RkaW46CgllY2hvICQodHIgciB6IDw8PCdiYXInIDI+L2Rldi9udWxsKQpleHBlY3RlZC1zdGRvdXQ6CgliYXoKLS0tCm5hbWU6IGhlcmVkb2MtMTAKZGVzY3JpcHRpb246CglDaGVjayBkaXJlY3QgaGVyZSBkb2N1bWVudCBhc3NpZ25tZW50CnN0ZGluOgoJeD11Cgl2YT08PEVPRgoJPWEgJHggXHg0MD0KCUVPRgoJdmI9PDwnRU9GJwoJPWIgJHggXHg0MD0KCUVPRgoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC1FT0YKCQkJPWMgJHggXHg0MD0KCQlFT0YKCX0KCWZuZD0kKHR5cGVzZXQgLWYgZm9vKQoJcHJpbnQgLXIgLS0gIiRmbmQiCglmdW5jdGlvbiBmb28gewoJCWVjaG8gYmx1YgoJfQoJZm9vCglldmFsICIkZm5kIgoJZm9vCgkjIHJhdGhlciBub25zZW5zaWNhbCwgYnV04oCmCgl2ZD08PDwiPWQgJHggXHg0MD0iCgl2ZT08PDwnPWUgJHggXHg0MD0nCgl2Zj08PDwkJz1mICR4IFx4NDA9JwoJIyBub3cgY2hlY2sKCXByaW50IC1yIC0tICJ8IHZhPXskdmF9IHZiPXskdmJ9IHZjPXskdmN9IHZkPXskdmR9IHZlPXskdmV9IHZmPXskdmZ9IHwiCmV4cGVjdGVkLXN0ZG91dDoKCWZ1bmN0aW9uIGZvbyB7CgkJdmM9PDwtRU9GCgk9YyAkeCBceDQwPQoJRU9GCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgdSBceDQwPQoJfSB2ZT17PWUgJHggXHg0MD0KCX0gdmY9ez1mICR4IEA9Cgl9IHwKLS0tCm5hbWU6IGhlcmVkb2MtMTEKZGVzY3JpcHRpb246CglDaGVjayBoZXJlIGRvY3VtZW50cyB3aXRoIG5vIG9yIGVtcHR5IGRlbGltaXRlcgpzdGRpbjoKCXg9dQoJdmE9PDwKCT1hICR4IFx4NDA9Cgk8PAoJdmI9PDwnJwoJPWIgJHggXHg0MD0KCQoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC0KCQkJPWMgJHggXHg0MD0KCQk8PAoJCXZkPTw8LScnCgkJCT1kICR4IFx4NDA9CgkKCX0KCWZuZD0kKHR5cGVzZXQgLWYgZm9vKQoJcHJpbnQgLXIgLS0gIiRmbmQiCglmdW5jdGlvbiBmb28gewoJCWVjaG8gYmx1YgoJfQoJZm9vCglldmFsICIkZm5kIgoJZm9vCglwcmludCAtciAtLSAifCB2YT17JHZhfSB2Yj17JHZifSB2Yz17JHZjfSB2ZD17JHZkfSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LQoJPWMgJHggXHg0MD0KCTw8CgkKCQl2ZD08PC0iIgoJPWQgJHggXHg0MD0KCQoJCgl9IAoJYmx1YgoJfCB2YT17PWEgdSBceDQwPQoJfSB2Yj17PWIgJHggXHg0MD0KCX0gdmM9ez1jIHUgXHg0MD0KCX0gdmQ9ez1kICR4IFx4NDA9Cgl9IHwKLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTEKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCXRleHQ9JChjYXQgPDxFT0YKCWhlcmUgaXMgdGhlIHRleHQKCUVPRikKCWVjaG8gPSAkdGV4dCA9CmV4cGVjdGVkLXN0ZG91dDoKCT0gaGVyZSBpcyB0aGUgdGV4dCA9Ci0tLQpuYW1lOiBoZXJlZG9jLWNvbXN1Yi0yCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIENPTVNVQiwgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46Cgl1bmJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGlzIHBhcmVuICkgaXMgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJHVuYmFsYW5jZWQgPQpleHBlY3RlZC1zdGRvdXQ6Cgk9IHRoaXMgcGFyZW4gKSBpcyBhIHByb2JsZW0gPQotLS0KbmFtZTogaGVyZWRvYy1jb21zdWItMwpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBDT01TVUIsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJYmFsYW5jZWQ9JChjYXQgPDxFT0YKCXRoZXNlIHBhcmVucyAoICkgYXJlIG5vdCBhIHByb2JsZW0KCUVPRikKCWVjaG8gPSAkYmFsYW5jZWQgPQpleHBlY3RlZC1zdGRvdXQ6Cgk9IHRoZXNlIHBhcmVucyAoICkgYXJlIG5vdCBhIHByb2JsZW0gPQotLS0KbmFtZTogaGVyZWRvYy1jb21zdWItNApkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBDT01TVUIsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJYmFsYW5jZWQ9JChjYXQgPDxFT0YKCXRoZXNlIHBhcmVucyBcKCApIGFyZSBhIHByb2JsZW0KCUVPRikKCWVjaG8gPSAkYmFsYW5jZWQgPQpleHBlY3RlZC1zdGRvdXQ6Cgk9IHRoZXNlIHBhcmVucyBcKCApIGFyZSBhIHByb2JsZW0gPQotLS0KbmFtZTogaGVyZWRvYy1zdWJzaGVsbC0xCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIHN1YnNoZWxscywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46CgkoY2F0IDw8RU9GCglzb21lIHRleHQKCUVPRikKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCXNvbWUgdGV4dAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXN1YnNoZWxsLTIKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gc3Vic2hlbGxzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCShjYXQgPDxFT0YKCXNvbWUgdGV4dAoJRU9GCgkpCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6Cglzb21lIHRleHQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy1zdWJzaGVsbC0zCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIHN1YnNoZWxscywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46CgkoY2F0IDw8RU9GOyApCglzb21lIHRleHQKCUVPRgoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJc29tZSB0ZXh0CgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtd2VpcmQtMQpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKCURvY3VtZW50cyBjdXJyZW50IHN0YXRlIGluIG1rc2gsICpOT1QqIG5lY2Vzc2FyaWx5IGNvcnJlY3QhCnN0ZGluOgoJY2F0IDw8RU5ECgloZWxsbwoJRU5EXAoJRU5ECglFTkQKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWhlbGxvCglFTkRFTkQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy13ZWlyZC0yCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWNhdCA8PCcgICAgRU5EICAgICcKCWhlbGxvCgkgICAgRU5EICAgIAoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8KCWVuZAotLS0KbmFtZTogaGVyZWRvYy13ZWlyZC00CmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTAoJRG9jdW1lbnRzIGN1cnJlbnQgc3RhdGUgaW4gbWtzaCwgKk5PVCogbmVjZXNzYXJpbHkgY29ycmVjdCEKc3RkaW46CgljYXQgPDxFTkQKCWhlbGxvXAoJRU5ECglFTkQKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWhlbGxvRU5ECgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtd2VpcmQtNQpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cywgdGFrZW4gZnJvbSBBdXN0aW4gTUwKCURvY3VtZW50cyBjdXJyZW50IHN0YXRlIGluIG1rc2gsICpOT1QqIG5lY2Vzc2FyaWx5IGNvcnJlY3QhCnN0ZGluOgoJY2F0IDw8RU5ECgloZWxsbwoJXEVORAoJRU5ECgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CgloZWxsbwoJXEVORAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXF1b3RpbmctdW5zdWJzdApkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHF1b3RlZCBjaGFyYWN0ZXJzIGluCgloZXJlIGRvY3VtZW50cyB3aXRob3V0IHN1YnN0aXR1dGlvbiAobWFya2VyIGlzIHF1b3RlZCkuCnN0ZGluOgoJZm9vPWJhcgoJY2F0IDw8LSdFT0YnCgkJeCAiIFwiIFwgXFwgJCBcJCBgZWNobyBiYXpgIFxgZWNobyBiYXpcYCAkZm9vIFwkZm9vIHgKCUVPRgpleHBlY3RlZC1zdGRvdXQ6Cgl4ICIgXCIgXCBcXCAkIFwkIGBlY2hvIGJhemAgXGBlY2hvIGJhelxgICRmb28gXCRmb28geAotLS0KbmFtZTogaGVyZWRvYy1xdW90aW5nLXN1YnN0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgcXVvdGVkIGNoYXJhY3RlcnMgaW4KCWhlcmUgZG9jdW1lbnRzIHdpdGggc3Vic3RpdHV0aW9uIChtYXJrZXIgaXMgbm90IHF1b3RlZCkuCnN0ZGluOgoJZm9vPWJhcgoJY2F0IDw8LUVPRgoJCXggIiBcIiBcIFxcICQgXCQgYGVjaG8gYmF6YCBcYGVjaG8gYmF6XGAgJGZvbyBcJGZvbyB4CglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJeCAiIFwiIFwgXCAkICQgYmF6IGBlY2hvIGJhemAgYmFyICRmb28geAotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gc2ltcGxlIGNvbW1hbmQuCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GCgkJaGkKCQlFT0YKCQlmb3IgaSBpbiBhIGIgOyBkbwoJCQljYXQgPDwtIEVPRgoJCQltb3JlCgkJCUVPRgoJCWRvbmUKCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJbW9yZQoJbW9yZQoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gZnVuY3Rpb24sIG11bHRpcGxlIGNhbGxzIHRvIGZ1bmN0aW9uLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQlmb28oKSB7CgkJCWNhdCA8PC0gRU9GCgkJCWhpCgkJCUVPRgoJCX0KCQlmb28KCQlmb28KCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJaGkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIGZ1bmN0aW9uIGluIGxvb3AsIG11bHRpcGxlIGNhbGxzIHRvIGZ1bmN0aW9uLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQlmb28oKSB7CgkJCWNhdCA8PC0gRU9GCgkJCWhpCgkJCUVPRgoJCX0KCQlmb3IgaSBpbiBhIGI7IGRvCgkJCWZvbwoJCQlmb28oKSB7CgkJCQljYXQgPDwtIEVPRgoJCQkJZm9sa3MgJGkKCQkJCUVPRgoJCQl9CgkJZG9uZQoJCWZvbwoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb2xrcyBiCglmb2xrcyBiCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJQmFja2dyb3VuZGVkIHNpbXBsZSBjb21tYW5kIHdpdGggaGVyZSBkb2MKc3RkaW46CglUTVBESVI9JFBXRAoJZXZhbCAnCgkJY2F0IDw8LSBFT0YgJgoJCWhpCgkJRU9GCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglCYWNrZ3JvdW5kZWQgc3Vic2hlbGwgY29tbWFuZCB3aXRoIGhlcmUgZG9jCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJICAgICAgKAoJCXNsZWVwIDEJIyBzbyBwYXJlbnQgZXhpdHMKCQllY2hvIEEKCQljYXQgPDwtIEVPRgoJCWhpCgkJRU9GCgkJZWNobyBCCgkgICAgICApICYKCSAgICAnICYKCXNsZWVwIDIKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CglBCgloaQoJQgoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gcGlwZWxpbmUuCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GIHwgc2VkICJzL2hpL0hJLyIKCQloaQoJCUVPRgoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCUhJCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJSGVyZWRvYyBpbiBiYWNrZ3JvdW5kZWQgcGlwZWxpbmUuCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GIHwgc2VkICdzL2hpL0hJLycgJgoJCWhpCgkJRU9GCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJSEkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vCglsYXRlLiBIZXJlZG9jIGluIGZ1bmN0aW9uLCBiYWNrZ3JvdW5kZWQgY2FsbCB0byBmdW5jdGlvbi4KCVRoaXMgY2hlY2sgY2FuIGZhaWwgb24gc2xvdyBtYWNoaW5lcyAoPDEwMCBNSHopLCBvciBDeWd3aW4sCgl0aGF0J3Mgbm9ybWFsLgpuZWVkLXBhc3M6IG5vCnN0ZGluOgoJVE1QRElSPSRQV0QKCSMgQmFja2dyb3VuZCBldmFsIHNvIG1haW4gc2hlbGwgZG9lc24ndCBkbyBwYXJzaW5nCglldmFsICcKCQlmb28oKSB7CgkJCWNhdCA8PC0gRU9GCgkJCWhpCgkJCUVPRgoJCX0KCQlmb28KCQkjIHNsZWVwIHNvIGV2YWwgY2FuIGRpZQoJCShzbGVlcCAxOyBmb28pICYKCQkoc2xlZXAgMTsgZm9vKSAmCgkJZm9vCgkgICAgJyAmCglzbGVlcCAyCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCgloaQoJaGkKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhpc3RvcnktYmFzaWMKZGVzY3JpcHRpb246CglTZWUgaWYgd2UgY2FuIHRlc3QgaGlzdG9yeSBhdCBhbGwKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gaGkKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgkxCWVjaG8gaGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZHVwcwpkZXNjcmlwdGlvbjoKCVZlcmlmeSBkdXBsaWNhdGVzIGFuZCBzcGFjZXMgYXJlIG5vdCBlbnRlcmVkCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGhpCgkgZWNobyB5bwoJZWNobyBoaQoJZmMgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXlvCgloaQoJMQllY2hvIGhpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXVubGluawpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJyb2tlbiBISVNURklMRXMgZG8gbm90IGNhdXNlIHRyb3VibGUKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1mb28vaGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKZmlsZS1zZXR1cDogZGlyIDc1NSAiZm9vIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZm9vL2hpc3QuZmlsZSIKCXNvbWV0ZXh0CnRpbWUtbGltaXQ6IDUKcGVybC1zZXR1cDogY2htb2QoMDU1NSwgImZvbyIpOwpzdGRpbjoKCWVjaG8gaGkKCWZjIC1sCgljaG1vZCAwNzU1IGZvbwpleHBlY3RlZC1zdGRvdXQ6CgloaQoJMQllY2hvIGhpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLyguKmNhbid0IHVubGluayBISVNURklMRS4qXG4pP1gqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgbW9yZSByZWNlbnQgY29tbWFuZCBpcyBleGVjdXRlZApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBoaQoJZWNobyB0aGVyZQoJZmMgLWUgLQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKCXRoZXJlCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gdGhlcmVcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZXBlYXRlZCBjb21tYW5kIGlzIHByaW50ZWQgYmVmb3JlIGNvbW1hbmQKCWlzIHJlLWV4ZWN1dGVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZXhlYyAyPiYxCgllY2hvIGhpCgllY2hvIHRoZXJlCglmYyAtZSAtCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL1gqaGlcblgqdGhlcmVcblgqZWNobyB0aGVyZVxudGhlcmVcblgqLwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1lLW1pbnVzLTMKZGVzY3JpcHRpb246CglmYyAtZSAtIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gaGlzdG9yeQoJKGtzaDkzIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGlzIHRvIGZhaWwpCgkoa3NoODggbG9vcHMgb24gdGhpcykKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWZjIC1lIC0KCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqLio6LipoaXN0b3J5LipcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgImZjIC1lIC0iIGNvbW1hbmQgb3V0cHV0IGdvZXMgdG8gc3Rkb3V0LgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMKCWZjIC1lIC0gfCAocmVhZCB4OyBlY2hvICJBICR4IikKCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjCglBIGFiYwoJb2sKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBhYmNcblgqLwotLS0KbmFtZTogaGlzdG9yeS1lLW1pbnVzLTUKZGVzY3JpcHRpb246CglmYyBpcyByZXBsYWNlZCBpbiBoaXN0b3J5IGJ5IG5ldyBjb21tYW5kLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCToKCWZjIC1lIC0gZWNobwoJZmMgLWwgMiA1CmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCWdoaSBqa2wKCTIJZWNobyBnaGkgamtsCgkzCToKCTQJZWNobyBnaGkgamtsCgk1CWZjIC1sIDIgNQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIGdoaSBqa2xcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC0xCmRlc2NyaXB0aW9uOgoJTGlzdCBsaXN0cyBjb3JyZWN0IHJhbmdlCgkoa3NoODggZmFpbHMgJ2NhdXNlIGl0IGxpc3RzIHRoZSBmYyBjb21tYW5kKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZmMgLWwgLS0gLTIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTIKZGVzY3JpcHRpb246CglMaXN0cyBvbGRlc3QgaGlzdG9yeSBpZiBnaXZlbiBwcmUtaGlzdG9yaWMgbnVtYmVyCgkoa3NoOTMgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIHRoaXMgdG8gZmFpbCkKCShrc2g4OCBmYWlscyAnY2F1c2UgaXQgbGlzdHMgdGhlIGZjIGNvbW1hbmQpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCglmYyAtbCAtLSAtNDAKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJMQllY2hvIGxpbmUgMQoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTMKZGVzY3JpcHRpb246CglDYW4gZ2l2ZSBudW1iZXIgJ29wdGlvbnMnIHRvIGZjCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTMgLTIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CgkyCWVjaG8gbGluZSAyCgkzCWVjaG8gbGluZSAzCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtNApkZXNjcmlwdGlvbjoKCS0xIHJlZmVycyB0byBwcmV2aW91cyBjb21tYW5kCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTEgLTEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0Cgk0CWVjaG8gbGluZSA0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtNQpkZXNjcmlwdGlvbjoKCUxpc3QgY29tbWFuZCBzdGF5cyBpbiBoaXN0b3J5Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTEgLTEKCWZjIC1sIC0yIC0xCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJNAllY2hvIGxpbmUgNAoJNAllY2hvIGxpbmUgNAoJNQlmYyAtbCAtMSAtMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTYKZGVzY3JpcHRpb246CglISVNUU0laRSBsaW1pdHMgYWJvdXQgb2YgaGlzdG9yeSBrZXB0LgoJKGtzaDg4IGZhaWxzICdjYXVzZSBpdCBsaXN0cyB0aGUgZmMgY29tbWFuZCkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhSElTVFNJWkU9MyEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJNQllY2hvIGxpbmUgNQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTcKZGVzY3JpcHRpb246CglmYyBhbGxvd3MgdG9vIG9sZC9uZXcgZXJyb3JzIGluIHJhbmdlIHNwZWNpZmljYXRpb24KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhSElTVFNJWkU9MyEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAxIDMwCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJbGluZSA1Cgk0CWVjaG8gbGluZSA0Cgk1CWVjaG8gbGluZSA1Cgk2CWZjIC1sIDEgMzAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTEKZGVzY3JpcHRpb246Cgl0ZXN0IC1yIGZsYWcgaW4gaGlzdG9yeQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAtciAyIDQKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTQJZWNobyBsaW5lIDQKCTMJZWNobyBsaW5lIDMKCTIJZWNobyBsaW5lIDIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTIKZGVzY3JpcHRpb246CglJZiBmaXJzdCBpcyBuZXdlciB0aGFuIGxhc3QsIC1yIGlzIGltcGxpZWQuCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZWNobyBsaW5lIDUKCWZjIC1sIDQgMgpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJMwllY2hvIGxpbmUgMwoJMgllY2hvIGxpbmUgMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LXItMwpkZXNjcmlwdGlvbjoKCUlmIGZpcnN0IGlzIG5ld2VyIHRoYW4gbGFzdCwgLXIgaXMgY2FuY2VsbGVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAtciA0IDIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTIJZWNobyBsaW5lIDIKCTMJZWNobyBsaW5lIDMKCTQJZWNobyBsaW5lIDQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3Rvcnktc3Vic3QtMQpkZXNjcmlwdGlvbjoKCUJhc2ljIHN1YnN0aXR1dGlvbgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gYWJjPUFCICdlY2hvIGEnCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCUFCIGRlZgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEFCIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC0yCmRlc2NyaXB0aW9uOgoJRG9lcyBzdWJzdCBmaW5kIHByZXZpb3VzIGNvbW1hbmQ/Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWVjaG8gZ2hpIGprbAoJZmMgLWUgLSBqa2w9WFlaUVJUICdlY2hvIGcnCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCWdoaSBYWVpRUlQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBnaGkgWFlaUVJUXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTMKZGVzY3JpcHRpb246CglEb2VzIHN1YnN0IGZpbmQgcHJldmlvdXMgY29tbWFuZCB3aGVuIG5vIGFyZ3VtZW50cyBnaXZlbgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gamtsPVhZWlFSVApleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglnaGkgamtsCglnaGkgWFlaUVJUCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gZ2hpIFhZWlFSVFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC00CmRlc2NyaXB0aW9uOgoJR2xvYmFsIHN1YnN0aXR1dGlvbnMgd29yawoJKGtzaDg4IGFuZCBrc2g5MyBkbyBub3QgaGF2ZSAtZyBvcHRpb24pCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYgYXNqaiBzYWRqaGFzZGpoIGFzZGpoYXNkCglmYyAtZSAtIC1nIGE9Rm9vQkFSCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYgYXNqaiBzYWRqaGFzZGpoIGFzZGpoYXNkCglGb29CQVJiYyBkZWYgRm9vQkFSc2pqIHNGb29CQVJkamhGb29CQVJzZGpoIEZvb0JBUnNkamhGb29CQVJzZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEZvb0JBUmJjIGRlZiBGb29CQVJzamogc0Zvb0JBUmRqaEZvb0JBUnNkamggRm9vQkFSc2RqaEZvb0JBUnNkXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTUKZGVzY3JpcHRpb246CglNYWtlIHN1cmUgc2VhcmNoZXMgZG9uJ3QgZmluZCBjdXJyZW50IChmYykgY29tbWFuZAoJKGtzaDg4L2tzaDkzIGRvbid0IGhhdmUgdGhlID8gcHJlZml4IHRoaW5nIHNvIHRoZXkgZmFpbCB0aGlzIHRlc3QpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWVjaG8gZ2hpIGprbAoJZmMgLWUgLSBhYmM9QUIgXD9hYmMKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJZ2hpIGprbAoJQUIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gQUIgZGVmXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTEtb2xkCmRlc2NyaXB0aW9uOgoJQmFzaWMgKGVkKSBlZGl0aW5nIHdvcmtzIChhc3N1bWVzIHlvdSBoYXZlIGdlbmVyaWMgZWQgZWRpdG9yCgl0aGF0IHByaW50cyBubyBwcm9tcHRzKS4gVGhpcyBpcyBmb3Igb2xkaXNoIGVkKDEpIHdoaWNoIHdyaXRlCgl0aGUgY2hhcmFjdGVyIGNvdW50IHRvIHN0ZG91dC4KY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJMTMKCTE2CglGT09CQVIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gRk9PQkFSIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0yLW9sZApkZXNjcmlwdGlvbjoKCUNvcnJlY3QgY29tbWFuZCBpcyBlZGl0ZWQgd2hlbiBudW1iZXIgZ2l2ZW4KY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIgaXMgaGVyZQoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CglmYyAyCglzL2lzIGhlcmUvaXMgY2hhbmdlZC8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIgaXMgaGVyZQoJbGluZSAzCglsaW5lIDQKCTIwCgkyMwoJbGluZSAyIGlzIGNoYW5nZWQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBsaW5lIDIgaXMgY2hhbmdlZFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0zLW9sZApkZXNjcmlwdGlvbjoKCU5ld2x5IGNyZWF0ZWQgbXVsdGkgbGluZSBjb21tYW5kcyBzaG93IHVwIGFzIHNpbmdsZSBjb21tYW5kCglpbiBoaXN0b3J5LgoJKE5PVEU6IGFkanVzdGVkIGZvciBDT01QTEVYIEhJU1RPUlkgY29tcGlsZSB0aW1lIG9wdGlvbikKCShrc2g4OCBmYWlscyAnY2F1c2UgaXQgbGlzdHMgdGhlIGZjIGNvbW1hbmQpCmNhdGVnb3J5OiBzdGRvdXQtZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCglmYyBlY2hvCglzL2FiYy9GT09CQVIvCgkkYQoJZWNobyBhIG5ldyBsaW5lCgkuCgl3CglxCglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCgkxMwoJMzIKCUZPT0JBUiBkZWYKCWEgbmV3IGxpbmUKCTEJZWNobyBhYmMgZGVmCgkyCWVjaG8gRk9PQkFSIGRlZgoJMwllY2hvIGEgbmV3IGxpbmUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBGT09CQVIgZGVmXG5lY2hvIGEgbmV3IGxpbmVcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMQpkZXNjcmlwdGlvbjoKCUJhc2ljIChlZCkgZWRpdGluZyB3b3JrcyAoYXNzdW1lcyB5b3UgaGF2ZSBnZW5lcmljIGVkIGVkaXRvcgoJdGhhdCBwcmludHMgbm8gcHJvbXB0cykuIFRoaXMgaXMgZm9yIG5ld2lzaCBlZCgxKSBhbmQgc3RkZXJyLgpjYXRlZ29yeTogIW5vLXN0ZGVyci1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJRk9PQkFSIGRlZgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCoxM1xuMTZcbmVjaG8gRk9PQkFSIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0yCmRlc2NyaXB0aW9uOgoJQ29ycmVjdCBjb21tYW5kIGlzIGVkaXRlZCB3aGVuIG51bWJlciBnaXZlbgpjYXRlZ29yeTogIW5vLXN0ZGVyci1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIgaXMgaGVyZQoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CglmYyAyCglzL2lzIGhlcmUvaXMgY2hhbmdlZC8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIgaXMgaGVyZQoJbGluZSAzCglsaW5lIDQKCWxpbmUgMiBpcyBjaGFuZ2VkCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKjIwXG4yM1xuZWNobyBsaW5lIDIgaXMgY2hhbmdlZFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0zCmRlc2NyaXB0aW9uOgoJTmV3bHkgY3JlYXRlZCBtdWx0aSBsaW5lIGNvbW1hbmRzIHNob3cgdXAgYXMgc2luZ2xlIGNvbW1hbmQKCWluIGhpc3RvcnkuCmNhdGVnb3J5OiAhbm8tc3RkZXJyLWVkCm5lZWQtY3R0eTogeWVzCm5lZWQtcGFzczogbm8KYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gYWJjIGRlZgoJZmMgZWNobwoJcy9hYmMvRk9PQkFSLwoJJGEKCWVjaG8gYSBuZXcgbGluZQoJLgoJdwoJcQoJZmMgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJRk9PQkFSIGRlZgoJYSBuZXcgbGluZQoJMQllY2hvIGFiYyBkZWYKCTIJZWNobyBGT09CQVIgZGVmCgkzCWVjaG8gYSBuZXcgbGluZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCoxM1xuMzJcbmVjaG8gRk9PQkFSIGRlZlxuZWNobyBhIG5ldyBsaW5lXG5YKiQvCi0tLQpuYW1lOiBJRlMtc3BhY2UtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBkZWZhdWx0IElGUwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3IgaTsgZG8gZWNobyAtbiAiIDwkaT4iOyBkb25lOyBlY2hvOyB9CglzZXQgLS0gQSBCIEMKCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCSA8MT4gPEE+IDxCPiA8Qz4KCSA8Mj4gPEEgQiBDPgoJIDwzPiA8QT4gPEI+IDxDPgoJIDw0PiA8QT4gPEI+IDxDPgotLS0KbmFtZTogSUZTLWNvbG9uLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPToKc3RkaW46CglzaG93YXJncygpIHsgZm9yIGk7IGRvIGVjaG8gLW4gIiA8JGk+IjsgZG9uZTsgZWNobzsgfQoJSUZTPToKCXNldCAtLSBBIEIgQwoJc2hvd2FyZ3MgMSAkKgoJc2hvd2FyZ3MgMiAiJCoiCglzaG93YXJncyAzICRACglzaG93YXJncyA0ICIkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJIDwxPiA8QT4gPEI+IDxDPgoJIDwyPiA8QTpCOkM+CgkgPDM+IDxBPiA8Qj4gPEM+CgkgPDQ+IDxBPiA8Qj4gPEM+Ci0tLQpuYW1lOiBJRlMtbnVsbC0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz0iIgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3IgaTsgZG8gZWNobyAtbiAiIDwkaT4iOyBkb25lOyBlY2hvOyB9CglJRlM9IiIKCXNldCAtLSBBIEIgQwoJc2hvd2FyZ3MgMSAkKgoJc2hvd2FyZ3MgMiAiJCoiCglzaG93YXJncyAzICRACglzaG93YXJncyA0ICIkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJIDwxPiA8QSBCIEM+CgkgPDI+IDxBQkM+CgkgPDM+IDxBIEIgQz4KCSA8ND4gPEEgQiBDPgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBpOyBkbyBlY2hvIC1uICIgPCRpPiI7IGRvbmU7IGVjaG87IH0KCUlGUz0iJElGUzoiCglzZXQgLS0KCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCglzaG93YXJncyA1IDogIiRAIgpleHBlY3RlZC1zdGRvdXQ6CgkgPDE+CgkgPDI+IDw+CgkgPDM+CgkgPDQ+CgkgPDU+IDw6PgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTIKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CglBVCZUIGtzaCBmYWlscyB0aGlzLCBQT1NJWCBzYXlzIHRoZSB0ZXN0IGlzIGNvcnJlY3QuCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBpOyBkbyBlY2hvIC1uICIgPCRpPiI7IGRvbmU7IGVjaG87IH0KCUlGUz0iJElGUzoiCglzZXQgLS0KCXNob3dhcmdzIDoiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCSA8Oj4KLS0tCm5hbWU6IElGUy1zcGFjZS1jb2xvbi00CmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz08d2hpdGUtc3BhY2U+OgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3IgaTsgZG8gZWNobyAtbiAiIDwkaT4iOyBkb25lOyBlY2hvOyB9CglJRlM9IiRJRlM6IgoJc2V0IC0tCglzaG93YXJncyAiJEAkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJCi0tLQpuYW1lOiBJRlMtc3BhY2UtY29sb24tNQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9PHdoaXRlLXNwYWNlPjoKCURvbid0IGtub3cgd2hhdCBQT1NJWCB0aGlua3Mgb2YgdGhpcy4gIEFUJlQga3NoIGRvZXMgbm90IGRvIHRoaXMuCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBpOyBkbyBlY2hvIC1uICIgPCRpPiI7IGRvbmU7IGVjaG87IH0KCUlGUz0iJElGUzoiCglzZXQgLS0KCXNob3dhcmdzICIke0A6LX0iCmV4cGVjdGVkLXN0ZG91dDoKCSA8PgotLS0KbmFtZTogSUZTLXN1YnN0LTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBpOyBkbyBlY2hvIC1uICIgPCRpPiI7IGRvbmU7IGVjaG87IH0KCUlGUz0iJElGUzoiCgl4PSI6YjogOiIKCWVjaG8gLW4gJzE6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJZWNobyAtbiAnMjonOyBmb3IgaSBpbiA6Yjo6IDsgZG8gZWNobyAtbiAiIFskaV0iIDsgZG9uZSA7IGVjaG8KCXNob3dhcmdzIDMgJHgKCXNob3dhcmdzIDQgOmI6OgoJeD0iYTpiOiIKCWVjaG8gLW4gJzU6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgNiAkeAoJeD0iYTo6YyIKCWVjaG8gLW4gJzc6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgOCAkeAoJZWNobyAtbiAnOTonOyBmb3IgaSBpbiAke0ZPTy1gZWNobyAtbiBoOmlgdGg6ZXJlfSA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCglzaG93YXJncyAxMCAke0ZPTy1gZWNobyAtbiBoOmlgdGg6ZXJlfQoJc2hvd2FyZ3MgMTEgIiR7Rk9PLWBlY2hvIC1uIGg6aWB0aDplcmV9IgoJeD0iIEEgOiAgQjo6RCIKCWVjaG8gLW4gJzEyOic7IGZvciBpIGluICR4IDsgZG8gZWNobyAtbiAiIFskaV0iIDsgZG9uZSA7IGVjaG8KCXNob3dhcmdzIDEzICR4CmV4cGVjdGVkLXN0ZG91dDoKCTE6IFtdIFtiXSBbXQoJMjogWzpiOjpdCgkgPDM+IDw+IDxiPiA8PgoJIDw0PiA8OmI6Oj4KCTU6IFthXSBbYl0KCSA8Nj4gPGE+IDxiPgoJNzogW2FdIFtdIFtjXQoJIDw4PiA8YT4gPD4gPGM+Cgk5OiBbaF0gW2l0aF0gW2VyZV0KCSA8MTA+IDxoPiA8aXRoPiA8ZXJlPgoJIDwxMT4gPGg6aXRoOmVyZT4KCTEyOiBbQV0gW0JdIFtdIFtEXQoJIDwxMz4gPEE+IDxCPiA8PiA8RD4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1lcnItMQpkZXNjcmlwdGlvbjoKCUNhbid0IGhhdmUgMCBiYXNlIChjYXVzZXMgc2hlbGwgdG8gZXhpdCkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCnN0ZGluOgoJdHlwZXNldCAtaSBpCglpPTMKCWk9MCM0CgllY2hvICRpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL14uKjouKjAjNC4qXG4kLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLWVyci0yCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgaGF2ZSBtdWx0aXBsZSBiYXNlcyBpbiBhICdjb25zdGFudCcgKGNhdXNlcyBzaGVsbCB0byBleGl0KQoJKGtzaDg4IGZhaWxzIHRoaXMgdGVzdCkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCnN0ZGluOgoJdHlwZXNldCAtaSBpCglpPTMKCWk9MiMxMTAjMTEKCWVjaG8gJGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXi4qOi4qMiMxMTAjMTEuKlxuJC8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1lcnItMwpkZXNjcmlwdGlvbjoKCVN5bnRheCBlcnJvcnMgaW4gZXhwcmVzc2lvbnMgYW5kIGVmZmVjdHMgb24gYmFzZXMKCShpbnRlcmFjdGl2ZSBzbyBlcnJvcnMgZG9uJ3QgY2F1c2UgZXhpdHMpCgkoa3NoODggZmFpbHMgdGhpcyB0ZXN0IC0gc2hlbGwgZXhpdHMsIGV2ZW4gd2l0aCAtaSkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJUFMxPSAjIG1pbmltaXNlIHByb21wdCBoYXNzbGVzCgl0eXBlc2V0IC1pNCBhPTEwCgl0eXBlc2V0IC1pIGE9MisKCWVjaG8gJGEKCXR5cGVzZXQgLWk0IGE9MTAKCXR5cGVzZXQgLWkyIGE9MisKCWVjaG8gJGEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXihbI1wkXSApPy4qOi4qMisuKlxuLio6LioyKy4qXG4kLwpleHBlY3RlZC1zdGRvdXQ6Cgk0IzIyCgk0IzIyCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtZXJyLTQKZGVzY3JpcHRpb246CglBcmUgaW52YWxpZCBkaWdpdHMgKGFjY29yZGluZyB0byBiYXNlKSBlcnJvcnM/Cgkoa3NoOTMgZmFpbHMgdGhpcyB0ZXN0KQpleHBlY3RlZC1leGl0OiBlICE9IDAKc3RkaW46Cgl0eXBlc2V0IC1pIGk7CglpPTMjNApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eKFsjXCRdICk/Lio6LiozIzQuKlxuJC8KLS0tCm5hbWU6IGludGVnZXItYmFzZS0xCmRlc2NyaXB0aW9uOgoJTWlzc2luZyBudW1iZXIgYWZ0ZXIgYmFzZSBpcyB0cmVhdGVkIGFzIDAuCnN0ZGluOgoJdHlwZXNldCAtaSBpCglpPTMKCWk9MiMKCWVjaG8gJGkKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLTIKZGVzY3JpcHRpb246CglDaGVjayAnc3RpY2t5bmVzcycgb2YgYmFzZSBpbiB2YXJpb3VzIHNpdHVhdGlvbnMKc3RkaW46Cgl0eXBlc2V0IC1pIGk9OAoJZWNobyAkaQoJZWNobyAtLS0tLS0tLS0tIEEKCXR5cGVzZXQgLWk0IGo9OAoJZWNobyAkagoJZWNobyAtLS0tLS0tLS0tIEIKCXR5cGVzZXQgLWkgaz04Cgl0eXBlc2V0IC1pNCBrPTgKCWVjaG8gJGsKCWVjaG8gLS0tLS0tLS0tLSBDCgl0eXBlc2V0IC1pNCBsCglsPTMjMTAKCWVjaG8gJGwKCWVjaG8gLS0tLS0tLS0tLSBECgl0eXBlc2V0IC1pIG0KCW09MyMxMAoJZWNobyAkbQoJZWNobyAtLS0tLS0tLS0tIEUKCW49MiMxMQoJdHlwZXNldCAtaSBuCgllY2hvICRuCgluPTEwCgllY2hvICRuCgllY2hvIC0tLS0tLS0tLS0gRgoJdHlwZXNldCAtaTggbz0xMgoJdHlwZXNldCAtaTQgbwoJZWNobyAkbwoJZWNobyAtLS0tLS0tLS0tIEcKCXR5cGVzZXQgLWkgcAoJbGV0IHA9OCMxMgoJZWNobyAkcApleHBlY3RlZC1zdGRvdXQ6Cgk4CgktLS0tLS0tLS0tIEEKCTQjMjAKCS0tLS0tLS0tLS0gQgoJNCMyMAoJLS0tLS0tLS0tLSBDCgk0IzMKCS0tLS0tLS0tLS0gRAoJMyMxMAoJLS0tLS0tLS0tLSBFCgkyIzExCgkyIzEwMTAKCS0tLS0tLS0tLS0gRgoJNCMzMAoJLS0tLS0tLS0tLSBHCgk4IzEyCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtMwpkZXNjcmlwdGlvbjoKCU1vcmUgYmFzZSBwYXJzaW5nIChobW0gZG9lc24ndCB0ZXN0IG11Y2guLikKc3RkaW46Cgl0eXBlc2V0IC1pIGFhCglhYT0xKzEyIzEwKzIKCWVjaG8gJGFhCgl0eXBlc2V0IC1pIGJiCgliYj0xKyRhYQoJZWNobyAkYmIKCXR5cGVzZXQgLWkgYmIKCWJiPSRhYQoJZWNobyAkYmIKCXR5cGVzZXQgLWkgY2MKCWNjPSRhYQoJZWNobyAkY2MKZXhwZWN0ZWQtc3Rkb3V0OgoJMTUKCTE2CgkxNQoJMTUKLS0tCm5hbWU6IGludGVnZXItYmFzZS00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGluZ3Mgbm90IGRlY2xhcmVkIGFzIGludGVnZXJzIGFyZSBub3QgbWFkZSBpbnRlZ2VycywKCWFsc28sIGNoZWNrIGlmIGJhc2UgaXMgbm90IHJlc2V0IGJ5IC1pIHdpdGggbm8gYXJndW1lbnRzLgoJKGtzaDkzIGZhaWxzIC0gcHJpbnRzIDEwIzIwIC0gZ28gZmlndXJlKQpzdGRpbjoKCXh4PTIwCglsZXQgeHg9MTAKCXR5cGVzZXQgLWkgfCBncmVwICdeeHg9JwoJdHlwZXNldCAtaTQgYT0xMAoJdHlwZXNldCAtaSBhPTIwCgllY2hvICRhCmV4cGVjdGVkLXN0ZG91dDoKCTQjMTEwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtNQpkZXNjcmlwdGlvbjoKCU1vcmUgYmFzZSBzdHVmZgpzdGRpbjoKCXR5cGVzZXQgLWk0IGE9MyMxMAoJZWNobyAkYQoJZWNobyAtLQoJdHlwZXNldCAtaSBqPTMKCWo9J34zJwoJZWNobyAkagoJZWNobyAtLQoJdHlwZXNldCAtaSBrPTEKCXhbaz1rKzFdPTMKCWVjaG8gJGsKCWVjaG8gLS0KCXR5cGVzZXQgLWkgbAoJZm9yIGwgaW4gMSAyKzMgNDsgZG8gZWNobyAkbDsgZG9uZQpleHBlY3RlZC1zdGRvdXQ6Cgk0IzMKCS0tCgktNAoJLS0KCTIKCS0tCgkxCgk1Cgk0Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtNgpkZXNjcmlwdGlvbjoKCUV2ZW4gbW9yZSBiYXNlIHN0dWZmCgkoa3NoOTMgZmFpbHMgdGhpcyB0ZXN0IC0gcHJpbnRzIDApCnN0ZGluOgoJdHlwZXNldCAtaTcgaQoJaT0KCWVjaG8gJGkKZXhwZWN0ZWQtc3Rkb3V0OgoJNyMwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbm9uLWludGVnZXIgcGFyYW1ldGVycyBkb24ndCBnZXQgYmFzZXMgYXNzaWduZWQKc3RkaW46CgllY2hvICQoKCB6eiA9IDgjMTAwICkpCgllY2hvICR6egpleHBlY3RlZC1zdGRvdXQ6Cgk2NAoJNjQKLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1mbGF0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGRvZXMgbm90IG1hdGNoIFBPU3VYLCBiZWNhdXNlIGEgbm90IHR5cGUtc2FmZQoJc2NyaXB0aW5nIGxhbmd1YWdlIGhhcyAqbm8qIGJ1c2luZXNzIGludGVycHJldGluZyAiMDEwIiBhcyBvY3RhbApjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJZWNobyA6JCgoMTApKS4kKCgwMTApKS4kKCgweDEwKSkuCmV4cGVjdGVkLXN0ZG91dDoKCToxMC4xMC4xNi4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1mbGF0LWxlZ2FjeQpkZXNjcmlwdGlvbjoKCUNoZWNrIGJlaGF2aW91ciBtYXRjaGVzIFBPU3VYIGZvciBMRUdBQ1kgS1NICmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCnN0ZGluOgoJZWNobyA6JCgoMTApKS4kKCgwMTApKS4kKCgweDEwKSkuCmV4cGVjdGVkLXN0ZG91dDoKCToxMC44LjE2LgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLW51bWVyaWMtZnJvbQpkZXNjcmlwdGlvbjoKCUNoZWNrIGJlaGF2aW91ciBmb3IgYmFzZSBvbmUgdG8gMzYsIGFuZCB0aGF0IDM3IGVycm9ycyBvdXQKc3RkaW46CgllY2hvIDE6JCgoMSMxKSkwLgoJaT0xCgl3aGlsZSAoKCArK2kgPD0gMzYgKSk7IGRvCgkJZXZhbCAnZWNobyAnJGknOiQoKCckaScjMTApKS4nCglkb25lCgllY2hvIDM3OiQoJF9fcHJvZ25hbWUgLWMgJ2VjaG8gJCgoMzcjMTApKScpLiQ/OgpleHBlY3RlZC1zdGRvdXQ6CgkxOjQ5MC4KCTI6Mi4KCTM6My4KCTQ6NC4KCTU6NS4KCTY6Ni4KCTc6Ny4KCTg6OC4KCTk6OS4KCTEwOjEwLgoJMTE6MTEuCgkxMjoxMi4KCTEzOjEzLgoJMTQ6MTQuCgkxNToxNS4KCTE2OjE2LgoJMTc6MTcuCgkxODoxOC4KCTE5OjE5LgoJMjA6MjAuCgkyMToyMS4KCTIyOjIyLgoJMjM6MjMuCgkyNDoyNC4KCTI1OjI1LgoJMjY6MjYuCgkyNzoyNy4KCTI4OjI4LgoJMjk6MjkuCgkzMDozMC4KCTMxOjMxLgoJMzI6MzIuCgkzMzozMy4KCTM0OjM0LgoJMzU6MzUuCgkzNjozNi4KCTM3Oi4wOgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJhZCBudW1iZXIgJzM3IzEwJy8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLXRvCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIG9uZSB0byAzNiwgYW5kIHRoYXQgMzcgZXJyb3JzIG91dApzdGRpbjoKCWk9MAoJd2hpbGUgKCggKytpIDw9IDM3ICkpOyBkbwoJCXR5cGVzZXQgLVV1aSRpIHg9MHg0MAoJCWV2YWwgInR5cGVzZXQgLWkxMCB5PSR4IgoJCXByaW50ICRpOiR4LiR5LgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxOjEjQC42NC4KCTI6MiMxMDAwMDAwLjY0LgoJMzozIzIxMDEuNjQuCgk0OjQjMTAwMC42NC4KCTU6NSMyMjQuNjQuCgk2OjYjMTQ0LjY0LgoJNzo3IzEyMS42NC4KCTg6OCMxMDAuNjQuCgk5OjkjNzEuNjQuCgkxMDo2NC42NC4KCTExOjExIzU5LjY0LgoJMTI6MTIjNTQuNjQuCgkxMzoxMyM0Qy42NC4KCTE0OjE0IzQ4LjY0LgoJMTU6MTUjNDQuNjQuCgkxNjoxNiM0MC42NC4KCTE3OjE3IzNELjY0LgoJMTg6MTgjM0EuNjQuCgkxOToxOSMzNy42NC4KCTIwOjIwIzM0LjY0LgoJMjE6MjEjMzEuNjQuCgkyMjoyMiMySy42NC4KCTIzOjIzIzJJLjY0LgoJMjQ6MjQjMkcuNjQuCgkyNToyNSMyRS42NC4KCTI2OjI2IzJDLjY0LgoJMjc6MjcjMkEuNjQuCgkyODoyOCMyOC42NC4KCTI5OjI5IzI2LjY0LgoJMzA6MzAjMjQuNjQuCgkzMTozMSMyMi42NC4KCTMyOjMyIzIwLjY0LgoJMzM6MzMjMVYuNjQuCgkzNDozNCMxVS42NC4KCTM1OjM1IzFULjY0LgoJMzY6MzYjMVMuNjQuCgkzNzozNiMxUy42NC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipiYWQgaW50ZWdlciBiYXNlOiAzNy8KLS0tCm5hbWU6IGludGVnZXItYXJpdGhtZXRpYy1zcGFuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgd3JhcGFyb3VuZCBhbmQgc2l6ZSB0aGF0IGlzIGRlZmluZWQgaW4gbWtzaApjYXRlZ29yeTogaW50OjMyCnN0ZGluOgoJZWNobyBzOiQoKDIxNDc0ODM2NDcrMSkpLiQoKCgyMTQ3NDgzNjQ3KjIpKzEpKS4kKCgoMjE0NzQ4MzY0NyoyKSsyKSkuCgllY2hvIHU6JCgoIzIxNDc0ODM2NDcrMSkpLiQoKCMoMjE0NzQ4MzY0NyoyKSsxKSkuJCgoIygyMTQ3NDgzNjQ3KjIpKzIpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJczotMjE0NzQ4MzY0OC4tMS4wLgoJdToyMTQ3NDgzNjQ4LjQyOTQ5NjcyOTUuMC4KLS0tCm5hbWU6IGludGVnZXItYXJpdGhtZXRpYy1zcGFuLTY0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgd3JhcGFyb3VuZCBhbmQgc2l6ZSB0aGF0IGlzIGRlZmluZWQgaW4gbWtzaApjYXRlZ29yeTogaW50OjY0CnN0ZGluOgoJZWNobyBzOiQoKDkyMjMzNzIwMzY4NTQ3NzU4MDcrMSkpLiQoKCg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzEpKS4kKCgoOTIyMzM3MjAzNjg1NDc3NTgwNyoyKSsyKSkuCgllY2hvIHU6JCgoIzkyMjMzNzIwMzY4NTQ3NzU4MDcrMSkpLiQoKCMoOTIyMzM3MjAzNjg1NDc3NTgwNyoyKSsxKSkuJCgoIyg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzIpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJczotOTIyMzM3MjAzNjg1NDc3NTgwOC4tMS4wLgoJdTo5MjIzMzcyMDM2ODU0Nzc1ODA4LjE4NDQ2NzQ0MDczNzA5NTUxNjE1LjAuCi0tLQpuYW1lOiBsaW5lbm8tc3RkaW4KZGVzY3JpcHRpb246CglTZWUgaWYgJExJTkVOTyBpcyB1cGRhdGVkIGFuZCBjYW4gYmUgbW9kaWZpZWQuCnN0ZGluOgoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCglMSU5FTk89MjAKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEgMQoJQiAyCglDIDIwCi0tLQpuYW1lOiBsaW5lbm8taW5jCmRlc2NyaXB0aW9uOgoJU2VlIGlmICRMSU5FTk8gaXMgc2V0IGZvciAuJ2QgZmlsZXMuCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJkb3RmaWxlIgoJZWNobyBkb3QgQSAkTElORU5PCgllY2hvIGRvdCBCICRMSU5FTk8KCUxJTkVOTz0yMAoJZWNobyBkb3QgQyAkTElORU5PCnN0ZGluOgoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgkuIC4vZG90ZmlsZQpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJZG90IEEgMQoJZG90IEIgMgoJZG90IEMgMjAKLS0tCm5hbWU6IGxpbmVuby1mdW5jCmRlc2NyaXB0aW9uOgoJU2VlIGlmICRMSU5FTk8gaXMgc2V0IGZvciBjb21tYW5kcyBpbiBhIGZ1bmN0aW9uLgpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJYmFyKCkgewoJICAgIGVjaG8gZnVuYyBBICRMSU5FTk8KCSAgICBlY2hvIGZ1bmMgQiAkTElORU5PCgl9CgliYXIKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEgMQoJQiAyCglmdW5jIEEgNAoJZnVuYyBCIDUKCUMgOAotLS0KbmFtZTogbGluZW5vLXVuc2V0CmRlc2NyaXB0aW9uOgoJU2VlIGlmIHVuc2V0dGluZyBMSU5FTk8gbWFrZXMgaXQgbm9uLW1hZ2ljLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCnN0ZGluOgoJdW5zZXQgTElORU5PCgllY2hvIEEgJExJTkVOTwoJZWNobyBCICRMSU5FTk8KCWJhcigpIHsKCSAgICBlY2hvIGZ1bmMgQSAkTElORU5PCgkgICAgZWNobyBmdW5jIEIgJExJTkVOTwoJfQoJYmFyCgkuIC4vZG90ZmlsZQoJZWNobyBDICRMSU5FTk8KZXhwZWN0ZWQtc3Rkb3V0OgoJQQoJQgoJZnVuYyBBCglmdW5jIEIKCWRvdCBBCglkb3QgQgoJQwotLS0KbmFtZTogbGluZW5vLXVuc2V0LXVzZQpkZXNjcmlwdGlvbjoKCVNlZSBpZiB1bnNldHRpbmcgTElORU5PIG1ha2VzIGl0IG5vbi1tYWdpYyBldmVuCgl3aGVuIGl0IGlzIHJlLXVzZWQuCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJkb3RmaWxlIgoJZWNobyBkb3QgQSAkTElORU5PCgllY2hvIGRvdCBCICRMSU5FTk8Kc3RkaW46Cgl1bnNldCBMSU5FTk8KCUxJTkVOTz0zCgllY2hvIEEgJExJTkVOTwoJZWNobyBCICRMSU5FTk8KCWJhcigpIHsKCSAgICBlY2hvIGZ1bmMgQSAkTElORU5PCgkgICAgZWNobyBmdW5jIEIgJExJTkVOTwoJfQoJYmFyCgkuIC4vZG90ZmlsZQoJZWNobyBDICRMSU5FTk8KZXhwZWN0ZWQtc3Rkb3V0OgoJQSAzCglCIDMKCWZ1bmMgQSAzCglmdW5jIEIgMwoJZG90IEEgMwoJZG90IEIgMwoJQyAzCi0tLQpuYW1lOiBsaW5lbm8tdHJhcApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIExJTkVOTyBpcyB0cmFja2VkIGluIHRyYXBzCnN0ZGluOgoJZmFpbCgpIHsKCQllY2hvICJsaW5lIDwkMT4iCgkJZXhpdCAxCgl9Cgl0cmFwICdmYWlsICRMSU5FTk8nIElOVCBFUlIKCWZhbHNlCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgPDY+CmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHVua25vd24tdHJhcApkZXNjcmlwdGlvbjoKCUVuc3VyZSB1bmtub3duIHRyYXBzIGFyZSBub3QgYSBzeW50YXggZXJyb3IKc3RkaW46CgkoCgl0cmFwICJlY2hvIHRyYXAgMSBleGVjdXRlZCIgVU5LTk9XTlNJR05BTCB8fCBlY2hvICJmb28iCgllY2hvID0xCgl0cmFwICJlY2hvIHRyYXAgMiBleGVjdXRlZCIgVU5LTk9XTlNJR05BTCBFWElUIDk5OTk5OSBGTk9SRAoJZWNobyA9ICQ/CgkpIDI+JjEgfCBzZWQgInMBXiR7X19wcm9nbmFtZSUuZXhlfVwuKmUqeCplKjogPHN0ZGluPlxbWzAtOV0qXQFQUk9HASIKZXhwZWN0ZWQtc3Rkb3V0OgoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnVU5LTk9XTlNJR05BTCcKCWZvbwoJPTEKCVBST0c6IHRyYXA6IGJhZCBzaWduYWwgJ1VOS05PV05TSUdOQUwnCglQUk9HOiB0cmFwOiBiYWQgc2lnbmFsICc5OTk5OTknCglQUk9HOiB0cmFwOiBiYWQgc2lnbmFsICdGTk9SRCcKCT0gMwoJdHJhcCAyIGV4ZWN1dGVkCi0tLQpuYW1lOiByZWFkLUlGUy0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIGRlZmF1bHQgSUZTCnN0ZGluOgoJZWNobyAiQSBCICIgPiBJTgoJdW5zZXQgeCB5IHoKCXJlYWQgeCB5IHogPCBJTgoJZWNobyAxOiAieFskeF0geVskeV0gelskel0iCgllY2hvIDFhOiAke3oteiBub3Qgc2V0fQoJcmVhZCB4IDwgSU4KCWVjaG8gMjogInhbJHhdIgpleHBlY3RlZC1zdGRvdXQ6CgkxOiB4W0FdIHlbQl0geltdCgkxYToKCTI6IHhbQSBCXQotLS0KbmFtZTogcmVhZC1rc2gtMQpkZXNjcmlwdGlvbjoKCUlmIG5vIHZhciBzcGVjaWZpZWQsIFJFUExZIGlzIHVzZWQKc3RkaW46CgllY2hvICJhYmMiID4gSU4KCXJlYWQgPCBJTgoJZWNobyAiWyRSRVBMWV0iOwpleHBlY3RlZC1zdGRvdXQ6CglbYWJjXQotLS0KbmFtZTogcmVhZC1yZWdyZXNzLTEKZGVzY3JpcHRpb246CglDaGVjayBhIHJlZ3Jlc3Npb24gb2YgcmVhZApmaWxlLXNldHVwOiBmaWxlIDY0NCAiZm9vIgoJZm9vIGJhcgoJYmF6CglibGFoCnN0ZGluOgoJd2hpbGUgcmVhZCBhIGIgYzsgZG8KCQlyZWFkIGQKCQlicmVhawoJZG9uZSA8Zm9vCgllY2hvICI8JGF8JGJ8JGM+PCRkPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvb3xiYXJ8PjxiYXo+Ci0tLQpuYW1lOiByZWFkLWRlbGltLTEKZGVzY3JpcHRpb246CglDaGVjayByZWFkIHdpdGggZGVsaW1pdGVycwpzdGRpbjoKCWVtaXQoKSB7CgkJcHJpbnQgLW4gJ2ZvbyBiYXJcdGJhelxuYmxhaCBcMGJsdWJcdGJsZWNoXG5teW9rIG1lY2sgXDAnCgl9CgllbWl0IHwgd2hpbGUgSUZTPSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICJlaD8iIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvbyBiYXIJYmF6CglibGFoID4KCTxibHViCWJsZWNoCglteW9rIG1lY2sgPgoJPGZvbyBiYXIJYmF6CglibGFoPgoJPGJsdWIJYmxlY2gKCW15b2sgbWVjaz4KCTxmb28gYmFyCWJhegoJYmxhaCBibHViCWJsPgoJPGNoCglteW9rIG0+Ci0tLQpuYW1lOiByZWFkLWV4dC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZCB3aXRoIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQsIGFuZCAtQQpzdGRpbjoKCXByaW50ICdmb29cbmJhcicgPngxCglwcmludCAtbiB4ID54MgoJcHJpbnQgJ2Zvb1xcIGJhciBiYXonID54MwoJeDFhPXU7IHJlYWQgeDFhIDx4MQoJeDFiPXU7IHJlYWQgLU4tMSB4MWIgPHgxCgl4MmE9dTsgcmVhZCB4MmEgPHgyOyByMmE9JD8KCXgyYj11OyByZWFkIC1OMiB4MmMgPHgyOyByMmI9JD8KCXgyYz11OyByZWFkIC1uMiB4MmMgPHgyOyByMmM9JD8KCXgzYT11OyByZWFkIC1BIHgzYSA8eDMKCXByaW50IC1yICJ4MWE9PCR4MWE+IgoJcHJpbnQgLXIgIngxYj08JHgxYj4iCglwcmludCAtciAieDJhPSRyMmE8JHgyYT4iCglwcmludCAtciAieDJiPSRyMmI8JHgyYj4iCglwcmludCAtciAieDJjPSRyMmM8JHgyYz4iCglwcmludCAtciAieDNhPTwke3gzYVswXX18JHt4M2FbMV19fCR7eDNhWzJdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCXgxYT08Zm9vPgoJeDFiPTxmb28KCWJhcj4KCXgyYT0xPHg+Cgl4MmI9MTx1PgoJeDJjPTA8eD4KCXgzYT08Zm9vIGJhcnxiYXp8PgotLS0KbmFtZTogcmVncmVzc2lvbi0xCmRlc2NyaXB0aW9uOgoJTGV4IGFycmF5IGNvZGUgaGFkIHByb2JsZW1zIHdpdGggdGhpcy4Kc3RkaW46CgllY2hvIGZvb1sKCW49YmFyCgllY2hvICJoaVsgJG4gXT0xIgpleHBlY3RlZC1zdGRvdXQ6Cglmb29bCgloaVsgYmFyIF09MQotLS0KbmFtZTogcmVncmVzc2lvbi0yCmRlc2NyaXB0aW9uOgoJV2hlbiBQQVRIIGlzIHNldCBiZWZvcmUgcnVubmluZyBhIGNvbW1hbmQsIHRoZSBuZXcgcGF0aCBpcwoJbm90IHVzZWQgaW4gZG9pbmcgdGhlIHBhdGggc2VhcmNoCgkJJCBlY2hvIGVjaG8gaGkgPiAvdG1wL3EgOyBjaG1vZCBhK3J4IC90bXAvcQoJCSQgUEFUSD0vdG1wIHEKCQlxOiBub3QgZm91bmQKCQkkCglpbiBjb21leGVjKCkgdGhlIHR3byBsaW5lcwoJCXdoaWxlICgqdnAgIT0gTlVMTCkKCQkJKHZvaWQpIHR5cGVzZXQoKnZwKyssIHh4eCwgMCk7CgluZWVkIHRvIGJlIG1vdmVkIG91dCBvZiB0aGUgc3dpdGNoIHRvIGJlZm9yZSBmaW5kY29tKCkgaXMKCWNhbGxlZCAtIEkgZG9uJ3Qga25vdyB3aGF0IHRoaXMgd2lsbCBicmVhay4Kc3RkaW46Cgk6ICR7UFdEOi1gcHdkIDI+IC9kZXYvbnVsbGB9Cgk6ICR7UFdEOj8iUFdEIG5vdCBzZXQgLSBjYW4ndCBkbyB0ZXN0In0KCW1rZGlyIFkKCWNhdCA+IFkveHh4c2NyaXB0IDw8IEVPRgoJIyEvYmluL3NoCgkjIE5lZWQgdG8gcmVzdG9yZSBwYXRoIHNvIGVjaG8gY2FuIGJlIGZvdW5kIChzb21lIHNoZWxscyBkb24ndCBoYXZlCgkjIGl0IGFzIGEgYnVpbHQtaW4pCglQQVRIPVwkT0xEUEFUSAoJZWNobyBoaQoJZXhpdCAwCglFT0YKCWNobW9kIGErcnggWS94eHhzY3JpcHQKCWV4cG9ydCBPTERQQVRIPSIkUEFUSCIKCVBBVEg9JFBXRC9ZIHh4eHNjcmlwdAoJZXhpdCAkPwpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi02CmRlc2NyaXB0aW9uOgoJUGFyc2luZyBvZiAkKC4uKSBleHByZXNzaW9ucyBpcyBub24tb3B0aW1hbC4gIEl0IGlzCglpbXBvc3NpYmxlIHRvIGhhdmUgYW55IHBhcmVudGhlc2VzIGluc2lkZSB0aGUgZXhwcmVzc2lvbi4KCUkuZS4sCgkJJCBrc2ggLWMgJ2VjaG8gJChlY2hvIFwoICknCgkJbm8gY2xvc2luZyBxdW90ZQoJCSQga3NoIC1jICdlY2hvICQoZWNobyAiKCIgKScKCQlubyBjbG9zaW5nIHF1b3RlCgkJJAoJVGhlIHNvbHV0aW9uIGlzIHRvIGhhY2sgdGhlIHBhcnNpbmcgY2xvZGUgaW4gbGV4LmMsIHRoZQoJcXVlc3Rpb24gaXMgaG93IHRvIGhhY2sgaXQ6IHNob3VsZCBhbnkgcGFyZW50aGVzZXMgYmUKCWVzY2FwZWQgYnkgYSBiYWNrc2xhc2gsIG9yIHNob3VsZCByZWN1cnNpdmUgcGFyc2luZyBiZSBkb25lCgkoc28gcXVvdGVzIGNvdWxkIGFsc28gYmUgdXNlZCB0byBoaWRlIGhlbSkuICBUaGUgZm9ybWVyIGlzCgllYXNpZXIsIHRoZSBsYXRlciBiZXR0ZXIuLi4Kc3RkaW46CgllY2hvICQoZWNobyBcKCApCgllY2hvICQoZWNobyAiKCIgKQpleHBlY3RlZC1zdGRvdXQ6CgkoCgkoCi0tLQpuYW1lOiByZWdyZXNzaW9uLTkKZGVzY3JpcHRpb246CglDb250aW51ZSBpbiBhIGZvciBsb29wIGRvZXMgbm90IHdvcmsgcmlnaHQ6CgkJZm9yIGkgaW4gYSBiIGMgOyBkbwoJCQlpZiBbICRpID0gYiBdIDsgdGhlbgoJCQkJY29udGludWUKCQkJZmkKCQkJZWNobyAkaQoJCWRvbmUKCVByaW50cyBhIGZvcmV2ZXIuLi4Kc3RkaW46CglmaXJzdD15ZXMKCWZvciBpIGluIGEgYiBjIDsgZG8KCQlpZiBbICRpID0gYiBdIDsgdGhlbgoJCQlpZiBbICRmaXJzdCA9IG5vIF0gOyB0aGVuCgkJCQllY2hvICdjb250aW51ZSBpbiBmb3IgbG9vcCBicm9rZW4nCgkJCQlicmVhawkjIGhvcGUgYnJlYWsgaXNuJ3QgYnJva2VuIHRvbyA6LSkKCQkJZmkKCQkJZmlyc3Q9bm8KCQkJY29udGludWUKCQlmaQoJZG9uZQoJZWNobyBieWUKZXhwZWN0ZWQtc3Rkb3V0OgoJYnllCi0tLQpuYW1lOiByZWdyZXNzaW9uLTEwCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQlzZXQgLS0gYGZhbHNlYAoJCWVjaG8gJD8KCXNob3VsZCBwcmludCAwIGFjY29yZGluZyB0byBQT1NJWCAoZGFzaCwgYmFzaCwga3NoOTMsIHBvc2gpCglidXQgbm90IDAgYWNjb3JkaW5nIHRvIHRoZSBnZXRvcHQoMSkgbWFudWFsIHBhZ2UsIGtzaDg4LCBhbmQKCUJvdXJuZSBzaCAoc3VjaCBhcyAvYmluL3NoIG9uIFNvbGFyaXMpLgoJSW4gbWtzaCBSMzliLCB3ZSBob25vdXIgUE9TSVggZXhjZXB0IHdoZW4gLW8gc2ggaXMgc2V0LgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJc2hvd2YoKSB7CgkJW1sgLW8gcG9zaXggXV07IEZQT1NJWD0kKCgxLSQ/KSkKCQlbWyAtbyBzaCBdXTsgRlNIPSQoKDEtJD8pKQoJCWVjaG8gLW4gIkZQT1NJWD0kRlBPU0lYIEZTSD0kRlNIICIKCX0KCXNldCArbyBwb3NpeCArbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHBvc2l4CglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJRlBPU0lYPTAgRlNIPTAgcnY9MAoJRlBPU0lYPTAgRlNIPTEgcnY9MQoJRlBPU0lYPTEgRlNIPTAgcnY9MAotLS0KbmFtZTogcmVncmVzc2lvbi0xMC1sZWdhY3kKZGVzY3JpcHRpb246CglUaGUgZm9sbG93aW5nOgoJCXNldCAtLSBgZmFsc2VgCgkJZWNobyAkPwoJc2hvdWxkIHByaW50IDAgYWNjb3JkaW5nIHRvIFBPU0lYIChkYXNoLCBiYXNoLCBrc2g5MywgcG9zaCkKCWJ1dCBub3QgMCBhY2NvcmRpbmcgdG8gdGhlIGdldG9wdCgxKSBtYW51YWwgcGFnZSwga3NoODgsIGFuZAoJQm91cm5lIHNoIChzdWNoIGFzIC9iaW4vc2ggb24gU29sYXJpcykuCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCnN0ZGluOgoJc2hvd2YoKSB7CgkJW1sgLW8gcG9zaXggXV07IEZQT1NJWD0kKCgxLSQ/KSkKCQlbWyAtbyBzaCBdXTsgRlNIPSQoKDEtJD8pKQoJCWVjaG8gLW4gIkZQT1NJWD0kRlBPU0lYIEZTSD0kRlNIICIKCX0KCXNldCArbyBwb3NpeCArbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHBvc2l4CglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJRlBPU0lYPTAgRlNIPTAgcnY9MQoJRlBPU0lYPTAgRlNIPTEgcnY9MQoJRlBPU0lYPTEgRlNIPTAgcnY9MQotLS0KbmFtZTogcmVncmVzc2lvbi0xMQpkZXNjcmlwdGlvbjoKCVRoZSBmb2xsb3dpbmc6CgkJeD0vZm9vL2Jhci9ibGFoCgkJZWNobyAke3gjIyovfQoJc2hvdWxkIGVjaG8gYmxhaCBidXQgb24gc29tZSBtYWNoaW5lcyBlY2hvcyAvZm9vL2Jhci9ibGFoLgpzdGRpbjoKCXg9L2Zvby9iYXIvYmxhaAoJZWNobyAke3gjIyovfQpleHBlY3RlZC1zdGRvdXQ6CglibGFoCi0tLQpuYW1lOiByZWdyZXNzaW9uLTEyCmRlc2NyaXB0aW9uOgoJQm90aCBvZiB0aGUgZm9sbG93aW5nIGVjaG9zIHByb2R1Y2UgdGhlIHNhbWUgb3V0cHV0IHVuZGVyIHNoL2tzaC5hdHQ6CgkJIyEvYmluL3NoCgkJeD0iZm9vCWJhciIKCQllY2hvICJgZWNobyBcIiR4XCJgIgoJCWVjaG8gImBlY2hvICIkeCJgIgoJcGRrc2ggcHJvZHVjZXMgZGlmZmVyZW50IG91dHB1dCBmb3IgdGhlIGZvcm1lciAoZm9vIGluc3RlYWQgb2YgZm9vXHRiYXIpCnN0ZGluOgoJeD0iZm9vCWJhciIKCWVjaG8gImBlY2hvIFwiJHhcImAiCgllY2hvICJgZWNobyAiJHgiYCIKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vCWJhcgoJZm9vCWJhcgotLS0KbmFtZTogcmVncmVzc2lvbi0xMwpkZXNjcmlwdGlvbjoKCVRoZSBmb2xsb3dpbmcgY29tbWFuZCBoYW5ncyBmb3JldmVyOgoJCSQgKDogOyBjYXQgL2V0Yy90ZXJtY2FwKSB8IHNsZWVwIDIKCVRoaXMgaXMgYmVjYXVzZSB0aGUgc2hlbGwgZm9ya3MgYSBzaGVsbCB0byBydW4gdGhlICguLikgY29tbWFuZAoJYW5kIHRoaXMgc2hlbGwgaGFzIHRoZSBwaXBlIG9wZW4uICBXaGVuIHRoZSBzbGVlcCBkaWVzLCB0aGUgY2F0Cglkb2Vzbid0IGdldCBhIFNJR1BJUEUgJ2NhdXNlIGEgcHJvY2VzcyAoaWUsIHRoZSBzZWNvbmQgc2hlbGwpCglzdGlsbCBoYXMgdGhlIHBpcGUgb3Blbi4KCQoJTk9URTogdGhpcyB0ZXN0IHByb3Zva2VzIGEgYml6YXJyZSBidWcgaW4ga3NoOTMgKHNoZWxsIHN0YXJ0cyByZWFkaW5nCgkgICAgICBjb21tYW5kcyBmcm9tIC9ldGMvdGVybWNhcC4uKQp0aW1lLWxpbWl0OiAxMApzdGRpbjoKCWVjaG8gQSBsaW5lIG9mIHRleHQgdGhhdCB3aWxsIGJlIGR1cGxpY2F0ZWQgcXVpdGUgYSBudW1iZXIgb2YgdGltZXMuPiB0MQoJY2F0IHQxIHQxIHQxIHQxICB0MSB0MSB0MSB0MSAgdDEgdDEgdDEgdDEgIHQxIHQxIHQxIHQxICA+IHQyCgljYXQgdDIgdDIgdDIgdDIgIHQyIHQyIHQyIHQyICB0MiB0MiB0MiB0MiAgdDIgdDIgdDIgdDIgID4gdDEKCWNhdCB0MSB0MSB0MSB0MSA+IHQyCgkoOiA7IGNhdCB0MiAyPi9kZXYvbnVsbCkgfCBzbGVlcCAxCi0tLQpuYW1lOiByZWdyZXNzaW9uLTE0CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkkIChmb29iYXIpIDI+IC9kZXYvbnVsbAoJZ2VuZXJhdGVzIG5vIG91dHB1dCB1bmRlciAvYmluL3NoLCBidXQgcGRrc2ggcHJvZHVjZXMgdGhlIGVycm9yCgkJZm9vYmFyOiBub3QgZm91bmQKCUFsc28sIHRoZSBjb21tYW5kCgkJJCBmb29iYXIgMj4gL2Rldi9udWxsCglnZW5lcmF0ZXMgYW4gZXJyb3IgdW5kZXIgL2Jpbi9zaCBhbmQgcGRrc2gsIGJ1dCBBVCZUIGtzaDg4IHByb2R1Y2VzCglubyBlcnJvciAocmVkaXJlY3RlZCB0byAvZGV2L251bGwpLgpzdGRpbjoKCSh5b3Uvc2hvdWxkL25vdC9zZWUvdGhpcy9lcnJvci8xKSAyPiAvZGV2L251bGwKCXlvdS9zaG91bGQvbm90L3NlZS90aGlzL2Vycm9yLzIgMj4gL2Rldi9udWxsCgl0cnVlCi0tLQpuYW1lOiByZWdyZXNzaW9uLTE1CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkkIHdoZW5jZSBmb29iYXIKCWdlbmVyYXRlcyBhIGJsYW5rIGxpbmUgdW5kZXIgcGRrc2ggYW5kIHNldHMgdGhlIGV4aXQgc3RhdHVzIHRvIDAuCglBVCZUIGtzaDg4IGdlbmVyYXRlcyBubyBvdXRwdXQgYW5kIHNldHMgdGhlIGV4aXQgc3RhdHVzIHRvIDEuICBBbHNvLAoJdGhlIGNvbW1hbmQKCQkkIHdoZW5jZSBmb29iYXIgY2F0CglnZW5lcmF0ZXMgbm8gb3V0cHV0IHVuZGVyIEFUJlQga3NoODggKHBka3NoIGdlbmVyYXRlcyBhIGJsYW5rIGxpbmUKCWFuZCAvYmluL2NhdCkuCnN0ZGluOgoJd2hlbmNlIGRvZXMvbm90L2V4aXN0ID4gL2Rldi9udWxsCgllY2hvIDE6ICQ/CgllY2hvIDI6ICQod2hlbmNlIGRvZXMvbm90L2V4aXN0IHwgd2MgLWwpCgllY2hvIDM6ICQod2hlbmNlIGRvZXMvbm90L2V4aXN0IGNhdCB8IHdjIC1sKQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAxCgkyOiAwCgkzOiAwCi0tLQpuYW1lOiByZWdyZXNzaW9uLTE2CmRlc2NyaXB0aW9uOgoJJHt2YXIlJWV4cHJ9IHNlZW1zIHRvIGJlIGJyb2tlbiBpbiBtYW55IHBsYWNlcy4gIE9uIHRoZSBtaXBzCgl0aGUgY29tbWFuZHMKCQkkIHJlYWQgbGluZSA8IC9ldGMvcGFzc3dkCgkJJCBlY2hvICRsaW5lCgkJcm9vdDowOjE6Li4uCgkJJCBlY2hvICR7bGluZSUlOip9CgkJcm9vdAoJCSQgZWNobyAkbGluZQoJCXJvb3QKCQkkCgljaGFuZ2UgdGhlIHZhbHVlIG9mIGxpbmUuICBPbiBzdW40cyAmIHBhcywgdGhlIGVjaG8gJHtsaW5lJSU6Kn0gZG9lc24ndAoJd29yay4gIEhhdmVuJ3QgY2hlY2tlZCBlbHNld2hlcmUuLi4Kc2NyaXB0OgoJcmVhZCB4Cgl5PSR4CgllY2hvICR7eCUlOip9CgllY2hvICR4CnN0ZGluOgoJcm9vdDphc2RqaGFzZGFzamhzOjA6MTpSb290Oi86L2Jpbi9zaApleHBlY3RlZC1zdGRvdXQ6Cglyb290Cglyb290OmFzZGpoYXNkYXNqaHM6MDoxOlJvb3Q6LzovYmluL3NoCi0tLQpuYW1lOiByZWdyZXNzaW9uLTE3CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkuIC9mb28vYmFyCglzaG91bGQgc2V0IHRoZSBleGl0IHN0YXR1cyB0byBub24temVybyAoc2ggYW5kIEFUJlQga3NoODggZG8pLgoJWFhYIGRvdGluZyBhIG5vbiBleGlzdGVudCBmaWxlIGlzIGEgZmF0YWwgZXJyb3IgZm9yIGEgc2NyaXB0CnN0ZGluOgoJLiBkb2VzL25vdC9leGlzdApleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uPy8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTkKZGVzY3JpcHRpb246CglCb3RoIG9mIHRoZSBmb2xsb3dpbmcgZWNob3Mgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgdGhpbmcsIGJ1dCBkb24ndDoKCQkkIHg9Zm9vL2JhcgoJCSQgZWNobyAke3glLyp9CgkJZm9vCgkJJCBlY2hvICIke3glLyp9IgoJCWZvby9iYXIKc3RkaW46Cgl4PWZvby9iYXIKCWVjaG8gIiR7eCUvKn0iCmV4cGVjdGVkLXN0ZG91dDoKCWZvbwotLS0KbmFtZTogcmVncmVzc2lvbi0yMQpkZXNjcmlwdGlvbjoKCWJhY2tzbGFzaCBkb2VzIG5vdCB3b3JrIGFzIGV4cGVjdGVkIGluIGNhc2UgbGFiZWxzOgoJJCB4PScteCcKCSQgY2FzZSAkeCBpbgoJLVw/KSBlY2hvIGhpCgllc2FjCgloaQoJJCB4PSctPycKCSQgY2FzZSAkeCBpbgoJLVxcPykgZWNobyBoaQoJZXNhYwoJaGkKCSQKc3RkaW46CgljYXNlIC14IGluCgktXD8pCWVjaG8gZmFpbAoJZXNhYwotLS0KbmFtZTogcmVncmVzc2lvbi0yMgpkZXNjcmlwdGlvbjoKCVF1b3RpbmcgYmFja3F1b3RlcyBpbnNpZGUgYmFja3F1b3RlcyBkb2Vzbid0IHdvcms6CgkkIGVjaG8gYGVjaG8gaGkgXGBlY2hvIHRoZXJlXGAgZm9sa3NgCglhc2tzIGZvciBtb3JlIGluZm8uICBzaCBhbmQgQVQmVCBrc2g4OCBib3RoIGVjaG8KCWhpIHRoZXJlIGZvbGtzCnN0ZGluOgoJZWNobyBgZWNobyBoaSBcYGVjaG8gdGhlcmVcYCBmb2xrc2AKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkgdGhlcmUgZm9sa3MKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMjMKZGVzY3JpcHRpb246CgkpKSBpcyBub3QgdHJlYXRlZCBgY29ycmVjdGx5JzoKCSAgICAkIChlY2hvIGhpIDsgKGVjaG8gdGhlcmUgOyBlY2hvIGZvbGtzKSkKCSAgICBtaXNzaW5nICgoCgkgICAgJAoJaW5zdGVhZCBvZiAoYXMgc2ggYW5kIGtzaC5hdHQpCgkgICAgJCAoZWNobyBoaSA7IChlY2hvIHRoZXJlIDsgZWNobyBmb2xrcykpCgkgICAgaGkKCSAgICB0aGVyZQoJICAgIGZvbGtzCgkgICAgJApzdGRpbjoKCSggOiA7ICggOiA7IGVjaG8gaGkpKQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi0yNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHJlYWRpbmcgc3RkaW4gaW4gYSB3aGlsZSBsb29wLiAgVGhlIHJlYWQgc2hvdWxkIG9ubHkgcmVhZAoJYSBzaW5nbGUgbGluZSwgbm90IGEgd2hvbGUgc3RkaW8gYnVmZmVyOyB0aGUgY2F0IHNob3VsZCBnZXQKCXRoZSByZXN0LgpzdGRpbjoKCShlY2hvIGE7IGVjaG8gYikgfCB3aGlsZSByZWFkIHggOyBkbwoJICAgIGVjaG8gJHgKCSAgICBjYXQgPiAvZGV2L251bGwKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJYQotLS0KbmFtZTogcmVncmVzc2lvbi0yNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHJlYWRpbmcgc3RkaW4gaW4gYSB3aGlsZSBsb29wLiAgVGhlIHJlYWQgc2hvdWxkIHJlYWQgYm90aAoJbGluZXMsIG5vdCBqdXN0IHRoZSBmaXJzdC4Kc2NyaXB0OgoJYT0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgbGFzdD0keAoJICAgIHJlYWQgeAoJICAgIGNhdCAvZGV2L251bGwgfCBzZWQgJ3MveC95LycKCSAgICBhPXgkYQoJZG9uZQoJZWNobyAkbGFzdApzdGRpbjoKCWEKCWIKZXhwZWN0ZWQtc3Rkb3V0OgoJYgotLS0KbmFtZTogcmVncmVzc2lvbi0yNwpkZXNjcmlwdGlvbjoKCVRoZSBjb21tYW5kCgkJLiAvZG9lcy9ub3QvZXhpc3QKCXNob3VsZCBjYXVzZSBhIHNjcmlwdCB0byBleGl0LgpzdGRpbjoKCS4gZG9lcy9ub3QvZXhpc3QKCWVjaG8gaGkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvZG9lc1wvbm90XC9leGlzdC8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMjgKZGVzY3JpcHRpb246Cgl2YXJpYWJsZSBhc3NpZ25lbWVudHMgbm90IGRldGVjdGVkIHdlbGwKc3RkaW46CglhLng9MSBlY2hvIGhpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogL2FcLng9MS8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMjkKZGVzY3JpcHRpb246CglhbGlhcyBleHBhbnNpb24gZGlmZmVyZW50IGZyb20gQVQmVCBrc2g4OApzdGRpbjoKCWFsaWFzIGE9J2ZvciAnIGI9J2kgaW4nCglhIGIgaGkgOyBkbyBlY2hvICRpIDsgZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi0zMApkZXNjcmlwdGlvbjoKCXN0cmFuZ2UgY2hhcmFjdGVycyBhbGxvd2VkIGluc2lkZSAkey4uLn0Kc3RkaW46CgllY2hvICR7YXtifX0KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLj8vCi0tLQpuYW1lOiByZWdyZXNzaW9uLTMxCmRlc2NyaXB0aW9uOgoJRG9lcyByZWFkIGhhbmRsZSBwYXJ0aWFsIGxpbmVzIGNvcnJlY3RseQpzY3JpcHQ6CglhPSByZXQ9Cgl3aGlsZSBbICIkYSIgIT0geHh4IF0gOyBkbwoJICAgIHJlYWQgeCB5IHoKCSAgICByZXQ9JD8KCSAgICBhPXgkYQoJZG9uZQoJZWNobyAiWyR4XSIKCWVjaG8gJHJldApzdGRpbjogIQoJYSBBIGFBCgliIEIgQmIKCWMKZXhwZWN0ZWQtc3Rkb3V0OgoJW2NdCgkxCi0tLQpuYW1lOiByZWdyZXNzaW9uLTMyCmRlc2NyaXB0aW9uOgoJRG9lcyByZWFkIHNldCB2YXJpYWJsZXMgdG8gbnVsbCBhdCBlb2Y/CnNjcmlwdDoKCWE9Cgl3aGlsZSBbICIkYSIgIT0geHh4IF0gOyBkbwoJICAgIHJlYWQgeCB5IHoKCSAgICBhPXgkYQoJZG9uZQoJZWNobyAxOiAke3gteCBub3Qgc2V0fSAke3kteSBub3Qgc2V0fSAke3oteiBub3Qgc2V0fQoJZWNobyAyOiAke3g6K3ggbm90IG51bGx9ICR7eToreSBub3QgbnVsbH0gJHt6Oit6IG5vdCBudWxsfQpzdGRpbjoKCWEgQSBBYQoJYiBCIEJiCmV4cGVjdGVkLXN0ZG91dDoKCTE6CgkyOgotLS0KbmFtZTogcmVncmVzc2lvbi0zMwpkZXNjcmlwdGlvbjoKCURvZXMgdW1hc2sgcHJpbnQgYSBsZWFkaW5nIDAgd2hlbiB1bWFzayBpcyAzIGRpZ2l0cz8Kc3RkaW46CgkjIG9uIE1pTlQsIHRoZSBmaXJzdCB1bWFzayBjYWxsIHNlZW1zIHRvIGZhaWwKCXVtYXNrIDAyMgoJIyBub3csIHRoZSB0ZXN0IHByb3BlcgoJdW1hc2sgMjIyCgl1bWFzawpleHBlY3RlZC1zdGRvdXQ6CgkwMjIyCi0tLQpuYW1lOiByZWdyZXNzaW9uLTM1CmRlc2NyaXB0aW9uOgoJVGVtcG9yeSBmaWxlcyB1c2VkIGZvciBoZXJlLWRvY3MgaW4gZnVuY3Rpb25zIGdldCB0cmFzaGVkIGFmdGVyCgl0aGUgZnVuY3Rpb24gaXMgcGFyc2VkIChiZWZvcmUgaXQgaXMgZXhlY3V0ZWQpCnN0ZGluOgoJZjEoKSB7CgkJY2F0IDw8LSBFT0YKCQkJRjEKCQlFT0YKCQlmMigpIHsKCQkJY2F0IDw8LSBFT0YKCQkJCUYyCgkJCUVPRgoJCX0KCX0KCWYxCglmMgoJdW5zZXQgLWYgZjEKCWYyCmV4cGVjdGVkLXN0ZG91dDoKCUYxCglGMgoJRjIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzYKZGVzY3JpcHRpb246CglDb21tYW5kIHN1YnN0aXR1dGlvbiBicmVha3MgcmVhZGluZyBpbiB3aGlsZSBsb29wCgkodGVzdCBmcm9tIDxzamdAdm9pZC56ZW4ub3ouYXU+KQpzdGRpbjoKCShlY2hvIGFiY2RlZjsgZWNobzsgZWNobyAxMjMpIHwKCSAgICB3aGlsZSByZWFkIGxpbmUKCSAgICBkbwoJICAgICAgIyB0aGUgZm9sbG93aW5nIGxpbmUgYnJlYWtzIGl0CgkgICAgICBjPWBlY2hvICRsaW5lIHwgd2MgLWNgCgkgICAgICBlY2hvICRjCgkgICAgZG9uZQpleHBlY3RlZC1zdGRvdXQ6Cgk3CgkxCgk0Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTM3CmRlc2NyaXB0aW9uOgoJTWFjaGluZXMgd2l0aCBicm9rZW4gdGltZXMoKSAocmVwb3J0ZWQgYnkgPHNqZ0B2b2lkLnplbi5vei5hdT4pCgl0aW1lIGRvZXMgbm90IHJlcG9ydCBjb3JyZWN0IHJlYWwgdGltZQpzdGRpbjoKCXRpbWUgc2xlZXAgMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogIS9eXHMqMFwuMFtcc1xkXStyZWFsfF5ccypyZWFsW1xzXSswK1wuMC8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzgKZGVzY3JpcHRpb246CglzZXQgLWUgZG9lc24ndCBpZ25vcmUgZXhpdCBjb2RlcyBmb3IgaWYvd2hpbGUvdW50aWwvJiYvfHwvIS4KYXJndW1lbnRzOiAhLWUhCnN0ZGluOgoJaWYgZmFsc2U7IHRoZW4gZWNobyBoaSA7IGZpCglmYWxzZSB8fCB0cnVlCglmYWxzZSAmJiB0cnVlCgl3aGlsZSBmYWxzZTsgZG8gZWNobyBoaTsgZG9uZQoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawotLS0KbmFtZTogcmVncmVzc2lvbi0zOQpkZXNjcmlwdGlvbjoKCXNldCAtZTogZXJyb3JzIGluIGNvbW1hbmQgc3Vic3RpdHV0aW9ucyBhcmVuJ3QgaWdub3JlZAoJTm90IGNsZWFyIGlmIHRoZXkgc2hvdWxkIGJlIG9yIG5vdC4uLiBiYXNoIHBhc3NlcyBoZXJlCgl0aGlzIG1heSBhY3R1YWxseSBiZSByZXF1aXJlZCBmb3IgbWFrZSwgc28gY2hhbmdlZCB0aGUKCXRlc3QgdG8gbWFrZSB0aGlzIGFuIG1rc2ggZmVhdHVyZSwgbm90IGEgYnVnCmFyZ3VtZW50czogIS1lIQpzdGRpbjoKCWVjaG8gYGZhbHNlOyBlY2hvIGhpYAojZXhwZWN0ZWQtZmFpbDogeWVzCiNleHBlY3RlZC1zdGRvdXQ6CiMJaGkKZXhwZWN0ZWQtc3Rkb3V0OgoJCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQwCmRlc2NyaXB0aW9uOgoJVGhpcyB1c2VkIHRvIGNhdXNlIGEgY29yZSBkdW1wCmVudi1zZXR1cDogIVJBTkRPTT0xMiEKc3RkaW46CgllY2hvIGhpCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQxCmRlc2NyaXB0aW9uOgoJZm9vIHNob3VsZCBiZSBzZXQgdG8gYmFyIChzaG91bGQgbm90IGJlIGVtcHR5KQpzdGRpbjoKCWZvbz1gCgllY2hvIGJhcmAKCWVjaG8gIigkZm9vKSIKZXhwZWN0ZWQtc3Rkb3V0OgoJKGJhcikKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDIKZGVzY3JpcHRpb246CglDYW4ndCB1c2UgY29tbWFuZCBsaW5lIGFzc2lnbm1lbnRzIHRvIGFzc2lnbiByZWFkb25seSBwYXJhbWV0ZXJzLgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xudW5zZXQgUkFORE9NXG5leHBvcnQgfCB3aGlsZSBJRlM9IHJlYWQgLXInIFwKCSAgICAnUkFORE9NOyBkbyBldmFsICdcJydwcmludCAtciAtLSAiJFJBTkRPTT0kJ1wnJyIkUkFORE9NIidcJ1wiXCdcOyBcCgkgICAgZG9uZSA+ZW52OyBjaG1vZCAreCBlbnY7IFBBVEg9LjokUEFUSAoJZm9vPWJhcgoJcmVhZG9ubHkgZm9vCglmb289c3R1ZmYgZW52IHwgZ3JlcCAnXmZvbycKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3JlYWQtb25seS8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDMKZGVzY3JpcHRpb246CglDYW4gc3Vic2hlbGxzIGJlIHByZWZpeGVkIGJ5IHJlZGlyZWN0aW9ucyAoaGlzdG9yaWNhbCBzaGVsbHMgYWxsb3cKCXRoaXMpCnN0ZGluOgoJPCAvZGV2L251bGwgKHNlZCAncy9eL1gvJykKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDUKZGVzY3JpcHRpb246CglQYXJhbWV0ZXIgYXNzaWdubWVudHMgd2l0aCBbXSByZWNvZ25pc2VkIGNvcnJlY3RseQpzdGRpbjoKCUZPTz0qWzEyXQoJQkFSPWFiY1sKCU1PUkU9W2FiY10KCUpVTks9YVtiYwoJZWNobyAiPCRGT08+IgoJZWNobyAiPCRCQVI+IgoJZWNobyAiPCRNT1JFPiIKCWVjaG8gIjwkSlVOSz4iCmV4cGVjdGVkLXN0ZG91dDoKCTwqWzEyXT4KCTxhYmNbPgoJPFthYmNdPgoJPGFbYmM+Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTQ2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gd29ya3MgaW4gY29tbWFuZCBzdWJzdGl0dXRpb25zIGFuZAoJYXQgdGhlIGVuZCBvZiBmaWxlLgpzdGRpbjoKCWFsaWFzIHg9J2VjaG8gaGknCglGT089ImB4YCAiCgllY2hvICJbJEZPT10iCgl4CmV4cGVjdGVkLXN0ZG91dDoKCVtoaSBdCgloaQotLS0KbmFtZTogcmVncmVzc2lvbi00NwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyBhcmUgZnVsbHkgcmVhZC4Kc3RkaW46CglhbGlhcyB4PSdlY2hvIGhpOwoJZWNobyB0aGVyZScKCXgKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKCWRvbmUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IChoZXJlIGRvYykgdGVtcCBmaWxlcyBhcmUgbm90IGxlZnQgYmVoaW5kIGFmdGVyIGFuIGV4ZWMuCnN0ZGluOgoJbWtkaXIgZm9vIHx8IGV4aXQgMQoJVE1QRElSPSRQV0QvZm9vICIkX19wcm9nbmFtZSIgPDwtICdFT0YnCgkJeCgpIHsKCQkJc2VkICdzL14vWCAvJyA8PCBFX09fRgoJCQloaQoJCQl0aGVyZQoJCQlmb2xrcwoJCQlFX09fRgoJCQllY2hvICJkb25lICgkPykiCgkJfQoJCWVjaG89ZWNobzsgWyAteCAvYmluL2VjaG8gXSAmJiBlY2hvPS9iaW4vZWNobwoJCWV4ZWMgJGVjaG8gc3VidGVzdC0xIGhpCglFT0YKCWVjaG8gc3VidGVzdC0xIGZvby8qCglUTVBESVI9JFBXRC9mb28gIiRfX3Byb2duYW1lIiA8PC0gJ0VPRicKCQllY2hvPWVjaG87IFsgLXggL2Jpbi9lY2hvIF0gJiYgZWNobz0vYmluL2VjaG8KCQlzZWQgJ3MvXi9YIC8nIDw8IEVfT19GOyBleGVjICRlY2hvIHN1YnRlc3QtMiBoaQoJCWEKCQlmZXcKCQlsaW5lcwoJCUVfT19GCglFT0YKCWVjaG8gc3VidGVzdC0yIGZvby8qCmV4cGVjdGVkLXN0ZG91dDoKCXN1YnRlc3QtMSBoaQoJc3VidGVzdC0xIGZvby8qCglYIGEKCVggZmV3CglYIGxpbmVzCglzdWJ0ZXN0LTIgaGkKCXN1YnRlc3QtMiBmb28vKgotLS0KbmFtZTogcmVncmVzc2lvbi00OQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdW5zZXQgcGFyYW1zIHdpdGggYXR0cmlidXRlcyBhcmUgcmVwb3J0ZWQgYnkgc2V0LCB0aG9zZQoJc2FucyBhdHRyaWJ1dGVzIGFyZSBub3QuCnN0ZGluOgoJdW5zZXQgRk9PIEJBUgoJZWNobyBYJEZPTwoJZXhwb3J0IEJBUgoJdHlwZXNldCAtaSBCTEFICglzZXQgfCBncmVwIEZPTwoJc2V0IHwgZ3JlcCBCQVIKCXNldCB8IGdyZXAgQkxBSApleHBlY3RlZC1zdGRvdXQ6CglYCglCQVIKCUJMQUgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTAKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzZXMgZG8gbm90IHVzZSBjb250aW51YXRpb24gcHJvbXB0IGFmdGVyIHRyYWlsaW5nCglzZW1pLWNvbG9uLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZW52ZiIKCVBTMT1ZCglQUzI9WAplbnYtc2V0dXA6ICFFTlY9Li9lbnZmIQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CglhbGlhcyBmb289J2VjaG8gaGkgOyAnCglmb28KCWZvbyBlY2hvIHRoZXJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgloaQoJdGhlcmUKZXhwZWN0ZWQtc3RkZXJyOiAhCglZWVlZCi0tLQpuYW1lOiByZWdyZXNzaW9uLTUxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzZXQgYWxsb3dzIGJvdGggK28gYW5kIC1vIG9wdGlvbnMgb24gc2FtZSBjb21tYW5kIGxpbmUuCnN0ZGluOgoJc2V0IGEgYiBjCglzZXQgLW8gbm9nbG9iICtvIGFsbGV4cG9ydAoJZWNobyBBOiAkKiwgKgpleHBlY3RlZC1zdGRvdXQ6CglBOiBhIGIgYywgKgotLS0KbmFtZTogcmVncmVzc2lvbi01MgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgd29ya3MgaW4gcGlwZWxpbmVkIGNvbW1hbmRzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVAKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKCXN0dWZmCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCXNlZCAncy9eL1ggLycgPCBhYioKCWVjaG8gbWFyayAxCglzZWQgJ3MvXi9YIC8nIDwgYWIqIHwgc2VkICdzL14vWSAvJwoJZWNobyBtYXJrIDIKZXhwZWN0ZWQtc3Rkb3V0OgoJWCBzdHVmZgoJbWFyayAxCglZIFggc3R1ZmYKCW1hcmsgMgpleHBlY3RlZC1zdGRlcnI6ICEKCVBQUFBQCi0tLQpuYW1lOiByZWdyZXNzaW9uLTUzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnZXRvcHRzIHdvcmtzIGluIGZ1bmN0aW9ucwpzdGRpbjoKCWJmdW5jKCkgewoJICAgIGVjaG8gYmZ1bmM6IGVudGVyICIoYXJnczogJCo7IE9QVElORD0kT1BUSU5EKSIKCSAgICB3aGlsZSBnZXRvcHRzIEIgb2M7IGRvCgkJY2FzZSAkb2MgaW4KCQkgIChCKQoJCSAgICBlY2hvIGJmdW5jOiBCIG9wdGlvbgoJCSAgICA7OwoJCSAgKCopCgkJICAgIGVjaG8gYmZ1bmM6IG9kZCBvcHRpb24gIigkb2MpIgoJCSAgICA7OwoJCWVzYWMKCSAgICBkb25lCgkgICAgZWNobyBiZnVuYzogbGVhdmUKCX0KCQoJZnVuY3Rpb24ga2Z1bmMgewoJICAgIGVjaG8ga2Z1bmM6IGVudGVyICIoYXJnczogJCo7IE9QVElORD0kT1BUSU5EKSIKCSAgICB3aGlsZSBnZXRvcHRzIEsgb2M7IGRvCgkJY2FzZSAkb2MgaW4KCQkgIChLKQoJCSAgICBlY2hvIGtmdW5jOiBLIG9wdGlvbgoJCSAgICA7OwoJCSAgKCopCgkJICAgIGVjaG8gYmZ1bmM6IG9kZCBvcHRpb24gIigkb2MpIgoJCSAgICA7OwoJCWVzYWMKCSAgICBkb25lCgkgICAgZWNobyBrZnVuYzogbGVhdmUKCX0KCQoJc2V0IC0tIC1mIC1iIC1rIC1sCgllY2hvICJsaW5lIDE6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgMjogcmV0PSQ/LCBvcHRjPSRvcHRjLCBPUFRJTkQ9JE9QVElORCIKCWJmdW5jIC1CQkIgYmxhaAoJZWNobyAibGluZSAzOiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDQ6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCglrZnVuYyAtS0tLIGJsYWgKCWVjaG8gImxpbmUgNTogT1BUSU5EPSRPUFRJTkQiCglnZXRvcHRzIGtiZmwgb3B0YwoJZWNobyAibGluZSA2OiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJZWNobwoJCglPUFRJTkQ9MQoJc2V0IC0tIC1mYmtsCgllY2hvICJsaW5lIDEwOiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDIwOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJYmZ1bmMgLUJCQiBibGFoCgllY2hvICJsaW5lIDMwOiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDQwOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJa2Z1bmMgLUtLSyBibGFoCgllY2hvICJsaW5lIDUwOiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDYwOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDE6IE9QVElORD0xCglsaW5lIDI6IHJldD0wLCBvcHRjPWYsIE9QVElORD0yCgliZnVuYzogZW50ZXIgKGFyZ3M6IC1CQkIgYmxhaDsgT1BUSU5EPTIpCgliZnVuYzogQiBvcHRpb24KCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IGxlYXZlCglsaW5lIDM6IE9QVElORD0yCglsaW5lIDQ6IHJldD0wLCBvcHRjPWIsIE9QVElORD0zCglrZnVuYzogZW50ZXIgKGFyZ3M6IC1LS0sgYmxhaDsgT1BUSU5EPTEpCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogbGVhdmUKCWxpbmUgNTogT1BUSU5EPTMKCWxpbmUgNjogcmV0PTAsIG9wdGM9aywgT1BUSU5EPTQKCQoJbGluZSAxMDogT1BUSU5EPTEKCWxpbmUgMjA6IHJldD0wLCBvcHRjPWYsIE9QVElORD0yCgliZnVuYzogZW50ZXIgKGFyZ3M6IC1CQkIgYmxhaDsgT1BUSU5EPTIpCgliZnVuYzogQiBvcHRpb24KCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IGxlYXZlCglsaW5lIDMwOiBPUFRJTkQ9MgoJbGluZSA0MDogcmV0PTEsIG9wdGM9PywgT1BUSU5EPTIKCWtmdW5jOiBlbnRlciAoYXJnczogLUtLSyBibGFoOyBPUFRJTkQ9MSkKCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBsZWF2ZQoJbGluZSA1MDogT1BUSU5EPTIKCWxpbmUgNjA6IHJldD0xLCBvcHRjPT8sIE9QVElORD0yCi0tLQpuYW1lOiByZWdyZXNzaW9uLTU0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCA7IGlzIG5vdCByZXF1aXJlZCBiZWZvcmUgdGhlIHRoZW4gaW4gaWYgKCggLi4uICkpIHRoZW4gLi4uCnN0ZGluOgoJaWYgKCggMSApKSB0aGVuCgkgICAgZWNobyBvayBkcGFyZW4KCWZpCglpZiBbWyAtbiAxIF1dIHRoZW4KCSAgICBlY2hvIG9rIGRicmFja2V0cwoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sgZHBhcmVuCglvayBkYnJhY2tldHMKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTUKZGVzY3JpcHRpb246CglDaGVjayAke2ZvbzolYmFyfSBpcyBhbGxvd2VkIChrc2g4OCBhbGxvd3MgaXQuLi4pCnN0ZGluOgoJeD1mb29YYmFyWGJsYWgKCWVjaG8gMSAke3glWCp9CgllY2hvIDIgJHt4OiVYKn0KCWVjaG8gMyAke3glJVgqfQoJZWNobyA0ICR7eDolJVgqfQoJZWNobyA1ICR7eCMqWH0KCWVjaG8gNiAke3g6IypYfQoJZWNobyA3ICR7eCMjKlh9CgllY2hvIDggJHt4OiMjKlh9CmV4cGVjdGVkLXN0ZG91dDoKCTEgZm9vWGJhcgoJMiBmb29YYmFyCgkzIGZvbwoJNCBmb28KCTUgYmFyWGJsYWgKCTYgYmFyWGJsYWgKCTcgYmxhaAoJOCBibGFoCi0tLQpuYW1lOiByZWdyZXNzaW9uLTU3CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdHlwZXNldCBvdXRwdXQgaXMgY29ycmVjdCBmb3IKCXVuaW5pdGlhbGlzZWQgYXJyYXkgZWxlbWVudHMuCnN0ZGluOgoJdHlwZXNldCAtaSB4eHhbNF0KCWVjaG8gQQoJdHlwZXNldCAtaSB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgllY2hvIEIKCXR5cGVzZXQgfCBncmVwIHh4eCB8IHNlZCAncy9eLyAgICAvJwoJCgl4eHhbMV09Mis1CgllY2hvIE0KCXR5cGVzZXQgLWkgfCBncmVwIHh4eCB8IHNlZCAncy9eLyAgICAvJwoJZWNobyBOCgl0eXBlc2V0IHwgZ3JlcCB4eHggfCBzZWQgJ3MvXi8gICAgLycKZXhwZWN0ZWQtc3Rkb3V0OgoJQQoJICAgIHh4eAoJQgoJICAgIHR5cGVzZXQgLWkgeHh4CglNCgkgICAgeHh4WzFdPTcKCU4KCSAgICBzZXQgLUEgeHh4CgkgICAgdHlwZXNldCAtaSB4eHhbMV0KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTgKZGVzY3JpcHRpb246CglDaGVjayBpZiB0cmFwIGV4aXQgaXMgb2sgKGV4aXQgbm90IG1pc3Rha2VuIGZvciBzaWduYWwgbmFtZSkKc3RkaW46Cgl0cmFwICdlY2hvIGhpJyBleGl0Cgl0cmFwIGV4aXQgMQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi01OQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmICR7I2FycmF5WypdfSBpcyBjYWxjdWxhdGVkIGNvcnJlY3RseS4Kc3RkaW46CglhWzEyXT1oaQoJYVs4XT10aGVyZQoJZWNobyAkeyNhWypdfQpleHBlY3RlZC1zdGRvdXQ6CgkyCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgZGVmYXVsdCBleGl0IHN0YXR1cyBpcyBwcmV2aW91cyBjb21tYW5kCnN0ZGluOgoJKHRydWU7IGV4aXQpCgllY2hvIEEgJD8KCShmYWxzZTsgZXhpdCkKCWVjaG8gQiAkPwoJKCAoZXhpdCAxMDMpIDsgZXhpdCkKCWVjaG8gQyAkPwpleHBlY3RlZC1zdGRvdXQ6CglBIDAKCUIgMQoJQyAxMDMKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjEKZGVzY3JpcHRpb246CglDaGVjayBpZiBFWElUIHRyYXAgaXMgZXhlY3V0ZWQgZm9yIHN1YiBzaGVsbHMuCnN0ZGluOgoJdHJhcCAnZWNobyBwYXJlbnQgZXhpdCcgRVhJVAoJZWNobyBzdGFydAoJKGVjaG8gQTsgZWNobyBBIGxhc3QpCgllY2hvIEIKCShlY2hvIEM7IHRyYXAgJ2VjaG8gc3ViIGV4aXQnIEVYSVQ7IGVjaG8gQyBsYXN0KQoJZWNobyBwYXJlbnQgbGFzdApleHBlY3RlZC1zdGRvdXQ6CglzdGFydAoJQQoJQSBsYXN0CglCCglDCglDIGxhc3QKCXN1YiBleGl0CglwYXJlbnQgbGFzdAoJcGFyZW50IGV4aXQKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjIKZGVzY3JpcHRpb246CglDaGVjayBpZiB0ZXN0IC1udC8tb3Qgc3VjY2VlZHMgaWYgc2Vjb25kKGZpcnN0KSBmaWxlIGlzIG1pc3NpbmcuCnN0ZGluOgoJdG91Y2ggYQoJdGVzdCBhIC1udCBiICYmIGVjaG8gbnQgT0sgfHwgZWNobyBudCBCQUQKCXRlc3QgYiAtb3QgYSAmJiBlY2hvIG90IE9LIHx8IGVjaG8gb3QgQkFECmV4cGVjdGVkLXN0ZG91dDoKCW50IE9LCglvdCBPSwotLS0KbmFtZTogcmVncmVzc2lvbi02MwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHR5cGVzZXQsIGV4cG9ydCwgYW5kIHJlYWRvbmx5IHdvcmsKc3RkaW46Cgl7CgkJZWNobyBGTk9SRC0wCgkJRk5PUkRfQT0xCgkJRk5PUkRfQj0yCgkJRk5PUkRfQz0zCgkJRk5PUkRfRD00CgkJRk5PUkRfRT01CgkJRk5PUkRfRj02CgkJRk5PUkRfRz03CgkJRk5PUkRfSD04CgkJaW50ZWdlciBGTk9SRF9FIEZOT1JEX0YgRk5PUkRfRyBGTk9SRF9ICgkJZXhwb3J0IEZOT1JEX0MgRk5PUkRfRCBGTk9SRF9HIEZOT1JEX0gKCQlyZWFkb25seSBGTk9SRF9CIEZOT1JEX0QgRk5PUkRfRiBGTk9SRF9ICgkJZWNobyBGTk9SRC0xCgkJZXhwb3J0CgkJZWNobyBGTk9SRC0yCgkJZXhwb3J0IC1wCgkJZWNobyBGTk9SRC0zCgkJcmVhZG9ubHkKCQllY2hvIEZOT1JELTQKCQlyZWFkb25seSAtcAoJCWVjaG8gRk5PUkQtNQoJCXR5cGVzZXQKCQllY2hvIEZOT1JELTYKCQl0eXBlc2V0IC1wCgkJZWNobyBGTk9SRC03CgkJdHlwZXNldCAtCgkJZWNobyBGTk9SRC04Cgl9IHwgZmdyZXAgRk5PUkQKCWZub3JkPSg0MiAyMykKCXR5cGVzZXQgLXAgZm5vcmQKCWVjaG8gRk5PUkQtOQpleHBlY3RlZC1zdGRvdXQ6CglGTk9SRC0wCglGTk9SRC0xCglGTk9SRF9DCglGTk9SRF9ECglGTk9SRF9HCglGTk9SRF9ICglGTk9SRC0yCglleHBvcnQgRk5PUkRfQz0zCglleHBvcnQgRk5PUkRfRD00CglleHBvcnQgRk5PUkRfRz03CglleHBvcnQgRk5PUkRfSD04CglGTk9SRC0zCglGTk9SRF9CCglGTk9SRF9ECglGTk9SRF9GCglGTk9SRF9ICglGTk9SRC00CglyZWFkb25seSBGTk9SRF9CPTIKCXJlYWRvbmx5IEZOT1JEX0Q9NAoJcmVhZG9ubHkgRk5PUkRfRj02CglyZWFkb25seSBGTk9SRF9IPTgKCUZOT1JELTUKCXR5cGVzZXQgRk5PUkRfQQoJdHlwZXNldCAtciBGTk9SRF9CCgl0eXBlc2V0IC14IEZOT1JEX0MKCXR5cGVzZXQgLXggLXIgRk5PUkRfRAoJdHlwZXNldCAtaSBGTk9SRF9FCgl0eXBlc2V0IC1pIC1yIEZOT1JEX0YKCXR5cGVzZXQgLWkgLXggRk5PUkRfRwoJdHlwZXNldCAtaSAteCAtciBGTk9SRF9ICglGTk9SRC02Cgl0eXBlc2V0IEZOT1JEX0E9MQoJdHlwZXNldCAtciBGTk9SRF9CPTIKCXR5cGVzZXQgLXggRk5PUkRfQz0zCgl0eXBlc2V0IC14IC1yIEZOT1JEX0Q9NAoJdHlwZXNldCAtaSBGTk9SRF9FPTUKCXR5cGVzZXQgLWkgLXIgRk5PUkRfRj02Cgl0eXBlc2V0IC1pIC14IEZOT1JEX0c9NwoJdHlwZXNldCAtaSAteCAtciBGTk9SRF9IPTgKCUZOT1JELTcKCUZOT1JEX0E9MQoJRk5PUkRfQj0yCglGTk9SRF9DPTMKCUZOT1JEX0Q9NAoJRk5PUkRfRT01CglGTk9SRF9GPTYKCUZOT1JEX0c9NwoJRk5PUkRfSD04CglGTk9SRC04CglzZXQgLUEgZm5vcmQKCXR5cGVzZXQgZm5vcmRbMF09NDIKCXR5cGVzZXQgZm5vcmRbMV09MjMKCUZOT1JELTkKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiByZWRlZmluZSBmdW5jdGlvbnMgY2FsbGluZyB0aW1lIGJ1aWx0aW4Kc3RkaW46Cgl0KCkgewoJCXRpbWUgPi9kZXYvbnVsbAoJfQoJdCAyPi9kZXYvbnVsbAoJdCgpIHsKCQl0aW1lCgl9Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTY1CmRlc2NyaXB0aW9uOgoJY2hlY2sgZm9yIGEgcmVncmVzc2lvbiB3aXRoIHNsZWVwIGJ1aWx0aW4gYW5kIHNpZ25hbCBtYXNrCmNhdGVnb3J5OiAhbm9qc2lnCnRpbWUtbGltaXQ6IDMKc3RkaW46CglzbGVlcCAxCgllY2hvIGJsdWIgfCYKCXdoaWxlIHJlYWQgLXAgbGluZTsgZG8gOjsgZG9uZQoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawotLS0KbmFtZTogcmVncmVzc2lvbi02NgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcXVvdGluZyBpcyBzYW5lCmNhdGVnb3J5OiAhbm9qc2lnCnN0ZGluOgoJYWNfc3BhY2U9JyAnCglhY19uZXdsaW5lPScKCScKCXNldCB8IGdyZXAgXmFjXyB8JgoJc2V0IC1BIGxpbmVzCgl3aGlsZSBJRlM9IHJlYWQgLXByIGxpbmU7IGRvCgkJaWYgW1sgJGxpbmUgPSAqc3BhY2UqIF1dOyB0aGVuCgkJCWxpbmVzWzBdPSRsaW5lCgkJZWxzZQoJCQlsaW5lc1sxXT0kbGluZQoJCWZpCglkb25lCglmb3IgbGluZSBpbiAiJHtsaW5lc1tAXX0iOyBkbwoJCXByaW50IC1yIC0tICIkbGluZSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJYWNfc3BhY2U9JyAnCglhY19uZXdsaW5lPSQnXG4nCi0tLQpuYW1lOiByZWFkb25seS0wCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHJlYWRvbmx5IGlzIGhvbm91cmVkIGZvciBhc3NpZ25tZW50cyBhbmQgdW5zZXQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICd1PXg7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSB1OyB1PXg7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICd1PXg7IHJlYWRvbmx5IHU7IHVuc2V0IHU7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwIHggLgoJPQoJYWJvcnRlZCwgMgoJPQoJMSB4IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktMQpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTM2NyBmb3IgZXhwb3J0CnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgZm9vOyBleHBvcnQgZm9vPWE7IGVjaG8gJD8nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYWJvcnRlZCwgMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2V0b3B0cyB3b3JrcyBhcyBpbnRlbmRlZCwgZm9yIHJlYWRvbmx5LTJiIHRvIGJlIHZhbGlkCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnc2V0IC0tIC1hIGI7IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC47IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMCBhIC4KCTEgPyAuCi0tLQpuYW1lOiByZWFkb25seS0yYgpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTM2NyBmb3IgZ2V0b3B0cwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IGM7IHNldCAtLSAtYSBiOyBnZXRvcHRzIGEgYzsgZWNobyAkPyAkYyAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTIgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0zCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciByZWFkCnN0ZGluOgoJZWNobyB4IHwgIiRfX3Byb2duYW1lIiAtYyAncmVhZCBzOyBlY2hvICQ/ICRzIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KCWVjaG8geSB8ICIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHM7IHJlYWQgczsgZWNobyAkPyAkcyAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAgeCAuCgkyIC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogc3ludGF4LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGxvbmUgYW1wZXJzYW5kIGlzIGEgc3ludGF4IGVycm9yCnN0ZGluOgoJICYKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3N5bnRheCBlcnJvci8KLS0tCm5hbWU6IHh4eC1xdW90ZWQtbmV3bGluZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcPG5ld2xpbmU+IHdvcmtzIGluc2lkZSBvZiAke30Kc3RkaW46CglhYmM9MgoJZWNobyAke2FiXAoJY30KZXhwZWN0ZWQtc3Rkb3V0OgoJMgotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgYXQgdGhlIHN0YXJ0IG9mIGEgaGVyZSBkb2N1bWVudApzdGRpbjoKCWNhdCA8PCBFT1wKCUYKCWhpCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKLS0tCm5hbWU6IHh4eC1xdW90ZWQtbmV3bGluZS0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcPG5ld2xpbmU+IHdvcmtzIGF0IHRoZSBlbmQgb2YgYSBoZXJlIGRvY3VtZW50CnN0ZGluOgoJY2F0IDw8IEVPRgoJaGkKCUVPXAoJRgpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogeHh4LW11bHRpLWFzc2lnbm1lbnQtY21kCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhc3NpZ25tZW50cyBpbiBhIGNvbW1hbmQgYWZmZWN0IHN1YnNlcXVlbnQgYXNzaWdubWVudHMKCWluIHRoZSBzYW1lIGNvbW1hbmQKc3RkaW46CglGT089YWJjCglGT089MTIzIEJBUj0kRk9PCgllY2hvICRCQVIKZXhwZWN0ZWQtc3Rkb3V0OgoJMTIzCi0tLQpuYW1lOiB4eHgtbXVsdGktYXNzaWdubWVudC1wb3NpeC1jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBiZWhhdmlvdXIgZm9yIG11bHRpcGxlIGFzc2lnbm1lbnRzIHdpdGggYQoJY29tbWFuZCBuYW1lIG1hdGNoZXMgUE9TSVguIFNlZToKCWh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuc3RhbmRhcmRzLnBvc2l4LmF1c3Rpbi5nZW5lcmFsLzE5MjUKc3RkaW46CglYPWEgWT1iOyBYPSRZIFk9JFggIiRfX3Byb2duYW1lIiAtYyAnZWNobyAxICRYICRZIC4nOyBlY2hvIDIgJFggJFkgLgoJdW5zZXQgWCBZIFoKCVg9YSBZPSR7WD1ifSBaPSRYICIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gMyAkWiAuJwoJdW5zZXQgWCBZIFoKCVg9YSBZPSR7WD1ifSBaPSRYOyBlY2hvIDQgJFogLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGIgYSAuCgkyIGEgYiAuCgkzIGIgLgoJNCBhIC4KLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LW5vY21kCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgYmVoYXZpb3VyIGZvciBtdWx0aXBsZSBhc3NpZ25tZW50cyB3aXRoIG5vCgljb21tYW5kIG5hbWUgbWF0Y2hlcyBQT1NJWCAoRGViaWFuICMzMzQxODIpLiBTZWU6CglodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLnN0YW5kYXJkcy5wb3NpeC5hdXN0aW4uZ2VuZXJhbC8xOTI1CnN0ZGluOgoJWD1hIFk9YjsgWD0kWSBZPSRYOyBlY2hvIDEgJFggJFkgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGIgYiAuCi0tLQpuYW1lOiB4eHgtbXVsdGktYXNzaWdubWVudC1wb3NpeC1zdWJhc3NpZ24KZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBiZWhhdmlvdXIgZm9yIG11bHRpcGxlIGFzc2lnbm1lbnRzIG1hdGNoZXMgUE9TSVg6CgktIFRoZSBhc3NpZ25tZW50IHdvcmRzIHNoYWxsIGJlIGV4cGFuZGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbgoJICBlbnZpcm9ubWVudC4KCS0gVGhlIGFzc2lnbm1lbnRzIGhhcHBlbiBpbiB0aGUgdGVtcG9yYXJ5IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4Kc3RkaW46Cgl1bnNldCBYIFkgWgoJWj1hIFk9JHtYOj1ifSBzaCAtYyAnZWNobyArJFgrICskWSsgKyRaKycKCWVjaG8gLyRYLwoJIyBOb3cgZm9yIHRoZSBzcGVjaWFsIGNhc2U6Cgl1bnNldCBYIFkgWgoJWD0gWT0ke1g6PWJ9IHNoIC1jICdlY2hvICskWCsgKyRZKycKCWVjaG8gLyRYLwpleHBlY3RlZC1zdGRvdXQ6CgkrKyArYisgK2ErCgkvYi8KCSsrICtiKwoJL2IvCi0tLQpuYW1lOiB4eHgtZXhlYy1lbnZpcm9ubWVudC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIGlmIGV4ZWMgc2V0cyBpdCdzIGVudmlyb25tZW50IGNvcnJlY3RseQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xudW5zZXQgUkFORE9NXG5leHBvcnQgfCB3aGlsZSBJRlM9IHJlYWQgLXInIFwKCSAgICAnUkFORE9NOyBkbyBldmFsICdcJydwcmludCAtciAtLSAiJFJBTkRPTT0kJ1wnJyIkUkFORE9NIidcJ1wiXCdcOyBcCgkgICAgZG9uZSA+ZW52OyBjaG1vZCAreCBlbnY7IFBBVEg9LjokUEFUSAoJRk9PPWJhciBleGVjIGVudgpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS8oXnwuKlxuKUZPTz1iYXJcbi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTIKZGVzY3JpcHRpb246CglDaGVjayB0byBtYWtlIHN1cmUgZXhlYyBkb2Vzbid0IGNoYW5nZSBlbnZpcm9ubWVudCBpZiBhIHByb2dyYW0KCWlzbid0IGV4ZWMtZWQKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS46JFBBVEgKCWVudiA+YmFyMQoJRk9PPWJhciBleGVjOyBlbnYgPmJhcjIKCWNtcCAtcyBiYXIxIGJhcjIKLS0tCm5hbWU6IGV4ZWMtZnVuY3Rpb24tZW52aXJvbm1lbnQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGFzc2lnbm1lbnRzIGluIGZ1bmN0aW9uIGNhbGxzIGFuZCB3aGV0aGVyIHRoZXkgYWZmZWN0Cgl0aGUgY3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQgKGtzaDkzLCBTVVN2NCkKc3RkaW46CglmKCkgeyBhPTI7IH07IGcoKSB7IGI9MzsgZWNobyB5JGMtOyB9OyBhPTEgZjsgYj0yOyBjPTEgZwoJZWNobyB4JGEtJGItIHokYy0KZXhwZWN0ZWQtc3Rkb3V0OgoJeTEtCgl4Mi0zLSB6MS0KLS0tCm5hbWU6IHh4eC13aGF0LWRvLXlvdS1jYWxsLXRoaXMtMQpzdGRpbjoKCWVjaG8gIiR7Zm9vOi0iYSJ9KiIKZXhwZWN0ZWQtc3Rkb3V0OgoJYSoKLS0tCm5hbWU6IHh4eC1wcmVmaXgtc3RyaXAtMQpzdGRpbjoKCWZvbz0nYSBjZGVmJwoJZWNobyAke2ZvbyNhIGN9CmV4cGVjdGVkLXN0ZG91dDoKCWRlZgotLS0KbmFtZTogeHh4LXByZWZpeC1zdHJpcC0yCnN0ZGluOgoJc2V0IGEgYwoJeD0nYSBjZGVmJwoJZWNobyAke3gjJCp9CmV4cGVjdGVkLXN0ZG91dDoKCWRlZgotLS0KbmFtZTogeHh4LXZhcmlhYmxlLXN5bnRheC0xCnN0ZGluOgoJZWNobyAkezp9CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHh4eC12YXJpYWJsZS1zeW50YXgtMgpzdGRpbjoKCXNldCAwCgllY2hvICR7KjowfQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTMKc3RkaW46CglzZXQgLUEgZm9vIDAKCWVjaG8gJHtmb29bKl06MH0KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogeHh4LXN1YnN0aXR1dGlvbi1ldmFsLW9yZGVyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgb3JkZXIgb2YgZXZhbHVhdGlvbiBvZiBleHByZXNzaW9ucwpzdGRpbjoKCWk9MSB4PSB5PQoJc2V0IC1BIEEgYWJjIGRlZiBHSEkgaiBHIGsKCWVjaG8gJHtBW3g9KGkrPTEpXSMke0FbeT0oaSs9MildfX0KCWVjaG8gJHggJHkKZXhwZWN0ZWQtc3Rkb3V0OgoJSEkKCTIgNAotLS0KbmFtZTogeHh4LXNldC1vcHRpb24tMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9wdGlvbiBwYXJzaW5nIGluIHNldApzdGRpbjoKCXNldCAtdnNBIGZvbyAtLSBBIDEgMyAyCgllY2hvICR7Zm9vWypdfQpleHBlY3RlZC1zdGRlcnI6CgllY2hvICR7Zm9vWypdfQpleHBlY3RlZC1zdGRvdXQ6CgkxIDIgMyBBCi0tLQpuYW1lOiB4eHgtZXhlYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBleGVjIGV4aXRzIGZvciBidWlsdC1pbnMKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZXhlYyBlY2hvIGhpCgllY2hvIHN0aWxsIGhlcnJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiB4eHgtd2hpbGUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygd2hpbGUgbG9vcHMKCVhYWCBuZWVkIHRvIGRvIHNhbWUgZm9yIGZvci9zZWxlY3QvdW50aWwgbG9vcHMKc3RkaW46CglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgaWYgWyAkaSA9IHh4eCBdIDsgdGhlbgoJCWZhbHNlCgkJY29udGludWUKCSAgICBmaQoJZG9uZQoJZWNobyBsb29wMT0kPwoJCglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgaWYgWyAkaSA9IHh4eCBdIDsgdGhlbgoJCWZhbHNlCgkJYnJlYWsKCSAgICBmaQoJZG9uZQoJZWNobyBsb29wMj0kPwoJCglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgZmFsc2UKCWRvbmUKCWVjaG8gbG9vcDM9JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJbG9vcDE9MAoJbG9vcDI9MAoJbG9vcDM9MQotLS0KbmFtZTogeHh4LXN0YXR1cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBibGFuayBsaW5lcyBkb24ndCBjbGVhciAkPwpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgkoZXhpdCAxKQoJZWNobyAkPwoJKGV4aXQgMSkKCQoJZWNobyAkPwoJdHJ1ZQpleHBlY3RlZC1zdGRvdXQ6CgkxCgkxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiB4eHgtc3RhdHVzLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICQ/IGlzIHByZXNlcnZlZCBpbiBzdWJzaGVsbHMsIGluY2x1ZGVzLCB0cmFwcy4Kc3RkaW46CgkoZXhpdCAxKQoJCgllY2hvIGJsYW5rOiAkPwoJCgkoZXhpdCAyKQoJKGVjaG8gc3Vic2hlbGw6ICQ/KQoJCgllY2hvICdlY2hvIGluY2x1ZGU6ICQ/JyA+IGZvbwoJKGV4aXQgMykKCS4gLi9mb28KCQoJdHJhcCAnZWNobyB0cmFwOiAkPycgRVJSCgkoZXhpdCA0KQoJZWNobyBleGl0OiAkPwpleHBlY3RlZC1zdGRvdXQ6CglibGFuazogMQoJc3Vic2hlbGw6IDIKCWluY2x1ZGU6IDMKCXRyYXA6IDQKCWV4aXQ6IDQKLS0tCm5hbWU6IHh4eC1jbGVhbi1jaGFycy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgTUFHSUMgY2hhcmFjdGVyIGlzIHN0dWZmZWQgY29ycmVjdGx5CnN0ZGluOgoJZWNobyBgZWNobyBbo2AKZXhwZWN0ZWQtc3Rkb3V0OgoJW6MKLS0tCm5hbWU6IHh4eC1wYXJhbS1zdWJzdC1xbWFyay0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcHJlc2lvbiBvZiBlcnJvciBtZXNzYWdlIHdpdGggbnVsbCBzdHJpbmcuICBBY2NvcmRpbmcgdG8KCVBPU0lYLCBpdCBzaG91bGRuJ3QgcHJpbnQgdGhlIGVycm9yIGFzICd3b3JkJyBpc24ndCBvbW1pdHRlZC4KCWtzaDg4LzkzLCBTb2xhcmlzIC9iaW4vc2ggYW5kIC91c3IveHBnNC9iaW4vc2ggYWxsIHByaW50IHRoZSBlcnJvciwKCXRoYXQncyB3aHkgdGhlIGNvbmRpdGlvbiBpcyByZXZlcnNlZC4Kc3RkaW46Cgl1bnNldCBmb28KCXg9CgllY2hvIHgke2Zvbz8keH0KZXhwZWN0ZWQtZXhpdDogMQojIFBPU0lYCiNleHBlY3RlZC1mYWlsOiB5ZXMKI2V4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL25vdCBzZXQvCiMgY29tbW9uIHVzZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogL3BhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQvCi0tLQpuYW1lOiB4eHgtcGFyYW0tXy0xCiMgZmFpbHMgZHVlIHRvIHdlaXJkbmVzcyBvZiBleGVjdiBzdHVmZgpjYXRlZ29yeTogIW9zOnV3aW4tbnQKZGVzY3JpcHRpb246CglDaGVjayBjIGZsYWcgaXMgc2V0Lgphcmd1bWVudHM6ICEtYyFlY2hvICJbJC1dIiEKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46IC9eXFsuKmMuKlxdJC8KLS0tCm5hbWU6IHRpbGRlLWV4cGFuZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGlsZGUgZXhwYW5zaW9uIGFmdGVyIGVxdWFsIHNpZ25zCmVudi1zZXR1cDogIUhPTUU9L3N3ZWV0IQpzdGRpbjoKCWVjaG8gJHtBPWE9fX4gYj1+IGM9ZH4gfgoJc2V0ICtvIGJyYWNlZXhwYW5kCgl1bnNldCBBCgllY2hvICR7QT1hPX1+IGI9fiBjPWR+IH4KZXhwZWN0ZWQtc3Rkb3V0OgoJYT0vc3dlZXQgYj0vc3dlZXQgYz1kfiAvc3dlZXQKCWE9fiBiPX4gYz1kfiAvc3dlZXQKLS0tCm5hbWU6IHRpbGRlLWV4cGFuZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGlsZGUgZXhwYW5zaW9uIHdvcmtzCmVudi1zZXR1cDogIUhPTUU9L3N3ZWV0IQpzdGRpbjoKCXdkPSRQV0QKCWNkIC8KCXBsdXM9JChwcmludCAtciAtLSB+KykKCW1pbnVzPSQocHJpbnQgLXIgLS0gfi0pCgluaXg9JChwcmludCAtciAtLSB+KQoJW1sgJHBsdXMgPSAvIF1dOyBlY2hvIG9uZSAkPyAuCglbWyAkbWludXMgPSAiJHdkIiBdXTsgZWNobyB0d28gJD8gLgoJW1sgJG5peCA9IC9zd2VldCBdXTsgZWNobyBuaXggJD8gLgpleHBlY3RlZC1zdGRvdXQ6CglvbmUgMCAuCgl0d28gMCAuCgluaXggMCAuCi0tLQpuYW1lOiBleGl0LWVyci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgY29uZGl0aW9ucwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCgljaG1vZCAreCBlbnYgZmFsc2UKCVBBVEg9LjokUEFUSAoJc2V0IC1leAoJZW52IGZhbHNlICYmIGVjaG8gc29tZXRoaW5nCgllY2hvIEVORApleHBlY3RlZC1zdGRvdXQ6CglFTkQKZXhwZWN0ZWQtc3RkZXJyOgoJKyBlbnYgZmFsc2UKCSsgZWNobyBFTkQKLS0tCm5hbWU6IGV4aXQtZXJyLTIKZGVzY3JpcHRpb246CglDaGVjayBzb21lICJleGl0IG9uIGVycm9yIiBlZGdlIGNvbmRpdGlvbnMgKFBPU0lYbHkpCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5leGVjICIkMSInID5lbnYKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhpdCAxJyA+ZmFsc2UKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhpdCAwJyA+dHJ1ZQoJY2htb2QgK3ggZW52IGZhbHNlCglQQVRIPS46JFBBVEgKCXNldCAtZXgKCWlmIGVudiB0cnVlOyB0aGVuCgkJZW52IGZhbHNlICYmIGVjaG8gc29tZXRoaW5nCglmaQoJZWNobyBFTkQKZXhwZWN0ZWQtc3Rkb3V0OgoJRU5ECmV4cGVjdGVkLXN0ZGVycjoKCSsgZW52IHRydWUKCSsgZW52IGZhbHNlCgkrIGVjaG8gRU5ECi0tLQpuYW1lOiBleGl0LWVyci0zCmRlc2NyaXB0aW9uOgoJcGRrc2ggcmVncmVzc2lvbiB3aGljaCBBVCZUIGtzaCBkb2VzIHJpZ2h0CglURk0gc2F5czogW3NldF0gLWUgfCBlcnJleGl0CgkJRXhpdCAoYWZ0ZXIgZXhlY3V0aW5nIHRoZSBFUlIgdHJhcCkgLi4uCnN0ZGluOgoJdHJhcCAnZWNobyBFWElUJyBFWElUCgl0cmFwICdlY2hvIEVSUicgRVJSCglzZXQgLWUKCWNkIC9YWFhYWCAyPi9kZXYvbnVsbAoJZWNobyBET05FCglleGl0IDAKZXhwZWN0ZWQtc3Rkb3V0OgoJRVJSCglFWElUCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogZXhpdC1lcnItNApkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHRlc3Qgc3VpdGUgKFBPU0lYKQpzdGRpbjoKCXNldCAtZQoJZWNobyBwcmUKCWlmIHRydWUgOyB0aGVuCgkJZmFsc2UgJiYgZWNobyBmb28KCWZpCgllY2hvIGJhcgpleHBlY3RlZC1zdGRvdXQ6CglwcmUKCWJhcgotLS0KbmFtZTogZXhpdC1lcnItNQpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHRlc3Qgc3VpdGUgKFBPU0lYKQpzdGRpbjoKCXNldCAtZQoJZm9vKCkgewoJCXdoaWxlIFsgIiQxIiBdOyBkbwoJCQlmb3IgRSBpbiAkeDsgZG8KCQkJCVsgIiQxIiA9ICIkRSIgXSAmJiB7IHNoaWZ0IDsgY29udGludWUgMiA7IH0KCQkJZG9uZQoJCQl4PSIkeCAkMSIKCQkJc2hpZnQKCQlkb25lCgkJZWNobyAkeAoJfQoJZWNobyBwcmUKCWZvbyBhIGIgYiBjCgllY2hvIHBvc3QKZXhwZWN0ZWQtc3Rkb3V0OgoJcHJlCglhIGIgYwoJcG9zdAotLS0KbmFtZTogZXhpdC1lcnItNgpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHRlc3Qgc3VpdGUgKEJTRCBtYWtlKQpjYXRlZ29yeTogb3M6bWlyYnNkCnN0ZGluOgoJbWtkaXIgemQgemQvYSB6ZC9iCglwcmludCAnYWxsOlxuXHRAZWNobyBlaW5zXG5cdEBleGl0IDQyXG4nID56ZC9hL01ha2VmaWxlCglwcmludCAnYWxsOlxuXHRAZWNobyB6d2VpXG4nID56ZC9iL01ha2VmaWxlCgl3ZD0kKHB3ZCkKCXNldCAtZQoJZm9yIGVudHJ5IGluIGEgYjsgZG8gKCAgc2V0IC1lOyAgaWYgW1sgLWQgJHdkL3pkLyRlbnRyeS5pMzg2IF1dOyB0aGVuICBfbmV3ZGlyXz0iJGVudHJ5LmkzODYiOyAgZWxzZSAgX25ld2Rpcl89IiRlbnRyeSI7ICBmaTsgIGlmIFtbIC16ICRfVEhJU0RJUl8gXV07IHRoZW4gIF9uZXh0ZGlyXz0iJF9uZXdkaXJfIjsgIGVsc2UgIF9uZXh0ZGlyXz0iJF9USElTRElSXy8kX25ld2Rpcl8iOyAgZmk7ICBfbWFrZWZpbGVfc3BlY189OyAgW1sgISAtZiAkd2QvemQvJF9uZXdkaXJfL01ha2VmaWxlLmJzZC13cmFwcGVyIF1dICB8fCBfbWFrZWZpbGVfc3BlY189Ii1mIE1ha2VmaWxlLmJzZC13cmFwcGVyIjsgIHN1YnNraXBkaXI9OyAgZm9yIHNraXBkaXIgaW4gOyBkbyAgc3ViZW50cnk9JHtza2lwZGlyIyRlbnRyeX07ICBpZiBbWyAkc3ViZW50cnkgIT0gJHNraXBkaXIgXV07IHRoZW4gIGlmIFtbIC16ICRzdWJlbnRyeSBdXTsgdGhlbiAgZWNobyAiKCRfbmV4dGRpcl8gc2tpcHBlZCkiOyAgYnJlYWs7ICBmaTsgIHN1YnNraXBkaXI9IiRzdWJza2lwZGlyICR7c3ViZW50cnkjL30iOyAgZmk7ICBkb25lOyAgaWYgW1sgLXogJHNraXBkaXIgfHwgLW4gJHN1YmVudHJ5IF1dOyB0aGVuICBlY2hvICI9PT0+ICRfbmV4dGRpcl8iOyAgY2QgJHdkL3pkLyRfbmV3ZGlyXzsgIG1ha2UgU0tJUERJUj0iJHN1YnNraXBkaXIiICRfbWFrZWZpbGVfc3BlY18gIF9USElTRElSXz0iJF9uZXh0ZGlyXyIgICBhbGw7ICBmaTsgICkgZG9uZSAyPiYxIHwgc2VkICJzISR3ZCFXRCFnIgpleHBlY3RlZC1zdGRvdXQ6Cgk9PT0+IGEKCWVpbnMKCSoqKiBFcnJvciBjb2RlIDQyCgkKCVN0b3AgaW4gV0QvemQvYSAobGluZSAyIG9mIE1ha2VmaWxlKS4KLS0tCm5hbWU6IGV4aXQtZXJyLTcKZGVzY3JpcHRpb246Cgkic2V0IC1lIiByZWdyZXNzaW9uIChMUCMxMTA0NTQzKQpzdGRpbjoKCXNldCAtZQoJYmxhKCkgewoJCVsgLXggJFBXRC9ub25leGlzdGFudCBdICYmICRQV0Qvbm9uZXhpc3RhbnQKCX0KCWVjaG8geAoJYmxhCgllY2hvIHkkPwpleHBlY3RlZC1zdGRvdXQ6Cgl4CmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4aXQtZXJyLTgKZGVzY3JpcHRpb246Cgkic2V0IC1lIiByZWdyZXNzaW9uIChEZWJpYW4gIzcwMDUyNikKc3RkaW46CglzZXQgLWUKCV9kYl9jbWQoKSB7IHJldHVybiAkMTsgfQoJZGJfaW5wdXQoKSB7IF9kYl9jbWQgMzA7IH0KCWRiX2dvKCkgeyBfZGJfY21kIDA7IH0KCWRiX2lucHV0IHx8IDoKCWRiX2dvCglleGl0IDAKLS0tCm5hbWU6IGV4aXQtZW5vZW50LTEKZGVzY3JpcHRpb246CglTVVN2NCBzYXlzIHRoYXQgdGhlIHNoZWxsIHNob3VsZCBleGl0IHdpdGggMTI2LzEyNyBpbiBzb21lIHNpdHVhdGlvbnMKc3RkaW46CglpPTAKCShlY2hvOyBlY2hvIDopID54CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCWVjaG8gZXhpdCA0MiA+eAoJIiRfX3Byb2duYW1lIiAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCSIkX19wcm9nbmFtZSIgLWMgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCglybSAtZiB4CgkiJF9fcHJvZ25hbWUiIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJIiRfX3Byb2duYW1lIiAtYyAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMCAwIC4KCTEgMTI2IC4KCTIgNDIgLgoJMyAxMjYgLgoJNCAxMjcgLgoJNSAxMjcgLgotLS0KbmFtZTogZXhpdC1ldmFsLTEKZGVzY3JpcHRpb246CglDaGVjayBldmFsIHZzIHN1YnN0aXR1dGlvbiBleGl0IGNvZGVzIChrc2g5MyBhbGlrZSkKc3RkaW46CgkoZXhpdCAxMikKCWV2YWwgJChmYWxzZSkKCWVjaG8gQSAkPwoJKGV4aXQgMTIpCglldmFsICcgJChmYWxzZSknCgllY2hvIEIgJD8KCShleGl0IDEyKQoJZXZhbCAiICQoZmFsc2UpIgoJZWNobyBDICQ/CgkoZXhpdCAxMikKCWV2YWwgImV2YWwgJChmYWxzZSkiCgllY2hvIEQgJD8KCShleGl0IDEyKQoJZXZhbCAnZXZhbCAnIiQoZmFsc2UpIgoJZWNobyBFICQ/CglJRlM9IiRJRlM6IgoJKGV4aXQgMTIpCglldmFsICQoZWNobyA6OyBmYWxzZSkKCWVjaG8gRiAkPwoJZWNobyAtbiAiRyAiCgkoZXhpdCAxMikKCWV2YWwgJ2VjaG8gJD8nCgllY2hvIEggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJQSAwCglCIDEKCUMgMAoJRCAwCglFIDAKCUYgMAoJRyAxMgoJSCAwCi0tLQpuYW1lOiBleGl0LXRyYXAtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgImV4aXQiIHdpdGggbm8gYXJndW1lbnRzIGJlaGF2ZXMgU1VTdjQgY29uZm9ybWFudC4Kc3RkaW46Cgl0cmFwICdlY2hvIGhpOyBleGl0JyBFWElUCglleGl0IDkKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKZXhwZWN0ZWQtZXhpdDogOQotLS0KbmFtZTogZXhpdC10cmFwLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IEVSUiBhbmQgRVhJVCB0cmFwcyBhcmUgcnVuIGp1c3QgbGlrZSBrc2g5MyBkb2VzLgoJR05VIGJhc2ggZG9lcyBub3QgcnVuIEVSdHJhcCBpbiDCsWUgZXZhbC11bmRlZiBidXQgcnVucyBpdAoJdHdpY2UgKGJ1Zz8pIGluICtlIGV2YWwtZmFsc2UsIHNvIGRvZXMga3NoOTMgKGJ1Zz8pLCB3aGljaAoJYWxzbyBoYXMgYSBidWcgdG8gY29udGludWUgZXhlY3V0aW9uIChlY2hvaW5nICJhbmQgb3V0IiBhbmQKCXJldHVybmluZyAwKSBpbiArZSBldmFsLXVuZGVmLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAieCIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICJhbmQgcnVuICQyIgoJZXZhbCAkMgoJZWNobyBhbmQgb3V0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4dCIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICdhbmQgcnVuIHRydWUnCgl0cnVlCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInhmIgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gZmFsc2UnCglmYWxzZQoJZWNobyBhbmQgb3V0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4dSIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICdhbmQgcnVuICR7dj99JwoJJHt2P30KCWVjaG8gYW5kIG91dApzdGRpbjoKCXJ1bnRlc3QoKSB7CgkJcm0gLWYgcmMKCQkoCgkJCSIkX19wcm9nbmFtZSIgIiRAIgoJCQllY2hvICQ/ID5yYwoJCSkgMj4mMSB8IHNlZCBcCgkJICAgIC1lICdzL3BhcmFtZXRlciBub3Qgc2V0L3BhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQvJyBcCgkJICAgIC1lICdzL1tbXTZdLy8nIC1lICdzLzogZXZhbDogbGluZSAxLy8nIC1lICdzLzogbGluZSA2Ly8nIFwKCQkgICAgLWUgInMBXiR7X19wcm9nbmFtZSUuZXhlfVwuKmUqeCplKjogPHN0ZGluPlxbWzAtOV0qXQFQUk9HASIKCX0KCXhlPS1lCgllY2hvIDogJHhlCglydW50ZXN0IHggJHhlIHRydWUKCWVjaG8gPSBldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgZmFsc2UKCWVjaG8gPSBldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHggJHhlICcke3Y/fScKCWVjaG8gPSBldmFsLXVuZGVmICQoPHJjKSAuCglydW50ZXN0IHh0ICR4ZQoJZWNobyA9IG5vZXZhbC10cnVlICQoPHJjKSAuCglydW50ZXN0IHhmICR4ZQoJZWNobyA9IG5vZXZhbC1mYWxzZSAkKDxyYykgLgoJcnVudGVzdCB4dSAkeGUKCWVjaG8gPSBub2V2YWwtdW5kZWYgJCg8cmMpIC4KCXhlPStlCgllY2hvIDogJHhlCglydW50ZXN0IHggJHhlIHRydWUKCWVjaG8gPSBldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgZmFsc2UKCWVjaG8gPSBldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHggJHhlICcke3Y/fScKCWVjaG8gPSBldmFsLXVuZGVmICQoPHJjKSAuCglydW50ZXN0IHh0ICR4ZQoJZWNobyA9IG5vZXZhbC10cnVlICQoPHJjKSAuCglydW50ZXN0IHhmICR4ZQoJZWNobyA9IG5vZXZhbC1mYWxzZSAkKDxyYykgLgoJcnVudGVzdCB4dSAkeGUKCWVjaG8gPSBub2V2YWwtdW5kZWYgJCg8cmMpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJOiAtZQoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglFWHRyYXAKCT0gZXZhbC1mYWxzZSAxIC4KCWFuZCBydW4gJHt2P30KCXg6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVSdHJhcAoJRVh0cmFwCgk9IGV2YWwtdW5kZWYgMSAuCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJRVh0cmFwCgk9IG5vZXZhbC1mYWxzZSAxIC4KCWFuZCBydW4gJHt2P30KCXh1OiB2OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglFWHRyYXAKCT0gbm9ldmFsLXVuZGVmIDEgLgoJOiArZQoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC1mYWxzZSAwIC4KCWFuZCBydW4gJHt2P30KCXg6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVSdHJhcAoJRVh0cmFwCgk9IGV2YWwtdW5kZWYgMSAuCglhbmQgcnVuIHRydWUKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJYW5kIG91dAoJRVh0cmFwCgk9IG5vZXZhbC1mYWxzZSAwIC4KCWFuZCBydW4gJHt2P30KCXh1OiB2OiBwYXJhbWV0ZXIgbnVsbCBvciBub3Qgc2V0CglFWHRyYXAKCT0gbm9ldmFsLXVuZGVmIDEgLgotLS0KbmFtZTogdGVzdC1zdGx0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRlc3QgYWxzbyBjYW4gaGFuZGxlIHN0cmluZzEgPCBzdHJpbmcyIGV0Yy4Kc3RkaW46Cgl0ZXN0IDIwMDUvMTAvMDggJzwnIDIwMDUvMDgvMjEgJiYgZWNobyBqYSB8fCBlY2hvIG5laW4KCXRlc3QgMjAwNS8wOC8yMSBcPCAyMDA1LzEwLzA4ICYmIGVjaG8gamEgfHwgZWNobyBuZWluCgl0ZXN0IDIwMDUvMTAvMDggJz4nIDIwMDUvMDgvMjEgJiYgZWNobyBqYSB8fCBlY2hvIG5laW4KCXRlc3QgMjAwNS8wOC8yMSBcPiAyMDA1LzEwLzA4ICYmIGVjaG8gamEgfHwgZWNobyBuZWluCmV4cGVjdGVkLXN0ZG91dDoKCW5laW4KCWphCglqYQoJbmVpbgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogIS91bmV4cGVjdGVkIG9wLwotLS0KbmFtZTogdGVzdC1wcmVjZWRlbmNlLTEKZGVzY3JpcHRpb246CglDaGVjayBhIHdlaXJkIHByZWNlZGVuY2UgY2FzZSAoYW5kIFBPU0lYIGVjaG8pCnN0ZGluOgoJdGVzdCBcKCAtZiA9IC1mIFwpCglydj0kPwoJZWNobyAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogdGVzdC1vcHRpb24tMQpkZXNjcmlwdGlvbjoKCVRlc3QgdGhlIHRlc3QgLW8gb3BlcmF0b3IKc3RkaW46CglydW50ZXN0KCkgewoJCXRlc3QgLW8gJDE7IGVjaG8gJD8KCQlbIC1vICQxIF07IGVjaG8gJD8KCQlbWyAtbyAkMSBdXTsgZWNobyAkPwoJfQoJaWZfdGVzdCgpIHsKCQl0ZXN0IC1vICQxIC1vIC1vICEkMTsgZWNobyAkPwoJCVsgLW8gJDEgLW8gLW8gISQxIF07IGVjaG8gJD8KCQlbWyAtbyAkMSB8fCAtbyAhJDEgXV07IGVjaG8gJD8KCQl0ZXN0IC1vID8kMTsgZWNobyAkPwoJfQoJZWNobyAweSAkKGlmX3Rlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDBuICQoaWZfdGVzdCB1dGY4LWhhY2spID0KCWVjaG8gMT0gJChydW50ZXN0IHV0ZjgtaGFjaykgPQoJZWNobyAyPSAkKHJ1bnRlc3QgIXV0ZjgtaGFjaykgPQoJZWNobyAzPSAkKHJ1bnRlc3QgP3V0ZjgtaGFjaykgPQoJc2V0ICtVCgllY2hvIDErICQocnVudGVzdCB1dGY4LW1vZGUpID0KCWVjaG8gMisgJChydW50ZXN0ICF1dGY4LW1vZGUpID0KCWVjaG8gMysgJChydW50ZXN0ID91dGY4LW1vZGUpID0KCXNldCAtVQoJZWNobyAxLSAkKHJ1bnRlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDItICQocnVudGVzdCAhdXRmOC1tb2RlKSA9CgllY2hvIDMtICQocnVudGVzdCA/dXRmOC1tb2RlKSA9CgllY2hvID0gc2hvcnQgZmxhZ3MgPQoJZWNobyAweSAkKGlmX3Rlc3QgLVUpID0KCWVjaG8gMHkgJChpZl90ZXN0ICtVKSA9CgllY2hvIDBuICQoaWZfdGVzdCAtXykgPQoJZWNobyAwbiAkKGlmX3Rlc3QgLVUtKSA9CgllY2hvIDE9ICQocnVudGVzdCAtXykgPQoJZWNobyAyPSAkKHJ1bnRlc3QgIS1fKSA9CgllY2hvIDM9ICQocnVudGVzdCA/LV8pID0KCXNldCArVQoJZWNobyAxKyAkKHJ1bnRlc3QgLVUpID0KCWVjaG8gMisgJChydW50ZXN0ICEtVSkgPQoJZWNobyAzKyAkKHJ1bnRlc3QgPy1VKSA9CgllY2hvIDErICQocnVudGVzdCArVSkgPQoJZWNobyAyKyAkKHJ1bnRlc3QgIStVKSA9CgllY2hvIDMrICQocnVudGVzdCA/K1UpID0KCXNldCAtVQoJZWNobyAxLSAkKHJ1bnRlc3QgLVUpID0KCWVjaG8gMi0gJChydW50ZXN0ICEtVSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgPy1VKSA9CgllY2hvIDEtICQocnVudGVzdCArVSkgPQoJZWNobyAyLSAkKHJ1bnRlc3QgIStVKSA9CgllY2hvIDMtICQocnVudGVzdCA/K1UpID0KZXhwZWN0ZWQtc3Rkb3V0OgoJMHkgMCAwIDAgMCA9CgkwbiAxIDEgMSAxID0KCTE9IDEgMSAxID0KCTI9IDEgMSAxID0KCTM9IDEgMSAxID0KCTErIDEgMSAxID0KCTIrIDAgMCAwID0KCTMrIDAgMCAwID0KCTEtIDAgMCAwID0KCTItIDEgMSAxID0KCTMtIDAgMCAwID0KCT0gc2hvcnQgZmxhZ3MgPQoJMHkgMCAwIDAgMCA9CgkweSAwIDAgMCAwID0KCTBuIDEgMSAxIDEgPQoJMG4gMSAxIDEgMSA9CgkxPSAxIDEgMSA9CgkyPSAxIDEgMSA9CgkzPSAxIDEgMSA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9Ci0tLQpuYW1lOiBta3NocmMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMTogdmVyaWZ5IHVzZXIgZW52aXJvbm1lbnQgaXMgbm90IHJlYWQgKGludGVybmFsKQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeAotLS0KbmFtZTogbWtzaHJjLTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAyOiB2ZXJpZnkgbWtzaHJjIGlzIG5vdCByZWFkIChub24taW50ZXJhY3RpdmUgc2hlbGxzKQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiLm1rc2hyYyIKCUZOT1JEPTQyCmVudi1zZXR1cDogIUhPTUU9LiFFTlY9IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeAotLS0KbmFtZTogbWtzaHJjLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAyOiB2ZXJpZnkgbWtzaHJjIGNhbiBiZSByZWFkIChpbnRlcmFjdGl2ZSBzaGVsbHMpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIubWtzaHJjIgoJRk5PUkQ9NDIKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUhPTUU9LiFFTlY9IVBTMT0hCnN0ZGluOgoJZWNobyB4ICRGTk9SRApleHBlY3RlZC1zdGRvdXQ6Cgl4IDQyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLygjICkqLwotLS0KbmFtZTogbWtzaHJjLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IH4vLm1rc2hyYyB3b3JrcyBjb3JyZWN0bHkuCglQYXJ0IDM6IHZlcmlmeSBta3NocmMgY2FuIGJlIHR1cm5lZCBvZmYKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5ta3NocmMiCglGTk9SRD00MgplbnYtc2V0dXA6ICFIT01FPS4hRU5WPW5vbmV4aXN0YW50IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeAotLS0KbmFtZTogc2gtbW9kZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaCBtb2RlIHR1cm5zIGJyYWNlZXhwYW5kIG9mZgoJYW5kIHRoYXQgdGhhdCB3b3JrcyBjb3JyZWN0bHkKc3RkaW46CglzZXQgLW8gYnJhY2VleHBhbmQKCXNldCArbyBzaAoJW1sgJChzZXQgK28pID09ICpAKC1vIHNoKUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaAoJW1sgJChzZXQgK28pID09ICpAKC1vIGJyYWNlZXhwYW5kKUAofCAqKSBdXSAmJiBlY2hvIGJyZXggfHwgZWNobyBub2JyZXgKCWVjaG8ge2EsYixjfQoJc2V0ICtvIGJyYWNlZXhwYW5kCgllY2hvIHthLGIsY30KCXNldCAtbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglzZXQgLW8gc2gKCWVjaG8ge2EsYixjfQoJW1sgJChzZXQgK28pID09ICpAKC1vIHNoKUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaAoJW1sgJChzZXQgK28pID09ICpAKC1vIGJyYWNlZXhwYW5kKUAofCAqKSBdXSAmJiBlY2hvIGJyZXggfHwgZWNobyBub2JyZXgKCXNldCAtbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglbWyAkKHNldCArbykgPT0gKkAoLW8gc2gpQCh8ICopIF1dICYmIGVjaG8gc2ggfHwgZWNobyBub3NoCglbWyAkKHNldCArbykgPT0gKkAoLW8gYnJhY2VleHBhbmQpQCh8ICopIF1dICYmIGVjaG8gYnJleCB8fCBlY2hvIG5vYnJleApleHBlY3RlZC1zdGRvdXQ6Cglub3NoCglicmV4CglhIGIgYwoJe2EsYixjfQoJYSBiIGMKCXthLGIsY30KCXNoCglub2JyZXgKCWEgYiBjCglzaAoJYnJleAotLS0KbmFtZTogc2gtbW9kZS0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2ggbW9kZSBpcyAqbm90KiBhdXRvbWF0aWNhbGx5IHR1cm5lZCBvbgpjYXRlZ29yeTogIWJpbnNoCnN0ZGluOgoJbG4gLXMgIiRfX3Byb2duYW1lIiBrc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBrc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBzaAoJbG4gLXMgIiRfX3Byb2duYW1lIiAuLy1rc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1rc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgLi8tc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1zaAoJZm9yIHNoZWxsIGluIHssLX17LGt9c2g7IGRvCgkJcHJpbnQgLS0gJHNoZWxsICQoLi8kc2hlbGwgK2wgLWMgXAoJCSAgICAnW1sgJChzZXQgK28pID09ICpAKC1vIHNoKUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaCcpCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCXNoIG5vc2gKCWtzaCBub3NoCgktc2ggbm9zaAoJLWtzaCBub3NoCi0tLQpuYW1lOiBzaC1tb2RlLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaCBtb2RlICppcyogYXV0b21hdGljYWxseSB0dXJuZWQgb24KY2F0ZWdvcnk6IGJpbnNoCnN0ZGluOgoJbG4gLXMgIiRfX3Byb2duYW1lIiBrc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBrc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgc2ggfHwgY3AgIiRfX3Byb2duYW1lIiBzaAoJbG4gLXMgIiRfX3Byb2duYW1lIiAuLy1rc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1rc2gKCWxuIC1zICIkX19wcm9nbmFtZSIgLi8tc2ggfHwgY3AgIiRfX3Byb2duYW1lIiAuLy1zaAoJZm9yIHNoZWxsIGluIHssLX17LGt9c2g7IGRvCgkJcHJpbnQgLS0gJHNoZWxsICQoLi8kc2hlbGwgK2wgLWMgXAoJCSAgICAnW1sgJChzZXQgK28pID09ICpAKC1vIHNoKUAofCAqKSBdXSAmJiBlY2hvIHNoIHx8IGVjaG8gbm9zaCcpCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCXNoIHNoCglrc2ggbm9zaAoJLXNoIHNoCgkta3NoIG5vc2gKLS0tCm5hbWU6IHBpcGVsaW5lLTEKZGVzY3JpcHRpb246CglwZGtzaCBidWc6IGxhc3QgY29tbWFuZCBvZiBhIHBpcGVsaW5lIGlzIGV4ZWN1dGVkIGluIGEKCXN1YnNoZWxsIC0gbWFrZSBzdXJlIGl0IHN0aWxsIGlzLCBzY3JpcHRzIGRlcGVuZCBvbiBpdApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeCIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiY3kiCnN0ZGluOgoJZWNobyAqCgllY2hvIGEgfCB3aGlsZSByZWFkIGQ7IGRvCgkJZWNobyAkZAoJCWVjaG8gJGQqCgkJZWNobyAqCgkJc2V0IC1vIG5vZ2xvYgoJCWVjaG8gJGQqCgkJZWNobyAqCglkb25lCgllY2hvICoKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjeCBhYmN5CglhCglhYmN4IGFiY3kKCWFiY3ggYWJjeQoJYSoKCSoKCWFiY3ggYWJjeQotLS0KbmFtZTogcGlwZWxpbmUtMgpkZXNjcmlwdGlvbjoKCWNoZWNrIHRoYXQgY28tcHJvY2Vzc2VzIHdvcmsgd2l0aCBUQ09NcywgVFBJUEVzIGFuZCBUUEFSRU5zCmNhdGVnb3J5OiAhbm9qc2lnCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnaT0xMDA7IGVjaG8gaGkgfCYgd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyBlY2hvICIkKChpKyspKSAkbGluZSI7IGRvbmUnCgkiJF9fcHJvZ25hbWUiIC1jICdpPTIwMDsgZWNobyBoaSB8IGNhdCB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKCSIkX19wcm9nbmFtZSIgLWMgJ2k9MzAwOyAoZWNobyBoaSB8IGNhdCkgfCYgd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyBlY2hvICIkKChpKyspKSAkbGluZSI7IGRvbmUnCmV4cGVjdGVkLXN0ZG91dDoKCTEwMCBoaQoJMjAwIGhpCgkzMDAgaGkKLS0tCm5hbWU6IHBpcGVsaW5lLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFBJUEVTVEFUVVMgZG9lcyB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8Kc3RkaW46CgllY2hvIDEgJFBJUEVTVEFUVVMgLgoJZWNobyAyICR7UElQRVNUQVRVU1swXX0gLgoJZWNobyAzICR7UElQRVNUQVRVU1sxXX0gLgoJKGVjaG8geDsgZXhpdCAxMikgfCAoY2F0OyBleGl0IDIzKSB8IChjYXQ7IGV4aXQgNDIpCgllY2hvIDUgJD8gLCAkUElQRVNUQVRVUyAsICR7UElQRVNUQVRVU1swXX0gLCAke1BJUEVTVEFUVVNbMV19ICwgJHtQSVBFU1RBVFVTWzJdfSAsICR7UElQRVNUQVRVU1szXX0gLgoJZWNobyA2ICR7UElQRVNUQVRVU1swXX0gLgoJc2V0IHwgZmdyZXAgUElQRVNUQVRVUwoJZWNobyA4ICQoc2V0IHwgZmdyZXAgUElQRVNUQVRVUykgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDAgLgoJMiAwIC4KCTMgLgoJeAoJNSA0MiAsIDEyICwgMTIgLCAyMyAsIDQyICwgLgoJNiAwIC4KCVBJUEVTVEFUVVNbMF09MAoJOCBQSVBFU1RBVFVTWzBdPTAgUElQRVNUQVRVU1sxXT0wIC4KLS0tCm5hbWU6IHBlcnNpc3QtaGlzdG9yeS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgcGVyc2lzdGVudCBoaXN0b3J5IHNhdmluZyB3b3JrcwpjYXRlZ29yeTogIW5vLWhpc3RmaWxlCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgljYXQgaGlzdC5maWxlCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL2NhdCBoaXN0LmZpbGUvCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiB0eXBlc2V0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdsb2JhbCBkb2VzIHdoYXQgdHlwZXNldCBpcyBzdXBwb3NlZCB0byBkbwpzdGRpbjoKCXNldCAtQSBhcnJmb28gNjUKCWZvbygpIHsKCQlnbG9iYWwgLVV1aTE2IGFycmZvb1sqXQoJfQoJZWNobyBiZWZvcmUgJHthcnJmb29bMF19IC4KCWZvbwoJZWNobyBhZnRlciAke2FycmZvb1swXX0gLgoJc2V0IC1BIGFycmJhciA2NQoJYmFyKCkgewoJCWVjaG8gaW5zaWRlIGJlZm9yZSAke2FycmJhclswXX0gLgoJCWFycmJhclswXT05NwoJCWVjaG8gaW5zaWRlIGNoYW5nZWQgJHthcnJiYXJbMF19IC4KCQlnbG9iYWwgLVV1aTE2IGFycmJhclsqXQoJCWVjaG8gaW5zaWRlIHR5cGVzZXQgJHthcnJiYXJbMF19IC4KCQlhcnJiYXJbMF09NDgKCQllY2hvIGluc2lkZSBjaGFuZ2VkICR7YXJyYmFyWzBdfSAuCgl9CgllY2hvIGJlZm9yZSAke2FycmJhclswXX0gLgoJYmFyCgllY2hvIGFmdGVyICR7YXJyYmFyWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZSA2NSAuCglhZnRlciAxNiM0MSAuCgliZWZvcmUgNjUgLgoJaW5zaWRlIGJlZm9yZSA2NSAuCglpbnNpZGUgY2hhbmdlZCA5NyAuCglpbnNpZGUgdHlwZXNldCAxNiM2MSAuCglpbnNpZGUgY2hhbmdlZCAxNiMzMCAuCglhZnRlciAxNiMzMCAuCi0tLQpuYW1lOiB0eXBlc2V0LXBhZGRpbmctMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGxlZnQvcmlnaHQganVzdGlmaWNhdGlvbiB3b3JrcyBhcyBwZXIgVEZNCnN0ZGluOgoJdHlwZXNldCAtTDEwIGxuPTBoYWxsMAoJdHlwZXNldCAtUjEwIHJuPTBoYWxsMAoJdHlwZXNldCAtWkwxMCBsej0waGFsbDAKCXR5cGVzZXQgLVpSMTAgcno9MGhhbGwwCgl0eXBlc2V0IC1aMTAgcng9IiBoYWxsbyAiCgllY2hvICI8JGxuPiA8JHJuPiA8JGx6PiA8JHJ6PiA8JHJ4PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDBoYWxsMCAgICA+IDwgICAgMGhhbGwwPiA8aGFsbDAgICAgID4gPDAwMDAwaGFsbDA+IDwwMDAwIGhhbGxvPgotLS0KbmFtZTogdHlwZXNldC1wYWRkaW5nLTIKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNlLSExMCBpbnRlZ2VycyBhcmUgcGFkZGVkIHJpZ2h0CnN0ZGluOgoJdHlwZXNldCAtVXVpMTYgLUw5IGxuPTE2IzEKCXR5cGVzZXQgLVV1aTE2IC1SOSBybj0xNiMxCgl0eXBlc2V0IC1VdWkxNiAtWjkgem49MTYjMQoJdHlwZXNldCAtTDkgbHM9MTYjMQoJdHlwZXNldCAtUjkgcnM9MTYjMQoJdHlwZXNldCAtWjkgenM9MTYjMQoJZWNobyAiPCRsbj4gPCRybj4gPCR6bj4gPCRscz4gPCRycz4gPCR6cz4iCmV4cGVjdGVkLXN0ZG91dDoKCTwxNiMxICAgICA+IDwgICAgIDE2IzE+IDwxNiMwMDAwMDE+IDwxNiMxICAgICA+IDwgICAgIDE2IzE+IDwwMDAwMDE2IzE+Ci0tLQpuYW1lOiB1dGY4Ym9tLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBVVEYtOCBCeXRlIE9yZGVyIE1hcmsgaXMgaWdub3JlZCBhcyB0aGUgZmlyc3QKCW11bHRpYnl0ZSBjaGFyYWN0ZXIgb2YgdGhlIHNoZWxsIGlucHV0ICh3aXRoIC1jLCBmcm9tIHN0YW5kYXJkCglpbnB1dCwgYXMgZmlsZSwgb3IgYXMgZXZhbCBhcmd1bWVudCksIGJ1dCBub3doZXJlIGVsc2UKIyBicmVha3Mgb24gTWFjIE9TWCAoSEZTKyBub24tc3RhbmRhcmQgVW5pY29kZSBjYW5vbmljYWwgZGVjb21wb3NpdGlvbikKY2F0ZWdvcnk6ICFvczpkYXJ3aW4Kc3RkaW46Cglta2RpciBmb28KCXByaW50ICcjIS9iaW4vc2hcbmVjaG8gb2huZScgPmZvby9mbm9yZAoJcHJpbnQgJyMhL2Jpbi9zaFxuZWNobyBtaXQnID5mb28v77u/Zm5vcmQKCXByaW50ICfvu79mbm9yZFxuZm5vcmRcbu+7v2Zub3JkXG5mbm9yZCcgPmZvby9iYXIKCXByaW50IGV2YWwgXCcn77u/Zm5vcmRcbmZub3JkXG7vu79mbm9yZFxuZm5vcmQnXCcgPmZvby96b28KCXNldCAtQSBhbnphaGwgLS0gZm9vLyoKCWVjaG8gZ290ICR7I2FuemFobFsqXX0gZmlsZXMKCWNobW9kICt4IGZvby8qCglleHBvcnQgUEFUSD0kKHB3ZCkvZm9vOiRQQVRICgkiJF9fcHJvZ25hbWUiIC1jICfvu79mbm9yZCcKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiAtYyAn77u/Zm5vcmQ7IGZub3JkOyDvu79mbm9yZDsgZm5vcmQnCgllY2hvID0KCSIkX19wcm9nbmFtZSIgZm9vL2JhcgoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIDxmb28vYmFyCgllY2hvID0KCSIkX19wcm9nbmFtZSIgZm9vL3pvbwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIO+7vzogJCjvu79mbm9yZCknCglybSAtcmYgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWdvdCA0IGZpbGVzCglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJb2huZQoJb2huZQoJbWl0CglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCe+7vzogb2huZQotLS0KbmFtZTogdXRmOGJvbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB3ZSBjYW4gZXhlY3V0ZSBCT00tc2hlYmFuZ3MgKGZhaWx1cmVzIG5vdCBmYXRhbCkKCVhYWCBpZiB0aGUgT1MgY2FuIGFscmVhZHkgZXhlY3V0ZSB0aGVtLCB3ZSBsb3NlCglub3RlOiBjeWd3aW4gZXhlY3ZlKDIpIGRvZXNuJ3QgcmV0dXJuIHRvIHVzIHdpdGggRU5PRVhFQywgd2UgbG9zZQoJbm90ZTogVWx0cml4IHBlcmw1IHQ0IHJldHVybnMgNjUyODAgKGV4aXQtY29kZSAyNTUpIGFuZCBubyB0ZXh0Cm5lZWQtcGFzczogbm8KY2F0ZWdvcnk6ICFvczpjeWd3aW4sIW9zOm1zeXMsIW9zOnVsdHJpeCwhb3M6dXdpbi1udCwhc21rc2gKZW52LXNldHVwOiAhRk9PPUJBUiEKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnByaW50ICIxIGE9JEVOVntGT099IjsnID50MQoJcHJpbnQgJ++7vyMhJyIkX19wcm9nbmFtZSInXG5wcmludCAiMiBhPSRFTlZ7Rk9PfSI7JyA+dDIKCXByaW50ICcjISciJF9fcGVybG5hbWUiJ1xucHJpbnQgIjMgYT0kRU5We0ZPT31cbiI7JyA+dDMKCXByaW50ICfvu78jISciJF9fcGVybG5hbWUiJ1xucHJpbnQgIjQgYT0kRU5We0ZPT31cbiI7JyA+dDQKCWNobW9kICt4IHQ/CgkuL3QxCgkuL3QyCgkuL3QzCgkuL3Q0CmV4cGVjdGVkLXN0ZG91dDoKCTEgYT0vbm9uZXhpc3RhbnR7Rk9PfQoJMiBhPS9ub25leGlzdGFudHtGT099CgkzIGE9QkFSCgk0IGE9QkFSCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLyhVbnJlY29nbml6ZWQgY2hhcmFjdGVyIC4uLi4gaWdub3JlZCBhdCBcLi50NCBsaW5lIDEpKi8KLS0tCm5hbWU6IHV0ZjhvcHQtMWEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSB1dGY4LW1vZGUgZmxhZyBpcyBub3Qgc2V0IGF0IG5vbi1pbnRlcmFjdGl2ZSBzdGFydHVwCmNhdGVnb3J5OiAhb3M6aHB1eAplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9ZW5fVVMuVVRGLTghCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgbm90IHNldAotLS0KbmFtZTogdXRmOG9wdC0xYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIHV0ZjgtbW9kZSBmbGFnIGlzIG5vdCBzZXQgYXQgbm9uLWludGVyYWN0aXZlIHN0YXJ0dXAKY2F0ZWdvcnk6IG9zOmhwdXgKZW52LXNldHVwOiAhUFMxPSFQUzI9IUxDX0NUWVBFPWVuX1VTLnV0ZjghCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgbm90IHNldAotLS0KbmFtZTogdXRmOG9wdC0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIHV0ZjgtbW9kZSBmbGFnIGlzIHNldCBhdCBpbnRlcmFjdGl2ZSBzdGFydHVwLgoJLURNS1NIX0FTU1VNRV9VVEY4PTAgPT4gZXhwZWN0ZWQgZmFpbHVyZSwgcGxlYXNlIGlnbm9yZQoJLURNS1NIX0FTU1VNRV9VVEY4PTEgPT4gbm90IGV4cGVjdGVkLCBwbGVhc2UgaW52ZXN0aWdhdGUKCS1VTUtTSF9BU1NVTUVfVVRGOCA9PiBub3QgZXhwZWN0ZWQsIGJ1dCBpZiB5b3VyIE9TIGlzIG9sZCwKCSB0cnkgcGFzc2luZyBIQVZFX1NFVExPQ0FMRV9DVFlQRT0wIHRvIEJ1aWxkLnNoCm5lZWQtcGFzczogbm8KY2F0ZWdvcnk6ICFvczpocHV4LCFvczptc3lzCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9ZW5fVVMuVVRGLTghCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgc2V0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLygjICkqLwotLS0KbmFtZTogdXRmOG9wdC0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIHV0ZjgtbW9kZSBmbGFnIGlzIHNldCBhdCBpbnRlcmFjdGl2ZSBzdGFydHVwCglFeHBlY3RlZCBmYWlsdXJlIGlmIC1ETUtTSF9BU1NVTUVfVVRGOD0wCmNhdGVnb3J5OiBvczpocHV4Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9ZW5fVVMudXRmOCEKc3RkaW46CglpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbgoJCWVjaG8gaXMgc2V0CgllbHNlCgkJZWNobyBpcyBub3Qgc2V0CglmaQpleHBlY3RlZC1zdGRvdXQ6CglpcyBzZXQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKCMgKSovCi0tLQpuYW1lOiB1dGY4b3B0LTNhCmRlc2NyaXB0aW9uOgoJRW5zdXJlIMKxVSBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIGhvbm91cmVkCgkodGhlc2UgdHdvIHRlc3RzIG1heSBwYXNzIGZhbHNlbHkgZGVwZW5kaW5nIG9uIENQUEZMQUdTKQpzdGRpbjoKCWV4cG9ydCBpPTAKCWNvZGU9J2lmIFtbICQtID0gKlUqIF1dOyB0aGVuIGVjaG8gJGkgb247IGVsc2UgZWNobyAkaSBvZmY7IGZpJwoJbGV0IGkrKzsgIiRfX3Byb2duYW1lIiAtVSAtYyAiJGNvZGUiCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiICtVIC1jICIkY29kZSIKCWVjaG8gJCgoKytpKSkgZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxIG9uCgkyIG9mZgoJMyBkb25lCi0tLQpuYW1lOiB1dGY4b3B0LTNiCmRlc2NyaXB0aW9uOgoJRW5zdXJlIMKxVSBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIGhvbm91cmVkLCBpbnRlcmFjdGl2ZSBzaGVsbHMKbmVlZC1jdHR5OiB5ZXMKc3RkaW46CglleHBvcnQgaT0wCgljb2RlPSdpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbiBlY2hvICRpIG9uOyBlbHNlIGVjaG8gJGkgb2ZmOyBmaScKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgLVUgLWljICIkY29kZSIKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgK1UgLWljICIkY29kZSIKCWVjaG8gJCgoKytpKSkgZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxIG9uCgkyIG9mZgoJMyBkb25lCi0tLQpuYW1lOiBhbGlhc2VzLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBidWlsdC1pbiBzaGVsbCBhbGlhc2VzIGFyZSBva2F5CmNhdGVnb3J5OiAhYW5kcm9pZCwhYXJnZQpzdGRpbjoKCWFsaWFzCgl0eXBlc2V0IC1mCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSd0eXBlc2V0IC1mdScKCWZ1bmN0aW9ucz0ndHlwZXNldCAtZicKCWhhc2g9J2FsaWFzIC10JwoJaGlzdG9yeT0nZmMgLWwnCglpbnRlZ2VyPSd0eXBlc2V0IC1pJwoJbG9jYWw9dHlwZXNldAoJbG9naW49J2V4ZWMgbG9naW4nCgluYW1lcmVmPSd0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J2ZjIC1lIC0nCglzb3VyY2U9J1BBVEg9JFBBVEg6LiBjb21tYW5kIC4nCglzdG9wPSdraWxsIC1TVE9QJwoJc3VzcGVuZD0na2lsbCAtU1RPUCAkJCcKCXR5cGU9J3doZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtMS1oYXJ0ejQKZGVzY3JpcHRpb246CglDaGVjayBpZiBidWlsdC1pbiBzaGVsbCBhbGlhc2VzIGFyZSBva2F5CmNhdGVnb3J5OiBhbmRyb2lkLGFyZ2UKc3RkaW46CglhbGlhcwoJdHlwZXNldCAtZgpleHBlY3RlZC1zdGRvdXQ6CglhdXRvbG9hZD0ndHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J3R5cGVzZXQgLWYnCgloYXNoPSdhbGlhcyAtdCcKCWhpc3Rvcnk9J2ZjIC1sJwoJaW50ZWdlcj0ndHlwZXNldCAtaScKCWxvY2FsPXR5cGVzZXQKCWxvZ2luPSdleGVjIGxvZ2luJwoJbmFtZXJlZj0ndHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdmYyAtZSAtJwoJc291cmNlPSdQQVRIPSRQQVRIOi4gY29tbWFuZCAuJwoJdHlwZT0nd2hlbmNlIC12JwotLS0KbmFtZTogYWxpYXNlcy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIOKAnHNldCAtbyBzaOKAnSBkaXNhYmxlcyBidWlsdC1pbiBhbGlhc2VzIChleGNlcHQgYSBmZXcpCmNhdGVnb3J5OiBkaXNhYmxlZAphcmd1bWVudHM6ICEtbyFzaCEKc3RkaW46CglhbGlhcwoJdHlwZXNldCAtZgpleHBlY3RlZC1zdGRvdXQ6CglpbnRlZ2VyPSd0eXBlc2V0IC1pJwoJbG9jYWw9dHlwZXNldAotLS0KbmFtZTogYWxpYXNlcy0zYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHJ1bm5pbmcgYXMgc2ggZGlzYWJsZXMgYnVpbHQtaW4gYWxpYXNlcyAoZXhjZXB0IGEgZmV3KQpjYXRlZ29yeTogZGlzYWJsZWQKc3RkaW46CgljcCAiJF9fcHJvZ25hbWUiIHNoCgkuL3NoIC1jICdhbGlhczsgdHlwZXNldCAtZicKCXJtIC1mIHNoCmV4cGVjdGVkLXN0ZG91dDoKCWludGVnZXI9J3R5cGVzZXQgLWknCglsb2NhbD10eXBlc2V0Ci0tLQpuYW1lOiBhbGlhc2VzLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYg4oCcc2V0IC1vIHNo4oCdIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCmNhdGVnb3J5OiAhYW5kcm9pZCwhYXJnZQphcmd1bWVudHM6ICEtbyFzaCEKc3RkaW46CglhbGlhcwoJdHlwZXNldCAtZgpleHBlY3RlZC1zdGRvdXQ6CglhdXRvbG9hZD0ndHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J3R5cGVzZXQgLWYnCgloYXNoPSdhbGlhcyAtdCcKCWhpc3Rvcnk9J2ZjIC1sJwoJaW50ZWdlcj0ndHlwZXNldCAtaScKCWxvY2FsPXR5cGVzZXQKCWxvZ2luPSdleGVjIGxvZ2luJwoJbmFtZXJlZj0ndHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdmYyAtZSAtJwoJc291cmNlPSdQQVRIPSRQQVRIOi4gY29tbWFuZCAuJwoJc3RvcD0na2lsbCAtU1RPUCcKCXN1c3BlbmQ9J2tpbGwgLVNUT1AgJCQnCgl0eXBlPSd3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgcnVubmluZyBhcyBzaCBkb2VzIG5vdCBpbmZsdWVuY2UgYnVpbHQtaW4gYWxpYXNlcwpjYXRlZ29yeTogIWFuZHJvaWQsIWFyZ2UKc3RkaW46CgljcCAiJF9fcHJvZ25hbWUiIHNoCgkuL3NoIC1jICdhbGlhczsgdHlwZXNldCAtZicKCXJtIC1mIHNoCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSd0eXBlc2V0IC1mdScKCWZ1bmN0aW9ucz0ndHlwZXNldCAtZicKCWhhc2g9J2FsaWFzIC10JwoJaGlzdG9yeT0nZmMgLWwnCglpbnRlZ2VyPSd0eXBlc2V0IC1pJwoJbG9jYWw9dHlwZXNldAoJbG9naW49J2V4ZWMgbG9naW4nCgluYW1lcmVmPSd0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J2ZjIC1lIC0nCglzb3VyY2U9J1BBVEg9JFBBVEg6LiBjb21tYW5kIC4nCglzdG9wPSdraWxsIC1TVE9QJwoJc3VzcGVuZD0na2lsbCAtU1RPUCAkJCcKCXR5cGU9J3doZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtMmItaGFydHo0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYg4oCcc2V0IC1vIHNo4oCdIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCmNhdGVnb3J5OiBhbmRyb2lkLGFyZ2UKYXJndW1lbnRzOiAhLW8hc2ghCnN0ZGluOgoJYWxpYXMKCXR5cGVzZXQgLWYKZXhwZWN0ZWQtc3Rkb3V0OgoJYXV0b2xvYWQ9J3R5cGVzZXQgLWZ1JwoJZnVuY3Rpb25zPSd0eXBlc2V0IC1mJwoJaGFzaD0nYWxpYXMgLXQnCgloaXN0b3J5PSdmYyAtbCcKCWludGVnZXI9J3R5cGVzZXQgLWknCglsb2NhbD10eXBlc2V0Cglsb2dpbj0nZXhlYyBsb2dpbicKCW5hbWVyZWY9J3R5cGVzZXQgLW4nCglub2h1cD0nbm9odXAgJwoJcj0nZmMgLWUgLScKCXNvdXJjZT0nUEFUSD0kUEFUSDouIGNvbW1hbmQgLicKCXR5cGU9J3doZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtM2ItaGFydHo0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgcnVubmluZyBhcyBzaCBkb2VzIG5vdCBpbmZsdWVuY2UgYnVpbHQtaW4gYWxpYXNlcwpjYXRlZ29yeTogYW5kcm9pZCxhcmdlCnN0ZGluOgoJY3AgIiRfX3Byb2duYW1lIiBzaAoJLi9zaCAtYyAnYWxpYXM7IHR5cGVzZXQgLWYnCglybSAtZiBzaApleHBlY3RlZC1zdGRvdXQ6CglhdXRvbG9hZD0ndHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J3R5cGVzZXQgLWYnCgloYXNoPSdhbGlhcyAtdCcKCWhpc3Rvcnk9J2ZjIC1sJwoJaW50ZWdlcj0ndHlwZXNldCAtaScKCWxvY2FsPXR5cGVzZXQKCWxvZ2luPSdleGVjIGxvZ2luJwoJbmFtZXJlZj0ndHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdmYyAtZSAtJwoJc291cmNlPSdQQVRIPSRQQVRIOi4gY29tbWFuZCAuJwoJdHlwZT0nd2hlbmNlIC12JwotLS0KbmFtZTogYWxpYXNlcy1jbWRsaW5lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhc2VzIHdvcmsgZnJvbSB0aGUgY29tbWFuZCBsaW5lIChEZWJpYW4gIzUxNzAwOSkKCU5vdGUgdGhhdCBkdWUgdG8gdGhlIG5hdHVyZSBvZiB0aGUgbGV4aW5nIHByb2Nlc3MsIGRlZmluaW5nCglhbGlhc2VzIGluIENPTVNVQnMgdGhlbiBpbW1lZGlhdGVseSB1c2luZyB0aGVtLCBhbmQgdGhpbmdzCglsaWtlICdhbGlhcyBmb289YmFyICYmIGZvbycsIHN0aWxsIGZhaWwuCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAkJ2FsaWFzIGE9ImVjaG8gT0siXG5hJwpleHBlY3RlZC1zdGRvdXQ6CglPSwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBQT1NJWCBmdW5jdGlvbnMgdGFrZSBwcmVjZWRlbmNlcyBvdmVyIGFsaWFzZXMKc3RkaW46CglhbGlhcyBmb289J2VjaG8gbWFrcm8nCglmb28oKSB7CgkJZWNobyBmdW5rdGlvbgoJfQoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWZ1bmt0aW9uCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIFBPU0lYIGZ1bmN0aW9ucyB0YWtlIHByZWNlZGVuY2VzIG92ZXIgYWxpYXNlcwpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBtYWtybycKCWZvbyAoKSB7CgkJZWNobyBmdW5rdGlvbgoJfQoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWZ1bmt0aW9uCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFsaWFzZXMgdGFrZSBwcmVjZWRlbmNlcyBvdmVyIEtvcm4gZnVuY3Rpb25zCnN0ZGluOgoJYWxpYXMgZm9vPSdlY2hvIG1ha3JvJwoJZnVuY3Rpb24gZm9vIHsKCQllY2hvIGZ1bmt0aW9uCgl9Cglmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJbWFrcm8KLS0tCm5hbWU6IGFsaWFzZXMtZnVuY2RlZi00CmRlc2NyaXB0aW9uOgoJRnVuY3Rpb25zIHNob3VsZCBvbmx5IHRha2Ugb3ZlciBpZiBhY3R1YWxseSBiZWluZyBkZWZpbmVkCnN0ZGluOgoJYWxpYXMgbG9jYWwKCTp8fCBsb2NhbCgpIHsgOjsgfQoJYWxpYXMgbG9jYWwKZXhwZWN0ZWQtc3Rkb3V0OgoJbG9jYWw9dHlwZXNldAoJbG9jYWw9dHlwZXNldAotLS0KbmFtZTogYXJyYXlzLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBLb3JuIFNoZWxsIGFycmF5cyB3b3JrIGFzIGV4cGVjdGVkCnN0ZGluOgoJdj0iYyBkIgoJc2V0IC1BIGZvbyAtLSBhIFwkdiAiJHYiICckdicgYgoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCIKZXhwZWN0ZWQtc3Rkb3V0OgoJNXxhfCR2fGMgZHwkdnxifAotLS0KbmFtZTogYXJyYXlzLTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBhcnJheXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCWZvbz0oYSBcJHYgIiR2IiAnJHYnIGIpCgllY2hvICIkeyNmb29bKl19fCR7Zm9vWzBdfXwke2Zvb1sxXX18JHtmb29bMl19fCR7Zm9vWzNdfXwke2Zvb1s0XX18IgpleHBlY3RlZC1zdGRvdXQ6Cgk1fGF8JHZ8YyBkfCR2fGJ8Ci0tLQpuYW1lOiBhcnJheXMtMmIKZGVzY3JpcHRpb246CglDaGVjayBpZiBiYXNoLXN0eWxlIGFycmF5cyB3b3JrIGFzIGV4cGVjdGVkLCB3aXRoIG5ld2xpbmVzCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIiR4fCI7IGRvbmUnID5wZnAKCWNobW9kICt4IHBmcAoJdGVzdCAtbiAiJFpTSF9WRVJTSU9OIiAmJiBzZXRvcHQgS1NIX0FSUkFZUwoJdj0iZSBmIgoJZm9vPShhCgkJYmMKCQlkIFwkdiAiJHYiICckdicgZwoJKQoJLi9wZnAgIiR7I2Zvb1sqXX0iICIke2Zvb1swXX0iICIke2Zvb1sxXX0iICIke2Zvb1syXX0iICIke2Zvb1szXX0iICIke2Zvb1s0XX0iICIke2Zvb1s1XX0iICIke2Zvb1s2XX0iOyBlY2hvCglmb289KGFcCgkJYmMKCQlkIFwkdiAiJHYiICckdicgZwoJKQoJLi9wZnAgIiR7I2Zvb1sqXX0iICIke2Zvb1swXX0iICIke2Zvb1sxXX0iICIke2Zvb1syXX0iICIke2Zvb1szXX0iICIke2Zvb1s0XX0iICIke2Zvb1s1XX0iICIke2Zvb1s2XX0iOyBlY2hvCglmb289KGFcCgliY1xcCgkJZCBcJHYgIiR2IiAnJHYnCglnKQoJLi9wZnAgIiR7I2Zvb1sqXX0iICIke2Zvb1swXX0iICIke2Zvb1sxXX0iICIke2Zvb1syXX0iICIke2Zvb1szXX0iICIke2Zvb1s0XX0iICIke2Zvb1s1XX0iICIke2Zvb1s2XX0iOyBlY2hvCmV4cGVjdGVkLXN0ZG91dDoKCTd8YXxiY3xkfCR2fGUgZnwkdnxnfAoJN3xhfGJjfGR8JHZ8ZSBmfCR2fGd8Cgk2fGFiY1x8ZHwkdnxlIGZ8JHZ8Z3x8Ci0tLQpuYW1lOiBhcnJheXMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFycmF5IGJvdW5kcyBhcmUgdWludDMyX3QKc3RkaW46CglzZXQgLUEgZm9vIGEgYiBjCglmb29bNDA5N109ZAoJZm9vWzIxNDc0ODM2MzddPWUKCWVjaG8gJHtmb29bKl19Cglmb29bLTFdPWYKCWVjaG8gJHtmb29bNDI5NDk2NzI5NV19IGcgJHtmb29bKl19CmV4cGVjdGVkLXN0ZG91dDoKCWEgYiBjIGQgZQoJZiBnIGEgYiBjIGQgZSBmCi0tLQpuYW1lOiBhcnJheXMtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEtvcm4gU2hlbGwgYXJyYXlzIHdpdGggc3BlY2lmaWVkIGluZGljZXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCXNldCAtQSBmb28gLS0gWzFdPVwkdiBbMl09IiR2IiBbNF09JyR2JyBbMF09YSBbNV09YgoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCR7Zm9vWzVdfXwiCmV4cGVjdGVkLXN0ZG91dDoKCTV8YXwkdnxjIGR8fCR2fGJ8Ci0tLQpuYW1lOiBhcnJheXMtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgYXJyYXlzIHdpdGggc3BlY2lmaWVkIGluZGljZXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCWZvbz0oWzFdPVwkdiBbMl09IiR2IiBbNF09JyR2JyBbMF09YSBbNV09YikKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwke2Zvb1s1XX18IgoJeD0oWzEyOF09Zm9vIGJhciBiYXopCgllY2hvIGs9ICR7IXhbKl19IC4KCWVjaG8gdj0gJHt4WypdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTV8YXwkdnxjIGR8fCR2fGJ8CglrPSAxMjggMTI5IDEzMCAuCgl2PSBmb28gYmFyIGJheiAuCi0tLQpuYW1lOiBhcnJheXMtNgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIGFycmF5IGtleXMgKGluZGljZXMpIGZvciBpbmRleGVkIGFycmF5cywKCUtvcm4gc2hlbGwgc3R5bGUKc3RkaW46CglvZigpIHsKCQlpPTAKCQlmb3IgeCBpbiAiJEAiOyBkbwoJCQllY2hvIC1uICIkKChpKyspKTwkeD4iCgkJZG9uZQoJCWVjaG8KCX0KCWZvb1sxXT1laW5zCglzZXQgfCBncmVwICdeZm9vJwoJZWNobyA9Cglmb29bMF09endlaQoJZm9vWzRdPWRyZWkKCXNldCB8IGdyZXAgJ15mb28nCgllY2hvID0KCWVjaG8gYSAkKG9mICR7Zm9vWypdfSkgPSAkKG9mICR7YmFyWypdfSkgYQoJZWNobyBiICQob2YgIiR7Zm9vWypdfSIpID0gJChvZiAiJHtiYXJbKl19IikgYgoJZWNobyBjICQob2YgJHtmb29bQF19KSA9ICQob2YgJHtiYXJbQF19KSBjCgllY2hvIGQgJChvZiAiJHtmb29bQF19IikgPSAkKG9mICIke2JhcltAXX0iKSBkCgllY2hvIGUgJChvZiAkeyFmb29bKl19KSA9ICQob2YgJHshYmFyWypdfSkgZQoJZWNobyBmICQob2YgIiR7IWZvb1sqXX0iKSA9ICQob2YgIiR7IWJhclsqXX0iKSBmCgllY2hvIGcgJChvZiAkeyFmb29bQF19KSA9ICQob2YgJHshYmFyW0BdfSkgZwoJZWNobyBoICQob2YgIiR7IWZvb1tAXX0iKSA9ICQob2YgIiR7IWJhcltAXX0iKSBoCmV4cGVjdGVkLXN0ZG91dDoKCWZvb1sxXT1laW5zCgk9Cglmb29bMF09endlaQoJZm9vWzFdPWVpbnMKCWZvb1s0XT1kcmVpCgk9CglhIDA8endlaT4xPGVpbnM+MjxkcmVpPiA9IGEKCWIgMDx6d2VpIGVpbnMgZHJlaT4gPSAwPD4gYgoJYyAwPHp3ZWk+MTxlaW5zPjI8ZHJlaT4gPSBjCglkIDA8endlaT4xPGVpbnM+MjxkcmVpPiA9IGQKCWUgMDwwPjE8MT4yPDQ+ID0gZQoJZiAwPDAgMSA0PiA9IDA8PiBmCglnIDA8MD4xPDE+Mjw0PiA9IGcKCWggMDwwPjE8MT4yPDQ+ID0gaAotLS0KbmFtZTogYXJyYXlzLTcKZGVzY3JpcHRpb246CglDaGVjayBpZiB3ZSBjYW4gZ2V0IHRoZSBhcnJheSBrZXlzIChpbmRpY2VzKSBmb3IgaW5kZXhlZCBhcnJheXMsCglLb3JuIHNoZWxsIHN0eWxlLCBpbiBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCWVjaG8gIWFyejogJHshYXJ6fQoJZWNobyAhYXJ6WzBdOiAkeyFhcnpbMF19CgllY2hvICFhcnpbMV06ICR7IWFyelsxXX0KCWFyej1mb28KCWVjaG8gIWFyejogJHshYXJ6fQoJZWNobyAhYXJ6WzBdOiAkeyFhcnpbMF19CgllY2hvICFhcnpbMV06ICR7IWFyelsxXX0KCXVuc2V0IGFyegoJZWNobyAhYXJ6OiAkeyFhcnp9CgllY2hvICFhcnpbMF06ICR7IWFyelswXX0KCWVjaG8gIWFyelsxXTogJHshYXJ6WzFdfQpleHBlY3RlZC1zdGRvdXQ6CgkhYXJ6OiAwCgkhYXJ6WzBdOgoJIWFyelsxXToKCSFhcno6IGFyegoJIWFyelswXTogMAoJIWFyelsxXToKCSFhcno6IDAKCSFhcnpbMF06CgkhYXJ6WzFdOgotLS0KbmFtZTogYXJyYXlzLTgKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGJlaGF2aW91cmFsIHJ1bGVzIGZvciBhcnJheXMuCnN0ZGluOgoJZm5hKCkgewoJCXNldCAtQSBhYSA5Cgl9CglmbmIoKSB7CgkJdHlwZXNldCBhYgoJCXNldCAtQSBhYiA5Cgl9CglmbmMoKSB7CgkJdHlwZXNldCBhYwoJCXNldCAtQSBhYyA5MQoJCXVuc2V0IGFjCgkJc2V0IC1BIGFjIDkyCgl9CglmbmQoKSB7CgkJc2V0ICtBIGFkIDkKCX0KCWZuZSgpIHsKCQl1bnNldCBhZQoJCXNldCArQSBhZSA5Cgl9CglmbmYoKSB7CgkJdW5zZXQgYWZbMF0KCQlzZXQgK0EgYWYgOQoJfQoJZm5nKCkgewoJCXVuc2V0IGFnWypdCgkJc2V0ICtBIGFnIDkKCX0KCXNldCAtQSBhYSAxIDIKCXNldCAtQSBhYiAxIDIKCXNldCAtQSBhYyAxIDIKCXNldCAtQSBhZCAxIDIKCXNldCAtQSBhZSAxIDIKCXNldCAtQSBhZiAxIDIKCXNldCAtQSBhZyAxIDIKCXNldCAtQSBhaCAxIDIKCXR5cGVzZXQgLVozIGFhIGFiIGFjIGFkIGFlIGFmIGFnCglwcmludCAxYSAke2FhWypdfSAuCglwcmludCAxYiAke2FiWypdfSAuCglwcmludCAxYyAke2FjWypdfSAuCglwcmludCAxZCAke2FkWypdfSAuCglwcmludCAxZSAke2FlWypdfSAuCglwcmludCAxZiAke2FmWypdfSAuCglwcmludCAxZyAke2FnWypdfSAuCglwcmludCAxaCAke2FoWypdfSAuCglmbmEKCWZuYgoJZm5jCglmbmQKCWZuZQoJZm5mCglmbmcKCXR5cGVzZXQgLVo1IGFoWypdCglwcmludCAyYSAke2FhWypdfSAuCglwcmludCAyYiAke2FiWypdfSAuCglwcmludCAyYyAke2FjWypdfSAuCglwcmludCAyZCAke2FkWypdfSAuCglwcmludCAyZSAke2FlWypdfSAuCglwcmludCAyZiAke2FmWypdfSAuCglwcmludCAyZyAke2FnWypdfSAuCglwcmludCAyaCAke2FoWypdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTFhIDAwMSAwMDIgLgoJMWIgMDAxIDAwMiAuCgkxYyAwMDEgMDAyIC4KCTFkIDAwMSAwMDIgLgoJMWUgMDAxIDAwMiAuCgkxZiAwMDEgMDAyIC4KCTFnIDAwMSAwMDIgLgoJMWggMSAyIC4KCTJhIDkgLgoJMmIgMDAxIDAwMiAuCgkyYyA5MiAuCgkyZCAwMDkgMDAyIC4KCTJlIDkgLgoJMmYgOSAwMDIgLgoJMmcgMDA5IC4KCTJoIDAwMDAxIDAwMDAyIC4KLS0tCm5hbWU6IGFycmF5cy05YQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGNvbmNhdGVuYXRlIGFycmF5cwpzdGRpbjoKCXVuc2V0IGZvbzsgZm9vPShiYXIpOyBmb28rPShiYXopOyBlY2hvIDEgJHshZm9vWypdfSA6ICR7Zm9vWypdfSAuCgl1bnNldCBmb287IGZvbz0oZm9vIGJhcik7IGZvbys9KGJheik7IGVjaG8gMiAkeyFmb29bKl19IDogJHtmb29bKl19IC4KCXVuc2V0IGZvbzsgZm9vPShbMl09Zm9vIFswXT1iYXIpOyBmb28rPShiYXogWzVdPXF1dXgpOyBlY2hvIDMgJHshZm9vWypdfSA6ICR7Zm9vWypdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMCAxIDogYmFyIGJheiAuCgkyIDAgMSAyIDogZm9vIGJhciBiYXogLgoJMyAwIDIgMyA1IDogYmFyIGZvbyBiYXogcXV1eCAuCi0tLQpuYW1lOiBhcnJheXMtOWIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBjb25jYXRlbmF0ZSBwYXJhbWV0ZXJzIHRvbwpzdGRpbjoKCXVuc2V0IGZvbzsgZm9vPWJhcjsgZm9vKz1iYXo7IGVjaG8gMSAkZm9vIC4KCXVuc2V0IGZvbzsgdHlwZXNldCAtaTE2IGZvbz0xMDsgZm9vKz0yMDsgZWNobyAyICRmb28gLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGJhcmJheiAuCgkyIDE2I2EyMCAuCi0tLQpuYW1lOiBhcnJhc3NpZ24tYmFzaWMKZGVzY3JpcHRpb246CglDaGVjayBiYXNpYyB3aGl0ZXNwYWNlIGNvbnNlcnZpbmcgcHJvcGVydGllcyBvZiB3ZGFycmFzc2lnbgpzdGRpbjoKCWE9KCQoZWNobyBhICBiKSkKCWI9KCQoZWNobyAiYSAgYiIpKQoJYz0oIiQoZWNobyAiYSAgYiIpIikKCWQ9KCIkKGVjaG8gYSAgYikiKQoJYSs9KCQoZWNobyBjICBkKSkKCWIrPSgkKGVjaG8gImMgIGQiKSkKCWMrPSgiJChlY2hvICJjICBkIikiKQoJZCs9KCIkKGVjaG8gYyAgZCkiKQoJZWNobyAiLmE6JHthWzBdfS4ke2FbMV19LiR7YVsyXX0uJHthWzNdfToiCgllY2hvICIuYjoke2JbMF19LiR7YlsxXX0uJHtiWzJdfS4ke2JbM119OiIKCWVjaG8gIi5jOiR7Y1swXX0uJHtjWzFdfS4ke2NbMl19LiR7Y1szXX06IgoJZWNobyAiLmQ6JHtkWzBdfS4ke2RbMV19LiR7ZFsyXX0uJHtkWzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5hOmEuYi5jLmQ6CgkuYjphLmIuYy5kOgoJLmM6YSAgYi5jICBkLi46CgkuZDphIGIuYyBkLi46Ci0tLQpuYW1lOiBhcnJhc3NpZ24tZm5jLW5vbmUKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBhcnJheSBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24Kc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJeCs9KGYpCgkJZWNobyAiLmZuOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQlpZiBbWyAtbiAkQkFTSF9WRVJTSU9OIF1dOyB0aGVuCgkJCXk9KCkKCQllbHNlCgkJCXNldCAtQSB5CgkJZmkKCQl5Kz0oZikKCQllY2hvICIucmZuOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bS5tLi46CgkuZm46bS5tLmYuOgoJLmYxOm0ubS5mLjoKCS5mbjptLm0uZi5mOgoJLmYyOm0ubS5mLmY6CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTpmLi4uOgoJLnJmbjpmLi4uOgoJLnJmMjpmLi4uOgotLS0KbmFtZTogYXJyYXNzaWduLWZuYy1sb2NhbApkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIGFycmF5IGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaC9ta3NoL2tzaDkzIGxvY2FsL3R5cGVzZXQga2V5d29yZAoJKG5vdGU6IGtzaDkzIGhhcyBubyBsb2NhbDsgdHlwZXNldCB3b3JrcyBvbmx5IGluIEZLU0gpCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgeAoJCXgrPShmKQoJCWVjaG8gIi5mbjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl5PSgpCgkJZWxzZQoJCQlzZXQgLUEgeQoJCWZpCgkJdHlwZXNldCB5CgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCB6CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl6PSgpCgkJZWxzZQoJCQlzZXQgLUEgegoJCWZpCgkJeis9KGYpCgkJZWNobyAiLmZucjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCX0KCXg9KG0gbSkKCXk9KG0gbSkKCXo9KG0gbSkKCWVjaG8gIi5mMDoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjE6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYyOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZWNobyAiLnJmMDoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMToke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCWVjaG8gIi5mMHI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCglmbnIKCWVjaG8gIi5mMXI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCglmbnIKCWVjaG8gIi5mMnI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptLm0uLjoKCS5mbjpmLi4uOgoJLmYxOm0ubS4uOgoJLmZuOmYuLi46CgkuZjI6bS5tLi46CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTouLi46CgkucmZuOmYuLi46CgkucmYyOi4uLjoKCS5mMHI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjFyOm0ubS4uOgoJLmZucjpmLi4uOgoJLmYycjptLm0uLjoKLS0tCm5hbWU6IGFycmFzc2lnbi1mbmMtZ2xvYmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2YgYXJyYXkgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBta3NoLXNwZWNpZmljIGdsb2JhbCBrZXl3b3JkCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCWdsb2JhbCB4CgkJeCs9KGYpCgkJZWNobyAiLmZuOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQlzZXQgLUEgeQoJCWdsb2JhbCB5CgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJZ2xvYmFsIHoKCQlzZXQgLUEgegoJCXorPShmKQoJCWVjaG8gIi5mbnI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCgl9Cgl4PShtIG0pCgl5PShtIG0pCgl6PShtIG0pCgllY2hvICIuZjA6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYxOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWVjaG8gIi5yZjA6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjE6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCglyZm4KCWVjaG8gIi5yZjI6JHt5WzBdfS4ke3lbMV19LiR7eVsyXX0uJHt5WzNdfToiCgllY2hvICIuZjByOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJZm5yCgllY2hvICIuZjFyOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJZm5yCgllY2hvICIuZjJyOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bS5tLi46CgkuZm46bS5tLmYuOgoJLmYxOm0ubS5mLjoKCS5mbjptLm0uZi5mOgoJLmYyOm0ubS5mLmY6CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTpmLi4uOgoJLnJmbjpmLi4uOgoJLnJmMjpmLi4uOgoJLmYwcjptLm0uLjoKCS5mbnI6Zi4uLjoKCS5mMXI6Zi4uLjoKCS5mbnI6Zi4uLjoKCS5mMnI6Zi4uLjoKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtbm9uZQpkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIHN0cmluZyBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24Kc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJeD1tCgl5PW0KCWVjaG8gIi5mMDokeDoiCglmbgoJZWNobyAiLmYxOiR4OiIKCWZuCgllY2hvICIuZjI6JHg6IgoJZWNobyAiLnJmMDokeToiCglyZm4KCWVjaG8gIi5yZjE6JHk6IgoJcmZuCgllY2hvICIucmYyOiR5OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm06CgkuZm46bWY6CgkuZjE6bWY6CgkuZm46bWZmOgoJLmYyOm1mZjoKCS5yZjA6bToKCS5yZm46ZjoKCS5yZjE6ZjoKCS5yZm46ZjoKCS5yZjI6ZjoKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtbG9jYWwKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBiYXNoL21rc2gva3NoOTMgbG9jYWwvdHlwZXNldCBrZXl3b3JkCgkobm90ZToga3NoOTMgaGFzIG5vIGxvY2FsOyB0eXBlc2V0IHdvcmtzIG9ubHkgaW4gRktTSCkKc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJdHlwZXNldCB4CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJdHlwZXNldCB5CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQl0eXBlc2V0IHoKCQl6PQoJCXorPWYKCQllY2hvICIuZm5yOiR6OiIKCX0KCXg9bQoJeT1tCgl6PW0KCWVjaG8gIi5mMDokeDoiCglmbgoJZWNobyAiLmYxOiR4OiIKCWZuCgllY2hvICIuZjI6JHg6IgoJZWNobyAiLnJmMDokeToiCglyZm4KCWVjaG8gIi5yZjE6JHk6IgoJcmZuCgllY2hvICIucmYyOiR5OiIKCWVjaG8gIi5mMHI6JHo6IgoJZm5yCgllY2hvICIuZjFyOiR6OiIKCWZucgoJZWNobyAiLmYycjokejoiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOmY6CgkuZjE6bToKCS5mbjpmOgoJLmYyOm06CgkucmYwOm06CgkucmZuOmY6CgkucmYxOjoKCS5yZm46ZjoKCS5yZjI6OgoJLmYwcjptOgoJLmZucjpmOgoJLmYxcjptOgoJLmZucjpmOgoJLmYycjptOgotLS0KbmFtZTogc3RyYXNzaWduLWZuYy1nbG9iYWwKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBta3NoLXNwZWNpZmljIGdsb2JhbCBrZXl3b3JkCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCWdsb2JhbCB4CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJZ2xvYmFsIHkKCQl5Kz1mCgkJZWNobyAiLnJmbjokeToiCgl9CglmdW5jdGlvbiBmbnIgewoJCWdsb2JhbCB6CgkJej0KCQl6Kz1mCgkJZWNobyAiLmZucjokejoiCgl9Cgl4PW0KCXk9bQoJej1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCgllY2hvICIuZjByOiR6OiIKCWZucgoJZWNobyAiLmYxcjokejoiCglmbnIKCWVjaG8gIi5mMnI6JHo6IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bToKCS5mbjptZjoKCS5mMTptZjoKCS5mbjptZmY6CgkuZjI6bWZmOgoJLnJmMDptOgoJLnJmbjpmOgoJLnJmMTpmOgoJLnJmbjpmOgoJLnJmMjpmOgoJLmYwcjptOgoJLmZucjpmOgoJLmYxcjpmOgoJLmZucjpmOgoJLmYycjpmOgotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBzdWJzdHJpbmcgZXhwYW5zaW9uIHdvcmtzCgl3aGVuIHVzaW5nIHBvc2l0aXZlIG51bWVyaWNzCnN0ZGluOgoJeD1hYmNkZWZnaGkKCXR5cGVzZXQgLWkgeT0xMjM0NTY3ODkKCXR5cGVzZXQgLWkgMTYgej0xMjM0NTY3ODkJIyAxNiM3NWJjZDE1CgllY2hvIGEgdCR7eDoyOjJ9ICR7eToyOjN9ICR7ejoyOjN9IGEKCWVjaG8gYiAke3g6OjN9ICR7eTo6M30gJHt6OjozfSBiCgllY2hvIGMgJHt4OjI6fSAke3k6Mjp9ICR7ejoyOn0gYwoJZWNobyBkICR7eDoyfSAke3k6Mn0gJHt6OjJ9IGQKCWVjaG8gZSAke3g6Mjo2fSAke3k6Mjo2fSAke3o6Mjo3fSBlCgllY2hvIGYgJHt4OjI6N30gJHt5OjI6N30gJHt6OjI6OH0gZgoJZWNobyBnICR7eDoyOjh9ICR7eToyOjh9ICR7ejoyOjl9IGcKZXhwZWN0ZWQtc3Rkb3V0OgoJYSB0Y2QgMzQ1ICM3NSBhCgliIGFiYyAxMjMgMTYjIGIKCWMgYwoJZCBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZAoJZSBjZGVmZ2ggMzQ1Njc4ICM3NWJjZDEgZQoJZiBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZgoJZyBjZGVmZ2hpIDM0NTY3ODkgIzc1YmNkMTUgZwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBzdWJzdHJpbmcgZXhwYW5zaW9uIHdvcmtzCgl3aGVuIHVzaW5nIG5lZ2F0aXZlIG51bWVyaWNzIG9yIGV4cHJlc3Npb25zCnN0ZGluOgoJeD1hYmNkZWZnaGkKCXR5cGVzZXQgLWkgeT0xMjM0NTY3ODkKCXR5cGVzZXQgLWkgMTYgej0xMjM0NTY3ODkJIyAxNiM3NWJjZDE1CgluPTIKCWVjaG8gYSAke3g6JG46M30gJHt5OiRuOjN9ICR7ejokbjozfSBhCgllY2hvIGIgJHt4OihuKTozfSAke3k6KG4pOjN9ICR7ejoobik6M30gYgoJZWNobyBjICR7eDooLTIpOjF9ICR7eTooLTIpOjF9ICR7ejooLTIpOjF9IGMKCWVjaG8gZCB0JHt4OiBuOjJ9ICR7eTogbjozfSAke3o6IG46M30gZApleHBlY3RlZC1zdGRvdXQ6CglhIGNkZSAzNDUgIzc1IGEKCWIgY2RlIDM0NSAjNzUgYgoJYyBoIDggMSBjCglkIHRjZCAzNDUgIzc1IGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc29tZSB0aGluZ3MgdGhhdCB3b3JrIGluIGJhc2ggZmFpbC4KCVRoaXMgaXMgYnkgZGVzaWduLiBBbmQgdGhhdCBzb21lIHRoaW5ncyBmYWlsIGluIGJvdGguCnN0ZGluOgoJZXhwb3J0IHg9YWJjZGVmZ2hpIG49MgoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB2JHt4OihuKX14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB3JHt4OiBufXgnCgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIHgke3g6bn14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB5JHt4On14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB6JHt4fXgnCgkiJF9fcHJvZ25hbWUiIC1jICd4PWFiY2RlZjt5PTEyMztlY2hvICR7eDoke3k6MjoxfToyfScgPi9kZXYvbnVsbCAyPiYxOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCXZjZGVmZ2hpeAoJd2NkZWZnaGl4Cgl6YWJjZGVmZ2hpeAoJMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS94Om4uKmJhZCBzdWJzdGl0dXRpb24uKlxuLipiYWQgc3Vic3RpdHV0aW9uLwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIGZvciBzdWJzdHJpbmcgZXhwYW5zaW9uCnN0ZGluOgoJeD1hYmNkZWZnaGkKCWludGVnZXIgeT0yCgllY2hvIGEgJHt4Oih5ID09IDEgPyAyIDogMyk6NH0gYQpleHBlY3RlZC1zdGRvdXQ6CglhIGRlZmcgYQotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci01QQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3Vic3RyaW5nIGV4cGFuc2lvbnMgd29yayBvbiBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCgl4PW3DpGgKCWVjaG8gYSAke3g6OjF9ICR7eDogLTF9IGEKCWVjaG8gYiAke3g6OjN9ICR7eDogLTN9IGIKCWVjaG8gYyAke3g6MToyfSAke3g6IC0zOjJ9IGMKCWVjaG8gZCAkeyN4fSBkCmV4cGVjdGVkLXN0ZG91dDoKCWEgbSBoIGEKCWIgbcOkIMOkaCBiCgljIMOkIMOkIGMKCWQgNCBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTVXCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzdWJzdHJpbmcgZXhwYW5zaW9ucyB3b3JrIG9uIGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCXg9bcOkaAoJZWNobyBhICR7eDo6MX0gJHt4OiAtMX0gYQoJZWNobyBiICR7eDo6Mn0gJHt4OiAtMn0gYgoJZWNobyBjICR7eDoxOjF9ICR7eDogLTI6MX0gYwoJZWNobyBkICR7I3h9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBtIGggYQoJYiBtw6Qgw6RoIGIKCWMgw6Qgw6QgYwoJZCAzIGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3RyaW5nIHN1YnN0aXR1dGlvbiB3b3JrcyBjb3JyZWN0bHkKc3RkaW46Cglmb289MQoJYmFyPTIKCWJhej1xd2VydHl1aW9wCgllY2hvIGEgJHtiYXo6IGZvbzogYmFyfQoJZWNobyBiICR7YmF6OiBmb286ICRiYXJ9CgllY2hvIGMgJHtiYXo6ICRmb286IGJhcn0KCWVjaG8gZCAke2JhejogJGZvbzogJGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJYSB3ZQoJYiB3ZQoJYyB3ZQoJZCB3ZQotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaApkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAeH0gZXhwYW5zaW9uIGZvciB4PWhhc2gKc3RkaW46Cgl0eXBlc2V0IC1pOCBmb289MTAKCWJhcj1iYXoKCXVuc2V0IGJhegoJYmxhPWZvbwoJcHJpbnQgJHtmb29AI30gJHtiYXJAI30gJHtiYXpAI30gLgoJcHJpbnQgJHtmb29AIzEyM30gJHtiYXJAIzQ1Nn0gJHtiYXpAIzc4OX0gLgoJcHJpbnQgJHtmb29AI2JsYX0gJHtiYXJAI2Jhcn0gJHtiYXpAI09QVElORH0gLgpleHBlY3RlZC1zdGRvdXQ6CglENTAyMTlBMCAyMEU1REI1QiAwMDAwMDAwMCAuCgk1NTRBMUM3NiAwMDRBMjEyRSBDQjIwOTU2MiAuCgk2QjIxQ0Y5MSAyMEU1REI1QiAxMjRFQTQ5RCAuCi0tLQpuYW1lOiB2YXJleHBhbmQtc3BlY2lhbC1xdW90ZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAUX0gZXhwYW5zaW9uIGZvciBxdW90ZWQgc3RyaW5ncwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmRcMjQwZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZFwyNDBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1udWxsLTEKZGVzY3JpcHRpb246CglFbnN1cmUgZW1wdHkgc3RyaW5ncyBleHBhbmQgZW1wdGlseQpzdGRpbjoKCXByaW50IHggJHthfSAke2J9IHkKCXByaW50IHogJHthIz99ICR7YiU/fSB3CglwcmludCB2ICR7YT19ICR7Yi9jL2R9IHUKZXhwZWN0ZWQtc3Rkb3V0OgoJeCB5Cgl6IHcKCXYgdQotLS0KbmFtZTogdmFyZXhwYW5kLW51bGwtMgpkZXNjcmlwdGlvbjoKCUVuc3VyZSBlbXB0eSBzdHJpbmdzLCB3aGVuIHF1b3RlZCwgYXJlIGV4cGFuZGVkIGFzIGVtcHR5IHN0cmluZ3MKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiPCR4PiAiOyBkb25lJyA+cGZzCgljaG1vZCAreCBwZnMKCS4vcGZzIDEgIiR7YX0iIDIgIiR7YSM/fSIgKyAiJHtiJT99IiAzICIke2E9fSIgKyAiJHtiL2MvZH0iCgllY2hvIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDw+IDwyPiA8PiA8Kz4gPD4gPDM+IDw+IDwrPiA8PiAuCi0tLQpuYW1lOiBwcmludC1mdW5ueS1jaGFycwpkZXNjcmlwdGlvbjoKCUNoZWNrIHByaW50IGJ1aWx0aW4ncyBjYXBhYmlsaXR5IHRvIG91dHB1dCBkZXNpZ25hdGVkIGNoYXJhY3RlcnMKc3RkaW46CglwcmludCAnPFwwMTQ0XDAzNDRceERCXHUwMERCXHUyMEFDXHVEQlx4NDA+JwpleHBlY3RlZC1zdGRvdXQ6Cgk8ZOTbw5vigqzDm0A+Ci0tLQpuYW1lOiBwcmludC1ia3NsLWMKZGVzY3JpcHRpb246CglDaGVjayBwcmludCBidWlsdGluJ3MgXGMgZXNjYXBlCnN0ZGluOgoJcHJpbnQgJ1xjYSc7IHByaW50IGIKZXhwZWN0ZWQtc3Rkb3V0OgoJYWIKLS0tCm5hbWU6IHByaW50LW51bC1jaGFycwpkZXNjcmlwdGlvbjoKCUNoZWNrIGhhbmRsaW5nIG9mIE5VTCBjaGFyYWN0ZXJzIGZvciBwcmludCBhbmQgQ09NU1VCCnN0ZGluOgoJeD0kKHByaW50ICc8XDA+JykKCXByaW50ICQoKCQocHJpbnQgJzxcMD4nIHwgd2MgLWMpKSkgJCgoJChwcmludCAiJHgiIHwgd2MgLWMpKSkgXAoJICAgICR7I3h9ICIkeCIgJzxcMD4nCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL140IDMgMiA8PiA8XDA+JC8KLS0tCm5hbWU6IHByaW50LWVzY2FwZXMKZGVzY3JpcHRpb246CglDaGVjayBiYWNrc2xhc2ggZXhwYW5zaW9uIGJ5IHRoZSBwcmludCBidWlsdGluCnN0ZGluOgoJcHJpbnQgJ1wgXCFcIlwjXCRcJVwmJ1xcXCcnXChcKVwqXCtcLFwtXC5cL1wwXDFcMlwzXDRcNVw2XDdcOCcgXAoJICAgICdcOVw6XDtcPFw9XD5cP1xAXEFcQlxDXERcRVxGXEdcSFxJXEpcS1xMXE1cTlxPXFBcUVxSXFNcVCcgXAoJICAgICdcVVxWXFdcWFxZXFpcW1xcXF1cXlxfXGBcYVxiICBcZFxlXGZcZ1xoXGlcalxrXGxcbVxuXG9ccCcgXAoJICAgICdccVxyXHNcdFx1XHZcd1x4XHlcelx7XHxcfVx+JyAnXHUyMGFjZCcgJ1xVMjBhY2QnICdceDEyMycgXAoJICAgICdcMHgnICdcMDEyMycgJ1wwMTIzNCcgfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNBcwoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjUgaHY9MjE0NzQ4MzY0NwoJCXR5cGVzZXQgLWkxIHdjPTB4MEEKCQlkYXNjPQoJCW5sPSR7d2MjMSN9CgkJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJCWxpbmU9JGxpbmUkbmwKCQkJd2hpbGUgW1sgLW4gJGxpbmUgXV07IGRvCgkJCQlodj0xIyR7bGluZTo6MX0KCQkJCWlmICgoIChwb3MgJiAxNSkgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJcHJpbnQgLW4gIiR7aHYjMTYjfSAiCgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgKGh2ID4gMTI2KSApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MuCgkJCQllbHNlCgkJCQkJZGFzYz0kZGFzYyR7bGluZTo6MX0KCQkJCWZpCgkJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJCQlsaW5lPSR7bGluZToxfQoJCQlkb25lCgkJZG9uZQoJCXdoaWxlICgoIHBvcyAmIDE1ICkpOyBkbwoJCQlwcmludCAtbiAnICAgJwoJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDVDIDIwIDVDIDIxIDVDIDIyIDVDIDIzIC0gNUMgMjQgNUMgMjUgNUMgMjYgNUMgMjcgIHxcIFwhXCJcI1wkXCVcJlwnfAoJMDAwMDAwMTAgIDVDIDI4IDVDIDI5IDVDIDJBIDVDIDJCIC0gNUMgMkMgNUMgMkQgNUMgMkUgNUMgMkYgIHxcKFwpXCpcK1wsXC1cLlwvfAoJMDAwMDAwMjAgIDVDIDMxIDVDIDMyIDVDIDMzIDVDIDM0IC0gNUMgMzUgNUMgMzYgNUMgMzcgNUMgMzggIHxcMVwyXDNcNFw1XDZcN1w4fAoJMDAwMDAwMzAgIDIwIDVDIDM5IDVDIDNBIDVDIDNCIDVDIC0gM0MgNUMgM0QgNUMgM0UgNUMgM0YgNUMgIHwgXDlcOlw7XDxcPVw+XD9cfAoJMDAwMDAwNDAgIDQwIDVDIDQxIDVDIDQyIDVDIDQzIDVDIC0gNDQgMUIgNUMgNDYgNUMgNDcgNUMgNDggIHxAXEFcQlxDXEQuXEZcR1xIfAoJMDAwMDAwNTAgIDVDIDQ5IDVDIDRBIDVDIDRCIDVDIDRDIC0gNUMgNEQgNUMgNEUgNUMgNEYgNUMgNTAgIHxcSVxKXEtcTFxNXE5cT1xQfAoJMDAwMDAwNjAgIDVDIDUxIDVDIDUyIDVDIDUzIDVDIDU0IC0gMjAgNUMgNTYgNUMgNTcgNUMgNTggNUMgIHxcUVxSXFNcVCBcVlxXXFhcfAoJMDAwMDAwNzAgIDU5IDVDIDVBIDVDIDVCIDVDIDVDIDVEIC0gNUMgNUUgNUMgNUYgNUMgNjAgMDcgMDggIHxZXFpcW1xdXF5cX1xgLi58CgkwMDAwMDA4MCAgMjAgMjAgNUMgNjQgMUIgMEMgNUMgNjcgLSA1QyA2OCA1QyA2OSA1QyA2QSA1QyA2QiAgfCAgXGQuLlxnXGhcaVxqXGt8CgkwMDAwMDA5MCAgNUMgNkMgNUMgNkQgMEEgNUMgNkYgNUMgLSA3MCAyMCA1QyA3MSAwRCA1QyA3MyAwOSAgfFxsXG0uXG9ccCBccS5ccy58CgkwMDAwMDBBMCAgMEIgNUMgNzcgNUMgNzkgNUMgN0EgNUMgLSA3QiA1QyA3QyA1QyA3RCA1QyA3RSAyMCAgfC5cd1x5XHpce1x8XH1cfiB8CgkwMDAwMDBCMCAgRTIgODIgQUMgNjQgMjAgRUYgQkYgQkQgLSAyMCAxMiAzMyAyMCA3OCAyMCA1MyAyMCAgfC4uLmQgLi4uIC4zIHggUyB8CgkwMDAwMDBDMCAgNTMgMzQgMEEgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgfFM0LnwKLS0tCm5hbWU6IGRvbGxhci1kb3VibGVxdW90ZWQtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSAkIHByZWNlZGluZyAi4oCmIiBpcyBpZ25vcmVkCnN0ZGluOgoJZWNobyAkIkxvY2FsaXNlIG1lISIKCWNhdCA8PDwkIk1lIHRvbyEiCglWPVgKCWFvbD1hb2wKCWNhdCA8PC0kImFvbCIKCQlJIGRvIG5vdCB0YWtlIGEgJFYgZm9yIGEgViEKCWFvbApleHBlY3RlZC1zdGRvdXQ6CglMb2NhbGlzZSBtZSEKCU1lIHRvbyEKCUkgZG8gbm90IHRha2UgYSAkViBmb3IgYSBWIQotLS0KbmFtZTogZG9sbGFyLXF1b3RlZC1zdHJpbmdzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFja3NsYXNoIGV4cGFuc2lvbiBieSAkJ+KApicgc3RyaW5ncwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJY2htb2QgK3ggcGZuCgkuL3BmbiAkJ1wgXCFcIlwjXCRcJVwmXCdcKFwpXCpcK1wsXC1cLlwvIFwxXDJcM1w0XDVcNicgXAoJICAgICQnYVwwYicgJCdhXDAxYicgJCdcN1w4XDlcOlw7XDxcPVw+XD9cQFxBXEJcQ1xEXEVcRlxHXEhcSScgXAoJICAgICQnXEpcS1xMXE1cTlxPXFBcUVxSXFNcVFxVMVxWXFdcWFxZXFpcW1xcXF1cXlxfXGBcYVxiXGRcZScgXAoJICAgICQnXGZcZ1xoXGlcalxrXGxcbVxuXG9ccFxxXHJcc1x0XHUxXHZcd1x4MVx5XHpce1x8XH1cfiAkeCcgXAoJICAgICQnXHUyMGFjZCcgJCdcVTIwYWNkJyAkJ1x4MTIzJyAkJ2ZuXHgwcmQnICQnXDAyMzQnICQnXDIzNCcgXAoJICAgICQnXDIzNDUnICQnXGNhJyAkJ1xjIScgJCdcYz8nICQnXGPigqwnICQnYVwKCWInIHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXMKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQl0eXBlc2V0IC1pMSB3Yz0weDBBCgkJZGFzYz0KCQlubD0ke3djIzEjfQoJCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCQlsaW5lPSRsaW5lJG5sCgkJCXdoaWxlIFtbIC1uICRsaW5lIF1dOyBkbwoJCQkJaHY9MSMke2xpbmU6OjF9CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmU6OjF9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQkJbGluZT0ke2xpbmU6MX0KCQkJZG9uZQoJCWRvbmUKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50ICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICAyMCAyMSAyMiAyMyAyNCAyNSAyNiAyNyAtIDI4IDI5IDJBIDJCIDJDIDJEIDJFIDJGICB8ICEiIyQlJicoKSorLC0uL3wKCTAwMDAwMDEwICAyMCAwMSAwMiAwMyAwNCAwNSAwNiAwQSAtIDYxIDBBIDYxIDAxIDYyIDBBIDA3IDM4ICB8IC4uLi4uLi5hLmEuYi4uOHwKCTAwMDAwMDIwICAzOSAzQSAzQiAzQyAzRCAzRSAzRiA0MCAtIDQxIDQyIDQzIDQ0IDFCIDQ2IDQ3IDQ4ICB8OTo7PD0+P0BBQkNELkZHSHwKCTAwMDAwMDMwICA0OSAwQSA0QSA0QiA0QyA0RCA0RSA0RiAtIDUwIDUxIDUyIDUzIDU0IDAxIDU2IDU3ICB8SS5KS0xNTk9QUVJTVC5WV3wKCTAwMDAwMDQwICA1OCA1OSA1QSA1QiA1QyA1RCA1RSA1RiAtIDYwIDA3IDA4IDY0IDFCIDBBIDBDIDY3ICB8WFlaW1xdXl9gLi5kLi4uZ3wKCTAwMDAwMDUwICA2OCA2OSA2QSA2QiA2QyA2RCAwQSA2RiAtIDcwIDcxIDBEIDczIDA5IDAxIDBCIDc3ICB8aGlqa2xtLm9wcS5zLi4ud3wKCTAwMDAwMDYwICAwMSA3OSA3QSA3QiA3QyA3RCA3RSAyMCAtIDI0IDc4IDBBIEUyIDgyIEFDIDY0IDBBICB8Lnl6e3x9fiAkeC4uLi5kLnwKCTAwMDAwMDcwICBFRiBCRiBCRCAwQSBDNCBBMyAwQSA2NiAtIDZFIDBBIDEzIDM0IDBBIDlDIDBBIDlDICB8Li4uLi4uLmZuLi40Li4uLnwKCTAwMDAwMDgwICAzNSAwQSAwMSAwQSAwMSAwQSA3RiAwQSAtIDAyIDgyIEFDIDBBIDYxIDBBIDYyIDBBICB8NS4uLi4uLi4uLi4uYS5iLnwKLS0tCm5hbWU6IGRvbGxhci1xdW90ZXMtaW4taGVyZWRvY3Mtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCVRoZXkgYXJlLCBob3dldmVyLCBub3QgcGFyc2VkIGluIGhlcmUgZG9jdW1lbnRzLCBoZXJlIHN0cmluZ3MKCShvdXRzaWRlIG9mIHN0cmluZyBkZWxpbWl0ZXJzKSBvciByZWd1bGFyIHN0cmluZ3MsIGJ1dCBpbgoJcGFyYW1ldGVyIHN1YnN0aXR1dGlvbnMuCnN0ZGluOgoJY2F0IDw8RU9GCgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglFT0YKCWNhdCA8PCQnYVx0YicKCWFcdGIKCWEJYgoJY2F0IDw8PCJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwnZG9sbGFyID0gc3RyY2hyKHMsICdcJyckJ1wnJyk7CS8qICdcJycgKi8nCgl4PSJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwiJHgiCgljYXQgPDw8JCdhXEVbMG1cdGInCgl1bnNldCBubDsgcHJpbnQgLXIgLS0gIngke25sOj0kJ1xuJ315IgoJZWNobyAiMSBmb29cImJhciIKCSMgY2YgJiBIRVJFRE9DCgljYXQgPDxFT0YKCTIgZm9vXCJiYXIKCUVPRgoJIyBwcm9iYWJseSBuZXZlciByZWFjaGVkIGZvciBoZXJlIHN0cmluZ3M/CgljYXQgPDw8IjMgZm9vXCJiYXIiCgljYXQgPDw8IjQgZm9vXFxcImJhciIKCWNhdCA8PDwnNSBmb29cImJhcicKCSMgb2xkIHNjcmlwdHMgdXNlIHRoaXMgKGUuZy4gbmN1cnNlcykKCWVjaG8gIl4kIgoJIyBtYWtlIHN1cmUgdGhpcyB3b3Jrcywgb3V0c2lkZSBvZiBxdW90ZXMKCWNhdCA8PDwnNyckJ1x0JycuJwpleHBlY3RlZC1zdGRvdXQ6CgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglhXHRiCglkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLwoJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCWRvbGxhciA9IHN0cmNocihzLCAnJCcpOwkvKiAnICovCglhG1swbQliCgl4Cgl5CgkxIGZvbyJiYXIKCTIgZm9vXCJiYXIKCTMgZm9vImJhcgoJNCBmb29cImJhcgoJNSBmb29cImJhcgoJXiQKCTcJLgotLS0KbmFtZTogZG90LW5lZWRzLWFyZ3VtZW50CmRlc2NyaXB0aW9uOgoJY2hlY2sgRGViaWFuICM0MTUxNjcgc29sdXRpb246ICcuJyB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgZmFpbApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgLgoJIiRfX3Byb2duYW1lIiAtYyBzb3VyY2UKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL1wuOiBtaXNzaW5nIGFyZ3VtZW50Lipcbi4qXC46IG1pc3NpbmcgYXJndW1lbnQvCi0tLQpuYW1lOiBhbGlhcy1mdW5jdGlvbi1uby1jb25mbGljdApkZXNjcmlwdGlvbjoKCW1ha2UgYWxpYXNlcyBub3QgY29uZmxpY3Qgd2l0aCBmdW5jdGlvbnMKCW5vdGU6IGZvciBrc2gtbGlrZSBmdW5jdGlvbnMsIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGlzCglkaWZmZXJlbnQ7IGJhc2ggb3V0cHV0cyBiYXogaW5zdGVhZCBvZiBiYXIgaW4gbGluZSAyIGJlbG93CnN0ZGluOgoJYWxpYXMgZm9vPSdlY2hvIGJhcicKCWZvbygpIHsKCQllY2hvIGJhegoJfQoJYWxpYXMga29ybj0nZWNobyBiYXInCglmdW5jdGlvbiBrb3JuIHsKCQllY2hvIGJhegoJfQoJZm9vCglrb3JuCgl1bnNldCAtZiBmb28KCWZvbyAyPi9kZXYvbnVsbCB8fCBlY2hvIHJhYgpleHBlY3RlZC1zdGRvdXQ6CgliYXoKCWJhcgoJcmFiCi0tLQpuYW1lOiBiYXNoLWZ1bmN0aW9uLXBhcmVucwpkZXNjcmlwdGlvbjoKCWVuc3VyZSB0aGUga2V5d29yZCBmdW5jdGlvbiBpcyBpZ25vcmVkIHdoZW4gcHJlY2VkaW5nCglQT1NJWCBzdHlsZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKGJhc2hpc20pCnN0ZGluOgoJbWsoKSB7CgkJZWNobyAnIyEnIiRfX3Byb2duYW1lIgoJCWVjaG8gIiQxIHsiCgkJZWNobyAnCWVjaG8gImJhcj0nXCcnJDAnXCdcIgoJCWVjaG8gJ30nCgkJZWNobyAkezI6LWZvb30KCX0KCW1rICdmdW5jdGlvbiBmb28nID5mLWtvcm4KCW1rICdmb28gKCknID5mLWRhc2gKCW1rICdmdW5jdGlvbiBmb28gKCknID5mLWJhc2gKCW1rICdmdW5jdGlvbiBzdG9wICgpJyBzdG9wID5mLXN0b3AKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xucHJpbnQgLXIgLS0gIiR7MCUvZi1hcmdofSInID5mLWFyZ2gKCWNobW9kICt4IGYtKgoJdT0kKC4vZi1hcmdoKQoJeD0ia29ybjogJCguL2Yta29ybikiOyBlY2hvICIke3gvQCgiJHUiKS8ufSIKCXg9ImRhc2g6ICQoLi9mLWRhc2gpIjsgZWNobyAiJHt4L0AoIiR1IikvLn0iCgl4PSJiYXNoOiAkKC4vZi1iYXNoKSI7IGVjaG8gIiR7eC9AKCIkdSIpLy59IgoJeD0ic3RvcDogJCguL2Ytc3RvcCkiOyBlY2hvICIke3gvQCgiJHUiKS8ufSIKZXhwZWN0ZWQtc3Rkb3V0OgoJa29ybjogYmFyPSdmb28nCglkYXNoOiBiYXI9Jy4vZi1kYXNoJwoJYmFzaDogYmFyPScuL2YtYmFzaCcKCXN0b3A6IGJhcj0nLi9mLXN0b3AnCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTEKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgd29ya3MKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLVV1aTE2IGkwPTEj7yBpMT0xI+KCrAoJdHlwZXNldCAtaTEgbzBhPTY0Cgl0eXBlc2V0IC1pMSBvMWE9MHgyNjNBCgl0eXBlc2V0IC1VdWkxIG8wYj0weDdFCgl0eXBlc2V0IC1VdWkxIG8xYj0weEZERDAKCWludGVnZXIgcHg9MHhDQUZFICdwMD0xIyAnIHAxPTEj4oCmIHBsPTEjZgoJZWNobyAiaW4gPCRpMD4gPCRpMT4iCgllY2hvICJvdXQgPCR7bzBhIzEjfXwke28wYiMxI30+IDwke28xYSMxI318JHtvMWIjMSN9PiIKCXR5cGVzZXQgLVV1aTEgaTAgaTEKCWVjaG8gInBhc3MgPCRweD4gPCRwMD4gPCRwMT4gPCRwbD4gPCR7aTAjMSN9fCR7aTEjMSN9PiIKCXR5cGVzZXQgLVV1aTE2IHR2MT0xI34gdHYyPTEjfyB0djM9MSOAIHR2ND0xI4EgdHY1PTEjwCB0djY9MSPBIHR2Nz0xI8KgIHR2OD0xI8KACgllY2hvICJzcGVjWCA8JHt0djEjMTYjfT4gPCR7dHYyIzE2I30+IDwke3R2MyMxNiN9PiA8JHt0djQjMTYjfT4gPCR7dHY1IzE2I30+IDwke3R2NiMxNiN9PiA8JHt0djcjMTYjfT4gPCR7dHY4IzE2I30+IgoJdHlwZXNldCAtaTEgdHYxIHR2MiB0djMgdHY0IHR2NSB0djYgdHY3IHR2OAoJZWNobyAic3BlY1cgPCR7dHYxIzEjfT4gPCR7dHYyIzEjfT4gPCR7dHYzIzEjfT4gPCR7dHY0IzEjfT4gPCR7dHY1IzEjfT4gPCR7dHY2IzEjfT4gPCR7dHY3IzEjfT4gPCR7dHY4IzEjfT4iCgl0eXBlc2V0IC1pMSB4czE9MHhFRjdGIHhzMj0weEVGODAgeHMzPTB4RkREMAoJZWNobyAic3BlY1UgPCR7eHMxIzEjfT4gPCR7eHMyIzEjfT4gPCR7eHMzIzEjfT4iCmV4cGVjdGVkLXN0ZG91dDoKCWluIDwxNiNFRkVGPiA8MTYjMjBBQz4KCW91dCA8QHx+PiA84pi6fO+3kD4KCXBhc3MgPDE2I2NhZmU+IDwxIyA+IDwxI+KApj4gPDEjZj4gPO984oKsPgoJc3BlY1ggPDdFPiA8N0Y+IDxFRjgwPiA8RUY4MT4gPEVGQzA+IDxFRkMxPiA8QTA+IDw4MD4KCXNwZWNXIDx+PiA8fz4gPIA+IDyBPiA8wD4gPME+IDzCoD4gPMKAPgoJc3BlY1UgPO69vz4gPIA+IDzvt5A+Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJhCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGNvcnJlY3QgY2hhcmFjdGVycwpzdGRpbjoKCXNldCAtVQoJaW50ZWdlciB4PTEjZm9vCgllY2hvIC8keC8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvMSNmb286IHVuZXhwZWN0ZWQgJ29vJy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJiCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGNvcnJlY3QgY2hhcmFjdGVycwpzdGRpbjoKCXNldCAtVQoJaW50ZWdlciB4PTEjwIAKCWVjaG8gLyR4LwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI8CAOiB1bmV4cGVjdGVkICeAJy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJjMQpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBjb3JyZWN0IGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCWludGVnZXIgeD0xI+KApgoJZWNobyAvJHgvCmV4cGVjdGVkLXN0ZG91dDoKCS8xI+KApi8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmMyCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGNvcnJlY3QgY2hhcmFjdGVycwpzdGRpbjoKCXNldCArVQoJaW50ZWdlciB4PTEj4oCmCgllY2hvIC8keC8KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvMSPigKY6IHVuZXhwZWN0ZWQgJ4AnLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQxCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIGhhbmRsZXMgb2N0ZXRzIG9rYXkKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEj/woJZWNobyAvJHgvCSMgaW52YWxpZCB1dGYtOApleHBlY3RlZC1zdGRvdXQ6CgkvMTYjZWZmZi8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQyCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIGhhbmRsZXMgb2N0ZXRzCnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI8IKCWVjaG8gLyR4LwkjIGludmFsaWQgMi1ieXRlCmV4cGVjdGVkLXN0ZG91dDoKCS8xNiNlZmMyLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDMKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgaGFuZGxlcyBvY3RldHMKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEj7woJZWNobyAvJHgvCSMgaW52YWxpZCAyLWJ5dGUKZXhwZWN0ZWQtc3Rkb3V0OgoJLzE2I2VmZWYvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkNApkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBpbnZhbGlkIGlucHV0CnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI++/wAoJZWNobyAvJHgvCSMgaW52YWxpZCAzLWJ5dGUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvMSPvv8A6IHVuZXhwZWN0ZWQgJ78nLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQ1CmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGludmFsaWQgaW5wdXQKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEjwIAKCWVjaG8gLyR4LwkjIG5vbi1taW5pbWFsaXN0aWMKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvMSPAgDogdW5leHBlY3RlZCAngCcvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDYKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgaW52YWxpZCBpbnB1dApzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPggIAKCWVjaG8gLyR4LwkjIG5vbi1taW5pbWFsaXN0aWMKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvMSPggIA6IHVuZXhwZWN0ZWQgJ4AnLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtM0FzCmRlc2NyaXB0aW9uOgoJc29tZSBzYW1wbGUgY29kZSBmb3IgaGV4ZHVtcGluZwoJbm90IE5VTCBzYWZlOyBpbnB1dCBsaW5lcyBtdXN0IGJlIE5MIHRlcm1pbmF0ZWQKc3RkaW46Cgl7CgkJcHJpbnQgJ0hlbGxvLCBXb3JsZCFcXFxu44GT44KT44Gr44Gh44Gv77yBJwoJCXR5cGVzZXQgLVV1aTE2IGk9MHgxMDAKCQkjIGNoYW5nZSB0aGF0IHRvIDB4RkYgb25jZSB3ZSBjYW4gaGFuZGxlIGVtYmVkZGVkCgkJIyBOVUwgY2hhcmFjdGVycyBpbiBzdHJpbmdzIC8gaGVyZSBkb2N1bWVudHMKCQl3aGlsZSAoKCBpKysgPCAweDFGRiApKTsgZG8KCQkJcHJpbnQgLW4gIlx4JHtpIzE2IzF9IgoJCWRvbmUKCQlwcmludCAnXDB6JwoJfSB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM0FzCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNSBodj0yMTQ3NDgzNjQ3CgkJdHlwZXNldCAtaTEgd2M9MHgwQQoJCWRhc2M9CgkJbmw9JHt3YyMxI30KCQl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQkJbGluZT0kbGluZSRubAoJCQl3aGlsZSBbWyAtbiAkbGluZSBdXTsgZG8KCQkJCWh2PTEjJHtsaW5lOjoxfQoJCQkJaWYgKCggKHBvcyAmIDE1KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50ICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCWlmICgoIChodiA8IDMyKSB8fCAoaHYgPiAxMjYpICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYy4KCQkJCWVsc2UKCQkJCQlkYXNjPSRkYXNjJHtsaW5lOjoxfQoJCQkJZmkKCQkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQkJCWxpbmU9JHtsaW5lOjF9CgkJCWRvbmUKCQlkb25lCgkJd2hpbGUgKCggcG9zICYgMTUgKSk7IGRvCgkJCXByaW50IC1uICcgICAnCgkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgNDggNjUgNkMgNkMgNkYgMkMgMjAgNTcgLSA2RiA3MiA2QyA2NCAyMSA1QyAwQSBFMyAgfEhlbGxvLCBXb3JsZCFcLi58CgkwMDAwMDAxMCAgODEgOTMgRTMgODIgOTMgRTMgODEgQUIgLSBFMyA4MSBBMSBFMyA4MSBBRiBFRiBCQyAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDAyMCAgODEgMEEgMDEgMDIgMDMgMDQgMDUgMDYgLSAwNyAwOCAwOSAwQSAwQiAwQyAwRCAwRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDAzMCAgMEYgMTAgMTEgMTIgMTMgMTQgMTUgMTYgLSAxNyAxOCAxOSAxQSAxQiAxQyAxRCAxRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDA0MCAgMUYgMjAgMjEgMjIgMjMgMjQgMjUgMjYgLSAyNyAyOCAyOSAyQSAyQiAyQyAyRCAyRSAgfC4gISIjJCUmJygpKissLS58CgkwMDAwMDA1MCAgMkYgMzAgMzEgMzIgMzMgMzQgMzUgMzYgLSAzNyAzOCAzOSAzQSAzQiAzQyAzRCAzRSAgfC8wMTIzNDU2Nzg5Ojs8PT58CgkwMDAwMDA2MCAgM0YgNDAgNDEgNDIgNDMgNDQgNDUgNDYgLSA0NyA0OCA0OSA0QSA0QiA0QyA0RCA0RSAgfD9AQUJDREVGR0hJSktMTU58CgkwMDAwMDA3MCAgNEYgNTAgNTEgNTIgNTMgNTQgNTUgNTYgLSA1NyA1OCA1OSA1QSA1QiA1QyA1RCA1RSAgfE9QUVJTVFVWV1hZWltcXV58CgkwMDAwMDA4MCAgNUYgNjAgNjEgNjIgNjMgNjQgNjUgNjYgLSA2NyA2OCA2OSA2QSA2QiA2QyA2RCA2RSAgfF9gYWJjZGVmZ2hpamtsbW58CgkwMDAwMDA5MCAgNkYgNzAgNzEgNzIgNzMgNzQgNzUgNzYgLSA3NyA3OCA3OSA3QSA3QiA3QyA3RCA3RSAgfG9wcXJzdHV2d3h5ent8fX58CgkwMDAwMDBBMCAgN0YgODAgODEgODIgODMgODQgODUgODYgLSA4NyA4OCA4OSA4QSA4QiA4QyA4RCA4RSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDBCMCAgOEYgOTAgOTEgOTIgOTMgOTQgOTUgOTYgLSA5NyA5OCA5OSA5QSA5QiA5QyA5RCA5RSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDBDMCAgOUYgQTAgQTEgQTIgQTMgQTQgQTUgQTYgLSBBNyBBOCBBOSBBQSBBQiBBQyBBRCBBRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDBEMCAgQUYgQjAgQjEgQjIgQjMgQjQgQjUgQjYgLSBCNyBCOCBCOSBCQSBCQiBCQyBCRCBCRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDBFMCAgQkYgQzAgQzEgQzIgQzMgQzQgQzUgQzYgLSBDNyBDOCBDOSBDQSBDQiBDQyBDRCBDRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDBGMCAgQ0YgRDAgRDEgRDIgRDMgRDQgRDUgRDYgLSBENyBEOCBEOSBEQSBEQiBEQyBERCBERSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDEwMCAgREYgRTAgRTEgRTIgRTMgRTQgRTUgRTYgLSBFNyBFOCBFOSBFQSBFQiBFQyBFRCBFRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDExMCAgRUYgRjAgRjEgRjIgRjMgRjQgRjUgRjYgLSBGNyBGOCBGOSBGQSBGQiBGQyBGRCBGRSAgfC4uLi4uLi4uLi4uLi4uLi58CgkwMDAwMDEyMCAgRkYgN0EgMEEgICAgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICAgICAgICAgfC56LnwKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtM1dzCmRlc2NyaXB0aW9uOgoJc29tZSBzYW1wbGUgY29kZSBmb3IgaGV4ZHVtcGluZyBVbmljb2RlCglub3QgTlVMIHNhZmU7IGlucHV0IGxpbmVzIG11c3QgYmUgTkwgdGVybWluYXRlZApzdGRpbjoKCXNldCAtVQoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJcdSR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQKCQlwcmludCBcXHhmZgkJIyBpbnZhbGlkIHV0Zi04CgkJcHJpbnQgXFx4YzIJCSMgaW52YWxpZCAyLWJ5dGUKCQlwcmludCBcXHhlZlxceGJmXFx4YzAJIyBpbnZhbGlkIDMtYnl0ZQoJCXByaW50IFxceGMwXFx4ODAJIyBub24tbWluaW1hbGlzdGljCgkJcHJpbnQgXFx4ZTBcXHg4MFxceDgwCSMgbm9uLW1pbmltYWxpc3RpYwoJCXByaW50ICfvv73vv77vv78nCSMgZW5kIG9mIHJhbmdlCgkJcHJpbnQgJ1wweicJCSMgZW1iZWRkZWQgTlVMCgl9IHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zV3MKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo3IGh2CgkJdHlwZXNldCAtaTEgd2M9MHgwQQoJCXR5cGVzZXQgLWkgbHBvcwoJCWRhc2M9CgkJbmw9JHt3YyMxI30KCQl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQkJbGluZT0kbGluZSRubAoJCQlscG9zPTAKCQkJd2hpbGUgKCggbHBvcyA8ICR7I2xpbmV9ICkpOyBkbwoJCQkJd2M9MSMke2xpbmU6KGxwb3MrKyk6MX0KCQkJCWlmICgoICh3YyA8IDMyKSB8fCBcCgkJCQkgICAgKCh3YyA+IDEyNikgJiYgKHdjIDwgMTYwKSkgKSk7IHRoZW4KCQkJCQlkY2g9LgoJCQkJZWxpZiAoKCAod2MgJiAweEZGODApID09IDB4RUY4MCApKTsgdGhlbgoJCQkJCWRjaD3vv70KCQkJCWVsc2UKCQkJCQlkY2g9JHt3YyMxI30KCQkJCWZpCgkJCQlpZiAoKCAocG9zICYgNykgPT0gNyApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MkZGNoCgkJCQkJZGNoPQoJCQkJZWxpZiAoKCAocG9zICYgNykgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJbGV0IGh2PXdjCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCSgoIChwb3MrKyAmIDcpID09IDMgKSkgJiYgXAoJCQkJICAgIHByaW50IC1uIC0tICctICcKCQkJCWRhc2M9JGRhc2MkZGNoCgkJCWRvbmUKCQlkb25lCgkJd2hpbGUgKCggcG9zICYgNyApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICAgJwoJCQkoKCAocG9zKysgJiA3KSA9PSAzICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgMDA0OCAwMDY1IDAwNkMgMDA2QyAtIDAwNkYgMDAyQyAwMDIwIDAwNTcgIHxIZWxsbywgV3wKCTAwMDAwMDA4ICAwMDZGIDAwNzIgMDA2QyAwMDY0IC0gMDAyMSAwMDVDIDAwMEEgMzA1MyAgfG9ybGQhXC7jgZN8CgkwMDAwMDAxMCAgMzA5MyAzMDZCIDMwNjEgMzA2RiAtIEZGMDEgMDAwQSAwMDAxIDAwMDIgIHzjgpPjgavjgaHjga/vvIEuLi58CgkwMDAwMDAxOCAgMDAwMyAwMDA0IDAwMDUgMDAwNiAtIDAwMDcgMDAwOCAwMDA5IDAwMEEgIHwuLi4uLi4uLnwKCTAwMDAwMDIwICAwMDBCIDAwMEMgMDAwRCAwMDBFIC0gMDAwRiAwMDEwIDAwMTEgMDAxMiAgfC4uLi4uLi4ufAoJMDAwMDAwMjggIDAwMTMgMDAxNCAwMDE1IDAwMTYgLSAwMDE3IDAwMTggMDAxOSAwMDFBICB8Li4uLi4uLi58CgkwMDAwMDAzMCAgMDAxQiAwMDFDIDAwMUQgMDAxRSAtIDAwMUYgMDAyMCAwMDIxIDAwMjIgIHwuLi4uLiAhInwKCTAwMDAwMDM4ICAwMDIzIDAwMjQgMDAyNSAwMDI2IC0gMDAyNyAwMDI4IDAwMjkgMDAyQSAgfCMkJSYnKCkqfAoJMDAwMDAwNDAgIDAwMkIgMDAyQyAwMDJEIDAwMkUgLSAwMDJGIDAwMzAgMDAzMSAwMDMyICB8KywtLi8wMTJ8CgkwMDAwMDA0OCAgMDAzMyAwMDM0IDAwMzUgMDAzNiAtIDAwMzcgMDAzOCAwMDM5IDAwM0EgIHwzNDU2Nzg5OnwKCTAwMDAwMDUwICAwMDNCIDAwM0MgMDAzRCAwMDNFIC0gMDAzRiAwMDQwIDAwNDEgMDA0MiAgfDs8PT4/QEFCfAoJMDAwMDAwNTggIDAwNDMgMDA0NCAwMDQ1IDAwNDYgLSAwMDQ3IDAwNDggMDA0OSAwMDRBICB8Q0RFRkdISUp8CgkwMDAwMDA2MCAgMDA0QiAwMDRDIDAwNEQgMDA0RSAtIDAwNEYgMDA1MCAwMDUxIDAwNTIgIHxLTE1OT1BRUnwKCTAwMDAwMDY4ICAwMDUzIDAwNTQgMDA1NSAwMDU2IC0gMDA1NyAwMDU4IDAwNTkgMDA1QSAgfFNUVVZXWFlafAoJMDAwMDAwNzAgIDAwNUIgMDA1QyAwMDVEIDAwNUUgLSAwMDVGIDAwNjAgMDA2MSAwMDYyICB8W1xdXl9gYWJ8CgkwMDAwMDA3OCAgMDA2MyAwMDY0IDAwNjUgMDA2NiAtIDAwNjcgMDA2OCAwMDY5IDAwNkEgIHxjZGVmZ2hpanwKCTAwMDAwMDgwICAwMDZCIDAwNkMgMDA2RCAwMDZFIC0gMDA2RiAwMDcwIDAwNzEgMDA3MiAgfGtsbW5vcHFyfAoJMDAwMDAwODggIDAwNzMgMDA3NCAwMDc1IDAwNzYgLSAwMDc3IDAwNzggMDA3OSAwMDdBICB8c3R1dnd4eXp8CgkwMDAwMDA5MCAgMDA3QiAwMDdDIDAwN0QgMDA3RSAtIDAwN0YgMDA4MCAwMDgxIDAwODIgIHx7fH1+Li4uLnwKCTAwMDAwMDk4ICAwMDgzIDAwODQgMDA4NSAwMDg2IC0gMDA4NyAwMDg4IDAwODkgMDA4QSAgfC4uLi4uLi4ufAoJMDAwMDAwQTAgIDAwOEIgMDA4QyAwMDhEIDAwOEUgLSAwMDhGIDAwOTAgMDA5MSAwMDkyICB8Li4uLi4uLi58CgkwMDAwMDBBOCAgMDA5MyAwMDk0IDAwOTUgMDA5NiAtIDAwOTcgMDA5OCAwMDk5IDAwOUEgIHwuLi4uLi4uLnwKCTAwMDAwMEIwICAwMDlCIDAwOUMgMDA5RCAwMDlFIC0gMDA5RiAwMEEwIDAwQTEgMDBBMiAgfC4uLi4uwqDCocKifAoJMDAwMDAwQjggIDAwQTMgMDBBNCAwMEE1IDAwQTYgLSAwMEE3IDAwQTggMDBBOSAwMEFBICB8wqPCpMKlwqbCp8KowqnCqnwKCTAwMDAwMEMwICAwMEFCIDAwQUMgMDBBRCAwMEFFIC0gMDBBRiAwMEIwIDAwQjEgMDBCMiAgfMKrwqzCrcKuwq/CsMKxwrJ8CgkwMDAwMDBDOCAgMDBCMyAwMEI0IDAwQjUgMDBCNiAtIDAwQjcgMDBCOCAwMEI5IDAwQkEgIHzCs8K0wrXCtsK3wrjCucK6fAoJMDAwMDAwRDAgIDAwQkIgMDBCQyAwMEJEIDAwQkUgLSAwMEJGIDAwQzAgMDBDMSAwMEMyICB8wrvCvMK9wr7Cv8OAw4HDgnwKCTAwMDAwMEQ4ICAwMEMzIDAwQzQgMDBDNSAwMEM2IC0gMDBDNyAwMEM4IDAwQzkgMDBDQSAgfMODw4TDhcOGw4fDiMOJw4p8CgkwMDAwMDBFMCAgMDBDQiAwMENDIDAwQ0QgMDBDRSAtIDAwQ0YgMDBEMCAwMEQxIDAwRDIgIHzDi8OMw43DjsOPw5DDkcOSfAoJMDAwMDAwRTggIDAwRDMgMDBENCAwMEQ1IDAwRDYgLSAwMEQ3IDAwRDggMDBEOSAwMERBICB8w5PDlMOVw5bDl8OYw5nDmnwKCTAwMDAwMEYwICAwMERCIDAwREMgMDBERCAwMERFIC0gMDBERiAwMEUwIDAwRTEgMDBFMiAgfMObw5zDncOew5/DoMOhw6J8CgkwMDAwMDBGOCAgMDBFMyAwMEU0IDAwRTUgMDBFNiAtIDAwRTcgMDBFOCAwMEU5IDAwRUEgIHzDo8Okw6XDpsOnw6jDqcOqfAoJMDAwMDAxMDAgIDAwRUIgMDBFQyAwMEVEIDAwRUUgLSAwMEVGIDAwRjAgMDBGMSAwMEYyICB8w6vDrMOtw67Dr8Oww7HDsnwKCTAwMDAwMTA4ICAwMEYzIDAwRjQgMDBGNSAwMEY2IC0gMDBGNyAwMEY4IDAwRjkgMDBGQSAgfMOzw7TDtcO2w7fDuMO5w7p8CgkwMDAwMDExMCAgMDBGQiAwMEZDIDAwRkQgMDBGRSAtIDAwRkYgMDAwQSBFRkZGIDAwMEEgIHzDu8O8w73DvsO/Lu+/vS58CgkwMDAwMDExOCAgRUZDMiAwMDBBIEVGRUYgRUZCRiAtIEVGQzAgMDAwQSBFRkMwIEVGODAgIHzvv70u77+977+977+9Lu+/ve+/vXwKCTAwMDAwMTIwICAwMDBBIEVGRTAgRUY4MCBFRjgwIC0gMDAwQSBGRkZEIEVGRUYgRUZCRiAgfC7vv73vv73vv70u77+977+977+9fAoJMDAwMDAxMjggIEVGQkUgRUZFRiBFRkJGIEVGQkYgLSAwMDBBIDAwN0EgMDAwQSAgICAgICB877+977+977+977+9LnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zQXIKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nOyBOVUwgYW5kIGJpbmFyeSBzYWZlCnN0ZGluOgoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJceCR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQgJ1wweicKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNBcgoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjUgaHY9MjE0NzQ4MzY0NwoJCWRhc2M9CgkJaWYgcmVhZCAtYXJOIC0xIGxpbmU7IHRoZW4KCQkJdHlwZXNldCAtaTEgbGluZQoJCQlpPTAKCQkJd2hpbGUgKCggaSA8ICR7I2xpbmVbKl19ICkpOyBkbwoJCQkJaHY9JHtsaW5lW2krK119CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmVbaS0xXSMxI30KCQkJCWZpCgkJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJCWRvbmUKCQlmaQoJCXdoaWxlICgoIHBvcyAmIDE1ICkpOyBkbwoJCQlwcmludCAtbiAnICAgJwoJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDQ4IDY1IDZDIDZDIDZGIDJDIDIwIDU3IC0gNkYgNzIgNkMgNjQgMjEgNUMgMEEgRTMgIHxIZWxsbywgV29ybGQhXC4ufAoJMDAwMDAwMTAgIDgxIDkzIEUzIDgyIDkzIEUzIDgxIEFCIC0gRTMgODEgQTEgRTMgODEgQUYgRUYgQkMgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMjAgIDgxIDBBIDAxIDAyIDAzIDA0IDA1IDA2IC0gMDcgMDggMDkgMEEgMEIgMEMgMEQgMEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMzAgIDBGIDEwIDExIDEyIDEzIDE0IDE1IDE2IC0gMTcgMTggMTkgMUEgMUIgMUMgMUQgMUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwNDAgIDFGIDIwIDIxIDIyIDIzIDI0IDI1IDI2IC0gMjcgMjggMjkgMkEgMkIgMkMgMkQgMkUgIHwuICEiIyQlJicoKSorLC0ufAoJMDAwMDAwNTAgIDJGIDMwIDMxIDMyIDMzIDM0IDM1IDM2IC0gMzcgMzggMzkgM0EgM0IgM0MgM0QgM0UgIHwvMDEyMzQ1Njc4OTo7PD0+fAoJMDAwMDAwNjAgIDNGIDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IC0gNDcgNDggNDkgNEEgNEIgNEMgNEQgNEUgIHw/QEFCQ0RFRkdISUpLTE1OfAoJMDAwMDAwNzAgIDRGIDUwIDUxIDUyIDUzIDU0IDU1IDU2IC0gNTcgNTggNTkgNUEgNUIgNUMgNUQgNUUgIHxPUFFSU1RVVldYWVpbXF1efAoJMDAwMDAwODAgIDVGIDYwIDYxIDYyIDYzIDY0IDY1IDY2IC0gNjcgNjggNjkgNkEgNkIgNkMgNkQgNkUgIHxfYGFiY2RlZmdoaWprbG1ufAoJMDAwMDAwOTAgIDZGIDcwIDcxIDcyIDczIDc0IDc1IDc2IC0gNzcgNzggNzkgN0EgN0IgN0MgN0QgN0UgIHxvcHFyc3R1dnd4eXp7fH1+fAoJMDAwMDAwQTAgIDdGIDgwIDgxIDgyIDgzIDg0IDg1IDg2IC0gODcgODggODkgOEEgOEIgOEMgOEQgOEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQjAgIDhGIDkwIDkxIDkyIDkzIDk0IDk1IDk2IC0gOTcgOTggOTkgOUEgOUIgOUMgOUQgOUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQzAgIDlGIEEwIEExIEEyIEEzIEE0IEE1IEE2IC0gQTcgQTggQTkgQUEgQUIgQUMgQUQgQUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRDAgIEFGIEIwIEIxIEIyIEIzIEI0IEI1IEI2IC0gQjcgQjggQjkgQkEgQkIgQkMgQkQgQkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRTAgIEJGIEMwIEMxIEMyIEMzIEM0IEM1IEM2IC0gQzcgQzggQzkgQ0EgQ0IgQ0MgQ0QgQ0UgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRjAgIENGIEQwIEQxIEQyIEQzIEQ0IEQ1IEQ2IC0gRDcgRDggRDkgREEgREIgREMgREQgREUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMDAgIERGIEUwIEUxIEUyIEUzIEU0IEU1IEU2IC0gRTcgRTggRTkgRUEgRUIgRUMgRUQgRUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMTAgIEVGIEYwIEYxIEYyIEYzIEY0IEY1IEY2IC0gRjcgRjggRjkgRkEgRkIgRkMgRkQgRkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMjAgIEZGIDAwIDdBIDBBICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgIHwuLnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zV3IKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nIFVuaWNvZGU7IE5VTCBhbmQgYmluYXJ5IHNhZmUKc3RkaW46CglzZXQgLVUKCXsKCQlwcmludCAnSGVsbG8sIFdvcmxkIVxcXG7jgZPjgpPjgavjgaHjga/vvIEnCgkJdHlwZXNldCAtVXVpMTYgaT0weDEwMAoJCSMgY2hhbmdlIHRoYXQgdG8gMHhGRiBvbmNlIHdlIGNhbiBoYW5kbGUgZW1iZWRkZWQKCQkjIE5VTCBjaGFyYWN0ZXJzIGluIHN0cmluZ3MgLyBoZXJlIGRvY3VtZW50cwoJCXdoaWxlICgoIGkrKyA8IDB4MUZGICkpOyBkbwoJCQlwcmludCAtbiAiXHUke2kjMTYjMX0iCgkJZG9uZQoJCXByaW50CgkJcHJpbnQgXFx4ZmYJCSMgaW52YWxpZCB1dGYtOAoJCXByaW50IFxceGMyCQkjIGludmFsaWQgMi1ieXRlCgkJcHJpbnQgXFx4ZWZcXHhiZlxceGMwCSMgaW52YWxpZCAzLWJ5dGUKCQlwcmludCBcXHhjMFxceDgwCSMgbm9uLW1pbmltYWxpc3RpYwoJCXByaW50IFxceGUwXFx4ODBcXHg4MAkjIG5vbi1taW5pbWFsaXN0aWMKCQlwcmludCAn77+977++77+/JwkjIGVuZCBvZiByYW5nZQoJCXByaW50ICdcMHonCQkjIGVtYmVkZGVkIE5VTAoJfSB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM1dyCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNyBodj0yMTQ3NDgzNjQ3CgkJZGFzYz0KCQlpZiByZWFkIC1hck4gLTEgbGluZTsgdGhlbgoJCQl0eXBlc2V0IC1pMSBsaW5lCgkJCWk9MAoJCQl3aGlsZSAoKCBpIDwgJHsjbGluZVsqXX0gKSk7IGRvCgkJCQlodj0ke2xpbmVbaSsrXX0KCQkJCWlmICgoIChodiA8IDMyKSB8fCBcCgkJCQkgICAgKChodiA+IDEyNikgJiYgKGh2IDwgMTYwKSkgKSk7IHRoZW4KCQkJCQlkY2g9LgoJCQkJZWxpZiAoKCAoaHYgJiAweEZGODApID09IDB4RUY4MCApKTsgdGhlbgoJCQkJCWRjaD3vv70KCQkJCWVsc2UKCQkJCQlkY2g9JHtsaW5lW2ktMV0jMSN9CgkJCQlmaQoJCQkJaWYgKCggKHBvcyAmIDcpID09IDcgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjJGRjaAoJCQkJCWRjaD0KCQkJCWVsaWYgKCggKHBvcyAmIDcpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJKCggKHBvcysrICYgNykgPT0gMyApKSAmJiBcCgkJCQkgICAgcHJpbnQgLW4gLS0gJy0gJwoJCQkJZGFzYz0kZGFzYyRkY2gKCQkJZG9uZQoJCWZpCgkJd2hpbGUgKCggcG9zICYgNyApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICAgJwoJCQkoKCAocG9zKysgJiA3KSA9PSAzICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgMDA0OCAwMDY1IDAwNkMgMDA2QyAtIDAwNkYgMDAyQyAwMDIwIDAwNTcgIHxIZWxsbywgV3wKCTAwMDAwMDA4ICAwMDZGIDAwNzIgMDA2QyAwMDY0IC0gMDAyMSAwMDVDIDAwMEEgMzA1MyAgfG9ybGQhXC7jgZN8CgkwMDAwMDAxMCAgMzA5MyAzMDZCIDMwNjEgMzA2RiAtIEZGMDEgMDAwQSAwMDAxIDAwMDIgIHzjgpPjgavjgaHjga/vvIEuLi58CgkwMDAwMDAxOCAgMDAwMyAwMDA0IDAwMDUgMDAwNiAtIDAwMDcgMDAwOCAwMDA5IDAwMEEgIHwuLi4uLi4uLnwKCTAwMDAwMDIwICAwMDBCIDAwMEMgMDAwRCAwMDBFIC0gMDAwRiAwMDEwIDAwMTEgMDAxMiAgfC4uLi4uLi4ufAoJMDAwMDAwMjggIDAwMTMgMDAxNCAwMDE1IDAwMTYgLSAwMDE3IDAwMTggMDAxOSAwMDFBICB8Li4uLi4uLi58CgkwMDAwMDAzMCAgMDAxQiAwMDFDIDAwMUQgMDAxRSAtIDAwMUYgMDAyMCAwMDIxIDAwMjIgIHwuLi4uLiAhInwKCTAwMDAwMDM4ICAwMDIzIDAwMjQgMDAyNSAwMDI2IC0gMDAyNyAwMDI4IDAwMjkgMDAyQSAgfCMkJSYnKCkqfAoJMDAwMDAwNDAgIDAwMkIgMDAyQyAwMDJEIDAwMkUgLSAwMDJGIDAwMzAgMDAzMSAwMDMyICB8KywtLi8wMTJ8CgkwMDAwMDA0OCAgMDAzMyAwMDM0IDAwMzUgMDAzNiAtIDAwMzcgMDAzOCAwMDM5IDAwM0EgIHwzNDU2Nzg5OnwKCTAwMDAwMDUwICAwMDNCIDAwM0MgMDAzRCAwMDNFIC0gMDAzRiAwMDQwIDAwNDEgMDA0MiAgfDs8PT4/QEFCfAoJMDAwMDAwNTggIDAwNDMgMDA0NCAwMDQ1IDAwNDYgLSAwMDQ3IDAwNDggMDA0OSAwMDRBICB8Q0RFRkdISUp8CgkwMDAwMDA2MCAgMDA0QiAwMDRDIDAwNEQgMDA0RSAtIDAwNEYgMDA1MCAwMDUxIDAwNTIgIHxLTE1OT1BRUnwKCTAwMDAwMDY4ICAwMDUzIDAwNTQgMDA1NSAwMDU2IC0gMDA1NyAwMDU4IDAwNTkgMDA1QSAgfFNUVVZXWFlafAoJMDAwMDAwNzAgIDAwNUIgMDA1QyAwMDVEIDAwNUUgLSAwMDVGIDAwNjAgMDA2MSAwMDYyICB8W1xdXl9gYWJ8CgkwMDAwMDA3OCAgMDA2MyAwMDY0IDAwNjUgMDA2NiAtIDAwNjcgMDA2OCAwMDY5IDAwNkEgIHxjZGVmZ2hpanwKCTAwMDAwMDgwICAwMDZCIDAwNkMgMDA2RCAwMDZFIC0gMDA2RiAwMDcwIDAwNzEgMDA3MiAgfGtsbW5vcHFyfAoJMDAwMDAwODggIDAwNzMgMDA3NCAwMDc1IDAwNzYgLSAwMDc3IDAwNzggMDA3OSAwMDdBICB8c3R1dnd4eXp8CgkwMDAwMDA5MCAgMDA3QiAwMDdDIDAwN0QgMDA3RSAtIDAwN0YgMDA4MCAwMDgxIDAwODIgIHx7fH1+Li4uLnwKCTAwMDAwMDk4ICAwMDgzIDAwODQgMDA4NSAwMDg2IC0gMDA4NyAwMDg4IDAwODkgMDA4QSAgfC4uLi4uLi4ufAoJMDAwMDAwQTAgIDAwOEIgMDA4QyAwMDhEIDAwOEUgLSAwMDhGIDAwOTAgMDA5MSAwMDkyICB8Li4uLi4uLi58CgkwMDAwMDBBOCAgMDA5MyAwMDk0IDAwOTUgMDA5NiAtIDAwOTcgMDA5OCAwMDk5IDAwOUEgIHwuLi4uLi4uLnwKCTAwMDAwMEIwICAwMDlCIDAwOUMgMDA5RCAwMDlFIC0gMDA5RiAwMEEwIDAwQTEgMDBBMiAgfC4uLi4uwqDCocKifAoJMDAwMDAwQjggIDAwQTMgMDBBNCAwMEE1IDAwQTYgLSAwMEE3IDAwQTggMDBBOSAwMEFBICB8wqPCpMKlwqbCp8KowqnCqnwKCTAwMDAwMEMwICAwMEFCIDAwQUMgMDBBRCAwMEFFIC0gMDBBRiAwMEIwIDAwQjEgMDBCMiAgfMKrwqzCrcKuwq/CsMKxwrJ8CgkwMDAwMDBDOCAgMDBCMyAwMEI0IDAwQjUgMDBCNiAtIDAwQjcgMDBCOCAwMEI5IDAwQkEgIHzCs8K0wrXCtsK3wrjCucK6fAoJMDAwMDAwRDAgIDAwQkIgMDBCQyAwMEJEIDAwQkUgLSAwMEJGIDAwQzAgMDBDMSAwMEMyICB8wrvCvMK9wr7Cv8OAw4HDgnwKCTAwMDAwMEQ4ICAwMEMzIDAwQzQgMDBDNSAwMEM2IC0gMDBDNyAwMEM4IDAwQzkgMDBDQSAgfMODw4TDhcOGw4fDiMOJw4p8CgkwMDAwMDBFMCAgMDBDQiAwMENDIDAwQ0QgMDBDRSAtIDAwQ0YgMDBEMCAwMEQxIDAwRDIgIHzDi8OMw43DjsOPw5DDkcOSfAoJMDAwMDAwRTggIDAwRDMgMDBENCAwMEQ1IDAwRDYgLSAwMEQ3IDAwRDggMDBEOSAwMERBICB8w5PDlMOVw5bDl8OYw5nDmnwKCTAwMDAwMEYwICAwMERCIDAwREMgMDBERCAwMERFIC0gMDBERiAwMEUwIDAwRTEgMDBFMiAgfMObw5zDncOew5/DoMOhw6J8CgkwMDAwMDBGOCAgMDBFMyAwMEU0IDAwRTUgMDBFNiAtIDAwRTcgMDBFOCAwMEU5IDAwRUEgIHzDo8Okw6XDpsOnw6jDqcOqfAoJMDAwMDAxMDAgIDAwRUIgMDBFQyAwMEVEIDAwRUUgLSAwMEVGIDAwRjAgMDBGMSAwMEYyICB8w6vDrMOtw67Dr8Oww7HDsnwKCTAwMDAwMTA4ICAwMEYzIDAwRjQgMDBGNSAwMEY2IC0gMDBGNyAwMEY4IDAwRjkgMDBGQSAgfMOzw7TDtcO2w7fDuMO5w7p8CgkwMDAwMDExMCAgMDBGQiAwMEZDIDAwRkQgMDBGRSAtIDAwRkYgMDAwQSBFRkZGIDAwMEEgIHzDu8O8w73DvsO/Lu+/vS58CgkwMDAwMDExOCAgRUZDMiAwMDBBIEVGRUYgRUZCRiAtIEVGQzAgMDAwQSBFRkMwIEVGODAgIHzvv70u77+977+977+9Lu+/ve+/vXwKCTAwMDAwMTIwICAwMDBBIEVGRTAgRUY4MCBFRjgwIC0gMDAwQSBGRkZEIEVGRUYgRUZCRiAgfC7vv73vv73vv70u77+977+977+9fAoJMDAwMDAxMjggIEVGQkUgRUZFRiBFRkJGIEVGQkYgLSAwMDBBIDAwMDAgMDA3QSAwMDBBICB877+977+977+977+9Li56LnwKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGtzaDkzLXN0eWxlIGJhc2Utb25lIGludGVnZXJzIHdvcmsKY2F0ZWdvcnk6ICFzbWtzaApzdGRpbjoKCXNldCAtVQoJZWNobyAxICQoKCdhJykpCgkoZWNobyAyZiAkKCgnYWEnKSkpIDI+JjEgfCBzZWQgInMvXlteJ10qJy8ycCAnLyIKCWVjaG8gMyAkKCgn4oCmJykpCgl4PSInYSciCgllY2hvICI0IDwkeD4iCgllY2hvIDUgJCgoJHgpKQoJZWNobyA2ICQoKHgpKQpleHBlY3RlZC1zdGRvdXQ6CgkxIDk3CgkycCAnYWEnOiBtdWx0aS1jaGFyYWN0ZXIgY2hhcmFjdGVyIGNvbnN0YW50CgkzIDgyMzAKCTQgPCdhJz4KCTUgOTcKCTYgOTcKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtNUEKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgdGhhdCB3ZeKAmXJlIE5VTCBhbmQgVW5pY29kZSBzYWZlCnN0ZGluOgoJc2V0ICtVCglwcmludCAnYVwwYlx4ZmR6JyA+eAoJcmVhZCAtYSB5IDx4CglzZXQgLVUKCXR5cGVzZXQgLVV1aTE2IHkKCXByaW50ICR7eVsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxNiM2MSAxNiMwIDE2IzYyIDE2I0ZEIDE2IzdBIC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtNVcKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgdGhhdCB3ZeKAmXJlIE5VTCBhbmQgVW5pY29kZSBzYWZlCnN0ZGluOgoJc2V0IC1VCglwcmludCAnYVwwYuKCrGMnID54CglyZWFkIC1hIHkgPHgKCXNldCArVQoJdHlwZXNldCAtVXVpMTYgeQoJcHJpbnQgJHt5WypdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTE2IzYxIDE2IzAgMTYjNjIgMTYjMjBBQyAxNiM2MyAuCi0tLQpuYW1lOiB1bGltaXQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHdlIGNhbiB1c2UgYSBzcGVjaWZpYyBzeW50YXggaWRpb20gZm9yIHVsaW1pdApjYXRlZ29yeTogIW9zOnN5bGxhYmxlCnN0ZGluOgoJaWYgISB4PSQodWxpbWl0IC1kKSB8fCBbWyAkeCA9IHVua25vd24gXV07IHRoZW4KCQkjZWNobyBleHBlY3RlZCB0byBmYWlsIG9uIHRoaXMgT1MKCQllY2hvIG9rYXkKCWVsc2UKCQl1bGltaXQgLWRTICR4ICYmIGVjaG8gb2theQoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJb2theQotLS0KbmFtZTogcmVkaXItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgb2YgdGhlIG1vc3QgYmFzaWMgaW52YXJpYW50cyBvZiBJL08gcmVkaXJlY3Rpb24Kc3RkaW46CglpPTAKCWZ1bmN0aW9uIGQgewoJCXByaW50IG8kaS4KCQlwcmludCAtdTIgZSQoKGkrKykpLgoJfQoJZCA+YSAyPmIKCWVjaG8gPTE9CgljYXQgYQoJZWNobyA9Mj0KCWNhdCBiCgllY2hvID0zPQoJZCAyPiYxID5jCgllY2hvID00PQoJY2F0IGMKCWVjaG8gPTU9CmV4cGVjdGVkLXN0ZG91dDoKCT0xPQoJbzAuCgk9Mj0KCWUwLgoJPTM9CgllMS4KCT00PQoJbzEuCgk9NT0KLS0tCm5hbWU6IGJhc2hpb3AtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDE6IHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXRyaQoJPT09CglyYXMKCWR3YQotLS0KbmFtZTogYmFzaGlvcC0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgKm5vdCogc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0IDMmPmZvbwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJcmFzCgk9PT0KCWR3YQoJdHJpCi0tLQpuYW1lOiBiYXNoaW9wLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gd29ya3MKCVBhcnQgMjogdGhpcyBpcyAqbm90KiBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgMz5mb28gJj4mMwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJPT09CglyYXMKCWR3YQoJdHJpCi0tLQpuYW1lOiBiYXNoaW9wLTJjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gd29ya3MKCVBhcnQgMjogdGhpcyBpcyBzdXBwb3J0ZWQgYnkgR05VIGJhc2ggNCBvbmx5CnN0ZGluOgoJZWNobyBtaXIgPmZvbwoJc2V0IC1vIG5vY2xvYmJlcgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+PmZvbwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJdHJpCgk9PT0KCW1pcgoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtM2EKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBmYWlscyBjb3JyZWN0bHkKCVBhcnQgMTogdGhpcyBpcyBhbHNvIHN1cHBvcnRlZCBieSBHTlUgYmFzaApzdGRpbjoKCWVjaG8gbWlyID5mb28KCXNldCAtbyBub2Nsb2JiZXIKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAmPmZvbwoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJPT09CgltaXIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKjogY2FuJ3QgKGNyZWF0ZXxvdmVyd3JpdGUpIC4qLwotLS0KbmFtZTogYmFzaGlvcC0zYgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIGZhaWxzIGNvcnJlY3RseQoJUGFydCAyOiB0aGlzIGlzICpub3QqIHN1cHBvcnRlZCBieSBHTlUgYmFzaApzdGRpbjoKCWVjaG8gbWlyID5mb28KCXNldCAtbyBub2Nsb2JiZXIKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAmPnxmb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXRyaQoJPT09CglyYXMKCWR3YQotLS0KbmFtZTogYmFzaGlvcC00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gd29ya3MKCVBhcnQgNDogdGhpcyBpcyBhbHNvIHN1cHBvcnRlZCBieSBHTlUgYmFzaCwKCWJ1dCBmYWlsZWQgaW4gc29tZSBta3NoIHZlcnNpb25zCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCWZ1bmN0aW9uIGJsdWJiIHsKCQlbWyAtZSBiYXIgXV0gJiYgdGhyZWVvdXQgIiRiZiIgJj5mb28KCX0KCWJsdWJiCgllY2hvIC1uID5iYXIKCWJsdWJiCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IG1rc2hpb3AtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBzdXBwb3J0IG9mIG1vcmUgdGhhbiA5IGZpbGUgZGVzY3JpcHRvcnMKY2F0ZWdvcnk6ICFjb252ZmRzCnN0ZGluOgoJcmVhZCAtdTEwIGZvbyAxMDw8PCBiYXIKCWVjaG8geCRmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJeGJhcgotLS0KbmFtZTogbWtzaGlvcC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIHN1cHBvcnQgb2YgbW9yZSB0aGFuIDkgZmlsZSBkZXNjcmlwdG9ycwpjYXRlZ29yeTogIWNvbnZmZHMKc3RkaW46CglleGVjIDEyPmZvbwoJcHJpbnQgLXUxMiBiYXIKCWVjaG8gYmF6ID4mMTIKCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyCgliYXoKLS0tCm5hbWU6IG9rc2gtc2hjcmFzaApkZXNjcmlwdGlvbjoKCXNyYy9yZWdyZXNzL2Jpbi9rc2gvc2hjcmFzaC5zaCx2IDEuMQpzdGRpbjoKCWRlcGxpYnM9Ii1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbHRpZmYgLWxqcGVnIC1seiAtbHBuZyAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdka19waXhidWYubGEgLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC1sbSAtbG0gL3Vzci9sb2NhbC9saWIvbGliYXVkaW9maWxlLmxhIC1sbSAtbG0gLWxhdWRpb2ZpbGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJlc2QubGEgLWxtIC1seiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lc3VwcG9ydC5sYSAtbG0gLWx6IC1sbSAtbGdsaWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZS5sYSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbElDRSAtbFNNIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC1seiAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9YMTFSNi9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrX2ltbGliLmxhIC1sbSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmFydF9sZ3BsLmxhIC1sbSAtbHogLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbElDRSAtbFNNIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLUwvdXNyL1gxMVI2L2xpYiAtbG0gLWx6IC1scG5nIC1sdW5naWYgLWx6IC1sanBlZyAtbHRpZmYgLWxqcGVnIC1sZ2RrX2ltbGliIC1sZ2xpYiAtbG0gLWxhdWRpb2ZpbGUgLWxtIC1sYXVkaW9maWxlIC1sZXNkIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWV1aS5sYSAtbHogLWx6IC91c3IvbG9jYWwvbGliL2xpYnhtbC5sYSAtbHogLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJ4bWwubGEgLWxtIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbGFkZS5sYSAtbHogLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJ4bWwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAtbG0gLWxtIC91c3IvbG9jYWwvbGliL2xpYmF1ZGlvZmlsZS5sYSAtbG0gLWxtIC1sYXVkaW9maWxlIC91c3IvbG9jYWwvbGliL2xpYmVzZC5sYSAtbG0gLWx6IC91c3IvbG9jYWwvbGliL2xpYmdub21lc3VwcG9ydC5sYSAtbG0gLWx6IC1sbSAtbGdsaWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWUubGEgLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtbGdsaWIgLWxnbW9kdWxlIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtbGdsaWIgLWxnbW9kdWxlIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbElDRSAtbFNNIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfaW1saWIubGEgL3Vzci9sb2NhbC9saWIvbGliYXJ0X2xncGwubGEgLWxtIC1seiAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLWxtIC1seiAtbHVuZ2lmIC1seiAtbGpwZWcgLWxqcGVnIC1sZ2RrX2ltbGliIC1sZ2xpYiAtbG0gLWxhdWRpb2ZpbGUgLWxtIC1sYXVkaW9maWxlIC1sZXNkIC91c3IvbG9jYWwvbGliL2xpYmdub21ldWkubGEgLUwvdXNyL1gxMVI2L2xpYiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdsYWRlLWdub21lLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgLWxtIC1sbSAvdXNyL2xvY2FsL2xpYi9saWJhdWRpb2ZpbGUubGEgLWxtIC1sbSAtbGF1ZGlvZmlsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmVzZC5sYSAtbG0gLWx6IC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWVzdXBwb3J0LmxhIC1sbSAtbHogLWxtIC1sZ2xpYiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lLmxhIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ21vZHVsZS5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ3RrLmxhIC1sSUNFIC1sU00gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1sbSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgLWx6IC91c3IvbG9jYWwvbGliL2xpYmpwZWcubGEgLWx0aWZmIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL1gxMVI2L2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfaW1saWIubGEgLWxtIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliYXJ0X2xncGwubGEgLWxtIC1seiAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sSUNFIC1sU00gLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtTC91c3IvWDExUjYvbGliIC1sbSAtbHogLWxwbmcgLWx1bmdpZiAtbHogLWxqcGVnIC1sdGlmZiAtbGpwZWcgLWxnZGtfaW1saWIgLWxnbGliIC1sbSAtbGF1ZGlvZmlsZSAtbG0gLWxhdWRpb2ZpbGUgLWxlc2QgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXVpLmxhIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2xpYiIKCXNwZWNpYWxkZXBsaWJzPSItbGdub21ldWkgLWxhcnRfbGdwbCAtbGdka19pbWxpYiAtbHRpZmYgLWxqcGVnIC1sdW5naWYgLWxwbmcgLWx6IC1sU00gLWxJQ0UgLWxndGsgLWxnZGsgLWxnbW9kdWxlIC1saW50bCAtbFhleHQgLWxYMTEgLWxnbm9tZSAtbGdub21lc3VwcG9ydCAtbGVzZCAtbGF1ZGlvZmlsZSAtbG0gLWxnbGliIgoJZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KCQljYXNlICRkZXBsaWIgaW4KCQktTCopCgkJCW5ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyIKCQkJOzsKCQkqKQoJCQljYXNlICIgJHNwZWNpYWxkZXBsaWJzICIgaW4KCQkJKiIgJGRlcGxpYiAiKikKCQkJCW5ld19saWJzPSIkZGVwbGliICRuZXdfbGlicyI7OwoJCQllc2FjCgkJCTs7CgkJZXNhYwoJZG9uZQotLS0KbmFtZTogb2tzaC12YXJmdW5jdGlvbi1tb2QxCmRlc2NyaXB0aW9uOgoJJE9wZW5CU0Q6IHZhcmZ1bmN0aW9uLnNoLHYgMS4xIDIwMDMvMTIvMTUgMDU6Mjg6NDAgb3R0byBFeHAgJAoJQ2FsbGluZwoJCUZPTz1iYXIgZgoJd2hlcmUgZiBpcyBhIGtzaCBzdHlsZSBmdW5jdGlvbiwgc2hvdWxkIG5vdCBzZXQgRk9PIGluIHRoZSBjdXJyZW50CgllbnYuIElmIGYgaXMgYSBCb3VybmUgc3R5bGUgZnVuY3Rpb24sIEZPTyBzaG91bGQgYmUgc2V0LiBGdXJ0aGVybW9yZSwKCXRoZSBmdW5jdGlvbiBzaG91bGQgcmVjZWl2ZSBhIGNvcnJlY3QgdmFsdWUgb2YgRk9PLiBIb3dldmVyLCBkaWZmZXJpbmcKCWZyb20gb2tzaCwgc2V0dGluZyBGT08gaW4gdGhlIGZ1bmN0aW9uIGl0c2VsZiBtdXN0IGNoYW5nZSB0aGUgdmFsdWUgaW4KCXNldHRpbmcgRk9PIGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHZhbHVlIGluCglnbG9iYWwgZW52aXJvbm1lbnQuCglJbnNwaXJlZCBieSBQUiAyNDUwLgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xudW5zZXQgUkFORE9NXG5leHBvcnQgfCB3aGlsZSBJRlM9IHJlYWQgLXInIFwKCSAgICAnUkFORE9NOyBkbyBldmFsICdcJydwcmludCAtciAtLSAiJFJBTkRPTT0kJ1wnJyIkUkFORE9NIidcJ1wiXCdcOyBcCgkgICAgZG9uZSA+ZW52OyBjaG1vZCAreCBlbnY7IFBBVEg9LjokUEFUSAoJZnVuY3Rpb24gayB7CgkJaWYgWyB4JEZPTyAhPSB4YmFyIF07IHRoZW4KCQkJZWNobyAxCgkJCXJldHVybiAxCgkJZmkKCQl4PSQoZW52IHwgZ3JlcCBGT08pCgkJaWYgWyAieCR4IiAhPSAieEZPTz1iYXIiIF07IHRoZW4KCQkJZWNobyAyCgkJCXJldHVybiAxOwoJCWZpCgkJRk9PPWZvbwoJCXJldHVybiAwCgl9CgliICgpIHsKCQlpZiBbIHgkRk9PICE9IHhiYXIgXTsgdGhlbgoJCQllY2hvIDMKCQkJcmV0dXJuIDEKCQlmaQoJCXg9JChlbnYgfCBncmVwIEZPTykKCQlpZiBbICJ4JHgiICE9ICJ4Rk9PPWJhciIgXTsgdGhlbgoJCQllY2hvIDQKCQkJcmV0dXJuIDE7CgkJZmkKCQlGT089Zm9vCgkJcmV0dXJuIDAKCX0KCUZPTz1iYXIgawoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHggXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXIgYgoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhmb28gXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXJiYXIKCUZPTz1iYXIgawoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhiYXJiYXIgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXIgYgoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhmb28gXTsgdGhlbgoJCWV4aXQgMQoJZmkKLS0tCm5hbWU6IGZkLWNsb2V4ZWMtMQpkZXNjcmlwdGlvbjoKCVZlcmlmeSB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgPiAyIGFyZSBwcml2YXRlIGZvciBLb3JuIHNoZWxscwoJQVQmVCBrc2g5MyBkb2VzIHRoaXMgc3RpbGwsIHdoaWNoIG1lYW5zIHdlIG11c3Qga2VlcCBpdCBhcyB3ZWxsCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8KZmlsZS1zZXR1cDogZmlsZSA2NDQgInRlc3Quc2giCgllY2hvID4mMyBGb3dsCnN0ZGluOgoJZXhlYyAzPiYxCgkiJF9fcHJvZ25hbWUiIHRlc3Quc2gKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBmaWxlIGRlc2NyaXB0b3IvCi0tLQpuYW1lOiBmZC1jbG9leGVjLTIKZGVzY3JpcHRpb246CglWZXJpZnkgdGhhdCBmaWxlIGRlc2NyaXB0b3JzID4gMiBhcmUgbm90IHByaXZhdGUgZm9yIFBPU0lYIHNoZWxscwoJU2VlIERlYmlhbiBCdWcgIzE1NDU0MCwgQ2xvc2VzOiAjNDk5MTM5CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ0ZXN0LnNoIgoJZWNobyA+JjMgRm93bApzdGRpbjoKCXRlc3QgLW4gIiRQT1NIX1ZFUlNJT04iIHx8IHNldCAtbyBzaAoJZXhlYyAzPiYxCgkiJF9fcHJvZ25hbWUiIHRlc3Quc2gKZXhwZWN0ZWQtc3Rkb3V0OgoJRm93bAotLS0KbmFtZTogZmQtY2xvZXhlYy0zCmRlc2NyaXB0aW9uOgoJVmVyaWZ5IHRoYXQgZmlsZSBkZXNjcmlwdG9ycyA+IDIgYXJlIG5vdCBwcml2YXRlIGZvciBMRUdBQ1kgS1NICmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ0ZXN0LnNoIgoJZWNobyA+JjMgRm93bApzdGRpbjoKCWV4ZWMgMz4mMQoJIiRfX3Byb2duYW1lIiB0ZXN0LnNoCmV4cGVjdGVkLXN0ZG91dDoKCUZvd2wKLS0tCm5hbWU6IGNvbXN1Yi0xYQpkZXNjcmlwdGlvbjoKCUNPTVNVQiBhcmUgbm93IHBhcnNlZCByZWN1cnNpdmVseSwgc28gdGhpcyB3b3JrcwoJc2VlIGFsc28gcmVncmVzc2lvbi02OiBtYXRjaGluZyBwYXJlbnRoZXPEk3MgYnVnCglGYWlscyBvbjogcGRrc2ggYmFzaDIgYmFzaDMgenNoCglQYXNzZXMgb246IGJhc2g0IGtzaDkzIG1rc2goMjAxMTAzMTMrKQpzdGRpbjoKCWVjaG8gMSAkKGNhc2UgMSBpbiAoMSkgZWNobyB5ZXM7OyAoMikgZWNobyBubzs7IGVzYWMpIC4KCWVjaG8gMiAkKGNhc2UgMSBpbiAxKSBlY2hvIHllczs7IDIpIGVjaG8gbm87OyBlc2FjKSAuCglURVNUPTEyMzQ7IGVjaG8gMyAke1RFU1Q6ICQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYyl9IC4KCVRFU1Q9NTY3ODsgZWNobyA0ICR7VEVTVDogJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYyl9IC4KCWE9KCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykpOyBlY2hvIDUgJHthWzBdfSAuCglhPSgkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSk7IGVjaG8gNiAke2FbMF19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSB5ZXMgLgoJMiB5ZXMgLgoJMyAyMzQgLgoJNCA2NzggLgoJNSAxIC4KCTYgMSAuCi0tLQpuYW1lOiBjb21zdWItMWIKZGVzY3JpcHRpb246CglDT01TVUIgYXJlIG5vdyBwYXJzZWQgcmVjdXJzaXZlbHksIHNvIHRoaXMgd29ya3MKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoMyBiYXNoNCB6c2gKCVBhc3NlcyBvbjoga3NoOTMgbWtzaCgyMDExMDMxMyspCnN0ZGluOgoJZWNobyAxICQoKCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykrMTApKSAuCgllY2hvIDIgJCgoJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYykrMjApKSAuCgkoKCBhID0gJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKSApKTsgZWNobyAzICRhIC4KCSgoIGEgPSAkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSApKTsgZWNobyA0ICRhIC4KCWE9KCQoKCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykrMTApKSk7IGVjaG8gNSAke2FbMF19IC4KCWE9KCQoKCQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpKzIwKSkpOyBlY2hvIDYgJHthWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMTEgLgoJMiAyMSAuCgkzIDEgLgoJNCAxIC4KCTUgMTEgLgoJNiAyMSAuCi0tLQpuYW1lOiBjb21zdWItMgpkZXNjcmlwdGlvbjoKCVJlZEhhdCBCWiM0OTY3OTEg4oCTIGFub3RoZXIgY2FzZSBvZiBtaXNzaW5nIHJlY3Vyc2lvbgoJaW4gcGFyc2luZyBDT01TVUIgZXhwcmVzc2lvbnMKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoM8K5IGJhc2g0wrkgenNoCglQYXNzZXMgb246IGtzaDkzIG1rc2goMjAxMTAzMDUrKQoJ4pGgIGJhc2hbMzRdIHNlZW0gdG8gY2hva2Ugb24gY29tbWVudCBlbmRpbmcgd2l0aCBiYWNrc2xhc2gtbmV3bGluZQpzdGRpbjoKCSMgYSBjb21tZW50IHdpdGggIiAnIFwKCXg9JCgKCWVjaG8geWVzCgkjIGEgY29tbWVudCB3aXRoICIgJyBcCgkpCgllY2hvICR4CmV4cGVjdGVkLXN0ZG91dDoKCXllcwotLS0KbmFtZTogY29tc3ViLTMKZGVzY3JpcHRpb246CglFeHRlbmRlZCB0ZXN0IGZvciBDT01TVUIgZXhwbGFpbmluZyB3aHkgYSByZWN1cnNpdmUgcGFyc2VyCglpcyBhIG11c3QgKGEgbm9uLXJlY3Vyc2l2ZSBwYXJzZXIgY2Fubm90IHBhc3MgYWxsIHRocmVlIG9mCgl0aGVzZSB0ZXN0IGNhc2VzLCBlc3BlY2lhbGx5IHRoZSDigJgj4oCZIGlzIGRpZmZpY3VsdCkKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmVjaG8gMTIzNCcgPmlkOyBjaG1vZCAreCBpZDsgUEFUSD0uOiRQQVRICgllY2hvICQodHlwZXNldCAtaTEwIHg9MTYjMjA7IGVjaG8gJHgpCgllY2hvICQodHlwZXNldCAtVXVpMTYgeD0xNiMkKGlkIC11KQoJKSAuCgllY2hvICQoYz0xOyBkPTEKCXR5cGVzZXQgLVV1aTE2IGE9MzYjZm9vOyBjPTIKCXR5cGVzZXQgLVV1aTE2IGI9MzYgI2ZvbzsgZD0yCgllY2hvICRhICRiICRjICRkKQpleHBlY3RlZC1zdGRvdXQ6CgkzMgoJLgoJMTYjNEY2OCAxNiMyNCAyIDEKLS0tCm5hbWU6IGNvbXN1Yi00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIHRyZWUgZHVtcCBmdW5jdGlvbnMgZm9yICFNS1NIX1NNQUxMIGZ1bmN0aW9uYWxpdHkKY2F0ZWdvcnk6ICFzbWtzaApzdGRpbjoKCXgoKSB7IGNhc2UgJDEgaW4gdSkgZWNobyB4IDs7JiAqKSBlY2hvICQxIDs7IGVzYWM7IH0KCXR5cGVzZXQgLWYgeApleHBlY3RlZC1zdGRvdXQ6Cgl4KCkgewoJCWNhc2UgJDEgaW4KCQkodSkKCQkJZWNobyB4IAoJCQk7fAoJCSgqKQoJCQllY2hvICQxIAoJCQk7OwoJCWVzYWMgCgl9IAotLS0KbmFtZTogY29tc3ViLTUKZGVzY3JpcHRpb246CglDaGVjayBDT01TVUIgd29ya3Mgd2l0aCBhbGlhc2VzIChkb2VzIG5vdCBleHBhbmQgdGhlbSB0d2ljZSkKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1yIC0tICIkeCI7IGRvbmUnID5wZm4KCWNobW9kICt4IHBmbgoJYWxpYXMgZWNobz0nZWNobyBhJwoJZm9vKCkgewoJCS4vcGZuICIkKGVjaG8gZm9vKSIKCX0KCS4vcGZuICIkKGVjaG8gYikiCgl0eXBlc2V0IC1mIGZvbwpleHBlY3RlZC1zdGRvdXQ6CglhIGIKCWZvbygpIHsKCQkuL3BmbiAiJChlY2hvIGZvbyApIiAKCX0gCi0tLQpuYW1lOiBjb21zdWItdG9ydHVyZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSB0cmVlIGR1bXAgZnVuY3Rpb25zIHdvcmsgY29ycmVjdGx5CnN0ZGluOgoJaWYgW1sgLXogJF9fcHJvZ25hbWUgXV07IHRoZW4gZWNobyA+JjIgY2FsbCBtZSB3aXRoIF9fcHJvZ25hbWU7IGV4aXQgMTsgZmkKCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCWlmIFtbICRsaW5lID0gJyMxJyBdXTsgdGhlbgoJCQlsYXN0Zj0wCgkJCWNvbnRpbnVlCgkJZWxpZiBbWyAkbGluZSA9IEVPRk4qIF1dOyB0aGVuCgkJCWZib2R5PSRmYm9keSQnXG4nJGxpbmUKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lICE9ICcjJyogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcblx0JyRsaW5lCgkJCWNvbnRpbnVlCgkJZmkKCQlpZiAoKCBsYXN0ZiApKTsgdGhlbgoJCQl4PSJpbmxpbmVfJHtuZXh0Zn0oKSB7IiRmYm9keSQnXG59XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiBpbmxpbmVfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQkJeD0iZnVuY3Rpb24gY29tc3ViXyRuZXh0ZiB7IHg9XCQoIiRmYm9keSQnXG4pOyB9XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiBjb21zdWJfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQkJeD0iZnVuY3Rpb24gcmVyZWFkXyRuZXh0ZiB7IHg9XCQoKCIkZmJvZHkkJ1xuKXx0ciB1IHgpOyB9XG4nCgkJCXByaW50IC1uciAtLSAiJHgiCgkJCXByaW50IC1yIC0tICIke3h9dHlwZXNldCAtZiByZXJlYWRfJG5leHRmIiB8ICIkX19wcm9nbmFtZSIKCQlmaQoJCWxhc3RmPTEKCQlmYm9keT0KCQluZXh0Zj0ke2xpbmUjP30KCWRvbmUgPDwnRU9EJwoJIzEKCSNUQ09NCgl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgkjVFBBUkVOX1RQSVBFX1RMSVNUCgkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05OyBlY2hvKQoJI1RBTkRfVE9SCgljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgkjVFNFTEVDVAoJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJI1RGT1JfVFRJTUUKCXRpbWUgIGZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICBlY2hvICAkaSA7ICBkb25lCgkjVENBU0UKCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zOyYgMikgZWNobyB6d2VpICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW47OyAgZXNhYwoJI1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYKCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgkjVFdISUxFCglpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJI1RVTlRJTAoJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgkjVENPUFJPQwoJY2F0ICAqICB8JiAgbHMKCSNURlVOQ1RfVEJSQUNFX1RBU1lOQwoJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICAmICB9CgkjSU9SRUFEX0lPQ0FUCgl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgkjSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQCgljYXQgID58YmFyICA8PCdFT0ZOJwoJZm9vCglFT0ZOCgkjSU9XUklURV9ub0lPQ0xPQl9JT0hFUkVfSU9TS0lQCgljYXQgIDE+YmFyICA8PC1FT0ZJCglmb28KCUVPRkkKCSNJT1JEV1JfSU9EVVAKCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCSNDT01TVUJfRVhQUlNVQgoJZWNobyAkKHRydWUpICQoKDErIDIpKQoJI1FDSEFSX09RVU9URV9DUVVPVEUKCWVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6CgllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgllY2hvICdmb1xvYlwiYVxgcidcJydiXCRheicKCSNPU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUCglbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgkjaGVyZWRvY19jbG9zZWQKCXg9JChjYXQgPDxFT0ZOCglub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJI2hlcmVkb2Nfc3BhY2UKCXg9JChjYXQgPDxFT0ZOXCAKCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4CgkjcGF0Y2hfbW90ZAoJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCglbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoaGVhZCAtMSAvZXRjL21vdGQpIiAhPSAkeCBdXSAmJiBcCgkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJMSwvXlwkL2QKCQkwYQoJCQkkeAoJCgkJLgoJCXdxCglFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCglpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXTsgdGhlbgoJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCglmaQoJI3dkYXJyYXNzaWduCgljYXNlIHggaW4KCXgpIGErPWI7IGMrPShkIGUpCgllc2FjCgkjMAoJRU9ECmV4cGVjdGVkLXN0ZG91dDoKCWlubGluZV9UQ09NKCkgewoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCX0KCWlubGluZV9UQ09NKCkgewoJCXZhcmE9MSB2YXJiPSIyICAzIiBjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsgeD0kKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsKCQl4PSQodmFyYT0xIHZhcmI9IjIgIDMiIGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPTSB7IHg9JCgoCgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPTSB7CgkJeD0kKCggdmFyYT0xIHZhcmI9IjIgIDMiIGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UUEFSRU5fVFBJUEVfVExJU1QoKSB7CgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCX0KCWlubGluZV9UUEFSRU5fVFBJUEVfVExJU1QoKSB7CgkJKCBlY2hvICRmb28gfCB0ciAtZGMgMC05IAoJCSAgZWNobyApIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UUEFSRU5fVFBJUEVfVExJU1QgeyB4PSQoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UUEFSRU5fVFBJUEVfVExJU1QgewoJCXg9JCgoIGVjaG8gJGZvbyB8IHRyIC1kYyAwLTkgOyBlY2hvICkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKCgKCQkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05OyBlY2hvKQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoKCAoIGVjaG8gJGZvbyB8IHRyIC1kYyAwLTkgOyBlY2hvICkgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UQU5EX1RPUigpIHsKCQljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgl9CglpbmxpbmVfVEFORF9UT1IoKSB7CgkJY21kICYmIGVjaG8gamEgfHwgZWNobyBuZWluIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQU5EX1RPUiB7IHg9JCgKCQljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgewoJCXg9JChjbWQgJiYgZWNobyBqYSB8fCBlY2hvIG5laW4gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEFORF9UT1IgeyB4PSQoKAoJCWNtZCAgJiYgIGVjaG8gamEgIHx8ICBlY2hvIG5laW4KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsKCQl4PSQoKCBjbWQgJiYgZWNobyBqYSB8fCBlY2hvIG5laW4gKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCX0KCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCBmaWxlIGluICogCgkJZG8KCQkJZWNobyAiPCRmaWxlPiIgCgkJCWJyZWFrIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RTRUxFQ1QgeyB4PSQoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RTRUxFQ1QgewoJCXg9JChzZWxlY3QgZmlsZSBpbiAqIDsgZG8gZWNobyAiPCRmaWxlPiIgOyBicmVhayA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7IHg9JCgoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7CgkJeD0kKCggc2VsZWN0IGZpbGUgaW4gKiA7IGRvIGVjaG8gIjwkZmlsZT4iIDsgYnJlYWsgOyBkb25lICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVEZPUl9UVElNRSgpIHsKCQl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJfQoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJdGltZSBmb3IgaSBpbiB7MSwyLDN9IAoJCWRvCgkJCWVjaG8gJGkgCgkJZG9uZSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZPUl9UVElNRSB7IHg9JCgKCQl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGT1JfVFRJTUUgewoJCXg9JCh0aW1lIGZvciBpIGluIHsxLDIsM30gOyBkbyBlY2hvICRpIDsgZG9uZSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsgeD0kKCgKCQl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEZPUl9UVElNRSB7CgkJeD0kKCggdGltZSBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gZWNobyAkaSA7IGRvbmUgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ0FTRSgpIHsKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCX0KCWlubGluZV9UQ0FTRSgpIHsKCQljYXNlICRmb28gaW4KCQkoMSkKCQkJZWNobyBlaW5zIAoJCQk7JgoJCSgyKQoJCQllY2hvIHp3ZWkgCgkJCTt8CgkJKCopCgkJCWVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiAKCQkJOzsKCQllc2FjIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7IHg9JCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7CgkJeD0kKGNhc2UgJGZvbyBpbiAoMSkgZWNobyBlaW5zICA7JiAoMikgZWNobyB6d2VpICA7fCAoKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuICA7OyBlc2FjICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsgeD0kKCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsKCQl4PSQoKCBjYXNlICRmb28gaW4gKDEpIGVjaG8gZWlucyAgOyYgKDIpIGVjaG8gendlaSAgO3wgKCopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiAgOzsgZXNhYyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYoKSB7CgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXTsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkKCX0KCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICEgW1sgMSA9IDEgXV0gCgkJdGhlbgoJCQllY2hvIGVpbnMgCgkJZWxpZiBbWyAxID0gMiBdXSAKCQl0aGVuCgkJCWVjaG8gendlaSAKCQllbHNlCgkJCWVjaG8gZHJlaSAKCQlmaSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7IHg9JCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgewoJCXg9JChpZiAhIFtbIDEgPSAxIF1dIDsgdGhlbiBlY2hvIGVpbnMgOyBlbGlmIFtbIDEgPSAyIF1dIDsgdGhlbiBlY2hvIHp3ZWkgOyBlbHNlIGVjaG8gZHJlaSA7IGZpICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoKAoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoKCBpZiAhIFtbIDEgPSAxIF1dIDsgdGhlbiBlY2hvIGVpbnMgOyBlbGlmIFtbIDEgPSAyIF1dIDsgdGhlbiBlY2hvIHp3ZWkgOyBlbHNlIGVjaG8gZHJlaSA7IGZpICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFdISUxFKCkgewoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lCgl9CglpbmxpbmVfVFdISUxFKCkgewoJCWk9MSAKCQl3aGlsZSBsZXQgIiBpIDwgMTAgIiAKCQlkbwoJCQllY2hvICRpIAoJCQlsZXQgKytpIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RXSElMRSB7IHg9JCgKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RXSElMRSB7CgkJeD0kKGk9MSA7IHdoaWxlIGxldCAiIGkgPCAxMCAiIDsgZG8gZWNobyAkaSA7IGxldCArK2kgOyBkb25lICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7IHg9JCgoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7CgkJeD0kKCggaT0xIDsgd2hpbGUgbGV0ICIgaSA8IDEwICIgOyBkbyBlY2hvICRpIDsgbGV0ICsraSA7IGRvbmUgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UVU5USUwoKSB7CgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgOyBkbyBlY2hvICRpOyBkb25lCgl9CglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTAgCgkJdW50aWwgbGV0ICIgIS0taSAiIAoJCWRvCgkJCWVjaG8gJGkgCgkJZG9uZSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFVOVElMIHsgeD0kKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RVTlRJTCB7CgkJeD0kKGk9MTAgOyB1bnRpbCBsZXQgIiAhLS1pICIgOyBkbyBlY2hvICRpIDsgZG9uZSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgeyB4PSQoKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFVOVElMIHsKCQl4PSQoKCBpPTEwIDsgdW50aWwgbGV0ICIgIS0taSAiIDsgZG8gZWNobyAkaSA7IGRvbmUgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ09QUk9DKCkgewoJCWNhdCAgKiAgfCYgIGxzCgl9CglpbmxpbmVfVENPUFJPQygpIHsKCQljYXQgKiB8JiAKCQlscyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPUFJPQyB7IHg9JCgKCQljYXQgICogIHwmICBscwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgewoJCXg9JChjYXQgKiB8JiAgbHMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7IHg9JCgoCgkJY2F0ICAqICB8JiAgbHMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT1BST0MgewoJCXg9JCgoIGNhdCAqIHwmICBscyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCX0KCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiBrb3JuIHsKCQkJZWNobyBlaW5zIAoJCQllY2hvIHp3ZWkgCgkJfSAKCQlib3VybmUoKSB7CgkJCWxvZ2dlciAqICYgCgkJfSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoZnVuY3Rpb24ga29ybiB7IGVjaG8gZWlucyA7IGVjaG8gendlaSA7IH0gOyBib3VybmUoKSB7IGxvZ2dlciAqICYgIH0gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoKCBmdW5jdGlvbiBrb3JuIHsgZWNobyBlaW5zIDsgZWNobyB6d2VpIDsgfSA7IGJvdXJuZSgpIHsgbG9nZ2VyICogJiAgfSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPUkVBRF9JT0NBVCgpIHsKCQl0ciAgeCAgdSAgMDxmb28gID4+YmFyCgl9CglpbmxpbmVfSU9SRUFEX0lPQ0FUKCkgewoJCXRyIHggdSA8Zm9vID4+YmFyIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1JFQURfSU9DQVQgeyB4PSQoCgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0lPUkVBRF9JT0NBVCB7CgkJeD0kKHRyIHggdSA8Zm9vID4+YmFyICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPUkVBRF9JT0NBVCB7IHg9JCgoCgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9SRUFEX0lPQ0FUIHsKCQl4PSQoKCB0ciB4IHUgPGZvbyA+PmJhciApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCgpIHsKCQljYXQgID58YmFyICA8PCdFT0ZOJwoJCWZvbwoJRU9GTgoJfQoJaW5saW5lX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCgpIHsKCQljYXQgPnxiYXIgPDwiRU9GTiIKCQlmb28KCUVPRk4KCQoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAgeyB4PSQoCgkJY2F0ICA+fGJhciAgPDwnRU9GTicKCQlmb28KCUVPRk4KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAgewoJCXg9JChjYXQgPnxiYXIgPDwiRU9GTiIKCQlmb28KCUVPRk4KCSkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCB7IHg9JCgoCgkJY2F0ICA+fGJhciAgPDwnRU9GTicKCQlmb28KCUVPRk4KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUCB7CgkJeD0kKCggY2F0ID58YmFyIDw8IkVPRk4iCgkJZm9vCglFT0ZOCgkpIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCgpIHsKCQljYXQgIDE+YmFyICA8PC1FT0ZJCgkJZm9vCgkJRU9GSQoJfQoJaW5saW5lX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCgpIHsKCQljYXQgPmJhciA8PC1FT0ZJCglmb28KCUVPRkkKCQoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAgeyB4PSQoCgkJY2F0ICAxPmJhciAgPDwtRU9GSQoJCWZvbwoJCUVPRkkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAgewoJCXg9JChjYXQgPmJhciA8PC1FT0ZJCglmb28KCUVPRkkKCSkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCB7IHg9JCgoCgkJY2F0ICAxPmJhciAgPDwtRU9GSQoJCWZvbwoJCUVPRkkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCB7CgkJeD0kKCggY2F0ID5iYXIgPDwtRU9GSQoJZm9vCglFT0ZJCgkpIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPUkRXUl9JT0RVUCgpIHsKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgl9CglpbmxpbmVfSU9SRFdSX0lPRFVQKCkgewoJCXNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSAKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9SRFdSX0lPRFVQIHsgeD0kKAoJCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1JEV1JfSU9EVVAgewoJCXg9JChzaCAxPD4vZGV2L2NvbnNvbGUgPCYxIDI+JjEgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9SRFdSX0lPRFVQIHsgeD0kKCgKCQlzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9JT1JEV1JfSU9EVVAgewoJCXg9JCgoIHNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX0NPTVNVQl9FWFBSU1VCKCkgewoJCWVjaG8gJCh0cnVlKSAkKCgxKyAyKSkKCX0KCWlubGluZV9DT01TVUJfRVhQUlNVQigpIHsKCQllY2hvICQodHJ1ZSApICQoKDErIDIpKSAKCX0gCglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUIgeyB4PSQoCgkJZWNobyAkKHRydWUpICQoKDErIDIpKQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCIHsKCQl4PSQoZWNobyAkKHRydWUgKSAkKCgxKyAyKSkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUIgeyB4PSQoKAoJCWVjaG8gJCh0cnVlKSAkKCgxKyAyKSkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCIHsKCQl4PSQoKCBlY2hvICQodHJ1ZSApICQoKDErIDIpKSApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1FDSEFSX09RVU9URV9DUVVPVEUoKSB7CgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgl9CglpbmxpbmVfUUNIQVJfT1FVT1RFX0NRVU9URSgpIHsKCQllY2hvIGZvXG9iXCJhXGByXCdiXCRheiAKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiIAoJCWVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1FDSEFSX09RVU9URV9DUVVPVEUgeyB4PSQoCgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfUUNIQVJfT1FVT1RFX0NRVU9URSB7CgkJeD0kKGVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6IDsgZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IiA7IGVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfUUNIQVJfT1FVT1RFX0NRVU9URSB7IHg9JCgoCgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9RQ0hBUl9PUVVPVEVfQ1FVT1RFIHsKCQl4PSQoKCBlY2hvIGZvXG9iXCJhXGByXCdiXCRheiA7IGVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIgOyBlY2hvICJmb1xcb2JcXFwiYVxcXGByIlwnImJcXFwkYXoiICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCgpIHsKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgl9CglpbmxpbmVfT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVCgpIHsKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsgeD0kKAoJCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsKCQl4PSQoW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsgeD0kKCgKCQlbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUIHsKCQl4PSQoKCBbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfaGVyZWRvY19jbG9zZWQoKSB7CgkJeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJfQoJaW5saW5lX2hlcmVkb2NfY2xvc2VkKCkgewoJCXg9JChjYXQgPDxFT0ZOCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTgoJKSAKCQllY2hvICR4IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX2Nsb3NlZCB7IHg9JCgKCQl4PSQoY2F0IDw8RU9GTgoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4pOyBlY2hvICR4CgkpOyB9CglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19jbG9zZWQgewoJCXg9JCh4PSQoY2F0IDw8RU9GTgoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4KCSkgOyBlY2hvICR4ICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX2hlcmVkb2NfY2xvc2VkIHsgeD0kKCgKCQl4PSQoY2F0IDw8RU9GTgoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4pOyBlY2hvICR4CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX2Nsb3NlZCB7CgkJeD0kKCggeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOCgkpIDsgZWNobyAkeCApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX2hlcmVkb2Nfc3BhY2UoKSB7CgkJeD0kKGNhdCA8PEVPRk5cIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4Cgl9CglpbmxpbmVfaGVyZWRvY19zcGFjZSgpIHsKCQl4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSAKCQllY2hvICR4IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX3NwYWNlIHsgeD0kKAoJCXg9JChjYXQgPDxFT0ZOXCAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gKTsgZWNobyAkeAoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX2hlcmVkb2Nfc3BhY2UgewoJCXg9JCh4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSA7IGVjaG8gJHggKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfaGVyZWRvY19zcGFjZSB7IHg9JCgoCgkJeD0kKGNhdCA8PEVPRk5cIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX3NwYWNlIHsKCQl4PSQoKCB4PSQoY2F0IDw8RU9GTlwgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSA7IGVjaG8gJHggKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9wYXRjaF9tb3RkKCkgewoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgl9CglpbmxpbmVfcGF0Y2hfbW90ZCgpIHsKCQl4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSApIAoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCApIiAhPSAkeCBdXSAmJiBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCTEsL15cJC9kCgkwYQoJJHgKCQoJLgoJd3EKCUVPRgoJKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZCAKCQlpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXSAKCQl0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCAKCQkJcHJpbnQgLS0gIiR4XG4iID4vZXRjL21vdGQgCgkJZmkgCgl9IAoJZnVuY3Rpb24gY29tc3ViX3BhdGNoX21vdGQgeyB4PSQoCgkJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCgkJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJCSAgICBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCQkJMSwvXlwkL2QKCQkJMGEKCQkJCSR4CgkJCgkJCS4KCQkJd3EKCQlFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQkJaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkCgkJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCgkJZmkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9wYXRjaF9tb3RkIHsKCQl4PSQoeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEgKSA7IFtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCApIiAhPSAkeCBdXSAmJiBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCTEsL15cJC9kCgkwYQoJJHgKCQoJLgoJd3EKCUVPRgoJKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZCA7IGlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dIDsgdGhlbiBpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQgOyBwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZCA7IGZpICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX3BhdGNoX21vdGQgeyB4PSQoKAoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9wYXRjaF9tb3RkIHsKCQl4PSQoKCB4PSQoc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IHNlZCAxcSApIDsgW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkICkiICE9ICR4IF1dICYmIGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRgoJMSwvXlwkL2QKCTBhCgkkeAoJCgkuCgl3cQoJRU9GCgkpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkIDsgaWYgW1sgISAtcyAvZXRjL21vdGQgXV0gOyB0aGVuIGluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCA7IHByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIDsgZmkgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV93ZGFycmFzc2lnbigpIHsKCQljYXNlIHggaW4KCQl4KSBhKz1iOyBjKz0oZCBlKQoJCWVzYWMKCX0KCWlubGluZV93ZGFycmFzc2lnbigpIHsKCQljYXNlIHggaW4KCQkoeCkKCQkJYSs9YiAKCQkJc2V0IC1BIGMrIC0tIGQgZSAKCQkJOzsKCQllc2FjIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl93ZGFycmFzc2lnbiB7IHg9JCgKCQljYXNlIHggaW4KCQl4KSBhKz1iOyBjKz0oZCBlKQoJCWVzYWMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl93ZGFycmFzc2lnbiB7CgkJeD0kKGNhc2UgeCBpbiAoeCkgYSs9YiA7IHNldCAtQSBjKyAtLSBkIGUgIDs7IGVzYWMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfd2RhcnJhc3NpZ24geyB4PSQoKAoJCWNhc2UgeCBpbgoJCXgpIGErPWI7IGMrPShkIGUpCgkJZXNhYwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfd2RhcnJhc3NpZ24gewoJCXg9JCgoIGNhc2UgeCBpbiAoeCkgYSs9YiA7IHNldCAtQSBjKyAtLSBkIGUgIDs7IGVzYWMgKSB8IHRyIHUgeCApIAoJfSAKLS0tCm5hbWU6IGNvbXN1Yi10b3J0dXJlLWlvCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIHRyZWUgZHVtcCBmdW5jdGlvbnMgd29yayBjb3JyZWN0bHkgd2l0aCBJL08gcmVkaXJlY3Rpb24Kc3RkaW46CglpZiBbWyAteiAkX19wcm9nbmFtZSBdXTsgdGhlbiBlY2hvID4mMiBjYWxsIG1lIHdpdGggX19wcm9nbmFtZTsgZXhpdCAxOyBmaQoJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJaWYgW1sgJGxpbmUgPSAnIzEnIF1dOyB0aGVuCgkJCWxhc3RmPTAKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lID0gRU9GTiogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcbickbGluZQoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgIT0gJyMnKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuXHQnJGxpbmUKCQkJY29udGludWUKCQlmaQoJCWlmICgoIGxhc3RmICkpOyB0aGVuCgkJCXg9ImlubGluZV8ke25leHRmfSgpIHsiJGZib2R5JCdcbn1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGlubGluZV8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiBjb21zdWJfJG5leHRmIHsgeD1cJCgiJGZib2R5JCdcbik7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGNvbXN1Yl8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiByZXJlYWRfJG5leHRmIHsgeD1cJCgoIiRmYm9keSQnXG4pfHRyIHUgeCk7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIHJlcmVhZF8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCWZpCgkJbGFzdGY9MQoJCWZib2R5PQoJCW5leHRmPSR7bGluZSM/fQoJZG9uZSA8PCdFT0QnCgkjMQoJI1RDT00KCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkjVFBBUkVOX1RQSVBFX1RMSVNUCgkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05ID4mMzsgZWNobyA+JjMpID4mMwoJI1RBTkRfVE9SCgljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkjVFNFTEVDVAoJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkjVEZPUl9UVElNRQoJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJI1RDQVNFCgljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkjVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRgoJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSNUV0hJTEUKCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSNUVU5USUwKCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkjVENPUFJPQwoJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJI1RGVU5DVF9UQlJBQ0VfVEFTWU5DCglmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJI0NPTVNVQl9FWFBSU1VCCgllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJIzAKCUVPRApleHBlY3RlZC1zdGRvdXQ6CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJfQoJaW5saW5lX1RDT00oKSB7CgkJdmFyYT0xIHZhcmI9IjIgIDMiIGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09NIHsgeD0kKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENPTSB7CgkJeD0kKHZhcmE9MSB2YXJiPSIyICAzIiBjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09NIHsgeD0kKCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPTSB7CgkJeD0kKCggdmFyYT0xIHZhcmI9IjIgIDMiIGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgl9CglpbmxpbmVfVFBBUkVOX1RQSVBFX1RMSVNUKCkgewoJCSggZWNobyAkZm9vIHwgdHIgLWRjIDAtOSA+JjMgCgkJICBlY2hvID4mMyApID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsgeD0kKAoJCShlY2hvICRmb28gIHwgIHRyIC1kYyAwLTkgPiYzOyBlY2hvID4mMykgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFBBUkVOX1RQSVBFX1RMSVNUIHsKCQl4PSQoKCBlY2hvICRmb28gfCB0ciAtZGMgMC05ID4mMyA7IGVjaG8gPiYzICkgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOSA+JjM7IGVjaG8gPiYzKSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCggKCBlY2hvICRmb28gfCB0ciAtZGMgMC05ID4mMyA7IGVjaG8gPiYzICkgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVEFORF9UT1IoKSB7CgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJfQoJaW5saW5lX1RBTkRfVE9SKCkgewoJCWNtZCA+JjMgJiYgZWNobyBqYSA+JjMgfHwgZWNobyBuZWluID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgeyB4PSQoCgkJY21kICA+JjMgJiYgID4mMyBlY2hvIGphICB8fCAgZWNobyA+JjMgbmVpbgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RBTkRfVE9SIHsKCQl4PSQoY21kID4mMyAmJiBlY2hvIGphID4mMyB8fCBlY2hvIG5laW4gPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsgeD0kKCgKCQljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQU5EX1RPUiB7CgkJeD0kKCggY21kID4mMyAmJiBlY2hvIGphID4mMyB8fCBlY2hvIG5laW4gPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCX0KCWlubGluZV9UU0VMRUNUKCkgewoJCXNlbGVjdCBmaWxlIGluICogCgkJZG8KCQkJZWNobyAiPCRmaWxlPiIgCgkJCWJyZWFrID4mMyAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFNFTEVDVCB7IHg9JCgKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsKCQl4PSQoc2VsZWN0IGZpbGUgaW4gKiA7IGRvIGVjaG8gIjwkZmlsZT4iIDsgYnJlYWsgPiYzIDsgZG9uZSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7IHg9JCgoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UU0VMRUNUIHsKCQl4PSQoKCBzZWxlY3QgZmlsZSBpbiAqIDsgZG8gZWNobyAiPCRmaWxlPiIgOyBicmVhayA+JjMgOyBkb25lID4mMyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJfQoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJZm9yIGkgaW4gezEsMiwzfSAKCQlkbwoJCQl0aW1lIGVjaG8gJGkgPiYzIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsgeD0kKAoJCWZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICB0aW1lICA+JjMgZWNobyAgJGkgOyAgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsKCQl4PSQoZm9yIGkgaW4gezEsMiwzfSA7IGRvIHRpbWUgZWNobyAkaSA+JjMgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsgeD0kKCgKCQlmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgdGltZSAgPiYzIGVjaG8gICRpIDsgIGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsKCQl4PSQoKCBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gdGltZSBlY2hvICRpID4mMyA7IGRvbmUgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnMgPiYzOyYgMikgZWNobyB6d2VpID4mMyAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMzs7ICBlc2FjID4mMwoJfQoJaW5saW5lX1RDQVNFKCkgewoJCWNhc2UgJGZvbyBpbgoJCSgxKQoJCQllY2hvIGVpbnMgPiYzIAoJCQk7JgoJCSgyKQoJCQllY2hvIHp3ZWkgPiYzIAoJCQk7fAoJCSgqKQoJCQllY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzIAoJCQk7OwoJCWVzYWMgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7IHg9JCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVENBU0UgewoJCXg9JChjYXNlICRmb28gaW4gKDEpIGVjaG8gZWlucyA+JjMgIDsmICgyKSBlY2hvIHp3ZWkgPiYzICA7fCAoKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAgOzsgZXNhYyA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENBU0UgeyB4PSQoKAoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zID4mMzsmIDIpIGVjaG8gendlaSA+JjMgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjM7OyAgZXNhYyA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsKCQl4PSQoKCBjYXNlICRmb28gaW4gKDEpIGVjaG8gZWlucyA+JjMgIDsmICgyKSBlY2hvIHp3ZWkgPiYzICA7fCAoKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAgOzsgZXNhYyA+JjMgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGKCkgewoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gID4mMyA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dID4mMzsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkgPiYzCgl9CglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAhIFtbIDEgPSAxIF1dID4mMyAKCQl0aGVuCgkJCWVjaG8gZWlucyAKCQllbGlmIFtbIDEgPSAyIF1dID4mMyAKCQl0aGVuCgkJCWVjaG8gendlaSAKCQllbHNlCgkJCWVjaG8gZHJlaSAKCQlmaSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgeyB4PSQoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsKCQl4PSQoaWYgISBbWyAxID0gMSBdXSA+JjMgOyB0aGVuIGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gPiYzIDsgdGhlbiBlY2hvIHp3ZWkgOyBlbHNlIGVjaG8gZHJlaSA7IGZpID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKCgKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA+JjMgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXSA+JjM7IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKCggaWYgISBbWyAxID0gMSBdXSA+JjMgOyB0aGVuIGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gPiYzIDsgdGhlbiBlY2hvIHp3ZWkgOyBlbHNlIGVjaG8gZHJlaSA7IGZpID4mMyApIHwgdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgl9CglpbmxpbmVfVFdISUxFKCkgewoJCWk9MSAKCQl3aGlsZSBsZXQgIiBpIDwgMTAgIiA+JjMgCgkJZG8KCQkJZWNobyAkaSAKCQkJbGV0ICsraSAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFdISUxFIHsgeD0kKAoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UV0hJTEUgewoJCXg9JChpPTEgOyB3aGlsZSBsZXQgIiBpIDwgMTAgIiA+JjMgOyBkbyBlY2hvICRpIDsgbGV0ICsraSA7IGRvbmUgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7IHg9JCgoCgkJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSkgPiYzOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFdISUxFIHsKCQl4PSQoKCBpPTEgOyB3aGlsZSBsZXQgIiBpIDwgMTAgIiA+JjMgOyBkbyBlY2hvICRpIDsgbGV0ICsraSA7IGRvbmUgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgl9CglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTAgCgkJdW50aWwgbGV0ICIgIS0taSAiID4mMyAKCQlkbwoJCQllY2hvICRpIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgeyB4PSQoCgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgPiYzIDsgZG8gZWNobyAkaTsgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgewoJCXg9JChpPTEwIDsgdW50aWwgbGV0ICIgIS0taSAiID4mMyA7IGRvIGVjaG8gJGkgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgeyB4PSQoKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgewoJCXg9JCgoIGk9MTAgOyB1bnRpbCBsZXQgIiAhLS1pICIgPiYzIDsgZG8gZWNobyAkaSA7IGRvbmUgPiYzICkgfCB0ciB1IHggKSAKCX0gCglpbmxpbmVfVENPUFJPQygpIHsKCQljYXQgICogID4mMyB8JiAgPiYzIGxzCgl9CglpbmxpbmVfVENPUFJPQygpIHsKCQljYXQgKiA+JjMgfCYgCgkJbHMgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ09QUk9DIHsgeD0kKAoJCWNhdCAgKiAgPiYzIHwmICA+JjMgbHMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ09QUk9DIHsKCQl4PSQoY2F0ICogPiYzIHwmICBscyA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7IHg9JCgoCgkJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7CgkJeD0kKCggY2F0ICogPiYzIHwmICBscyA+JjMgKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgPiYzICYgIH0KCX0KCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiBrb3JuIHsKCQkJZWNobyBlaW5zIAoJCQllY2hvIHp3ZWkgPiYzIAoJCX0gCgkJYm91cm5lKCkgewoJCQlsb2dnZXIgKiA+JjMgJiAKCQl9IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7IHg9JCgKCQlmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgPiYzICYgIH0KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7CgkJeD0kKGZ1bmN0aW9uIGtvcm4geyBlY2hvIGVpbnMgOyBlY2hvIHp3ZWkgPiYzIDsgfSA7IGJvdXJuZSgpIHsgbG9nZ2VyICogPiYzICYgIH0gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgewoJCXg9JCgoIGZ1bmN0aW9uIGtvcm4geyBlY2hvIGVpbnMgOyBlY2hvIHp3ZWkgPiYzIDsgfSA7IGJvdXJuZSgpIHsgbG9nZ2VyICogPiYzICYgIH0gKSB8IHRyIHUgeCApIAoJfSAKCWlubGluZV9DT01TVUJfRVhQUlNVQigpIHsKCQllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJfQoJaW5saW5lX0NPTVNVQl9FWFBSU1VCKCkgewoJCWVjaG8gJCh0cnVlID4mMyApICQoKDErIDIpKSAKCX0gCglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUIgeyB4PSQoCgkJZWNobyAkKHRydWUgPiYzKSAkKCgxKyAyKSkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9DT01TVUJfRVhQUlNVQiB7CgkJeD0kKGVjaG8gJCh0cnVlID4mMyApICQoKDErIDIpKSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9DT01TVUJfRVhQUlNVQiB7IHg9JCgoCgkJZWNobyAkKHRydWUgPiYzKSAkKCgxKyAyKSkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCIHsKCQl4PSQoKCBlY2hvICQodHJ1ZSA+JjMgKSAkKCgxKyAyKSkgKSB8IHRyIHUgeCApIAoJfSAKLS0tCm5hbWU6IGZ1bnN1Yi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBub24tc3ViZW52aXJvbm1lbnQgY29tbWFuZCBzdWJzdGl0dXRpb24gd29ya3MKc3RkaW46CglzZXQgLWUKCWZvbz1iYXIKCWVjaG8gIm9iICRmb28gLiIKCWVjaG8gIiR7CgkJZWNobyAiaWIgJGZvbyA6IgoJCWZvbz1iYXoKCQllY2hvICJpYSAkZm9vIDoiCgkJZmFsc2UKCX0iIC4KCWVjaG8gIm9hICRmb28gLiIKZXhwZWN0ZWQtc3Rkb3V0OgoJb2IgYmFyIC4KCWliIGJhciA6CglpYSBiYXogOiAuCglvYSBiYXogLgotLS0KbmFtZTogZnVuc3ViLTIKZGVzY3JpcHRpb246CglZb3UgY2FuIG5vdyByZWxpYWJseSB1c2UgbG9jYWwgYW5kIHJldHVybiBpbiBmdW5zdWJzCgkobm90IGV4aXQgdGhvdWdoKQpzdGRpbjoKCXg9cTsgZT0xOyB4PSR7IGVjaG8gYTsgZT0yOyBlY2hvIHgkZTt9OyBlY2hvIDE6eSR4LCRlLCQ/LgoJeD1xOyBlPTE7IHg9JHsgZWNobyBhOyB0eXBlc2V0IGU9MjsgZWNobyB4JGU7fTsgZWNobyAyOnkkeCwkZSwkPy4KCXg9cTsgZT0xOyB4PSR7IGVjaG8gYTsgdHlwZXNldCBlPTI7IHJldHVybiAzOyBlY2hvIHgkZTt9OyBlY2hvIDM6eSR4LCRlLCQ/LgpleHBlY3RlZC1zdGRvdXQ6CgkxOnlhIHgyLDIsMC4KCTI6eWEgeDIsMSwwLgoJMzp5YSwxLDMuCi0tLQpuYW1lOiB0ZXN0LXN0bnplLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaG9ydCBmb3JtIFsgJHggXSB3b3JrcwpzdGRpbjoKCWk9MAoJWyAtbiAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbIC1uICIkeCIgXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICIkeCIgXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2Cgl4PTAKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0nMSAtYSAxID0gMicKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgpleHBlY3RlZC1zdGRvdXQ6CgkxIDAKCTIgMQoJMyAxCgk0IDEKCTUgMAoJNiAwCgk3IDAKCTggMAoJOSAxCgkxMCAxCgkxMSAwCgkxMiAwCi0tLQpuYW1lOiB0ZXN0LXN0bnplLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaG9ydCBmb3JtIFtbICR4IF1dIHdvcmtzIChrc2g5MyBleHRlbnNpb24pCnN0ZGluOgoJaT0wCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0wCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0nMSAtYSAxID0gMicKCVtbIC1uICR4IF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICR4IF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbIC1uICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CmV4cGVjdGVkLXN0ZG91dDoKCTEgMQoJMiAxCgkzIDEKCTQgMQoJNSAwCgk2IDAKCTcgMAoJOCAwCgk5IDAKCTEwIDAKCTExIDAKCTEyIDAKLS0tCm5hbWU6IGV2ZW50LXN1YnN0LTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICchJyBzdWJzdGl0dXRpb24gaW4gbm9uaW50ZXJhY3RpdmUgbW9kZSBpcyBpZ25vcmVkCmZpbGUtc2V0dXA6IGZpbGUgNzU1ICJmYWxzZXR0byIKCSMhIC9iaW4vc2gKCWVjaG8gbW9sdG8gYmVuZQoJZXhpdCA0MgpmaWxlLXNldHVwOiBmaWxlIDc1NSAiIWZhbHNlIgoJIyEgL2Jpbi9zaAoJZWNobyBzaQpzdGRpbjoKCWV4cG9ydCBQQVRIPS46JFBBVEgKCWZhbHNldHRvCgllY2hvIHllYXAKCSFmYWxzZQoJZWNobyBtZW93CgkhIGZhbHNlCgllY2hvID0gJD8KCWlmCgkhIGZhbHNlOyB0aGVuIGVjaG8gZm9vOyBlbHNlIGVjaG8gYmFyOyBmaQpleHBlY3RlZC1zdGRvdXQ6Cgltb2x0byBiZW5lCgl5ZWFwCglzaQoJbWVvdwoJPSAwCglmb28KLS0tCm5hbWU6IGV2ZW50LXN1YnN0LTAKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICchJyBzdWJzdGl0dXRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSBpcyBpZ25vcmVkCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpmaWxlLXNldHVwOiBmaWxlIDc1NSAiZmFsc2V0dG8iCgkjISAvYmluL3NoCgllY2hvIG1vbHRvIGJlbmUKCWV4aXQgNDIKZmlsZS1zZXR1cDogZmlsZSA3NTUgIiFmYWxzZSIKCSMhIC9iaW4vc2gKCWVjaG8gc2kKc3RkaW46CglleHBvcnQgUEFUSD0uOiRQQVRICglmYWxzZXR0bwoJZWNobyB5ZWFwCgkhZmFsc2UKCWVjaG8gbWVvdwoJISBmYWxzZQoJZWNobyA9ICQ/CglpZgoJISBmYWxzZTsgdGhlbiBlY2hvIGZvbzsgZWxzZSBlY2hvIGJhcjsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJbW9sdG8gYmVuZQoJeWVhcAoJc2kKCW1lb3cKCT0gMAoJZm9vCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLy4qLwotLS0KbmFtZTogbm91bnNldC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC11IiBtYXRjaGVzIChmdXR1cmUpIFNVU3Y0IHJlcXVpcmVtZW50CnN0ZGluOgoJKHNldCAtdQoJdHJ5KCkgewoJCWxvY2FsIHYKCQlldmFsIHY9XCQkMQoJCWlmIFtbIC1uICR2IF1dOyB0aGVuCgkJCWVjaG8gJDE9bnoKCQllbHNlCgkJCWVjaG8gJDE9emYKCQlmaQoJfQoJeD15CgkoZWNobyAkeCkKCWVjaG8gPTEKCShlY2hvICR5KQoJZWNobyA9MgoJKHRyeSB4KQoJZWNobyA9MwoJKHRyeSB5KQoJZWNobyA9NAoJKHRyeSAwKQoJZWNobyA9NQoJKHRyeSAyKQoJZWNobyA9NgoJKHRyeSkKCWVjaG8gPTcKCShlY2hvIGF0PSRAKQoJZWNobyA9OAoJKGVjaG8gYXN0ZXJpc2s9JCopCgllY2hvID05CgkoZWNobyAkPykKCWVjaG8gPTEwCgkoZWNobyAkISkKCWVjaG8gPTExCgkoZWNobyAkLSkKCWVjaG8gPTEyCgkjKGVjaG8gJF8pCgkjZWNobyA9MTMKCShlY2hvICQjKQoJZWNobyA9MTQKCShteXBpZD0kJDsgdHJ5IG15cGlkKQoJZWNobyA9MTUKCSkgMj4mMSB8IHNlZCAtZSAncy9eW15dXSpdLy8nIC1lICdzL15bXjpdKjogKi8vJwpleHBlY3RlZC1zdGRvdXQ6Cgl5Cgk9MQoJeTogcGFyYW1ldGVyIG5vdCBzZXQKCT0yCgl4PW56Cgk9MwoJeTogcGFyYW1ldGVyIG5vdCBzZXQKCT00CgkwPW56Cgk9NQoJMjogcGFyYW1ldGVyIG5vdCBzZXQKCT02CgkxOiBwYXJhbWV0ZXIgbm90IHNldAoJPTcKCWF0PQoJPTgKCWFzdGVyaXNrPQoJPTkKCTAKCT0xMAoJITogcGFyYW1ldGVyIG5vdCBzZXQKCT0xMQoJdXNoCgk9MTIKCTAKCT0xNAoJbXlwaWQ9bnoKCT0xNQotLS0KbmFtZTogbmFtZXJlZi0xCmRlc2NyaXB0aW9uOgoJVGVzdHN1aXRlIGZvciBuYW1lcmVmIChib3VuZCB2YXJpYWJsZXMpCnN0ZGluOgoJYmFyPWdsb2JhbAoJdHlwZXNldCAtbiBpcjI9YmFyCgl0eXBlc2V0IC1uIGluZD1pcjIKCWVjaG8gIWluZDogJHshaW5kfQoJZWNobyBpbmQ6ICRpbmQKCWVjaG8gIWlyMjogJHshaXIyfQoJZWNobyBpcjI6ICRpcjIKCXR5cGVzZXQgK24gaW5kCgllY2hvICFpbmQ6ICR7IWluZH0KCWVjaG8gaW5kOiAkaW5kCgl0eXBlc2V0IC1uIGlyMj1pbmQKCWVjaG8gIWlyMjogJHshaXIyfQoJZWNobyBpcjI6ICRpcjIKCXNldHxncmVwIF5pcjJ8c2VkICdzL14vczE6IC8nCgl0eXBlc2V0fGdyZXAgJyBpcjInfHNlZCAtZSAncy9eL3MyOiAvJyAtZSAncy9uYW1lcmVmL3R5cGVzZXQgLW4vJwoJc2V0IC1BIGJsdWIgLS0gZTEgZTIgZTMKCXR5cGVzZXQgLW4gaW5kPWJsdWIKCXR5cGVzZXQgLW4gaXIyPWJsdWJbMl0KCWVjaG8gIWluZFsxXTogJHshaW5kWzFdfQoJZWNobyAhaXIyOiAkIWlyMgoJZWNobyBpbmRbMV06ICR7aW5kWzFdfQoJZWNobyBpcjI6ICRpcjIKZXhwZWN0ZWQtc3Rkb3V0OgoJIWluZDogYmFyCglpbmQ6IGdsb2JhbAoJIWlyMjogYmFyCglpcjI6IGdsb2JhbAoJIWluZDogaW5kCglpbmQ6IGlyMgoJIWlyMjogaW5kCglpcjI6IGlyMgoJczE6IGlyMj1pbmQKCXMyOiB0eXBlc2V0IC1uIGlyMgoJIWluZFsxXTogMQoJIWlyMjogaXIyCglpbmRbMV06IGUyCglpcjI6IGUzCi0tLQpuYW1lOiBuYW1lcmVmLTJkYQpkZXNjcmlwdGlvbjoKCVRlc3RzdWl0ZSBmb3IgbmFtZXJlZiAoYm91bmQgdmFyaWFibGVzKQoJRnVuY3Rpb25zLCBhcmd1bWVudCBnaXZlbiBkaXJlY3RseSwgYWZ0ZXIgbG9jYWwKc3RkaW46CglmdW5jdGlvbiBmb28gewoJCXR5cGVzZXQgYmFyPWxva2FsIGJhej1hdWNoCgkJdHlwZXNldCAtbiB2PWJhcgoJCWVjaG8gZW50ZXJpbmcKCQllY2hvICF2OiAkeyF2fQoJCWVjaG8gIWJhcjogJHshYmFyfQoJCWVjaG8gIWJhejogJHshYmF6fQoJCWVjaG8gYmFyOiAkYmFyCgkJZWNobyB2OiAkdgoJCXY9MTIzCgkJZWNobyBiYXI6ICRiYXIKCQllY2hvIHY6ICR2CgkJZWNobyBleGl0aW5nCgl9CgliYXI9Z2xvYmFsCgllY2hvIGJhcjogJGJhcgoJZm9vIGJhcgoJZWNobyBiYXI6ICRiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyOiBnbG9iYWwKCWVudGVyaW5nCgkhdjogYmFyCgkhYmFyOiBiYXIKCSFiYXo6IGJhegoJYmFyOiBsb2thbAoJdjogbG9rYWwKCWJhcjogMTIzCgl2OiAxMjMKCWV4aXRpbmcKCWJhcjogZ2xvYmFsCi0tLQpuYW1lOiBuYW1lcmVmLTMKZGVzY3JpcHRpb246CglBZHZhbmNlZCB0ZXN0c3VpdGUgZm9yIGJvdW5kIHZhcmlhYmxlcyAoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46Cgl0eXBlc2V0IC1uIGZvbz1iYXJbaV0KCXNldCAtQSBiYXIgLS0gYiBjIGEKCWZvciBpIGluIDAgMSAyIDM7IGRvCgkJcHJpbnQgJGkgJGZvbyAuCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTAgYiAuCgkxIGMgLgoJMiBhIC4KCTMgLgotLS0KbmFtZTogbmFtZXJlZi00CmRlc2NyaXB0aW9uOgoJRW5zdXJlIHdlIGRvbid0IHJ1biBpbiBhbiBpbmZpbml0ZSBsb29wCnRpbWUtbGltaXQ6IDMKc3RkaW46CgliYXooKSB7CgkJdHlwZXNldCAtbiBmb289Zm9vCgkJZm9vWzBdPWJhcgoJfQoJc2V0IC1BIGZvbyBiYWQKCWVjaG8gc2luZCAkZm9vIC4KCWJhegoJZWNobyBibGFoICRmb28gLgpleHBlY3RlZC1zdGRvdXQ6CglzaW5kIGJhZCAuCglibGFoIGJhciAuCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICggKGVjaG8gZnViYXIpfHRyIHUgeCk7IHRoZW4KCQllY2hvIGphCgllbHNlCgkJZWNobyBuZWluCglmaQpleHBlY3RlZC1zdGRvdXQ6CglmeGJhcgoJamEKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMWIKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJZWNobyAkKCAoZWNobyBmdWJhcil8dHIgdSB4KSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCggKGVjaG8gZnViYXIpfHRyIHUgeCk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoKGVjaG8gZnViYXIpfHRyIHUgeCk7IHRoZW4KCQllY2hvIGphCgllbHNlCgkJZWNobyBuZWluCglmaQpleHBlY3RlZC1zdGRvdXQ6CglmeGJhcgoJamEKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmIKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJZWNobyAkKChlY2hvIGZ1YmFyKXx0ciB1IHgpICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmMKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJeD0kKChlY2hvIGZ1YmFyKXx0ciB1IHgpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtM2EKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJaWYgKCAoZWNobyBmdWJhcil8KHRyIHUgeCkpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCggKGVjaG8gZnViYXIpfCh0ciB1IHgpKSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCggKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgZWNobyAkeCAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICgoZWNobyBmdWJhcil8KHRyIHUgeCkpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCgoZWNobyBmdWJhcil8KHRyIHUgeCkpICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtNGMKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJeD0kKChlY2hvIGZ1YmFyKXwodHIgdSB4KSk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogZWNoby10ZXN0LTEKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzIChta3NoKQpzdGRpbjoKCWVjaG8gLW4gJ2Zvb1x4NDBiYXInCgllY2hvIC1lICdcdGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vQGJhcgliYXoKLS0tCm5hbWU6IGVjaG8tdGVzdC0yCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcyAoUE9TSVgpCglOb3RlOiB0aGlzIGZvbGxvd3MgRGViaWFuIFBvbGljeSAxMC40IHdoaWNoIG1hbmRhdGVzCgl0aGF0IC1uIHNoYWxsIGJlIHRyZWF0ZWQgYXMgYW4gb3B0aW9uLCBub3QgWFNJIHdoaWNoCgltYW5kYXRlcyBpdCBzaGFsbCBiZSB0cmVhdGVkIGFzIHN0cmluZyBidXQgZXNjYXBlcwoJc2hhbGwgYmUgZXhwYW5kZWQuCnN0ZGluOgoJdGVzdCAtbiAiJFBPU0hfVkVSU0lPTiIgfHwgc2V0IC1vIHBvc2l4CgllY2hvIC1uICdmb29ceDQwYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb1x4NDBiYXItZSBcdGJhegotLS0KbmFtZTogZWNoby10ZXN0LTMtbW5ic2QKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzLCBhbmQgdGVzdCBhIGNvbXBhdGliaWxpdHkgZmxhZy4KY2F0ZWdvcnk6IG1uYnNkYXNoCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyAtbiAxPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKCSIkX19wcm9nbmFtZSIgLW8gcG9zaXggLWMgJ2VjaG8gLW4gMj1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHNoIC1jICdlY2hvIC1uIDM9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgpleHBlY3RlZC1zdGRvdXQ6CgkxPUBmb28uCgkyPVx4NDBmb28tZSBceDJFCgkzPVx4NDBiYXIuCi0tLQpuYW1lOiBlY2hvLXRlc3QtMy1ub3JtYWwKZGVzY3JpcHRpb246CglUZXN0IHdoYXQgdGhlIGVjaG8gYnVpbHRpbiBkb2VzLCBhbmQgdGVzdCBhIGNvbXBhdGliaWxpdHkgZmxhZy4KY2F0ZWdvcnk6ICFtbmJzZGFzaApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDQwZm9vLWUgXHgyRQoJMz1ceDQwZm9vLWUgXHgyRQotLS0KbmFtZTogdXRpbGl0aWVzLWdldG9wdHMtMQpkZXNjcmlwdGlvbjoKCWdldG9wdHMgc2V0cyBPUFRJTkQgY29ycmVjdGx5IGZvciB1bnBhcnNlZCBvcHRpb24Kc3RkaW46CglzZXQgLS0gLWEgLWEgLXgKCXdoaWxlIGdldG9wdHMgOmEgb3B0YzsgZG8KCSAgICBlY2hvICJPUFRBUkc9JE9QVEFSRywgT1BUSU5EPSRPUFRJTkQsIG9wdGM9JG9wdGMuIgoJZG9uZQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCU9QVEFSRz0sIE9QVElORD0yLCBvcHRjPWEuCglPUFRBUkc9LCBPUFRJTkQ9Mywgb3B0Yz1hLgoJT1BUQVJHPXgsIE9QVElORD00LCBvcHRjPT8uCglkb25lCi0tLQpuYW1lOiB1dGlsaXRpZXMtZ2V0b3B0cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgT1BUQVJHCnN0ZGluOgoJc2V0IC0tIC1hIE1hcnkgLXgKCXdoaWxlIGdldG9wdHMgYTogb3B0YzsgZG8KCSAgICBlY2hvICJPUFRBUkc9JE9QVEFSRywgT1BUSU5EPSRPUFRJTkQsIG9wdGM9JG9wdGMuIgoJZG9uZQoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCU9QVEFSRz1NYXJ5LCBPUFRJTkQ9Mywgb3B0Yz1hLgoJT1BUQVJHPSwgT1BUSU5EPTQsIG9wdGM9Py4KCWRvbmUKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi14LipvcHRpb24vCi0tLQpuYW1lOiB3Y3N3aWR0aC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIG5ldyB3Y3N3aWR0aCBmZWF0dXJlCnN0ZGluOgoJcz3kvZUKCXNldCArVQoJcHJpbnQgb2N0ZXRzOiAkeyNzfSAuCglwcmludCA4LWJpdCB3aWR0aDogJHslc30gLgoJc2V0IC1VCglwcmludCBjaGFyYWN0ZXJzOiAkeyNzfSAuCglwcmludCBjb2x1bW5zOiAkeyVzfSAuCglzPe+/vQoJc2V0ICtVCglwcmludCBvY3RldHM6ICR7I3N9IC4KCXByaW50IDgtYml0IHdpZHRoOiAkeyVzfSAuCglzZXQgLVUKCXByaW50IGNoYXJhY3RlcnM6ICR7I3N9IC4KCXByaW50IGNvbHVtbnM6ICR7JXN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJb2N0ZXRzOiAzIC4KCTgtYml0IHdpZHRoOiAtMSAuCgljaGFyYWN0ZXJzOiAxIC4KCWNvbHVtbnM6IDIgLgoJb2N0ZXRzOiAzIC4KCTgtYml0IHdpZHRoOiAzIC4KCWNoYXJhY3RlcnM6IDEgLgoJY29sdW1uczogMSAuCi0tLQpuYW1lOiB3Y3N3aWR0aC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAlICQlIC4KCXNldCAtVQoJeD0nYQliJwoJcHJpbnQgYyAkeyV4fSAuCglzZXQgK1UKCXg9J2EJYicKCXByaW50IGQgJHsleH0gLgpleHBlY3RlZC1zdGRvdXQ6CgklICQlIC4KCWMgLTEgLgoJZCAtMSAuCi0tLQpuYW1lOiB3Y3N3aWR0aC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyV9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGEKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXByaW50ICR7JSp9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGIKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCXByaW50ICR7JUB9IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogd2Nzd2lkdGgtNGMKZGVzY3JpcHRpb246CglDaGVjayBzb21lIGNvcm5lciBjYXNlcwpzdGRpbjoKCToKCXByaW50ICR7JT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAuCi0tLQpuYW1lOiByZWFscGF0aC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJvcGVyIHJldHVybiB2YWx1ZXMgZm9yIHJlYWxwYXRoCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46Cgl3ZD0kKHJlYWxwYXRoIC4pCglta2RpciBkaXIKCTo+ZmlsZQoJOj5kaXIvZmlsZQoJbG4gLXMgZGlyIGxuZGlyCglsbiAtcyBmaWxlIGxuZmlsZQoJbG4gLXMgbml4IGxubml4CglsbiAtcyAuIGxuc2VsZgoJaT0wCgljaGsoKSB7CgkJdHlwZXNldCB4IHkKCQl4PSQocmVhbHBhdGggIiR3ZC8kMSIgMj4mMSk7IHk9JD8KCQlwcmludCAkKCgrK2kpKSAiPyQxIiA9JHt4IyMqJHdkL30gISR5Cgl9CgljaGsgZGlyCgljaGsgZGlyLwoJY2hrIGRpci9maWxlCgljaGsgZGlyL25peAoJY2hrIGZpbGUKCWNoayBmaWxlLwoJY2hrIGZpbGUvZmlsZQoJY2hrIGZpbGUvbml4CgljaGsgbml4CgljaGsgbml4LwoJY2hrIG5peC9maWxlCgljaGsgbml4L25peAoJY2hrIGxuZGlyCgljaGsgbG5kaXIvCgljaGsgbG5kaXIvZmlsZQoJY2hrIGxuZGlyL25peAoJY2hrIGxuZmlsZQoJY2hrIGxuZmlsZS8KCWNoayBsbmZpbGUvZmlsZQoJY2hrIGxuZmlsZS9uaXgKCWNoayBsbm5peAoJY2hrIGxubml4LwoJY2hrIGxubml4L2ZpbGUKCWNoayBsbm5peC9uaXgKCWNoayBsbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYKCXJtIGxuc2VsZgpleHBlY3RlZC1zdGRvdXQ6CgkxID9kaXIgPWRpciAhMAoJMiA/ZGlyLyA9ZGlyICEwCgkzID9kaXIvZmlsZSA9ZGlyL2ZpbGUgITAKCTQgP2Rpci9uaXggPWRpci9uaXggITAKCTUgP2ZpbGUgPWZpbGUgITAKCTYgP2ZpbGUvID1maWxlLzogTm90IGEgZGlyZWN0b3J5ICEyMAoJNyA/ZmlsZS9maWxlID1maWxlL2ZpbGU6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTggP2ZpbGUvbml4ID1maWxlL25peDogTm90IGEgZGlyZWN0b3J5ICEyMAoJOSA/bml4ID1uaXggITAKCTEwID9uaXgvID1uaXggITAKCTExID9uaXgvZmlsZSA9bml4L2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTEyID9uaXgvbml4ID1uaXgvbml4OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkxMyA/bG5kaXIgPWRpciAhMAoJMTQgP2xuZGlyLyA9ZGlyICEwCgkxNSA/bG5kaXIvZmlsZSA9ZGlyL2ZpbGUgITAKCTE2ID9sbmRpci9uaXggPWRpci9uaXggITAKCTE3ID9sbmZpbGUgPWZpbGUgITAKCTE4ID9sbmZpbGUvID1sbmZpbGUvOiBOb3QgYSBkaXJlY3RvcnkgITIwCgkxOSA/bG5maWxlL2ZpbGUgPWxuZmlsZS9maWxlOiBOb3QgYSBkaXJlY3RvcnkgITIwCgkyMCA/bG5maWxlL25peCA9bG5maWxlL25peDogTm90IGEgZGlyZWN0b3J5ICEyMAoJMjEgP2xubml4ID1uaXggITAKCTIyID9sbm5peC8gPW5peCAhMAoJMjMgP2xubml4L2ZpbGUgPWxubml4L2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTI0ID9sbm5peC9uaXggPWxubml4L25peDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAhMgoJMjUgP2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZiA9bG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmOiBUb28gbWFueSBsZXZlbHMgb2Ygc3ltYm9saWMgbGlua3MgITYyCi0tLQpuYW1lOiByZWFscGF0aC0yCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRoYXQgZXhhY3RseSB0d28gbGVhZGluZyBzbGFzaGVzIGFyZSBub3QgY29sbGFwc2VkCglQT1NJWCBndWFyYW50ZWVzIHRoaXMgZXhjZXB0aW9uLCBlLmcuIGZvciBVTkMgcGF0aHMgb24gQ3lnd2luCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46CglsbiAtcyAvYmluIHQxCglsbiAtcyAvL2JpbiB0MgoJbG4gLXMgLy8vYmluIHQzCglyZWFscGF0aCAvYmluCglyZWFscGF0aCAvL2JpbgoJcmVhbHBhdGggLy8vYmluCglyZWFscGF0aCAvdXNyL2JpbgoJcmVhbHBhdGggL3Vzci8vYmluCglyZWFscGF0aCAvdXNyLy8vYmluCglyZWFscGF0aCB0MQoJcmVhbHBhdGggdDIKCXJlYWxwYXRoIHQzCglybSAtZiB0MSB0MiB0MwoJY2QgLy91c3IvYmluCglwd2QKCWNkIC4uL2xpYgoJcHdkCglyZWFscGF0aCAvL3Vzci9pbmNsdWRlLy4uL2JpbgpleHBlY3RlZC1zdGRvdXQ6CgkvYmluCgkvL2JpbgoJL2JpbgoJL3Vzci9iaW4KCS91c3IvYmluCgkvdXNyL2JpbgoJL2JpbgoJLy9iaW4KCS9iaW4KCS8vdXNyL2JpbgoJLy91c3IvbGliCgkvL3Vzci9iaW4KLS0tCm5hbWU6IGNyYXNoLTEKZGVzY3JpcHRpb246CglDcmFzaGVkIGR1cmluZyBNYXJjaCAyMDExLCBmaXhlZCBvbiB2ZXJuYWwgZXF1aW7FjXgg4pi6CmNhdGVnb3J5OiBvczptaXJic2Qsb3M6b3BlbmJzZApzdGRpbjoKCWV4cG9ydCBNQUxMT0NfT1BUSU9OUz1GR0pQUlNYCgkiJF9fcHJvZ25hbWUiIC1jICd4PSQodHIgeiByIDw8PGJheik7IGVjaG8gJHgnCmV4cGVjdGVkLXN0ZG91dDoKCWJhcgotLS0KbmFtZTogZGViaWFuLTExNy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0IFwoICEgLWUgXCkgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTEKLS0tCm5hbWU6IGRlYmlhbi0xMTctMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCBcKCAgLWUgXCkgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGRlYmlhbi0xMTctMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCAhIC1lICA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMQotLS0KbmFtZTogZGViaWFuLTExNy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0ICAtZSAgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGNhc2UtenNoCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB6c2ggY2FzZSB2YXJpYW50cyB3b3JrCnN0ZGluOgoJY2FzZSAnYicgaW4KCSAgYSkgZWNobyBhIDs7CgkgIGIpIGVjaG8gYiA7OwoJICBjKSBlY2hvIGMgOzsKCSAgKikgZWNobyB4IDs7Cgllc2FjCgllY2hvID0KCWNhc2UgJ2InIGluCgkgIGEpIGVjaG8gYSA7JgoJICBiKSBlY2hvIGIgOyYKCSAgYykgZWNobyBjIDsmCgkgICopIGVjaG8geCA7JgoJZXNhYwoJZWNobyA9CgljYXNlICdiJyBpbgoJICBhKSBlY2hvIGEgO3wKCSAgYikgZWNobyBiIDt8CgkgIGMpIGVjaG8gYyA7fAoJICAqKSBlY2hvIHggO3wKCWVzYWMKZXhwZWN0ZWQtc3Rkb3V0OgoJYgoJPQoJYgoJYwoJeAoJPQoJYgoJeAotLS0KbmFtZTogY2FzZS1icmFjZXMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGNhc2UgZW5kIHRva2VucyBhcmUgbm90IG1peGVkIHVwIChEZWJpYW4gIzIyMDI3MikKc3RkaW46CglpPTAKCWZvciB2YWx1ZSBpbiAneCcgJ30nICdlc2FjJzsgZG8KCQlwcmludCAtbiAiJCgoKytpKSkoJHZhbHVlKWJvdXJuZSAiCgkJY2FzZSAkdmFsdWUgaW4KCQl9KSBlY2hvIGJyYWNlIDs7CgkJKikgZWNobyBubyA7OwoJCWVzYWMKCQlwcmludCAtbiAiJCgoKytpKSkoJHZhbHVlKWtvcm4gIgoJCWNhc2UgJHZhbHVlIHsKCQllc2FjKSBlY2hvIGVzYWMgOzsKCQkqKSBlY2hvIG5vIDs7CgkJfQoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxKHgpYm91cm5lIG5vCgkyKHgpa29ybiBubwoJMyh9KWJvdXJuZSBicmFjZQoJNCh9KWtvcm4gbm8KCTUoZXNhYylib3VybmUgbm8KCTYoZXNhYylrb3JuIGVzYWMKLS0tCm5hbWU6IGNvbW1hbmQtc2hpZnQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICdjb21tYW5kIHNoaWZ0JyB3b3JrcwpzdGRpbjoKCWZ1bmN0aW9uIHNuYyB7CgkJZWNobyAiYmVmb3JlCTA9JyQwJyAxPSckMScgMj0nJDInIgoJCXNoaWZ0CgkJZWNobyAiYWZ0ZXIJMD0nJDAnIDE9JyQxJyAyPSckMiciCgl9CglmdW5jdGlvbiBzd2MgewoJCWVjaG8gImJlZm9yZQkwPSckMCcgMT0nJDEnIDI9JyQyJyIKCQljb21tYW5kIHNoaWZ0CgkJZWNobyAiYWZ0ZXIJMD0nJDAnIDE9JyQxJyAyPSckMiciCgl9CgllY2hvID0gd2l0aG91dCBjb21tYW5kCglzbmMg5LiAIOS6jAoJZWNobyA9IHdpdGggY29tbWFuZAoJc3djIOS4gCDkuowKCWVjaG8gPSBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCT0gd2l0aG91dCBjb21tYW5kCgliZWZvcmUJMD0nc25jJyAxPSfkuIAnIDI9J+S6jCcKCWFmdGVyCTA9J3NuYycgMT0n5LqMJyAyPScnCgk9IHdpdGggY29tbWFuZAoJYmVmb3JlCTA9J3N3YycgMT0n5LiAJyAyPSfkuownCglhZnRlcgkwPSdzd2MnIDE9J+S6jCcgMj0nJwoJPSBkb25lCi0tLQpuYW1lOiBkdWZmcy1kZXZpY2UKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBjb21waWxlciBkaWQgbm90IG9wdGltaXNlLWJyZWFrIHRoZW0KCShsZXguYyBoYXMgZ290IGEgc2ltaWxhciBvbmUgaW4gU0hFUkVERUxJTSkKc3RkaW46CglzZXQgK1UKCXM9Cgl0eXBlc2V0IC1pMSBpPTAKCXdoaWxlICgoICsraSA8IDI1NiApKTsgZG8KCQlzKz0ke2kjMSN9Cglkb25lCglzKz0kJ1x4QzJceEEwXHhFMlx4ODJceEFDXHhFRlx4QkZceEJEXHhFRlx4QkZceEJFXHhFRlx4QkZceEJGXHhGMFx4OTBceDgwXHg4MC4nCgl0eXBlc2V0IC1wIHMKZXhwZWN0ZWQtc3Rkb3V0OgoJdHlwZXNldCBzPSQnXDAwMVwwMDJcMDAzXDAwNFwwMDVcMDA2XGFcYlx0XG5cdlxmXHJcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXEVcMDM0XDAzNVwwMzZcMDM3ICEiIyQlJlwwNDcoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+XDE3N1wyMDBcMjAxXDIwMlwyMDNcMjA0XDIwNVwyMDZcMjA3XDIxMFwyMTFcMjEyXDIxM1wyMTRcMjE1XDIxNlwyMTdcMjIwXDIyMVwyMjJcMjIzXDIyNFwyMjVcMjI2XDIyN1wyMzBcMjMxXDIzMlwyMzNcMjM0XDIzNVwyMzZcMjM3XDI0MFwyNDFcMjQyXDI0M1wyNDRcMjQ1XDI0NlwyNDdcMjUwXDI1MVwyNTJcMjUzXDI1NFwyNTVcMjU2XDI1N1wyNjBcMjYxXDI2MlwyNjNcMjY0XDI2NVwyNjZcMjY3XDI3MFwyNzFcMjcyXDI3M1wyNzRcMjc1XDI3NlwyNzdcMzAwXDMwMVwzMDJcMzAzXDMwNFwzMDVcMzA2XDMwN1wzMTBcMzExXDMxMlwzMTNcMzE0XDMxNVwzMTZcMzE3XDMyMFwzMjFcMzIyXDMyM1wzMjRcMzI1XDMyNlwzMjdcMzMwXDMzMVwzMzJcMzMzXDMzNFwzMzVcMzM2XDMzN1wzNDBcMzQxXDM0MlwzNDNcMzQ0XDM0NVwzNDZcMzQ3XDM1MFwzNTFcMzUyXDM1M1wzNTRcMzU1XDM1NlwzNTdcMzYwXDM2MVwzNjJcMzYzXDM2NFwzNjVcMzY2XDM2N1wzNzBcMzcxXDM3MlwzNzNcMzc0XDM3NVwzNzZcMzc3XHUwMEEwXHUyMEFDXHVGRkZEXDM1N1wyNzdcMjc2XDM1N1wyNzdcMjc3XDM2MFwyMjBcMjAwXDIwMC4nCi0tLQpuYW1lOiBzdGF0ZXB0ci11bmRlcmZsb3cKZGVzY3JpcHRpb246CglUaGlzIGNoZWNrIG92ZXJmbG93cyBhbiBYcmVzdHBvcyBzdG9yZWQgaW4gYSBzaG9ydCBpbiBSNDAKY2F0ZWdvcnk6IGZhc3Rib3gKc3RkaW46CglmdW5jdGlvbiBMYjY0ZGVjb2RlIHsKCQlbWyAtbyB1dGY4LW1vZGUgXV07IGxvY2FsIHU9JD8KCQlzZXQgK1UKCQlsb2NhbCBjIHM9IiQqIiB0PQoJCVtbIC1uICRzIF1dIHx8IHsgcz0kKGNhdDtwcmludCB4KTsgcz0ke3MleH07IH0KCQlsb2NhbCAtaSBpPTAgbj0keyNzfSBwPTAgdiB4CgkJbG9jYWwgLWkxNiBvCgkKCQl3aGlsZSAoKCBpIDwgbiApKTsgZG8KCQkJYz0ke3M6KGkrKyk6MX0KCQkJY2FzZSAkYyB7CgkJCSg9KQlicmVhayA7OwoJCQkoW0EtWl0pCSgoIHYgPSAxIyRjIC0gNjUgKSkgOzsKCQkJKFthLXpdKQkoKCB2ID0gMSMkYyAtIDcxICkpIDs7CgkJCShbMC05XSkJKCggdiA9IDEjJGMgKyA0ICkpIDs7CgkJCSgrKQl2PTYyIDs7CgkJCSgvKQl2PTYzIDs7CgkJCSgqKQljb250aW51ZSA7OwoJCQl9CgkJCSgoIHggPSAoeCA8PCA2KSB8IHYgKSkKCQkJY2FzZSAkKChwKyspKSB7CgkJCSgwKQljb250aW51ZSA7OwoJCQkoMSkJKCggbyA9ICh4ID4+IDQpICYgMjU1ICkpIDs7CgkJCSgyKQkoKCBvID0gKHggPj4gMikgJiAyNTUgKSkgOzsKCQkJKDMpCSgoIG8gPSB4ICYgMjU1ICkpCgkJCQlwPTAKCQkJCTs7CgkJCX0KCQkJdD0kdFxceCR7byMxNiN9CgkJZG9uZQoJCXByaW50IC1uICR0CgkJKCggdSApKSB8fCBzZXQgLVUKCX0KCQoJaT0tMQoJcz0KCXdoaWxlICgoICsraSA8IDEyMTIwICkpOyBkbwoJCXMrPWEKCWRvbmUKCUxiNjRkZWNvZGUgJHMgPi9kZXYvbnVsbAotLS0K