IyAkTWlyT1M6IHNyYy9iaW4vbWtzaC9jaGVjay50LHYgMS44NDUgMjAyMC8wNS8xNiAyMjoxOToxNSB0ZyBFeHAgJAojIC0qLSBtb2RlOiBzaCAtKi0KIy0KIyBDb3B5cmlnaHQgwqkgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKIwkgICAgICAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4LAojCSAgICAgIDIwMTksIDIwMjAKIwltaXJhYmlsb3MgPG1AbWlyYnNkLm9yZz4KIwojIFByb3ZpZGVkIHRoYXQgdGhlc2UgdGVybXMgYW5kIGRpc2NsYWltZXIgYW5kIGFsbCBjb3B5cmlnaHQgbm90aWNlcwojIGFyZSByZXRhaW5lZCBvciByZXByb2R1Y2VkIGluIGFuIGFjY29tcGFueWluZyBkb2N1bWVudCwgcGVybWlzc2lvbgojIGlzIGdyYW50ZWQgdG8gZGVhbCBpbiB0aGlzIHdvcmsgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHVu4oCQCiMgbGltaXRlZCByaWdodHMgdG8gdXNlLCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlLCBzZWxsLCBtb2RpZnksCiMgbWVyZ2UsIGdpdmUgYXdheSwgb3Igc3VibGljZW5jZS4KIwojIFRoaXMgd29yayBpcyBwcm92aWRlZCDigJxBUyBJU+KAnSBhbmQgV0lUSE9VVCBXQVJSQU5UWSBvZiBhbnkga2luZCwgdG8KIyB0aGUgdXRtb3N0IGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsIG5laXRoZXIgZXhwcmVzcyBub3IKIyBpbXBsaWVkOyB3aXRob3V0IG1hbGljaW91cyBpbnRlbnQgb3IgZ3Jvc3MgbmVnbGlnZW5jZS4gSW4gbm8gZXZlbnQKIyBtYXkgYSBsaWNlbnNvciwgYXV0aG9yIG9yIGNvbnRyaWJ1dG9yIGJlIGhlbGQgbGlhYmxlIGZvciBpbmRpcmVjdCwKIyBkaXJlY3QsIG90aGVyIGRhbWFnZSwgbG9zcywgb3Igb3RoZXIgaXNzdWVzIGFyaXNpbmcgaW4gYW55IHdheSBvdXQKIyBvZiBkZWFsaW5nIGluIHRoZSB3b3JrLCBldmVuIGlmIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2gKIyBkYW1hZ2Ugb3IgZXhpc3RlbmNlIG9mIGEgZGVmZWN0LCBleGNlcHQgcHJvdmVuIHRoYXQgaXQgcmVzdWx0cyBvdXQKIyBvZiBzYWlkIHBlcnNvbuKAmXMgaW1tZWRpYXRlIGZhdWx0IHdoZW4gdXNpbmcgdGhlIHdvcmsgYXMgaW50ZW5kZWQuCiMtCiMgWW91IG1heSBhbHNvIHdhbnQgdG8gdGVzdCBJRlMgd2l0aCB0aGUgc2NyaXB0IGF0CiMgaHR0cDovL3d3dy5yZXNlYXJjaC5hdHQuY29tL35nc2YvcHVibGljL2lmcy5zaAojCiMgTW9yZSB0ZXN0c3VpdGVzIGF0OgojIGh0dHA6Ly9zdm53ZWIuZnJlZWJzZC5vcmcvYmFzZS9oZWFkL2Jpbi90ZXN0L3Rlc3RzL2xlZ2FjeV90ZXN0LnNoP3ZpZXc9Y28mY29udGVudC10eXBlPXRleHQlMkZwbGFpbgojCiMgSW50ZWdyYXRlZCB0ZXN0c3VpdGVzIGZyb206CiMgKDIwMTMvMTIvMDIgMjA6Mzk6NDQpIGh0dHA6Ly9jdnN3ZWIub3BlbmJzZC5vcmcvY2dpLWJpbi9jdnN3ZWIvc3JjL3JlZ3Jlc3MvYmluL2tzaC8/c29ydGJ5PWRhdGUKCmV4cGVjdGVkLXN0ZG91dDoKCUtTSCBSNTkgMjAyMC8wNS8xNgpkZXNjcmlwdGlvbjoKCUNoZWNrIGJhc2UgdmVyc2lvbiBvZiBmdWxsIHNoZWxsCnN0ZGluOgoJdnNuPSR7S1NIX1ZFUlNJT04lJScgKycqfQoJZWNobyAiJHt2c24jKiB9IgpuYW1lOiBLU0hfVkVSU0lPTgotLS0KZXhwZWN0ZWQtc3Rkb3V0OgoJQCgjKU1JUkJTRApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoaXMgaWRlbnRpZmllcyBhcyBsZWdhY3kgc2hlbGwKc3RkaW46CgllY2hvICIke0tTSF9WRVJTSU9OJSUgKn0iCm5hbWU6IEtTSF9WRVJTSU9OLW1vZGVybgpjYXRlZ29yeTogIXNoZWxsOmxlZ2FjeS15ZXMKLS0tCmV4cGVjdGVkLXN0ZG91dDoKCUAoIylMRUdBQ1kKZGVzY3JpcHRpb246CglDaGVjayB0aGlzIGlkZW50aWZpZXMgYXMgbGVnYWN5IHNoZWxsCnN0ZGluOgoJZWNobyAiJHtLU0hfVkVSU0lPTiUlICp9IgpuYW1lOiBLU0hfVkVSU0lPTi1sZWdhY3kKY2F0ZWdvcnk6ICFzaGVsbDpsZWdhY3ktbm8KLS0tCm5hbWU6IEtTSF9WRVJTSU9OLWFzY2lpCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hlbGwgdmVyc2lvbiB0YWcgZG9lcyBub3QgaW5jbHVkZSBFQkNESUMKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJc2V0IC1vIG5vZ2xvYgoJZm9yIHggaW4gJEtTSF9WRVJTSU9OOyBkbwoJCVtbICR4ID0gJytFQkNESUMnIF1dICYmIGV4aXQgMQoJZG9uZQoJZXhpdCAwCi0tLQpuYW1lOiBLU0hfVkVSU0lPTi1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaGVsbCB2ZXJzaW9uIHRhZyBpbmNsdWRlcyBFQkNESUMKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMtbm8Kc3RkaW46CglzZXQgLW8gbm9nbG9iCglmb3IgeCBpbiAkS1NIX1ZFUlNJT047IGRvCgkJW1sgJHggPSAnK0VCQ0RJQycgXV0gJiYgZXhpdCAwCglkb25lCglleGl0IDEKLS0tCm5hbWU6IEtTSF9WRVJTSU9OLWJpbm1vZGUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBzaGVsbCB2ZXJzaW9uIHRhZyBkb2VzIG5vdCBpbmNsdWRlIFRFWFRNT0RFCmNhdGVnb3J5OiAhc2hlbGw6dGV4dG1vZGUteWVzCnN0ZGluOgoJc2V0IC1vIG5vZ2xvYgoJZm9yIHggaW4gJEtTSF9WRVJTSU9OOyBkbwoJCVtbICR4ID0gJytURVhUTU9ERScgXV0gJiYgZXhpdCAxCglkb25lCglleGl0IDAKLS0tCm5hbWU6IEtTSF9WRVJTSU9OLXRleHRtb2RlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hlbGwgdmVyc2lvbiB0YWcgaW5jbHVkZXMgVEVYVE1PREUKY2F0ZWdvcnk6ICFzaGVsbDp0ZXh0bW9kZS1ubwpzdGRpbjoKCXNldCAtbyBub2dsb2IKCWZvciB4IGluICRLU0hfVkVSU0lPTjsgZG8KCQlbWyAkeCA9ICcrVEVYVE1PREUnIF1dICYmIGV4aXQgMAoJZG9uZQoJZXhpdCAxCi0tLQpuYW1lOiBzZWxmdGVzdC0xCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmF6Ci0tLQpuYW1lOiBzZWxmdGVzdC0yCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFmb289YmFyIQpzdGRpbjoKCWVjaG8gJHtmb286LWJhen0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyCi0tLQpuYW1lOiBzZWxmdGVzdC0zCmRlc2NyaXB0aW9uOgoJUmVncmVzc2lvbiB0ZXN0IHNlbGYtdGVzdGluZwplbnYtc2V0dXA6ICFFTlY9Zm5vcmQhCnN0ZGluOgoJZWNobyAiPCRFTlY+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8Zm5vcmQ+Ci0tLQpuYW1lOiBzZWxmdGVzdC1leGVjCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRoYXQgdGhlIHRlc3QgcnVuIGRpcmVjdG9yeSAoZGVmYXVsdCAvdG1wIGJ1dCBjYW4gYmUgY2hhbmdlZAoJd2l0aCBjaGVjay5wbCBmbGFnIC1UIG9yIHRlc3Quc2ggJFRNUERJUikgaXMgbm90IG1vdW50ZWQgbm9leGVjLCBhcwoJd2UgZXhlY3V0ZSBzY3JpcHRzIGZyb20gdGhlIHNjcmF0Y2ggZGlyZWN0b3J5IGR1cmluZyBzZXZlcmFsIHRlc3RzLgpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJLi9scQpleHBlY3RlZC1zdGRvdXQ6Cgl0ZgotLS0KbmFtZTogc2VsZnRlc3QtZW52CmRlc2NyaXB0aW9uOgoJSnVzdCBvdXRwdXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgKGFsd2F5cyBmYWlscykKY2F0ZWdvcnk6IGRpc2FibGVkCnN0ZGluOgoJc2V0Ci0tLQpuYW1lOiBzZWxmdGVzdC1kaXJlY3QtYnVpbHRpbi1jYWxsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBkaXJlY3QgYnVpbHRpbiBjYWxscyB3b3JrCnN0ZGluOgoJbG4gLXMgIiRfX3Byb2duYW1lIiBjYXQgfHwgY3AgIiRfX3Byb2duYW1lIiBjYXQKCWxuIC1zICIkX19wcm9nbmFtZSIgZWNobyB8fCBjcCAiJF9fcHJvZ25hbWUiIGVjaG8KCS4vZWNobyAtYyAnZWNobyAgZm9vJyB8IC4vY2F0IC11CmV4cGVjdGVkLXN0ZG91dDoKCS1jIGVjaG8gIGZvbwotLS0KbmFtZTogc2VsZnRlc3QtcGF0aHNlcC11bml4CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAkUEFUSFNFUCBpcyBzZXQgY29ycmVjdGx5LgpjYXRlZ29yeTogIW9zOm9zMgpzdGRpbjoKCVBBVEhTRVA9LjsgZXhwb3J0IFBBVEhTRVAKCSIkX19wcm9nbmFtZSIgLWMgJ3ByaW50IC1yIC0tICRQQVRIU0VQJwpleHBlY3RlZC1zdGRvdXQ6Cgk6Ci0tLQpuYW1lOiBzZWxmdGVzdC1wYXRoc2VwLWRvc3BhdGgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICRQQVRIU0VQIGlzIHNldCBjb3JyZWN0bHkuCmNhdGVnb3J5OiBvczpvczIKc3RkaW46CglQQVRIU0VQPS47IGV4cG9ydCBQQVRIU0VQCgkiJF9fcHJvZ25hbWUiIC1jICdwcmludCAtciAtLSAkUEFUSFNFUCcKZXhwZWN0ZWQtc3Rkb3V0OgoJOwotLS0KbmFtZTogc2VsZnRlc3QtdHR5LWFic2VudApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb250cm9sbGluZyB0dHkgaXMgbm90IHByZXNlbnQgYXMgcmVncmVzczpuby1jdHR5IHdhcyB1c2VkCgkoaWYgdGhpcyB0ZXN0IGZhaWxzIGZvciB5b3UgRE8gTk9UIFBBU1MgcmVncmVzczpuby1jdHR5IGFuZCBmaXggZXZlcnkKCW90aGVyIHRlc3QgdGhhdCBmYWlsczogd2h5IHUgdXNlIGl0IGlmIHUgaGF6IGN0dHk/KQpjYXRlZ29yeTogcmVncmVzczpuby1jdHR5CmVudi1zZXR1cDogIUVOVj0uL2VudmYhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVgKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9rc2g6IHdhcm5pbmc6IHdvbid0IGhhdmUgZnVsbCBqb2IgY29udHJvbFxuWFgvCi0tLQpuYW1lOiBzZWxmdGVzdC10dHktcHJlc2VudApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSBjb250cm9sbGluZyB0dHkgaXMgcHJlc2VudCBhcyByZWdyZXNzOm5vLWN0dHkgd2FzIG5vdCB1c2VkCm5lZWQtY3R0eTogeWVzCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVgKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZWNobyBvawpleHBlY3RlZC1zdGRvdXQ6CglvawpleHBlY3RlZC1zdGRlcnI6ICEKCVhYCi0tLQpuYW1lOiBhbGlhcy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1mb29CYXIKCWZvb0JhcgoJZXhpdCAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2Zvb0Jhci4qbm90IGZvdW5kLiovCi0tLQpuYW1lOiBhbGlhcy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgpzdGRpbjoKCWFsaWFzIGZvb0Jhcj1iYXJGb28KCWFsaWFzIGJhckZvbz1mb29CYXIKCWZvb0JhcgoJYmFyRm9vCglleGl0IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm9vQmFyLipub3QgZm91bmQuKlxuLipiYXJGb28uKm5vdCBmb3VuZC8KLS0tCm5hbWU6IGFsaWFzLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb29CYXI9YmFyRm9vCglhbGlhcyBiYXJGb289Zm9vQmFyCglFY2hvIGZvb0JhcgoJdW5hbGlhcyBiYXJGb28KCUVjaG8gZm9vQmFyCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0JhcgoJYmFyRm9vCi0tLQpuYW1lOiBhbGlhcy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gaXNuJ3QgZG9uZSBvbiBrZXl3b3JkcyAoaW4ga2V5d29yZAoJcG9zdGl0aW9ucykuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyB3aGlsZT1XaGlsZQoJd2hpbGUgZmFsc2U7IGRvIGVjaG8gaGkgOyBkb25lCglFY2hvIHdoaWxlCmV4cGVjdGVkLXN0ZG91dDoKCVdoaWxlCi0tLQpuYW1lOiBhbGlhcy01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlLgpzdGRpbjoKCWFsaWFzIEVjaG89J2VjaG8gJwoJYWxpYXMgZm9vPSdiYXIgc3R1ZmYgJwoJYWxpYXMgYmFyPSdCYXIxIEJhcjIgJwoJYWxpYXMgc3R1ZmY9J1N0dWZmJwoJYWxpYXMgYmxhaD0nQmxhaCcKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyMSBCYXIyIFN0dWZmIEJsYWgKLS0tCm5hbWU6IGFsaWFzLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiBkb25lIGFmdGVyIGFsaWFzIHdpdGggdHJhaWxpbmcgc3BhY2UuCnN0ZGluOgoJYWxpYXMgRWNobz0nZWNobyAnCglhbGlhcyBmb289J2JhciBiYXInCglhbGlhcyBiYXI9J0JhciAnCglhbGlhcyBibGFoPUJsYWgKCUVjaG8gZm9vIGJsYWgKZXhwZWN0ZWQtc3Rkb3V0OgoJQmFyIEJhciBCbGFoCi0tLQpuYW1lOiBhbGlhcy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhcyBleHBhbnNpb24gZG9uZSBhZnRlciBhbGlhcyB3aXRoIHRyYWlsaW5nIHNwYWNlCglhZnRlciBhIGtleXdvcmQuCnN0ZGluOgoJYWxpYXMgWD0nY2FzZSAnCglhbGlhcyBZPVoKCVggWSBpbiAnWScpIGVjaG8gaXMgeSA7OyBaKSBlY2hvIGlzIHogOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglpcyB6Ci0tLQpuYW1lOiBhbGlhcy04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBuZXdsaW5lcyBpbiBhbiBhbGlhcyBkb24ndCBjYXVzZSB0aGUgY29tbWFuZCB0byBiZSBsb3N0LgpzdGRpbjoKCWFsaWFzIGZvbz0nCgkKCQoJZWNobyBoaQoJCgkKCQoJZWNobyB0aGVyZQoJCgkKCScKCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKLS0tCm5hbWU6IGFsaWFzLTkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlY3Vyc2lvbiBpcyBkZXRlY3RlZC9hdm9pZGVkIGluIGFsaWFzZXMuCglUaGlzIGNoZWNrIGZhaWxzIGZvciBzbG93IG1hY2hpbmVzIG9yIEN5Z3dpbiwgcmFpc2UKCXRoZSB0aW1lLWxpbWl0IGNsYXVzZSAoZS5nLiB0byA3KSBpZiB0aGlzIG9jY3Vycy4KdGltZS1saW1pdDogMwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJUEFUSD0kUFdEJFBBVEhTRVAkUEFUSAoJYWxpYXMgbHE9bHEKCWxxCgllY2hvID0gbm93CglpPWBscWAKCXByaW50IC1yIC0tICRpCgllY2hvID0gb3V0CglleGl0IDAKZXhwZWN0ZWQtc3Rkb3V0OgoJdGYKCT0gbm93Cgl0ZgoJPSBvdXQKLS0tCm5hbWU6IGFsaWFzLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZWN1cnNpb24gaXMgZGV0ZWN0ZWQvYXZvaWRlZCBpbiBhbGlhc2VzLgoJUmVncmVzc2lvbiwgaW50cm9kdWNlZCBkdXJpbmcgYW4gb2xkIGJ1Z2ZpeC4Kc3RkaW46CglhbGlhcyBmb289J3ByaW50IGhlbGxvICcKCWFsaWFzIGJhcj0nZm9vIHdvcmxkJwoJZWNobyAkKGJhcikKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8gd29ybGQKLS0tCm5hbWU6IGFsaWFzLTExCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzcGVjaWFsIGFyZ3VtZW50IGhhbmRsaW5nIHN0aWxsIGFwcGxpZXMgd2l0aCBlc2NhcGVkIGFsaWFzZXMKc3RkaW46CglhbGlhcyBsb2NhbDE9J1x0eXBlc2V0JwoJYWxpYXMgbG9jYWwyPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWZ1bmN0aW9uIGZvb2EgewoJCWxvY2FsMSB4PSQxIHk9egoJCXByaW50IC1yIC0tICIkeCwkeSIKCX0KCWZ1bmN0aW9uIGZvb2IgewoJCWxvY2FsMiB4PSQxIHk9egoJCXByaW50IC1yIC0tICIkeCwkeSIKCX0KCXg9MSB5PTI7IGZvb2EgJ2JhciAtIGJheicKCXg9MSB5PTI7IGZvb2IgJ2JhciAtIGJheicKZXhwZWN0ZWQtc3Rkb3V0OgoJYmFyIC0gYmF6LHoKCWJhciAtIGJheix6Ci0tLQpuYW1lOiBhbGlhcy0xMgpkZXNjcmlwdGlvbjoKCVNvbWV0aGluZyB3ZWlyZCBmcm9tIE1hcnRpam4gRGVra2VyCnN0ZGluOgoJYWxpYXMgZWNobz1wcmludAoJeCgpIHsgZWNobyBhOyAoZWNobyBiKTsgeD0kKGVjaG8gYyk7IH0KCXR5cGVzZXQgLWYgeAoJYWxpYXMgT1BFTj0neycgQ0xPU0U9J307JwoJeyBPUEVOIGVjaG8gaGkxOyBDTE9TRSB9Cgl2YXI9YHsgT1BFTiBlY2hvIGhpMjsgQ0xPU0UgfWAgJiYgZWNobyAiJHZhciIKCXZhcj0kKHsgT1BFTiBlY2hvIGhpMzsgQ0xPU0UgfSkgJiYgZWNobyAiJHZhciIKZXhwZWN0ZWQtc3Rkb3V0OgoJeCgpIHsKCQlccHJpbnQgYSAKCQkoIFxwcmludCBiICkgCgkJeD0kKFxwcmludCBjICkgCgl9IAoJaGkxCgloaTIKCWhpMwotLS0KbmFtZTogYXJpdGgtY29tcG91bmQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFyaXRobWV0aWMgZXhwcmVzc2lvbnMgYXJlIGNvbXBvdW5kIGNvbnN0cnVjdHMKc3RkaW46Cgl7ICEgKCggMCQoY2F0ID4mMikgKSkgPDw8MTsgfSA8PDwyCmV4cGVjdGVkLXN0ZGVycjoKCTEKLS0tCm5hbWU6IGFyaXRoLWxhenktMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgb25seSBvbmUgc2lkZSBvZiB0ZXJuYXJ5IG9wZXJhdG9yIGlzIGV2YWx1YXRlZApzdGRpbjoKCXg9aSs9MgoJeT1qKz0yCgl0eXBlc2V0IC1pIGk9MSBqPTEKCWVjaG8gJCgoMSA/IDIwIDogKHgrPTIpKSkKCWVjaG8gJGksJHgKCWVjaG8gJCgoMCA/ICh5Kz0yKSA6IDMwKSkKCWVjaG8gJGosJHkKZXhwZWN0ZWQtc3Rkb3V0OgoJMjAKCTEsaSs9MgoJMzAKCTEsais9MgotLS0KbmFtZTogYXJpdGgtbGF6eS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhc3NpZ25tZW50cyBub3QgZG9uZSBvbiBub24tZXZhbHVhdGVkIHNpZGUgb2YgdGVybmFyeQoJb3BlcmF0b3IKc3RkaW46Cgl4PWkrPTIKCXk9ais9MgoJdHlwZXNldCAtaSBpPTEgaj0xCgllY2hvICQoKDEgPyAyMCA6ICh4Kz0yKSkpCgllY2hvICRpLCR4CgllY2hvICQoKDAgPyAoeSs9MikgOiAzMCkpCgllY2hvICRpLCR5CmV4cGVjdGVkLXN0ZG91dDoKCTIwCgkxLGkrPTIKCTMwCgkxLGorPTIKLS0tCm5hbWU6IGFyaXRoLWxhenktMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYXNzaWdubWVudHMgbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yIGFuZCB0aGlzIGNvbnN0cnVjdCBpcyBwYXJzZWQgY29ycmVjdGx5IChEZWJpYW4gIzQ0NTY1MSkKc3RkaW46Cgl4PTQKCXk9JCgoMCA/IHg9MSA6IDIpKQoJZWNobyA9ICR4ICR5ID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSA0IDIgPQotLS0KbmFtZTogYXJpdGgtbGF6eS00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcmV1bi9wb3N0dW4gbm90IGRvbmUgb24gbm9uLWV2YWx1YXRlZCBzaWRlIG9mIHRlcm5hcnkKCW9wZXJhdG9yCnN0ZGluOgoJKCggbSA9IG4gPSAwLCAxID8gbisrIDogbSsrID8gMiA6IDMgKSkKCWVjaG8gIigkbiwgJG0pIgoJbT0wOyBlY2hvICQoKCAwID8gKyttIDogMiApKTsgZWNobyAkbQoJbT0wOyBlY2hvICQoKCAwID8gbSsrIDogMiApKTsgZWNobyAkbQpleHBlY3RlZC1zdGRvdXQ6CgkoMSwgMCkKCTIKCTAKCTIKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS1hcnItbgpkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgwJiZiW2ErK10sYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtYXJyLXAKZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MDsgZWNobyAiJCgoMCYmKGJbYSsrXSksYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtc3RyLW4KZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MCBiPWErKzsgKCgwJiZiKSk7IGVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogYXJpdGgtbGF6eS01LXN0ci1wCmRlc2NyaXB0aW9uOiBDaGVjayBsYXp5IGV2YWx1YXRpb24gd2l0aCBzaWRlIGVmZmVjdHMKc3RkaW46CglhPTAgYj1hKys7ICgoMCYmKGIpKSk7IGVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJMAotLS0KbmFtZTogYXJpdGgtbGF6eS01LXRlcm4tbC1uCmRlc2NyaXB0aW9uOiBDaGVjayBsYXp5IGV2YWx1YXRpb24gd2l0aCBzaWRlIGVmZmVjdHMKc3RkaW46CglhPTA7IGVjaG8gIiQoKDA/YlthKytdOjk5OSxhKSkiCmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS10ZXJuLWwtcApkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgwPyhiW2ErK10pOjk5OSxhKSkiCmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGFyaXRoLWxhenktNS10ZXJuLXItbgpkZXNjcmlwdGlvbjogQ2hlY2sgbGF6eSBldmFsdWF0aW9uIHdpdGggc2lkZSBlZmZlY3RzCnN0ZGluOgoJYT0wOyBlY2hvICIkKCgxPzk5OTpiW2ErK10sYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC1sYXp5LTUtdGVybi1yLXAKZGVzY3JpcHRpb246IENoZWNrIGxhenkgZXZhbHVhdGlvbiB3aXRoIHNpZGUgZWZmZWN0cwpzdGRpbjoKCWE9MDsgZWNobyAiJCgoMT85OTk6KGJbYSsrXSksYSkpIgpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCXk9JCgoMSA/IDIwIDogeCs9MikpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKjouKjEgXD8gMjAgOiB4XCs9Mi4qbHZhbHVlLipcbiQvCi0tLQpuYW1lOiBhcml0aC10ZXJuYXJ5LXByZWMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHByZWNlZGVuY2Ugb2YgdGVybmFyeSBvcGVyYXRvciB2cyBhc3NpZ25tZW50CnN0ZGluOgoJdHlwZXNldCAtaSB4PTIKCWVjaG8gJCgoMCA/IHgrPTIgOiAyMCkpCmV4cGVjdGVkLXN0ZG91dDoKCTIwCi0tLQpuYW1lOiBhcml0aC1wcmVjLTEKZGVzY3JpcHRpb246CglQcm92ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zIHdpdGggZW1iZWRkZWQgcGFyYW1ldGVyCglzdWJzdGl0dXRpb25zIGNhbm5vdCBiZSBwYXJzZWQgYWhlYWQgb2YgdGltZQpzdGRpbjoKCWE9JzMgKyA0JwoJcHJpbnQgMSAkKCgyICogYSkpIC4KCXByaW50IDIgJCgoMiAqICRhKSkgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDE0IC4KCTIgMTAgLgotLS0KbmFtZTogYXJpdGgtZGl2LWFzc29jLTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NvY2lhdGl2aXR5IG9mIGRpdmlzaW9uIG9wZXJhdG9yCnN0ZGluOgoJZWNobyAkKCgyMCAvIDIgLyAyKSkKZXhwZWN0ZWQtc3Rkb3V0OgoJNQotLS0KbmFtZTogYXJpdGgtZGl2LWJ5emVybwpkZXNjcmlwdGlvbjoKCUNoZWNrIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3JzIG91dApzdGRpbjoKCXg9JChlY2hvICQoKDEgLyAwKSkpCgllY2hvID0kPzokeC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPTE6LgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmRpdmlzb3IvCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtMjE0NzQ4MzY0OCAvIC0xKSlyJCgoLTIxNDc0ODM2NDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC0yMTQ3NDgzNjQ4IC8gLTEpKXIkKCgjIC0yMTQ3NDgzNjQ4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi0yMTQ3NDgzNjQ4cjAuCgl1bnNpZ25lZDowcjIxNDc0ODM2NDguCi0tLQpuYW1lOiBhcml0aC1kaXYtaW50bWluLWJ5LW1pbnVzb25lLTY0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGl2aXNpb24gb3ZlcmZsb3cgd3JhcHMgYXJvdW5kIHNpbGVudGx5CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHNpZ25lZDokKCgtOTIyMzM3MjAzNjg1NDc3NTgwOCAvIC0xKSlyJCgoLTkyMjMzNzIwMzY4NTQ3NzU4MDggJSAtMSkpLgoJZWNobyB1bnNpZ25lZDokKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4IC8gLTEpKXIkKCgjIC05MjIzMzcyMDM2ODU0Nzc1ODA4ICUgLTEpKS4KZXhwZWN0ZWQtc3Rkb3V0OgoJc2lnbmVkOi05MjIzMzcyMDM2ODU0Nzc1ODA4cjAuCgl1bnNpZ25lZDowcjkyMjMzNzIwMzY4NTQ3NzU4MDguCi0tLQpuYW1lOiBhcml0aC1hc3NvcC1hc3NvYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYXNzb2NpYXRpdml0eSBvZiBhc3NpZ25tZW50LW9wZXJhdG9yIG9wZXJhdG9yCnN0ZGluOgoJdHlwZXNldCAtaSBpPTEgaj0yIGs9MwoJZWNobyAkKChpICs9IGogKz0gaykpCgllY2hvICRpLCRqLCRrCmV4cGVjdGVkLXN0ZG91dDoKCTYKCTYsNSwzCi0tLQpuYW1lOiBhcml0aC1tYW5kYXRvcnkKZGVzY3JpcHRpb246CglQYXNzaW5nIG9mIHRoaXMgdGVzdCBpcyAqbWFuZGF0b3J5KiBmb3IgYSB2YWxpZCBta3NoIGV4ZWN1dGFibGUhCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46Cgl0eXBlc2V0IC1pIHNhcmk9MAoJdHlwZXNldCAtVWkgdWFyaT0wCgl0eXBlc2V0IC1pIHg9MAoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICMwCglsZXQgLS1zYXJpIC0tdWFyaQoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICMxCglzYXJpPTIxNDc0ODM2NDcgdWFyaT0yMTQ3NDgzNjQ3CglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzIKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzMKCWxldCAtLXNhcmkgLS11YXJpCglsZXQgJ3NhcmkgKj0gMicgJ3VhcmkgKj0gMicKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzQKCWxldCArK3NhcmkgKyt1YXJpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzUKCXNhcmk9LTIxNDc0ODM2NDggdWFyaT0tMjE0NzQ4MzY0OAoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICM2CglsZXQgLS1zYXJpIC0tdWFyaQoJcHJpbnQgLXIgLS0gJCgoeCsrKSk6JHNhcmk9JHVhcmkuICM3CgkoKCBzYXJpID0gLTUgPj4gMSApKQoJKCgjIHVhcmkgPSAtNSA+PiAxICkpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzgKCSgoIHNhcmkgPSAtMiApKQoJKCgjIHVhcmkgPSBzYXJpICkpCglwcmludCAtciAtLSAkKCh4KyspKTokc2FyaT0kdWFyaS4gIzkKZXhwZWN0ZWQtc3Rkb3V0OgoJMDowPTAuCgkxOi0xPTQyOTQ5NjcyOTUuCgkyOjIxNDc0ODM2NDc9MjE0NzQ4MzY0Ny4KCTM6LTIxNDc0ODM2NDg9MjE0NzQ4MzY0OC4KCTQ6LTE9NDI5NDk2NzI5NS4KCTU6MD0wLgoJNjotMjE0NzQ4MzY0OD0yMTQ3NDgzNjQ4LgoJNzoyMTQ3NDgzNjQ3PTIxNDc0ODM2NDcuCgk4Oi0zPTIxNDc0ODM2NDUuCgk5Oi0yPTQyOTQ5NjcyOTQuCi0tLQpuYW1lOiBhcml0aC11bnNpZ25lZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdW5zaWduZWQgYXJpdGhtZXRpY3Mgd29yawpjYXRlZ29yeTogaW50OjMyCnN0ZGluOgoJIyBzaWduZWQgdnMgdW5zaWduZWQKCWVjaG8geDEgJCgoLTEpKSAkKCgjLTEpKQoJIyBjYWxjdWxhdGluZwoJdHlwZXNldCAtaSB2cwoJdHlwZXNldCAtVWkgdnUKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDIgJHZzICR2dQoJKCggdnMgJT0gMjE0NzQ4MzY0NyApKQoJKCggdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4MyAkdnMgJHZ1Cgl2cz00MTIzNDU2Nzg5OyB2dT00MTIzNDU2Nzg5CgkoKCAjIHZzICU9IDIxNDc0ODM2NDcgKSkKCSgoICMgdnUgJT0gMjE0NzQ4MzY0NyApKQoJZWNobyB4NCAkdnMgJHZ1CgkjIG1ha2Ugc3VyZSB0aGUgY2FsY3VsYXRpb24gZG9lcyBub3QgY2hhbmdlIHVuc2lnbmVkIGZsYWcKCXZzPTQxMjM0NTY3ODk7IHZ1PTQxMjM0NTY3ODkKCWVjaG8geDUgJHZzICR2dQoJIyBzaG9ydCBmb3JtCgllY2hvIHg2ICQoKCMgdnMgJSAyMTQ3NDgzNjQ3KSkgJCgoIyB2dSAlIDIxNDc0ODM2NDcpKQoJIyBhcnJheSByZWZzCglzZXQgLUEgdmEKCXZhWzE5NzU5NzMxNDJdPXJpZ2h0Cgl2YVs0MTIzNDU2Nzg5XT13cm9uZwoJZWNobyB4NyAke3ZhWyM0MTIzNDU2Nzg5JTIxNDc0ODM2NDddfQoJIyBtYWtlIHN1cmUgbXVsdGlwbGUgY2FsY3VsYXRpb25zIGRvbid0IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIKCWxldCAnIyBtY2EgPSAtNCAlIC0yJyAnIG1jYiA9IC00ICUgLTInCgllY2hvIHg4ICRtY2EgJG1jYgpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXgzIC0xNzE1MTA1MDcgNDEyMzQ1Njc4OQoJeDQgMTk3NTk3MzE0MiAxOTc1OTczMTQyCgl4NSAtMTcxNTEwNTA3IDQxMjM0NTY3ODkKCXg2IDE5NzU5NzMxNDIgMTk3NTk3MzE0MgoJeDcgcmlnaHQKCXg4IC00IDAKLS0tCm5hbWU6IGFyaXRoLWxpbWl0MzItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGFyaXRobWV0aWNzIGFyZSAzMiBiaXQKY2F0ZWdvcnk6IGludDozMgpzdGRpbjoKCSMgc2lnbmVkIHZzIHVuc2lnbmVkCgllY2hvIHgxICQoKC0xKSkgJCgoIy0xKSkKCSMgY2FsY3VsYXRpbmcKCXR5cGVzZXQgLWkgdnMKCXR5cGVzZXQgLVVpIHZ1Cgl2cz0yMTQ3NDgzNjQ3OyB2dT0yMTQ3NDgzNjQ3CgllY2hvIHgyICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDMgJHZzICR2dQoJdnM9NDI5NDk2NzI5NTsgdnU9NDI5NDk2NzI5NQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSA0Mjk0OTY3Mjk1Cgl4MiAyMTQ3NDgzNjQ3IDIxNDc0ODM2NDcKCXgzIC0yMTQ3NDgzNjQ4IDIxNDc0ODM2NDgKCXg0IC0xIDQyOTQ5NjcyOTUKCXg1IDAgMAoJeDYgMSAxCi0tLQpuYW1lOiBhcml0aC1saW1pdDY0LTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBhcml0aG1ldGljcyBhcmUgNjQgYml0CmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgkjIHNpZ25lZCB2cyB1bnNpZ25lZAoJZWNobyB4MSAkKCgtMSkpICQoKCMtMSkpCgkjIGNhbGN1bGF0aW5nCgl0eXBlc2V0IC1pIHZzCgl0eXBlc2V0IC1VaSB2dQoJdnM9OTIyMzM3MjAzNjg1NDc3NTgwNzsgdnU9OTIyMzM3MjAzNjg1NDc3NTgwNwoJZWNobyB4MiAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHgzICR2cyAkdnUKCXZzPTE4NDQ2NzQ0MDczNzA5NTUxNjE1OyB2dT0xODQ0Njc0NDA3MzcwOTU1MTYxNQoJZWNobyB4NCAkdnMgJHZ1CglsZXQgdnMrKyB2dSsrCgllY2hvIHg1ICR2cyAkdnUKCWxldCB2cysrIHZ1KysKCWVjaG8geDYgJHZzICR2dQpleHBlY3RlZC1zdGRvdXQ6Cgl4MSAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDIgOTIyMzM3MjAzNjg1NDc3NTgwNyA5MjIzMzcyMDM2ODU0Nzc1ODA3Cgl4MyAtOTIyMzM3MjAzNjg1NDc3NTgwOCA5MjIzMzcyMDM2ODU0Nzc1ODA4Cgl4NCAtMSAxODQ0Njc0NDA3MzcwOTU1MTYxNQoJeDUgMCAwCgl4NiAxIDEKLS0tCm5hbWU6IGJrc2wtbmwtaWduLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIG5vdCBjb2xsYXBzZWQgYWZ0ZXIgIwpzdGRpbjoKCWVjaG8gaGkgI3RoZXJlIFwKCWVjaG8gZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLWlnbi0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBub3QgY29sbGFwc2VkIGluc2lkZSBzaW5nbGUgcXVvdGVzCnN0ZGluOgoJZWNobyAnaGkgXAoJdGhlcmUnCgllY2hvIGZvbGtzCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCglmb2xrcwotLS0KbmFtZTogYmtzbC1ubC1pZ24tMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgbm90IGNvbGxhcHNlZCBpbnNpZGUgc2luZ2xlIHF1b3RlcwpzdGRpbjoKCWNhdCA8PCBcRU9GCgloaSBcCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpIFwKCXRoZXJlCi0tLQpuYW1lOiBia3NsLW5sLWlnbi00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaW50ZXJhY3Rpb24gb2YgYWxpYXNlcywgc2luZ2xlIHF1b3RlcyBhbmQgaGVyZS1kb2N1bWVudHMKCXdpdGggYmFja3NsYXNoLW5ld2xpbmUKCShkb24ndCBrbm93IHdoYXQgUE9TSVggaGFzIHRvIHNheSBhYm91dCB0aGlzKQpzdGRpbjoKCWE9MgoJYWxpYXMgeD0nZWNobyBoaQoJY2F0IDw8ICJFT0YiCglmb29cCgliYXIKCXNvbWUnCgl4Cgltb3JlXAoJc3R1ZmYkYQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29cCgliYXIKCXNvbWUKCW1vcmVcCglzdHVmZiRhCi0tLQpuYW1lOiBia3NsLW5sLWlnbi01CmRlc2NyaXB0aW9uOgoJQ2hlY2sgd2hhdCBoYXBwZW5zIHdpdGggYmFja3NsYXNoIGF0IGVuZCBvZiBpbnB1dAoJKHRoZSBvbGQgQm91cm5lIHNoZWxsIHRyYXNoZXMgdGhlbTsgc28gZG8gd2UpCnN0ZGluOiAhCgllY2hvIGBlY2hvIGZvb1xcYGJhcgoJZWNobyBoaVwKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vYmFyCgloaQotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkCiMKbmFtZTogYmtzbC1ubC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgYmVmb3JlLCBpbiB0aGUgbWlkZGxlIG9mLCBhbmQKCWFmdGVyIHdvcmRzCnN0ZGluOgoJIAkgCVwKCQkJIGVjaG8gaGlcCglUaGVyZSwgXAoJZm9sa3MKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlUaGVyZSwgZm9sa3MKLS0tCm5hbWU6IGJrc2wtbmwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQgc2VxdWVuY2VzCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CglhPTEyCglhYj0xOQoJZWNobyAkXAoJYQoJZWNobyAkYVwKCWIKCWVjaG8gJFwKCXthfQoJZWNobyAke2FcCglifQoJZWNobyAke2FiXAoJfQpleHBlY3RlZC1zdGRvdXQ6CgkxMgoJMTkKCTEyCgkxOQoJMTkKLS0tCm5hbWU6IGJrc2wtbmwtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICQoLi4pIGFuZCBgLi4uYCBzZXF1ZW5jZXMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWVjaG8gJFwKCShlY2hvIGZvb2JhcjEpCgllY2hvICQoXAoJZWNobyBmb29iYXIyKQoJZWNobyAkKGVjaG8gZm9vXAoJYmFyMykKCWVjaG8gJChlY2hvIGZvb2JhcjRcCgkpCgllY2hvIGAKCWVjaG8gc3R1ZmYxYAoJZWNobyBgZWNobyBzdFwKCXVmZjJgCmV4cGVjdGVkLXN0ZG91dDoKCWZvb2JhcjEKCWZvb2JhcjIKCWZvb2JhcjMKCWZvb2JhcjQKCXN0dWZmMQoJc3R1ZmYyCi0tLQpuYW1lOiBia3NsLW5sLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiAkKCguLikpIHNlcXVlbmNlcwoJKGtzaDkzIGZhaWxzIHRoaXMpCnN0ZGluOgoJZWNobyAkXAoJKCgxKzIpKQoJZWNobyAkKFwKCSgxKzIrMykpCgllY2hvICQoKFwKCTErMiszKzQpKQoJZWNobyAkKCgxK1wKCTIrMys0KzUpKQoJZWNobyAkKCgxKzIrMys0KzUrNilcCgkpCmV4cGVjdGVkLXN0ZG91dDoKCTMKCTYKCTEwCgkxNQoJMjEKLS0tCm5hbWU6IGJrc2wtbmwtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluIGRvdWJsZSBxdW90ZWQgc3RyaW5ncwpzdGRpbjoKCWVjaG8gIlwKCWhpIgoJZWNobyAiZm9vXAoJYmFyIgoJZWNobyAiZm9sa3NcCgkiCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglmb29iYXIKCWZvbGtzCi0tLQpuYW1lOiBia3NsLW5sLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGlzIGNvbGxhcHNlZCBpbiBoZXJlIGRvY3VtZW50IGRlbGltaXRlcnMKCShrc2g5MyBmYWlscyBzZWNvbmQgcGFydCBvZiB0aGlzKQpzdGRpbjoKCWE9MTIKCWNhdCA8PCBFT1wKCUYKCWE9JGEKCWZvb1wKCWJhcgoJRU9GCgljYXQgPDwgRV9PX0YKCWZvbwoJRV9PX1wKCUYKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhPTEyCglmb29iYXIKCWZvbwoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZG91YmxlLXF1b3RlZCBoZXJlLWRvY3VtZW50CglkZWxpbWl0ZXIuCnN0ZGluOgoJYT0xMgoJY2F0IDw8ICJFT1wKCUYiCglhPSRhCglmb29cCgliYXIKCUVPRgoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWE9JGEKCWZvb1wKCWJhcgoJZG9uZQotLS0KbmFtZTogYmtzbC1ubC04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gdmFyaW91cyAyKyBjaGFyYWN0ZXIgdG9rZW5zCglkZWxpbWl0ZXIuCgkoa3NoOTMgZmFpbHMgdGhpcykKc3RkaW46CgllY2hvIGhpICZcCgkmIGVjaG8gdGhlcmUKCWVjaG8gZm9vIHxcCgl8IGVjaG8gYmFyCgljYXQgPFwKCTwgRU9GCglzdHVmZgoJRU9GCgljYXQgPFwKCTxcCgktIEVPRgoJCW1vcmUgc3R1ZmYKCUVPRgoJY2F0IDw8XAoJRU9GCglhYmNkZWYKCUVPRgoJZWNobyBoaSA+XAoJPiAvZGV2L251bGwKCWVjaG8gJD8KCWk9MQoJY2FzZSAkaSBpbgoJKFwKCXh8XAoJMVwKCSkgZWNobyBoaTtcCgk7CgkoKikgZWNobyBvb3BzCgllc2FjCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZm9vCglzdHVmZgoJbW9yZSBzdHVmZgoJYWJjZGVmCgkwCgloaQotLS0KbmFtZTogYmtzbC1ubC05CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcIGF0IHRoZSBlbmQgb2YgYW4gYWxpYXMgaXMgY29sbGFwc2VkIHdoZW4gZm9sbG93ZWQKCWJ5IGEgbmV3bGluZQoJKGRvbid0IGtub3cgd2hhdCBQT1NJWCBoYXMgdG8gc2F5IGFib3V0IHRoaXMpCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaVwnCgl4CgllY2hvIHRoZXJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpZWNobyB0aGVyZQotLS0KbmFtZTogYmtzbC1ubC0xMApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaW4gYSBrZXl3b3JkIGlzIGNvbGxhcHNlZApzdGRpbjoKCWlcCglmIHRydWU7IHRoZW5cCgkgZWNobyBwYXNzOyBlbFwKCXNlIGVjaG8gZmFpbDsgZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJcGFzcwotLS0KIwojIFBsYWNlcyBcbmV3bGluZSBzaG91bGQgYmUgY29sbGFwc2VkIChrc2ggZXh0ZW5zaW9ucykKIwpuYW1lOiBia3NsLW5sLWtzaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBcbmV3bGluZSBpcyBjb2xsYXBzZWQgaW4gZXh0ZW5kZWQgZ2xvYmJpbmcKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCXh4eD1mb28KCWNhc2UgJHh4eCBpbgoJKGYqXAoJKFwKCW9cCgkpXAoJKSBlY2hvIG9rIDs7CgkqKSBlY2hvIGJhZAoJZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglvawotLS0KbmFtZTogYmtzbC1ubC1rc2gtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXG5ld2xpbmUgaXMgY29sbGFwc2VkIGluICgoLi4uKSkgZXhwcmVzc2lvbnMKCShrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCWk9MQoJKFwKCShcCglpPWkrMlwKCSlcCgkpCgllY2hvICRpCmV4cGVjdGVkLXN0ZG91dDoKCTMKLS0tCm5hbWU6IGJyZWFrLTEKZGVzY3JpcHRpb246CglTZWUgaWYgYnJlYWsgYnJlYWtzIG91dCBvZiBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhazsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTEKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBicmVhayAxOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtMgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWJyZWFrCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kLTMKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBldmFsIGJyZWFrOyBlY2hvIGJhZC0kaTsgZG9uZQoJZWNobyBlbmQtNApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQtMQoJYQoJZW5kLTIKCWE6eAoJZW5kLWEKCWI6eAoJZW5kLWIKCWM6eAoJZW5kLWMKCWVuZC0zCglhCgllbmQtNAotLS0KbmFtZTogYnJlYWstMgpkZXNjcmlwdGlvbjoKCVNlZSBpZiBicmVhayBicmVha3Mgb3V0IG9mIG5lc3RlZCBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQlicmVhayAyCgkJZWNobyBiYWQtJGkKCSAgICBkb25lCgkgICAgZWNobyBlbmQtJGkKCWRvbmUKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWE6eAoJZW5kCi0tLQpuYW1lOiBicmVhay0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46CglicmVhawpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBicmVhay00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBicmVhayBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipicmVhay4qLwotLS0KbmFtZTogYnJlYWstNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGJyZWFrIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGJyZWFrIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmJyZWFrLiovCi0tLQpuYW1lOiBjb250aW51ZS0xCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGNvbnRpbnVlcyBsb29wcwpzdGRpbjoKCWZvciBpIGluIGEgYiBjOyBkbyBlY2hvICRpOyBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC0xCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgY29udGludWUgMTsgZWNobyBiYWQtJGk7IGRvbmUKCWVjaG8gZW5kLTIKCWZvciBpIGluIGEgYiBjOyBkbwoJICAgIGZvciBqIGluIHggeSB6OyBkbwoJCWVjaG8gJGk6JGoKCQljb250aW51ZQoJCWVjaG8gYmFkLSRpLSRqCgkgICAgZG9uZQoJICAgIGVjaG8gZW5kLSRpCglkb25lCgllY2hvIGVuZC0zCglmb3IgaSBpbiBhIGIgYzsgZG8gZWNobyAkaTsgZXZhbCBjb250aW51ZTsgZWNobyBiYWQtJGkgOyBkb25lCgllY2hvIGVuZC00CmV4cGVjdGVkLXN0ZG91dDoKCWEKCWIKCWMKCWVuZC0xCglhCgliCgljCgllbmQtMgoJYTp4CglhOnkKCWE6egoJZW5kLWEKCWI6eAoJYjp5CgliOnoKCWVuZC1iCgljOngKCWM6eQoJYzp6CgllbmQtYwoJZW5kLTMKCWEKCWIKCWMKCWVuZC00Ci0tLQpuYW1lOiBjb250aW51ZS0yCmRlc2NyaXB0aW9uOgoJU2VlIGlmIGNvbnRpbnVlIGJyZWFrcyBvdXQgb2YgbmVzdGVkIGxvb3BzCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvCgkgICAgZm9yIGogaW4geCB5IHo7IGRvCgkJZWNobyAkaTokagoJCWNvbnRpbnVlIDIKCQllY2hvIGJhZC0kaS0kagoJICAgIGRvbmUKCSAgICBlY2hvIGVuZC0kaQoJZG9uZQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJYTp4CgliOngKCWM6eAoJZW5kCi0tLQpuYW1lOiBjb250aW51ZS0zCmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBjb250aW51ZSB1c2VkIG91dHNpZGUgb2YgYW55IGxvb3BzCgkoa3NoODgsa3NoOTMgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZSkKc3RkaW46Cgljb250aW51ZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjb250aW51ZS00CmRlc2NyaXB0aW9uOgoJV2hhdCBpZiBjb250aW51ZSBOIHVzZWQgd2hlbiBvbmx5IE4tMSBsb29wcwoJKGtzaDg4LGtzaDkzIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUpCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlIDI7IGVjaG8gYmFkLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCgliCgljCgllbmQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvLipjb250aW51ZS4qLwotLS0KbmFtZTogY29udGludWUtNQpkZXNjcmlwdGlvbjoKCUVycm9yIGlmIGNvbnRpbnVlIGFyZ3VtZW50IGlzbid0IGEgbnVtYmVyCnN0ZGluOgoJZm9yIGkgaW4gYSBiIGM7IGRvIGVjaG8gJGk7IGNvbnRpbnVlIGFiYzsgZWNobyBtb3JlLSRpOyBkb25lCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CglhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKmNvbnRpbnVlLiovCi0tLQpuYW1lOiBjZC1oaXN0b3J5CmRlc2NyaXB0aW9uOgoJVGVzdCBzb21lb25lJ3MgQ0QgaGlzdG9yeSBwYWNrYWdlICh1c2VzIGFycmF5cykKc3RkaW46CgkjIGdvIHRvIGtub3duIHBsYWNlIGJlZm9yZSBkb2luZyBhbnl0aGluZwoJY2QgLwoJCglhbGlhcyBjZD1fY2QKCWZ1bmN0aW9uIF9jZAoJewoJCXR5cGVzZXQgLWkgY2RsZW4gaQoJCXR5cGVzZXQgdAoJCgkJaWYgWyAkIyAtZXEgMCBdCgkJdGhlbgoJCQlzZXQgLS0gJEhPTUUKCQlmaQoJCgkJaWYgWyAiJENESElTVEZJTEUiIC1hIC1yICIkQ0RISVNURklMRSIgXSAjIGlmIGRpcmVjdG9yeSBoaXN0b3J5IGV4aXN0cwoJCXRoZW4KCQkJdHlwZXNldCBDREhJU1QKCQkJaT0tMQoJCQl3aGlsZSByZWFkIC1yIHQJCQkjIHJlYWQgZGlyZWN0b3J5IGhpc3RvcnkgZmlsZQoJCQlkbwoJCQkJQ0RISVNUW2k9aSsxXT0kdAoJCQlkb25lIDwkQ0RISVNURklMRQoJCWZpCgkKCQlpZiBbICIke0NESElTVFswXX0iICE9ICIkUFdEIiAtYSAiJFBXRCIgIT0gIiIgXQoJCXRoZW4KCQkJX2NkaW5zCQkJCSMgaW5zZXJ0ICRQV0QgaW50byBjZCBoaXN0b3J5CgkJZmkKCQoJCWNkbGVuPSR7I0NESElTVFsqXX0JCQkjIG51bWJlciBvZiBlbGVtZW50cyBpbiBoaXN0b3J5CgkKCQljYXNlICIkQCIgaW4KCQktKQkJCQkJIyBjZCB0byBuZXcgZGlyCgkJCWlmIFsgIiRPTERQV0QiID0gIiIgXSAmJiAoKGNkbGVuPjEpKQoJCQl0aGVuCgkJCQkncHJpbnQnICR7Q0RISVNUWzFdfQoJCQkJJ2NkJyAke0NESElTVFsxXX0KCQkJCV9wd2QKCQkJZWxzZQoJCQkJJ2NkJyAkQAoJCQkJX3B3ZAoJCQlmaQoJCQk7OwoJCS1sKQkJCQkJIyBwcmludCBkaXJlY3RvcnkgbGlzdAoJCQl0eXBlc2V0IC1SMyBudW0KCQkJKChpPWNkbGVuKSkKCQkJd2hpbGUgKCgoaT1pLTEpPj0wKSkKCQkJZG8KCQkJCW51bT0kaQoJCQkJJ3ByaW50JyAiJG51bSAke0NESElTVFtpXX0iCgkJCWRvbmUKCQkJcmV0dXJuCgkJCTs7CgkJLVswLTldfC1bMC05XVswLTldKQkJCSMgY2QgdG8gZGlyIGluIGxpc3QKCQkJaWYgKCgoaT0kezEjLX0pPGNkbGVuKSkKCQkJdGhlbgoJCQkJJ3ByaW50JyAke0NESElTVFtpXX0KCQkJCSdjZCcgJHtDREhJU1RbaV19CgkJCQlfcHdkCgkJCWVsc2UKCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQktKikJCQkJCSMgY2QgdG8gbWF0Y2hlZCBkaXIgaW4gbGlzdAoJCQl0PSR7MSMtfQoJCQlpPTEKCQkJd2hpbGUgKChpPGNkbGVuKSkKCQkJZG8KCQkJCWNhc2UgJHtDREhJU1RbaV19IGluCgkJCQkqJHQqKQoJCQkJCSdwcmludCcgJHtDREhJU1RbaV19CgkJCQkJJ2NkJyAke0NESElTVFtpXX0KCQkJCQlfcHdkCgkJCQkJYnJlYWsKCQkJCQk7OwoJCQkJZXNhYwoJCQkJKChpPWkrMSkpCgkJCWRvbmUKCQkJaWYgKChpPj1jZGxlbikpCgkJCXRoZW4KCQkJCSdjZCcgJEAKCQkJCV9wd2QKCQkJZmkKCQkJOzsKCQkqKQkJCQkJIyBjZCB0byBuZXcgZGlyCgkJCSdjZCcgJEAKCQkJX3B3ZAoJCQk7OwoJCWVzYWMKCQoJCV9jZGlucwkJCQkJIyBpbnNlcnQgJFBXRCBpbnRvIGNkIGhpc3RvcnkKCQoJCWlmIFsgIiRDREhJU1RGSUxFIiBdCgkJdGhlbgoJCQljZGxlbj0keyNDREhJU1RbKl19CQkjIG51bWJlciBvZiBlbGVtZW50cyBpbiBoaXN0b3J5CgkKCQkJaT0wCgkJCXdoaWxlICgoaTxjZGxlbikpCgkJCWRvCgkJCQkncHJpbnQnIC1yICR7Q0RISVNUW2ldfQkjIHVwZGF0ZSBkaXJlY3RvcnkgaGlzdG9yeQoJCQkJKChpPWkrMSkpCgkJCWRvbmUgPiRDREhJU1RGSUxFCgkJZmkKCX0KCQoJZnVuY3Rpb24gX2NkaW5zCQkJCQkjIGluc2VydCAkUFdEIGludG8gY2QgaGlzdG9yeQoJewkJCQkJCSMgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgYnkgX2NkCgkJdHlwZXNldCAtaSBpCgkKCQkoKGk9MCkpCgkJd2hpbGUgKChpPCR7I0NESElTVFsqXX0pKQkJIyBzZWUgaWYgZGlyIGlzIGFscmVhZHkgaW4gbGlzdAoJCWRvCgkJCWlmIFsgIiR7Q0RISVNUWyRpXX0iID0gIiRQV0QiIF0KCQkJdGhlbgoJCQkJYnJlYWsKCQkJZmkKCQkJKChpPWkrMSkpCgkJZG9uZQoJCgkJaWYgKChpPjIyKSkJCQkJIyBsaW1pdCBtYXggc2l6ZSBvZiBsaXN0CgkJdGhlbgoJCQlpPTIyCgkJZmkKCQoJCXdoaWxlICgoKGk9aS0xKT49MCkpCQkJIyBidW1wIG9sZCBkaXJzIGluIGxpc3QKCQlkbwoJCQlDREhJU1RbaSsxXT0ke0NESElTVFtpXX0KCQlkb25lCgkKCQlDREhJU1RbMF09JFBXRAkJCQkjIGluc2VydCBuZXcgZGlyZWN0b3J5IGluIGxpc3QKCX0KCQoJCglmdW5jdGlvbiBfcHdkCgl7CgkJaWYgWyAtbiAiJEVDRCIgXQoJCXRoZW4KCQkJcHdkIDE+JjYKCQlmaQoJfQoJIyBTdGFydCBvZiB0ZXN0CgljZCAvdG1wCgljZCAvYmluCgljZCAvZXRjCgljZCAtCgljZCAtMgoJY2QgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJL2JpbgoJL3RtcAoJICAzIC8KCSAgMiAvZXRjCgkgIDEgL2JpbgoJICAwIC90bXAKLS0tCm5hbWU6IGNkLXBlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcGFja2FnZSBmb3IgY2QgLVBlCm5lZWQtcGFzczogbm8KIyB0aGUgbXYgY29tbWFuZCBmYWlscyBvbiBDeWd3aW4gYW5kIHovT1MKIyBIdXJkIGFib3J0cyB0aGUgdGVzdHN1aXRlIChwZXJtaXNzaW9uIGRlbmllZCkKIyBRTlggZG9lcyBub3QgZmluZCBzdWJkaXIgdG8gY2QgaW50bwpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6Z251LCFvczptaWRpcGl4LCFvczptc3lzLCFvczpudG8sIW9zOm9zMzkwLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZmlsZSA2NDQgIngiCglta2RpciBub3JlYWQgbm9yZWFkL3RhcmdldCBub3JlYWQvdGFyZ2V0L3N1YmRpcgoJbG4gLXMgbm9yZWFkIGxpbmsKCWNobW9kIDMxMSBub3JlYWQKCWNkIC1QJDEgLgoJZWNobyAwPSQ/Cglid2Q9JFBXRAoJY2QgLVAkMSBsaW5rL3RhcmdldAoJZWNobyAxPSQ/LCR7UFdEIyRid2QvfQoJZXB3ZD0kKCRUU0hFTEwgLWMgcHdkIDI+L2Rldi9udWxsKQoJIyBUaGlzIHVuZXhwZWN0ZWRseSBzdWNjZWVkcyBvbiBHTlUvTGludXggYW5kIE1pZG5pZ2h0QlNECgkjZWNobyBwd2Q9JD8sJGVwd2QKCSMgZXhwZWN0Oglwd2Q9MSwKCW12IC4uLy4uL25vcmVhZCAuLi8uLi9yZW5hbWVkCgljZCAtUCQxIHN1YmRpcgoJZWNobyAyPSQ/LCR7UFdEIyRid2QvfQoJY2QgJGJ3ZAoJY2htb2QgNzU1IG5vcmVhZCByZW5hbWVkIDI+L2Rldi9udWxsCglybSAtcmYgbm9yZWFkIGxpbmsgcmVuYW1lZApzdGRpbjoKCWV4cG9ydCBUU0hFTEw9IiRfX3Byb2duYW1lIgoJIiRfX3Byb2duYW1lIiB4CgllY2hvICJub3cgd2l0aCAtZToiCgkiJF9fcHJvZ25hbWUiIHggZQpleHBlY3RlZC1zdGRvdXQ6CgkwPTAKCTE9MCxub3JlYWQvdGFyZ2V0CgkyPTAsbm9yZWFkL3RhcmdldC9zdWJkaXIKCW5vdyB3aXRoIC1lOgoJMD0wCgkxPTAsbm9yZWFkL3RhcmdldAoJMj0xLG5vcmVhZC90YXJnZXQvc3ViZGlyCi0tLQpuYW1lOiBlbnYtcHJvbXB0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwcm9tcHQgbm90IHByaW50ZWQgd2hlbiBwcm9jZXNzaW5nIEVOVgplbnYtc2V0dXA6ICFFTlY9Li9mb28hCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJmb28iCglYWFg9XwoJUFMxPVgKCWZhbHNlICYmIGVjaG8gaG1tbQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgllY2hvIGhpJHtYWFh9dGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGlfdGhlcmUKZXhwZWN0ZWQtc3RkZXJyOiAhCglYWAotLS0KbmFtZTogZXhwYW5kLXVnbHkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlaXJkICR7Zm9vK2Jhcn0gY29uc3RydWN0cyBhcmUgcGFyc2VkIGNvcnJlY3RseQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5mb3IgeCBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIjwkeD4gIjsgZG9uZScgPnBmcwoJY2htb2QgK3ggcGZuIHBmcwoJKGVjaG8gMSAke0lGUysnfSd6fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMQoJKGVjaG8gMiAiJHtJRlMrJ30nen0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyCgkoZWNobyAzICJmb28gJHtJRlMrJ2Jhcn0gYmF6IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMwoJKGVjaG8gLW4gJzQgJzsgLi9wZm4gImZvbyAke0lGUysiYiAgIGMifSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0CgkoZWNobyAtbiAnNSAnOyAuL3BmbiAiZm9vICR7SUZTK2IgICBjfSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA1CgkoZWNobyA2ICR7SUZTKyJ9Inp9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA2CgkoZWNobyA3ICIke0lGUysifSJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDcKCShlY2hvIDggIiR7SUZTK1wifVwien0iKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA4CgkoZWNobyA5ICIke0lGUytcIlx9XCJ6fSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDkKCShlY2hvIDEwIGZvbyAke0lGUysnYmFyfSBiYXonfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTAKCShlY2hvIDExICIkKGVjaG8gIiR7SUZTKyd9J3p9IikiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMQoJKGVjaG8gMTIgIiQoZWNobyAke0lGUysnfSd6fSkiKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAxMgoJKGVjaG8gMTMgJHtJRlMrXH16fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTMKCShlY2hvIDE0ICIke0lGUytcfXp9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTQKCXU9eDsgKGVjaG8gLW4gJzE1ICc7IC4vcGZzICJmb28gJHtJRlMrYSJiJHV7IHsie3tcfWJ9IGMgJHtJRlMrZHt9fSBiYXIiICR7SUZTLWV7fX0gYmF6OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE1CglsPXQ7IChlY2hvIDE2ICR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTYKCWw9dDsgKGVjaG8gMTcgJHtJRlMraCQoZWNobyAtbiBpICR7SUZTKyRsfWgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTcKCWw9dDsgKGVjaG8gMTggIiR7SUZTK2hgZWNobyAtbiBpICR7SUZTKyRsfWhgZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDE4CglsPXQ7IChlY2hvIDE5ICIke0lGUytoJChlY2hvIC1uIGkgJHtJRlMrJGx9aCllcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMTkKCWw9dDsgKGVjaG8gMjAgJHtJRlMraGBlY2hvIC1uIGkgIiR7SUZTKyRsfSJoYGVyZX0pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIwCglsPXQ7IChlY2hvIDIxICR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjEKCWw9dDsgKGVjaG8gMjIgIiR7SUZTK2hgZWNobyAtbiBpICIke0lGUyskbH0iaGBlcmV9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjIKCWw9dDsgKGVjaG8gMjMgIiR7SUZTK2gkKGVjaG8gLW4gaSAiJHtJRlMrJGx9ImgpZXJlfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDIzCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNCAnOyAuL3BmbiAiJHtJRlMrJyRrZXknfSIpIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDI0CglrZXk9dmFsdWU7IChlY2hvIC1uICcyNSAnOyAuL3BmbiAiJHtJRlMrIicka2V5JyJ9IikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMjUJIyBrc2g5Mzog4oCcJyRrZXkn4oCdCglrZXk9dmFsdWU7IChlY2hvIC1uICcyNiAnOyAuL3BmbiAke0lGUysnJGtleSd9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNgoJa2V5PXZhbHVlOyAoZWNobyAtbiAnMjcgJzsgLi9wZm4gJHtJRlMrIicka2V5JyJ9KSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyNwoJKGVjaG8gLW4gJzI4ICc7IC4vcGZuICIke0lGUysiJyJ4IH4geCd9J3giJ30ieH0iICMnKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOAoJdT14OyAoZWNobyAtbiAnMjkgJzsgLi9wZnMgZm9vICR7SUZTK2EiYiR1eyB7Insge1x9Yn0gYyAke0lGUytke319IGJhciAke0lGUy1le319IGJhejsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAyOQoJKGVjaG8gLW4gJzMwICc7IC4vcGZzICR7SUZTK2ZvbyAnYlwKCWFyJyBiYXp9OyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IChlY2hvIGZhaWxlZCBpbiAzMDsgZWNobyBmYWlsZWQgaW4gMzEpCgkoZWNobyAtbiAnMzIgJzsgLi9wZnMgJHtJRlMrZm9vICJiXAoJYXIiIGJhen07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzIKCShlY2hvIC1uICczMyAnOyAuL3BmcyAiJHtJRlMrZm9vICdiXAoJYXInIGJhen0iOyBlY2hvIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDMzCgkoZWNobyAtbiAnMzQgJzsgLi9wZnMgIiR7SUZTK2ZvbyAiYlwKCWFyIiBiYXp9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNAoJKGVjaG8gLW4gJzM1ICc7IC4vcGZzICR7dj1hXCBifSB4ICR7dj1jXCBkfTsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiAzNQoJKGVjaG8gLW4gJzM2ICc7IC4vcGZzICIke3Y9YVwgYn0iIHggIiR7dj1jXCBkfSI7IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzYKCShlY2hvIC1uICczNyAnOyAuL3BmcyAke3YtYVwgYn0geCAke3YtY1wgZH07IGVjaG8gLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzcKCShlY2hvIDM4ICR7SUZTK3gnYSd5fSAvICIke0lGUyt4J2EneX0iIC4pIDI+L2Rldi9udWxsIHx8IGVjaG8gZmFpbGVkIGluIDM4Cglmb289IngnYSd5IjsgKGVjaG8gMzkgJHtmb28lKidhJyp9IC8gIiR7Zm9vJSonYScqfSIgLikgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gMzkKCWZvbz0iYSBiIGMiOyAoZWNobyAtbiAnNDAgJzsgLi9wZnMgIiR7Zm9vI2F9IjsgZWNobyAuKSAyPi9kZXYvbnVsbCB8fCBlY2hvIGZhaWxlZCBpbiA0MAoJKGZvbygpIHsgcmV0dXJuIDEwMDsgfTsgZm9vOyBlY2hvIDQxICR7IyskeyM6KyR7Iz99fVwgXH1cfVx9fSkgMj4vZGV2L251bGwgfHwgZWNobyBmYWlsZWQgaW4gNDEKZXhwZWN0ZWQtc3Rkb3V0OgoJMSB9egoJMiAnJ3p9CgkzIGZvbyAnYmFyIGJhegoJNCBmb28gYiAgIGMgYmF6Cgk1IGZvbyBiICAgYyBiYXoKCTYgfXoKCTcgfXoKCTggIiJ6fQoJOSAifSJ6CgkxMCBmb28gYmFyfSBiYXoKCTExICcnen0KCTEyIH16CgkxMyB9egoJMTQgfXoKCTE1IDxmb28gYWJ4eyB7e3t9YiBjIGR7fSBiYXI+IDx9PiA8YmF6PiAuCgkxNiBoaSB0aGVyZQoJMTcgaGkgdGhlcmUKCTE4IGhpIHRoZXJlCgkxOSBoaSB0aGVyZQoJMjAgaGkgdGhlcmUKCTIxIGhpIHRoZXJlCgkyMiBoaSB0aGVyZQoJMjMgaGkgdGhlcmUKCTI0ICd2YWx1ZScKCTI1ICd2YWx1ZScKCTI2ICRrZXkKCTI3ICd2YWx1ZScKCTI4ICd4IH4geCcneH0ieH0iICMKCTI5IDxmb28+IDxhYnh7IHt7PiA8e31iPiA8Yz4gPGR7fT4gPGJhcj4gPH0+IDxiYXo+IC4KCTMwIDxmb28+IDxiXAoJYXI+IDxiYXo+IC4KCTMyIDxmb28+IDxiYXI+IDxiYXo+IC4KCTMzIDxmb28gJ2JhcicgYmF6PiAuCgkzNCA8Zm9vIGJhciBiYXo+IC4KCTM1IDxhPiA8Yj4gPHg+IDxhPiA8Yj4gLgoJMzYgPGFcIGI+IDx4PiA8YVwgYj4gLgoJMzcgPGEgYj4gPHg+IDxjIGQ+IC4KCTM4IHhheSAvIHgnYSd5IC4KCTM5IHgnIC8geCcgLgoJNDAgPCBiIGM+IC4KCTQxIDMgfX19Ci0tLQpuYW1lOiBleHBhbmQtdW5nbG9iLWRibHEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlZ3VsYXIgIiR7Zm9vK2Jhcn0iIGNvbnN0cnVjdHMgYXJlIHBhcnNlZCBjb3JyZWN0bHkKc3RkaW46Cgl1PXgKCXRsX25vcm0oKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAiJDEgcGx1cyBub3JtIGZvbyAke3YrJ2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIGRhc2ggbm9ybSBmb28gJHt2LSdiYXInfSBiYXoiKQoJCShlY2hvICIkMSBlcWFsIG5vcm0gZm9vICR7dj0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgcXN0biBub3JtIGZvbyAke3Y/J2Jhcid9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBub3JtIC0+IGVycm9yIgoJCShlY2hvICIkMSBQTFVTIG5vcm0gZm9vICR7djorJ2Jhcid9IGJheiIpCgkJKGVjaG8gIiQxIERBU0ggbm9ybSBmb28gJHt2Oi0nYmFyJ30gYmF6IikKCQkoZWNobyAiJDEgRVFBTCBub3JtIGZvbyAke3Y6PSdiYXInfSBiYXoiKQoJCShlY2hvICIkMSBRU1ROIG5vcm0gZm9vICR7djo/J2Jhcid9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBub3JtIC0+IGVycm9yIgoJfQoJdGxfcGFyZW4oKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAiJDEgcGx1cyBwYXJuIGZvbyAke3YrKGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIGRhc2ggcGFybiBmb28gJHt2LShiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBlcWFsIHBhcm4gZm9vICR7dj0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgcXN0biBwYXJuIGZvbyAke3Y/KGJhcil9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBwYXJuIC0+IGVycm9yIgoJCShlY2hvICIkMSBQTFVTIHBhcm4gZm9vICR7djorKGJhcil9IGJheiIpCgkJKGVjaG8gIiQxIERBU0ggcGFybiBmb28gJHt2Oi0oYmFyKX0gYmF6IikKCQkoZWNobyAiJDEgRVFBTCBwYXJuIGZvbyAke3Y6PShiYXIpfSBiYXoiKQoJCShlY2hvICIkMSBRU1ROIHBhcm4gZm9vICR7djo/KGJhcil9IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBwYXJuIC0+IGVycm9yIgoJfQoJdGxfYnJhY2UoKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAiJDEgcGx1cyBicmFjIGZvbyAke3YrYSR1e3t7XH1ifSBjICR7ditke319IGJheiIpCgkJKGVjaG8gIiQxIGRhc2ggYnJhYyBmb28gJHt2LWEkdXt7e1x9Yn0gYyAke3YtZHt9fSBiYXoiKQoJCShlY2hvICIkMSBlcWFsIGJyYWMgZm9vICR7dj1hJHV7e3tcfWJ9IGMgJHt2PWR7fX0gYmF6IikKCQkoZWNobyAiJDEgcXN0biBicmFjIGZvbyAke3Y/YSR1e3t7XH1ifSBjICR7dj9ke319IGJheiIpIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBicmFjIC0+IGVycm9yIgoJCShlY2hvICIkMSBQTFVTIGJyYWMgZm9vICR7djorYSR1e3t7XH1ifSBjICR7djorZHt9fSBiYXoiKQoJCShlY2hvICIkMSBEQVNIIGJyYWMgZm9vICR7djotYSR1e3t7XH1ifSBjICR7djotZHt9fSBiYXoiKQoJCShlY2hvICIkMSBFUUFMIGJyYWMgZm9vICR7djo9YSR1e3t7XH1ifSBjICR7djo9ZHt9fSBiYXoiKQoJCShlY2hvICIkMSBRU1ROIGJyYWMgZm9vICR7djo/YSR1e3t7XH1ifSBjICR7djo/ZHt9fSBiYXoiKSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIFFTVE4gYnJhYyAtPiBlcnJvciIKCX0KCTogJ319fScgJ319fScgJ319fScgJ319fScgJ319fScgJ319fScgJ319fScgJ319fScKCXRsX25vcm0gMSAtCgl0bF9ub3JtIDIgJycKCXRsX25vcm0gMyB4Cgl0bF9wYXJlbiA0IC0KCXRsX3BhcmVuIDUgJycKCXRsX3BhcmVuIDYgeAoJdGxfYnJhY2UgNyAtCgl0bF9icmFjZSA4ICcnCgl0bF9icmFjZSA5IHgKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBwbHVzIG5vcm0gZm9vICBiYXoKCTEgZGFzaCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgZXFhbCBub3JtIGZvbyAnYmFyJyBiYXoKCTEgcXN0biBub3JtIC0+IGVycm9yCgkxIFBMVVMgbm9ybSBmb28gIGJhegoJMSBEQVNIIG5vcm0gZm9vICdiYXInIGJhegoJMSBFUUFMIG5vcm0gZm9vICdiYXInIGJhegoJMSBRU1ROIG5vcm0gLT4gZXJyb3IKCTIgcGx1cyBub3JtIGZvbyAnYmFyJyBiYXoKCTIgZGFzaCBub3JtIGZvbyAgYmF6CgkyIGVxYWwgbm9ybSBmb28gIGJhegoJMiBxc3RuIG5vcm0gZm9vICBiYXoKCTIgUExVUyBub3JtIGZvbyAgYmF6CgkyIERBU0ggbm9ybSBmb28gJ2JhcicgYmF6CgkyIEVRQUwgbm9ybSBmb28gJ2JhcicgYmF6CgkyIFFTVE4gbm9ybSAtPiBlcnJvcgoJMyBwbHVzIG5vcm0gZm9vICdiYXInIGJhegoJMyBkYXNoIG5vcm0gZm9vIHggYmF6CgkzIGVxYWwgbm9ybSBmb28geCBiYXoKCTMgcXN0biBub3JtIGZvbyB4IGJhegoJMyBQTFVTIG5vcm0gZm9vICdiYXInIGJhegoJMyBEQVNIIG5vcm0gZm9vIHggYmF6CgkzIEVRQUwgbm9ybSBmb28geCBiYXoKCTMgUVNUTiBub3JtIGZvbyB4IGJhegoJNCBwbHVzIHBhcm4gZm9vICBiYXoKCTQgZGFzaCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgZXFhbCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgcXN0biBwYXJuIC0+IGVycm9yCgk0IFBMVVMgcGFybiBmb28gIGJhegoJNCBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNCBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNCBRU1ROIHBhcm4gLT4gZXJyb3IKCTUgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTUgZGFzaCBwYXJuIGZvbyAgYmF6Cgk1IGVxYWwgcGFybiBmb28gIGJhegoJNSBxc3RuIHBhcm4gZm9vICBiYXoKCTUgUExVUyBwYXJuIGZvbyAgYmF6Cgk1IERBU0ggcGFybiBmb28gKGJhcikgYmF6Cgk1IEVRQUwgcGFybiBmb28gKGJhcikgYmF6Cgk1IFFTVE4gcGFybiAtPiBlcnJvcgoJNiBwbHVzIHBhcm4gZm9vIChiYXIpIGJhegoJNiBkYXNoIHBhcm4gZm9vIHggYmF6Cgk2IGVxYWwgcGFybiBmb28geCBiYXoKCTYgcXN0biBwYXJuIGZvbyB4IGJhegoJNiBQTFVTIHBhcm4gZm9vIChiYXIpIGJhegoJNiBEQVNIIHBhcm4gZm9vIHggYmF6Cgk2IEVRQUwgcGFybiBmb28geCBiYXoKCTYgUVNUTiBwYXJuIGZvbyB4IGJhegoJNyBwbHVzIGJyYWMgZm9vICBjIH0gYmF6Cgk3IGRhc2ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgZXFhbCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IHFzdG4gYnJhYyAtPiBlcnJvcgoJNyBQTFVTIGJyYWMgZm9vICBjIH0gYmF6Cgk3IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IFFTVE4gYnJhYyAtPiBlcnJvcgoJOCBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk4IGRhc2ggYnJhYyBmb28gIGMgfSBiYXoKCTggZXFhbCBicmFjIGZvbyAgYyB9IGJhegoJOCBxc3RuIGJyYWMgZm9vICBjIH0gYmF6Cgk4IFBMVVMgYnJhYyBmb28gIGMgfSBiYXoKCTggREFTSCBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOCBFUUFMIGJyYWMgZm9vIGF4e3t7fWIgYyBheHt7e31ifSBiYXoKCTggUVNUTiBicmFjIC0+IGVycm9yCgk5IHBsdXMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTkgZGFzaCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IGVxYWwgYnJhYyBmb28geCBjIHh9IGJhegoJOSBxc3RuIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgUExVUyBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJOSBEQVNIIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgRVFBTCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IFFTVE4gYnJhYyBmb28geCBjIHh9IGJhegotLS0KbmFtZTogZXhwYW5kLXVuZ2xvYi11bnEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHJlZ3VsYXIgJHtmb28rYmFyfSBjb25zdHJ1Y3RzIGFyZSBwYXJzZWQgY29ycmVjdGx5CnN0ZGluOgoJdT14Cgl0bF9ub3JtKCkgewoJCXY9JDIKCQl0ZXN0IHgiJHYiID0geCItIiAmJiB1bnNldCB2CgkJKGVjaG8gJDEgcGx1cyBub3JtIGZvbyAke3YrJ2Jhcid9IGJheikKCQkoZWNobyAkMSBkYXNoIG5vcm0gZm9vICR7di0nYmFyJ30gYmF6KQoJCShlY2hvICQxIGVxYWwgbm9ybSBmb28gJHt2PSdiYXInfSBiYXopCgkJKGVjaG8gJDEgcXN0biBub3JtIGZvbyAke3Y/J2Jhcid9IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBxc3RuIG5vcm0gLT4gZXJyb3IiCgkJKGVjaG8gJDEgUExVUyBub3JtIGZvbyAke3Y6KydiYXInfSBiYXopCgkJKGVjaG8gJDEgREFTSCBub3JtIGZvbyAke3Y6LSdiYXInfSBiYXopCgkJKGVjaG8gJDEgRVFBTCBub3JtIGZvbyAke3Y6PSdiYXInfSBiYXopCgkJKGVjaG8gJDEgUVNUTiBub3JtIGZvbyAke3Y6PydiYXInfSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgUVNUTiBub3JtIC0+IGVycm9yIgoJfQoJdGxfcGFyZW4oKSB7CgkJdj0kMgoJCXRlc3QgeCIkdiIgPSB4Ii0iICYmIHVuc2V0IHYKCQkoZWNobyAkMSBwbHVzIHBhcm4gZm9vICR7ditcKGJhcicpJ30gYmF6KQoJCShlY2hvICQxIGRhc2ggcGFybiBmb28gJHt2LVwoYmFyJyknfSBiYXopCgkJKGVjaG8gJDEgZXFhbCBwYXJuIGZvbyAke3Y9XChiYXInKSd9IGJheikKCQkoZWNobyAkMSBxc3RuIHBhcm4gZm9vICR7dj9cKGJhcicpJ30gYmF6KSAyPi9kZXYvbnVsbCB8fCBcCgkJICAgIGVjaG8gIiQxIHFzdG4gcGFybiAtPiBlcnJvciIKCQkoZWNobyAkMSBQTFVTIHBhcm4gZm9vICR7djorXChiYXInKSd9IGJheikKCQkoZWNobyAkMSBEQVNIIHBhcm4gZm9vICR7djotXChiYXInKSd9IGJheikKCQkoZWNobyAkMSBFUUFMIHBhcm4gZm9vICR7djo9XChiYXInKSd9IGJheikKCQkoZWNobyAkMSBRU1ROIHBhcm4gZm9vICR7djo/XChiYXInKSd9IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBRU1ROIHBhcm4gLT4gZXJyb3IiCgl9Cgl0bF9icmFjZSgpIHsKCQl2PSQyCgkJdGVzdCB4IiR2IiA9IHgiLSIgJiYgdW5zZXQgdgoJCShlY2hvICQxIHBsdXMgYnJhYyBmb28gJHt2K2EkdXt7e1x9Yn0gYyAke3YrZHt9fSBiYXopCgkJKGVjaG8gJDEgZGFzaCBicmFjIGZvbyAke3YtYSR1e3t7XH1ifSBjICR7di1ke319IGJheikKCQkoZWNobyAkMSBlcWFsIGJyYWMgZm9vICR7dj1hJHV7e3tcfWJ9IGMgJHt2PWR7fX0gYmF6KQoJCShlY2hvICQxIHFzdG4gYnJhYyBmb28gJHt2P2EkdXt7e1x9Yn0gYyAke3Y/ZHt9fSBiYXopIDI+L2Rldi9udWxsIHx8IFwKCQkgICAgZWNobyAiJDEgcXN0biBicmFjIC0+IGVycm9yIgoJCShlY2hvICQxIFBMVVMgYnJhYyBmb28gJHt2OithJHV7e3tcfWJ9IGMgJHt2Oitke319IGJheikKCQkoZWNobyAkMSBEQVNIIGJyYWMgZm9vICR7djotYSR1e3t7XH1ifSBjICR7djotZHt9fSBiYXopCgkJKGVjaG8gJDEgRVFBTCBicmFjIGZvbyAke3Y6PWEkdXt7e1x9Yn0gYyAke3Y6PWR7fX0gYmF6KQoJCShlY2hvICQxIFFTVE4gYnJhYyBmb28gJHt2Oj9hJHV7e3tcfWJ9IGMgJHt2Oj9ke319IGJheikgMj4vZGV2L251bGwgfHwgXAoJCSAgICBlY2hvICIkMSBRU1ROIGJyYWMgLT4gZXJyb3IiCgl9Cgk6ICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nICd9fX0nCgl0bF9ub3JtIDEgLQoJdGxfbm9ybSAyICcnCgl0bF9ub3JtIDMgeAoJdGxfcGFyZW4gNCAtCgl0bF9wYXJlbiA1ICcnCgl0bF9wYXJlbiA2IHgKCXRsX2JyYWNlIDcgLQoJdGxfYnJhY2UgOCAnJwoJdGxfYnJhY2UgOSB4CmV4cGVjdGVkLXN0ZG91dDoKCTEgcGx1cyBub3JtIGZvbyBiYXoKCTEgZGFzaCBub3JtIGZvbyBiYXIgYmF6CgkxIGVxYWwgbm9ybSBmb28gYmFyIGJhegoJMSBxc3RuIG5vcm0gLT4gZXJyb3IKCTEgUExVUyBub3JtIGZvbyBiYXoKCTEgREFTSCBub3JtIGZvbyBiYXIgYmF6CgkxIEVRQUwgbm9ybSBmb28gYmFyIGJhegoJMSBRU1ROIG5vcm0gLT4gZXJyb3IKCTIgcGx1cyBub3JtIGZvbyBiYXIgYmF6CgkyIGRhc2ggbm9ybSBmb28gYmF6CgkyIGVxYWwgbm9ybSBmb28gYmF6CgkyIHFzdG4gbm9ybSBmb28gYmF6CgkyIFBMVVMgbm9ybSBmb28gYmF6CgkyIERBU0ggbm9ybSBmb28gYmFyIGJhegoJMiBFUUFMIG5vcm0gZm9vIGJhciBiYXoKCTIgUVNUTiBub3JtIC0+IGVycm9yCgkzIHBsdXMgbm9ybSBmb28gYmFyIGJhegoJMyBkYXNoIG5vcm0gZm9vIHggYmF6CgkzIGVxYWwgbm9ybSBmb28geCBiYXoKCTMgcXN0biBub3JtIGZvbyB4IGJhegoJMyBQTFVTIG5vcm0gZm9vIGJhciBiYXoKCTMgREFTSCBub3JtIGZvbyB4IGJhegoJMyBFUUFMIG5vcm0gZm9vIHggYmF6CgkzIFFTVE4gbm9ybSBmb28geCBiYXoKCTQgcGx1cyBwYXJuIGZvbyBiYXoKCTQgZGFzaCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgZXFhbCBwYXJuIGZvbyAoYmFyKSBiYXoKCTQgcXN0biBwYXJuIC0+IGVycm9yCgk0IFBMVVMgcGFybiBmb28gYmF6Cgk0IERBU0ggcGFybiBmb28gKGJhcikgYmF6Cgk0IEVRQUwgcGFybiBmb28gKGJhcikgYmF6Cgk0IFFTVE4gcGFybiAtPiBlcnJvcgoJNSBwbHVzIHBhcm4gZm9vIChiYXIpIGJhegoJNSBkYXNoIHBhcm4gZm9vIGJhegoJNSBlcWFsIHBhcm4gZm9vIGJhegoJNSBxc3RuIHBhcm4gZm9vIGJhegoJNSBQTFVTIHBhcm4gZm9vIGJhegoJNSBEQVNIIHBhcm4gZm9vIChiYXIpIGJhegoJNSBFUUFMIHBhcm4gZm9vIChiYXIpIGJhegoJNSBRU1ROIHBhcm4gLT4gZXJyb3IKCTYgcGx1cyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgZGFzaCBwYXJuIGZvbyB4IGJhegoJNiBlcWFsIHBhcm4gZm9vIHggYmF6Cgk2IHFzdG4gcGFybiBmb28geCBiYXoKCTYgUExVUyBwYXJuIGZvbyAoYmFyKSBiYXoKCTYgREFTSCBwYXJuIGZvbyB4IGJhegoJNiBFUUFMIHBhcm4gZm9vIHggYmF6Cgk2IFFTVE4gcGFybiBmb28geCBiYXoKCTcgcGx1cyBicmFjIGZvbyBjIH0gYmF6Cgk3IGRhc2ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTcgZXFhbCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk3IHFzdG4gYnJhYyAtPiBlcnJvcgoJNyBQTFVTIGJyYWMgZm9vIGMgfSBiYXoKCTcgREFTSCBicmFjIGZvbyBheHt7e31iIGMgZHt9IGJhegoJNyBFUUFMIGJyYWMgZm9vIGF4e3t7fWIgYyBheHt7e31ifSBiYXoKCTcgUVNUTiBicmFjIC0+IGVycm9yCgk4IHBsdXMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTggZGFzaCBicmFjIGZvbyBjIH0gYmF6Cgk4IGVxYWwgYnJhYyBmb28gYyB9IGJhegoJOCBxc3RuIGJyYWMgZm9vIGMgfSBiYXoKCTggUExVUyBicmFjIGZvbyBjIH0gYmF6Cgk4IERBU0ggYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTggRVFBTCBicmFjIGZvbyBheHt7e31iIGMgYXh7e3t9Yn0gYmF6Cgk4IFFTVE4gYnJhYyAtPiBlcnJvcgoJOSBwbHVzIGJyYWMgZm9vIGF4e3t7fWIgYyBke30gYmF6Cgk5IGRhc2ggYnJhYyBmb28geCBjIHh9IGJhegoJOSBlcWFsIGJyYWMgZm9vIHggYyB4fSBiYXoKCTkgcXN0biBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IFBMVVMgYnJhYyBmb28gYXh7e3t9YiBjIGR7fSBiYXoKCTkgREFTSCBicmFjIGZvbyB4IGMgeH0gYmF6Cgk5IEVRQUwgYnJhYyBmb28geCBjIHh9IGJhegoJOSBRU1ROIGJyYWMgZm9vIHggYyB4fSBiYXoKLS0tCm5hbWU6IGV4cGFuZC10aHJlZWNvbG9ucy1kYmxxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIGEgcGFydGljdWxhciB0aGluZyB0aGF0IHVzZWQgdG8gc2VnZmF1bHQKc3RkaW46CglURVNUPTEyMzQKCWVjaG8gIiR7VEVTVDoxOjI6M30iCgllY2hvICQ/IGJ1dCBzdGlsbCBsaXZpbmcKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogZXhwYW5kLXRocmVlY29sb25zLXVucQpkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBhIHBhcnRpY3VsYXIgdGhpbmcgdGhhdCB1c2VkIHRvIG5vdCBlcnJvciBvdXQKc3RkaW46CglURVNUPTEyMzQKCWVjaG8gJHtURVNUOjE6MjozfQoJZWNobyAkPyBidXQgc3RpbGwgbGl2aW5nCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4cGFuZC13ZWlyZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIG9mIHRyaW0gZXhwYW5zaW9uIHZzLiAkIyB2cy4gJHsjdmFyfSB2cy4gJHt2YXI/fQpzdGRpbjoKCXNldCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMQoJZWNobyAkeyN9CSMgdmFsdWUgb2YgJCMKCWVjaG8gJHsjI30JIyBsZW5ndGggb2YgJCMKCWVjaG8gJHsjIzF9CSMgJCMgdHJpbW1lZCAxCglzZXQgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIKCWVjaG8gJHsjIzF9CgkoZXhpdCAwKQoJZWNobyAkPyA9ICR7Iz99IC4KCShleGl0IDExMSkKCWVjaG8gJD8gPSAkeyM/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTExCgkyCgkxCgkyCgkwID0gMSAuCgkxMTEgPSAzIC4KLS0tCm5hbWU6IGV4cGFuZC13ZWlyZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbW9yZSBzdWJzdGl0dXRpb24gYW5kIGV4dGVuc2lvbiBjb3JuZXIgY2FzZXMKc3RkaW46Cgk6JiBzZXQgLUM7IHBpZD0kJDsgc3ViPSQhOyBmbGc9JC07IHNldCAtLSBpOyBleGVjIDM+eC50bXAKCSNlY2hvICJEOiAhPSQhICM9JCMgXCQ9JCQgLT0kLSA/PSQ/IgoJZWNobyA+JjMgMyA9IHNeJHshLXdvcmR9ICwgJHsjLXdvcmR9ICwgcF4keyQtd29yZH0gLCBmXiR7LS13b3JkfSAsICR7Py13b3JkfSAuCgllY2hvID4mMyA0ID0gJHshK3dvcmR9ICwgJHsjK3dvcmR9ICwgJHskK3dvcmR9ICwgJHstK3dvcmR9ICwgJHs/K3dvcmR9IC4KCWVjaG8gPiYzIDUgPSBzXiR7IT13b3JkfSAsICR7Iz13b3JkfSAsIHBeJHskPXdvcmR9ICwgZl4key09d29yZH0gLCAkez89d29yZH0gLgoJZWNobyA+JjMgNiA9IHNeJHshP3dvcmR9ICwgJHsjP3dvcmR9ICwgcF4keyQ/d29yZH0gLCBmXiR7LT93b3JkfSAsICR7Pz93b3JkfSAuCgllY2hvID4mMyA3ID0gc2xeJHsjIX0gLCAkeyMjfSAsIHBsXiR7IyR9ICwgZmxeJHsjLX0gLCAkeyM/fSAuCgllY2hvID4mMyA4ID0gc3deJHslIX0gLCAkeyUjfSAsIHB3XiR7JSR9ICwgZndeJHslLX0gLCAkeyU/fSAuCgllY2hvID4mMyA5ID0gJHshIX0gLCBzXiR7ISN9ICwgJHshJH0gLCBzXiR7IS19ICwgc14keyE/fSAuCgllY2hvID4mMyAxMCA9IHNeJHshI3BhdHRlcm59ICwgJHsjI3BhdHRlcm59ICwgcF4keyQjcGF0dGVybn0gLCBmXiR7LSNwYXR0ZXJufSAsICR7PyNwYXR0ZXJufSAuCgllY2hvID4mMyAxMSA9IHNeJHshJXBhdHRlcm59ICwgJHsjJXBhdHRlcm59ICwgcF4keyQlcGF0dGVybn0gLCBmXiR7LSVwYXR0ZXJufSAsICR7PyVwYXR0ZXJufSAuCgllY2hvID4mMyAxMiA9ICQjIDogJHsjI30gLCAkeyMjMX0gLgoJc2V0IC0tCgllY2hvID4mMyAxNCA9ICQjIDogJHsjI30gLCAkeyMjMX0gLgoJc2V0IC0tIDEgMiAzIDQgNQoJZWNobyA+JjMgMTYgPSAkIyA6ICR7IyN9ICwgJHsjIzF9IC4KCXNldCAtLSAxIDIgMyA0IDUgNiA3IDggOSBhIGIgYyBkIGUKCWVjaG8gPiYzIDE4ID0gJCMgOiAkeyMjfSAsICR7IyMxfSAuCglleGVjIDM+Ji0KCTx4LnRtcCBzZWQgXAoJICAgIC1lICJzLyBwbF4keyNwaWR9IC8gUElEIC9nIiAtZSAicy8gc2xeJHsjc3VifSAvIFNVQiAvZyIgLWUgInMvIGZsXiR7I2ZsZ30gLyBGTEcgL2ciIFwKCSAgICAtZSAicy8gcHdeJHslcGlkfSAvIFBJRCAvZyIgLWUgInMvIHN3XiR7JXN1Yn0gLyBTVUIgL2ciIC1lICJzLyBmd14keyVmbGd9IC8gRkxHIC9nIiBcCgkgICAgLWUgInMvIHBeJHBpZCAvIFBJRCAvZyIgLWUgInMvIHNeJHN1YiAvIFNVQiAvZyIgLWUgInMvIGZeJGZsZyAvIEZMRyAvZyIKZXhwZWN0ZWQtc3Rkb3V0OgoJMyA9IFNVQiAsIDEgLCBQSUQgLCBGTEcgLCAwIC4KCTQgPSB3b3JkICwgd29yZCAsIHdvcmQgLCB3b3JkICwgd29yZCAuCgk1ID0gU1VCICwgMSAsIFBJRCAsIEZMRyAsIDAgLgoJNiA9IFNVQiAsIDEgLCBQSUQgLCBGTEcgLCAwIC4KCTcgPSBTVUIgLCAxICwgUElEICwgRkxHICwgMSAuCgk4ID0gU1VCICwgMSAsIFBJRCAsIEZMRyAsIDEgLgoJOSA9ICEgLCBTVUIgLCAkICwgU1VCICwgU1VCIC4KCTEwID0gU1VCICwgMSAsIFBJRCAsIEZMRyAsIDAgLgoJMTEgPSBTVUIgLCAxICwgUElEICwgRkxHICwgMCAuCgkxMiA9IDEgOiAxICwgLgoJMTQgPSAwIDogMSAsIDAgLgoJMTYgPSA1IDogMSAsIDUgLgoJMTggPSAxNCA6IDIgLCA0IC4KLS0tCm5hbWU6IGV4cGFuZC13ZWlyZC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0cmltbWluZyB3b3JrcyB3aXRoIHBvc2l0aW9uYWwgcGFyYW1ldGVycyAoRGViaWFuICM0ODQ1MykKc3RkaW46CglBPTk5OTktMDIKCUI9OTk5OQoJZWNobyAxPSR7QSMkQj99LgoJc2V0IC0tICRBICRCCgllY2hvIDI9JHsxIyQyP30uCmV4cGVjdGVkLXN0ZG91dDoKCTE9MDIuCgkyPTAyLgotLS0KbmFtZTogZXhwYW5kLXdlaXJkLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRpbGRlIGV4cGFuc2lvbiBpcyBlbmFibGVkIGluICR7eCN+fQoJYW5kIGNhc2VzIHRoYXQgYXJlIG1vZGVsbGVkIGFmdGVyIGl0ICgke3gvfi9+fSkKc3RkaW46CglIT01FPS9ldGMKCWE9In4veCIKCWVjaG8gIjwke2Ejfn0+IDwke2EjXH59PiA8JHtiOi1+fT4gPCR7YjotXH59PiA8JHtjOj1+fT48JGM+IDwke2Evfn0+IDwke2EveC9+fT4gPCR7YS94L1x+fT4iCmV4cGVjdGVkLXN0ZG91dDoKCTx+L3g+IDwveD4gPH4+IDxcfj4gPH4+PH4+IDx+L3g+IDx+Ly9ldGM+IDx+L34+Ci0tLQpuYW1lOiBleHBhbmQtYmFuZy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2Ugb2YgJHshP30gd2l0aCAhIGJlaW5nIHZhciB2cy4gb3AKc3RkaW46CgllY2hvICR7IT99CmV4cGVjdGVkLWV4aXQ6IDEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9ub3Qgc2V0LwotLS0KbmFtZTogZXhwYW5kLWJhbmctMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGNvcm5lciBjYXNlIG9mICR7IXZhcn0gdnMuICR7dmFyIG9wfSB3aXRoIHZhcj0hCnN0ZGluOgoJZWNobyAxICQhIC4KCWVjaG8gMiAkeyEjfSAuCgllY2hvIDMgJHshI1swLTldfSAuCgllY2hvIDQgJHshLWZvb30gLgoJIyBnZXQgYW4gYXQgbGVhc3QgdGhyZWUtZGlnaXQgYmcgcGlkCgl3aGlsZSA6OyBkbwoJCTomCgkJeD0kIQoJCWlmIFtbICR4ICE9ICsoWzAtOV0pIF1dOyB0aGVuCgkJCWVjaG8gPiYyICJjYW5ub3QgdGVzdCwgcGlkICckeCcgbm90IG51bWVyaWMiCgkJCWVjaG8gPiYyIHJlcG9ydCB0aGlzIHdpdGggYXMgbWFueSBkZXRhaWxzIGFzIHBvc3NpYmxlCgkJCWV4aXQgMQoJCWZpCgkJW1sgJHggPSBbMC05XVswLTldWzAtOV0qIF1dICYmIGJyZWFrCglkb25lCgl5PSR7eCM/fQoJdD0kITsgW1sgJHQgPSAkeCBdXTsgZWNobyA1ICQ/IC4KCXQ9JHshI307IFtbICR0ID0gJHggXV07IGVjaG8gNiAkPyAuCgl0PSR7ISNbMC05XX07IFtbICR0ID0gJHkgXV07IGVjaG8gNyAkPyAuCgl0PSR7IS1mb299OyBbWyAkdCA9ICR4IF1dOyBlY2hvIDggJD8gLgoJdD0keyE/YmFyfTsgW1sgJHQgPSAkeCBdXTsgZWNobyA5ICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAuCgkyIC4KCTMgLgoJNCBmb28gLgoJNSAwIC4KCTYgMCAuCgk3IDAgLgoJOCAwIC4KCTkgMCAuCi0tLQpuYW1lOiBleHBhbmQtbnVtYmVyLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHBvc2l0aW9uYWwgYXJndW1lbnRzIGRvIG5vdCBvdmVyZmxvdwpzdGRpbjoKCWVjaG8gIjEgJHsxMjM0NTY3ODkwMTIzNDU2Nzg5MH0gLiIKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2lkZSBlZmZlY3RzIGluIHN1YnN0cmluZyByZXBsYWNlbWVudCBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKc3RkaW46Cglmb289bjFuMW4xbjJuMwoJaT0yCgluPTEKCWVjaG8gMSAke2Zvby8vbiQoKG4rKykpL1skKCgrK2kpKV19IC4KCWVjaG8gMiAkbiAsICRpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBbM11bM11bM11uMm4zIC4KCTIgMiAsIDMgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2lkZSBlZmZlY3RzIGluIHN1YnN0cmluZyByZXBsYWNlbWVudCBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKc3RkaW46Cglmb289bjFuMW4xbjJuMwoJaT0yCgluPTEKCWVjaG8gMSAke2Zvb0AvbiQoKG4rKykpL1skKCgrK2kpKV19IC4KCWVjaG8gMiAkbiAsICRpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBbM11uMW4xWzRdWzVdIC4KCTIgNSAsIDUgLgotLS0KbmFtZTogZXhwYW5kLXNsYXNoZXMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIGFjY2VzcyB0aGUgcmVwbGFjZWQgc3RyaW5nCnN0ZGluOgoJZm9vPW4xbjFuMW4ybjMKCWVjaG8gMSAke2Zvb0AvblsxMl0vWyRLU0hfTUFUQ0hdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgW24xXVtuMV1bbjFdW24yXW4zIC4KLS0tCm5hbWU6IGVnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyBpc24ndCBkb25lIHdoZW4gZ2xvYiBoYXMgc3ludGF4IGVycm9yCmNhdGVnb3J5OiAhb3M6Y3lnd2luLCFvczptaWRpcGl4LCFvczptc3lzLCFvczpvczIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkAoYVtifCljXWZvbyIKc3RkaW46CgllY2hvIEAoYVtifCljXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJQChhW2J8KWNdKgotLS0KbmFtZTogZWdsb2ItYmFkLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdsb2JiaW5nIGlzbid0IGRvbmUgd2hlbiBnbG9iIGhhcyBzeW50YXggZXJyb3IKCShBVCZUIGtzaCBmYWlscyB0aGlzIHRlc3QpCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmN4IgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeiIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKc3RkaW46CgllY2hvIFthKihdKil6CmV4cGVjdGVkLXN0ZG91dDoKCVthKihdKil6Ci0tLQpuYW1lOiBlZ2xvYi1pbmZpbml0ZS1wbHVzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaGVsbCBkb2Vzbid0IGdvIGludG8gaW5maW5pdGUgbG9vcCBleHBhbmRpbmcgKyguLi4pCglleHByZXNzaW9ucy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKdGltZS1saW1pdDogMwpzdGRpbjoKCWVjaG8gKygpYwoJZWNobyArKCl4CgllY2hvICsoKiljCgllY2hvICsoKil4CmV4cGVjdGVkLXN0ZG91dDoKCSsoKWMKCSsoKXgKCWFiYwoJKygqKXgKLS0tCm5hbWU6IGVnbG9iLXN1YnN0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGVnbG9iYmluZyBpc24ndCBkb25lIG9uIHN1YnN0aXR1dGlvbiByZXN1bHRzCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCnN0ZGluOgoJeD0nQCgqKScKCWVjaG8gJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJQCgqKQotLS0KbmFtZTogZWdsb2Itbm9tYXRjaC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgcGF0dGVybiBkb2Vzbid0IG1hdGNoCnN0ZGluOgoJZWNobyAxOiBuby1maWxlKyhhfGIpc3R1ZmYKCWVjaG8gMjogbm8tZmlsZSsoYSooYyl8YilzdHVmZgoJZWNobyAzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogbm8tZmlsZSsoYXxiKXN0dWZmCgkyOiBuby1maWxlKyhhKihjKXxiKXN0dWZmCgkzOiBuby1maWxlKygoKChjKSkpfGIpc3R1ZmYKLS0tCm5hbWU6IGVnbG9iLW1hdGNoLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBwYXR0ZXJuIG1hdGNoZXMgY29ycmVjdGx5CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmQiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhY2QiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmFjIgpzdGRpbjoKCWVjaG8gMTogYSsoYnxjKWQKCWVjaG8gMjogYSEoQChifEIpKWQKCWVjaG8gMzogKihhKGJ8YykpCQkjICguLi58Li4uKSBjYW4gYmUgdXNlZCB3aXRoaW4gWCguLikKCWVjaG8gNDogYVtiKihmb298YmFyKV1kCQkjIHBhdHRlcm5zIG5vdCBzcGVjaWFsIGluc2lkZSBbLi4uXQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBhYmQgYWNkCgkyOiBhY2QKCTM6IGFiYWMKCTQ6IGFiZAotLS0KbmFtZTogZWdsb2ItY2FzZS0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIG5lZ2F0aW9uIHRlc3RzCnN0ZGluOgoJY2FzZSBmb28gaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwoJY2FzZSBiYXIgaW4gIShmb298YmFyKSkgZWNobyB5ZXM7OyAqKSBlY2hvIG5vOzsgZXNhYwpleHBlY3RlZC1zdGRvdXQ6CglubwoJbm8KLS0tCm5hbWU6IGVnbG9iLWNhc2UtMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSBrbGVlbmUgdGVzdHMKc3RkaW46CgljYXNlIGZvbyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlIGZvbyBpbiAqKGF8YlspfGYqKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICcqKGF8YlspJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCgljYXNlICdhYWJbYlthYlthJyBpbiAqKGF8YlspKSBlY2hvIHllczs7ICopIGVjaG8gbm87OyBlc2FjCmV4cGVjdGVkLXN0ZG91dDoKCW5vCgl5ZXMKCW5vCgl5ZXMKLS0tCm5hbWU6IGVnbG9iLXRyaW0tMQpkZXNjcmlwdGlvbjoKCUVnbG9iYmluZyBpbiB0cmltIGV4cHJlc3Npb25zLi4uCgkoQVQmVCBrc2ggZmFpbHMgdGhpcyAtIGRvY3Mgc2F5ICMgbWF0Y2hlcyBzaG9ydGVzdCBzdHJpbmcsICMjIG1hdGNoZXMKCWxvbmdlc3QuLi4pCnN0ZGluOgoJeD1hYmNkZWYKCWVjaG8gMTogJHt4I2F8YWJjfQoJZWNobyAyOiAke3gjI2F8YWJjfQoJZWNobyAzOiAke3glZGVmfGZ9CgllY2hvIDQ6ICR7eCUlZnxkZWZ9CmV4cGVjdGVkLXN0ZG91dDoKCTE6IGJjZGVmCgkyOiBkZWYKCTM6IGFiY2RlCgk0OiBhYmMKLS0tCm5hbWU6IGVnbG9iLXRyaW0tMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGVnbG9iYmluZyB3b3JrcyBpbiB0cmltcy4uLgpzdGRpbjoKCXg9YWJjZGVmCgllY2hvIDE6ICR7eCMqKGF8YiljZH0KCWVjaG8gMjogIiR7eCMqKGF8YiljZH0iCgllY2hvIDM6ICR7eCMiKihhfGIpY2QifQoJZWNobyA0OiAke3gjYShifGMpfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiBlZgoJMjogZWYKCTM6IGFiY2RlZgoJNDogY2RlZgotLS0KbmFtZTogZWdsb2ItdHJpbS0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHRyaW1zLCBmb3IgS29ybiBTaGVsbAoJRW5zdXJlIGVnbG9iYmluZyBkb2VzIG5vdCB3b3JrIGZvciByZWR1Y2VkLWZlYXR1cmUgL2Jpbi9zaApzdGRpbjoKCXNldCArbyBzaAoJeD1mb29iYXIKCXk9Zm9vYmF6Cgl6PWZvb2JhXD8KCWVjaG8gIjwke3glYmFyfGJhen0sJHt5JWJhcnxiYXp9LCR7eiVcP30+IgoJZWNobyAiPCR7eCViYShyfHopfSwke3klYmEocnx6KX0+IgoJc2V0IC1vIHNoCgllY2hvICI8JHt4JWJhcnxiYXp9LCR7eSViYXJ8YmF6fSwke3olXD99PiIKCXo9J2ZvbyhiYXInCgllY2hvICI8JHt6JSgqfT4iCmV4cGVjdGVkLXN0ZG91dDoKCTxmb28sZm9vLGZvb2JhPgoJPGZvbyxmb28+Cgk8Zm9vYmFyLGZvb2Jheixmb29iYT4KCTxmb28+Ci0tLQpuYW1lOiBlZ2xvYi1zdWJzdHJwbC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZWdsb2JiaW5nIHdvcmtzIGluIHN1YnN0cy4uLiBhbmQgdGhleSB3b3JrIGF0IGFsbApzdGRpbjoKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJeD0xMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJeT14eXoKCWVjaG8gMTogJHt4LzJ9IC4gJHt4L30KCWVjaG8gMjogJHt4Ly8yfQoJZWNobyAzOiAke3gvKygyKX0KCWVjaG8gNDogJHt4Ly8rKDIpfQoJZWNobyA1OiAke3gvMi80fQoJZWNobyA2OiAke3gvLzIvNH0KCWVjaG8gNzogJHt4LysoMikvNH0KCWVjaG8gODogJHt4Ly8rKDIpLzR9CgllY2hvIDk6ICR7eC9iL2MvZS9mfQoJZWNobyAxMDogJHt4L2JcL2MvZS9mfQoJZWNobyAxMTogJHt4L2JcL2MvZVwvZn0KCWVjaG8gMTI6ICR7eC9iXC9jL2VcXC9mfQoJZWNobyAxMzogJHt4L2JcXC9jL2VcXC9mfQoJZWNobyAxNDogJHt4Ly9iL2MvZS9mfQoJZWNobyAxNTogJHt4Ly9iXC9jL2UvZn0KCWVjaG8gMTY6ICR7eC8vYlwvYy9lXC9mfQoJZWNobyAxNzogJHt4Ly9iXC9jL2VcXC9mfQoJZWNobyAxODogJHt4Ly9iXFwvYy9lXFwvZn0KCWVjaG8gMTk6ICR7eC9iXC8qXC9jL3h9CgllY2hvIDIwOiAke3gvXC8vLn0KCWVjaG8gMjE6ICR7eC8vXC8vLn0KCWVjaG8gMjI6ICR7eC8vLy59CgllY2hvIDIzOiAke3gvIzEvOX0KCWVjaG8gMjQ6ICR7eC8vIzEvOX0KCWVjaG8gMjU6ICR7eC8lMS85fQoJZWNobyAyNjogJHt4Ly8lMS85fQoJZWNobyAyNzogJHt4Ly9cJTEvOX0KCWVjaG8gMjg6ICR7eC8vXFwlMS85fQoJZWNobyAyOTogJHt4Ly9cYS85fQoJZWNobyAzMDogJHt4Ly9cXGEvOX0KCWVjaG8gMzE6ICR7eC8yLyR5fQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAxMjIzMjFfYWIvY2RlX2IvY18xMjIxIC4gMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI6IDEzMV9hYi9jZGVfYi9jXzExCgkzOiAxMzIxX2FiL2NkZV9iL2NfMTIyMQoJNDogMTMxX2FiL2NkZV9iL2NfMTEKCTU6IDE0MjIzMjFfYWIvY2RlX2IvY18xMjIxCgk2OiAxNDQ0MzQxX2FiL2NkZV9iL2NfMTQ0MQoJNzogMTQzMjFfYWIvY2RlX2IvY18xMjIxCgk4OiAxNDM0MV9hYi9jZGVfYi9jXzE0MQoJOTogMTIyMjMyMV9hYy9lL2YvY2RlX2IvY18xMjIxCgkxMDogMTIyMjMyMV9hZS9mZGVfYi9jXzEyMjEKCTExOiAxMjIyMzIxX2FlL2ZkZV9iL2NfMTIyMQoJMTI6IDEyMjIzMjFfYWVcL2ZkZV9iL2NfMTIyMQoJMTM6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkxNDogMTIyMjMyMV9hYy9lL2YvY2RlX2MvZS9mL2NfMTIyMQoJMTU6IDEyMjIzMjFfYWUvZmRlX2UvZl8xMjIxCgkxNjogMTIyMjMyMV9hZS9mZGVfZS9mXzEyMjEKCTE3OiAxMjIyMzIxX2FlXC9mZGVfZVwvZl8xMjIxCgkxODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTE5OiAxMjIyMzIxX2F4XzEyMjEKCTIwOiAxMjIyMzIxX2FiLmNkZV9iL2NfMTIyMQoJMjE6IDEyMjIzMjFfYWIuY2RlX2IuY18xMjIxCgkyMjogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTIzOiA5MjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjQ6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyNTogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjkKCTI2OiAxMjIyMzIxX2FiL2NkZV9iL2NfMTIyMQoJMjc6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkyODogMTIyMjMyMV9hYi9jZGVfYi9jXzEyMjEKCTI5OiAxMjIyMzIxXzliL2NkZV9iL2NfMTIyMQoJMzA6IDEyMjIzMjFfYWIvY2RlX2IvY18xMjIxCgkzMTogMXh5ejIyMzIxX2FiL2NkZV9iL2NfMTIyMQotLS0KbmFtZTogZWdsb2Itc3Vic3RycGwtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGFuY2hvcmVkIHN1YnN0cmluZyByZXBsYWNlbWVudCB3b3JrcywgY29ybmVyIGNhc2VzCnN0ZGluOgoJZm9vPTEyMwoJZWNobyAxOiAke2Zvby8jL3h9CgllY2hvIDI6ICR7Zm9vLyUveH0KCWVjaG8gMzogJHtmb28vIy99CgllY2hvIDQ6ICR7Zm9vLyN9CgllY2hvIDU6ICR7Zm9vLyUvfQoJZWNobyA2OiAke2Zvby8lfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiB4MTIzCgkyOiAxMjN4CgkzOiAxMjMKCTQ6IDEyMwoJNTogMTIzCgk2OiAxMjMKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3Vic3RyaW5nIHJlcGxhY2VtZW50IHdvcmtzIHdpdGggdmFyaWFibGVzIGFuZCBzbGFzaGVzLCB0b28Kc3RkaW46CglIT01FPS9ldGMKCXBmeD0vaG9tZS91c2VyCgl3ZD0vaG9tZS91c2VyL3RtcAoJZWNobyAiJHt3ZC8jJHBmeC9+fSIKCWVjaG8gIiR7d2QvI1wkcGZ4L359IgoJZWNobyAiJHt3ZC8jIiRwZngiL359IgoJZWNobyAiJHt3ZC8jJyRwZngnL359IgoJZWNobyAiJHt3ZC8jIlwkcGZ4Ii9+fSIKCWVjaG8gIiR7d2QvIydcJHBmeCcvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCS9ldGMvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2V0Yy90bXAKCS9ob21lL3VzZXIvdG1wCgkvaG9tZS91c2VyL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNiCmRlc2NyaXB0aW9uOgoJTW9yZSBvZiB0aGlzLCBiYXNoIGZhaWxzIGl0IChiYXNoNCBwYXNzZXMpCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9L2hvbWUvdXNlci90bXAKCWVjaG8gIiR7d2QvIyQoZWNobyAvaG9tZS91c2VyKS9+fSIKCWVjaG8gIiR7d2QvIyIkKGVjaG8gL2hvbWUvdXNlcikiL359IgoJZWNobyAiJHt3ZC8jJyQoZWNobyAvaG9tZS91c2VyKScvfn0iCmV4cGVjdGVkLXN0ZG91dDoKCS9ldGMvdG1wCgkvZXRjL3RtcAoJL2hvbWUvdXNlci90bXAKLS0tCm5hbWU6IGVnbG9iLXN1YnN0cnBsLTNjCmRlc2NyaXB0aW9uOgoJRXZlbiBtb3JlIHdlaXJkIGNhc2VzCnN0ZGluOgoJSE9NRT0vZXRjCglwZng9L2hvbWUvdXNlcgoJd2Q9JyRwZngvdG1wJwoJZWNobyAxOiAke3dkLyMkcGZ4L359CgllY2hvIDI6ICR7d2QvI1wkcGZ4L359CgllY2hvIDM6ICR7d2QvIyIkcGZ4Ii9+fQoJZWNobyA0OiAke3dkLyMnJHBmeCcvfn0KCWVjaG8gNTogJHt3ZC8jIlwkcGZ4Ii9+fQoJZWNobyA2OiAke3dkLyMnXCRwZngnL359Cgl0cz0nYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApJwoJdHA9YS9iCgl0cj1jL2QKCVtbIC1uICRCQVNIX1ZFUlNJT04gXV0gJiYgc2hvcHQgLXMgZXh0Z2xvYgoJZWNobyA3OiAke3RzL2FcL2IvJHRyfQoJZWNobyA4OiAke3RzL2FcL2IvXCR0cn0KCWVjaG8gOTogJHt0cy8kdHAvJHRyfQoJZWNobyAxMDogJHt0cy9cJHRwLyR0cn0KCWVjaG8gMTE6ICR7dHMvXFwkdHAvJHRyfQoJZWNobyAxMjogJHt0cy8kdHAvYy9kfQoJZWNobyAxMzogJHt0cy8kdHAvY1wvZH0KCWVjaG8gMTQ6ICR7dHMvJHRwL2NcXC9kfQoJZWNobyAxNTogJHt0cy8rKGFcL2IpLyR0cn0KCWVjaG8gMTY6ICR7dHMvKyhhXC9iKS9cJHRyfQoJZWNobyAxNzogJHt0cy8rKCR0cCkvJHRyfQoJZWNobyAxODogJHt0cy8rKCR0cCkvYy9kfQoJZWNobyAxOTogJHt0cy8rKCR0cCkvY1wvZH0KCWVjaG8gMjA6ICR7dHMvL2FcL2IvJHRyfQoJZWNobyAyMTogJHt0cy8vYVwvYi9cJHRyfQoJZWNobyAyMjogJHt0cy8vJHRwLyR0cn0KCWVjaG8gMjM6ICR7dHMvLyR0cC9jL2R9CgllY2hvIDI0OiAke3RzLy8kdHAvY1wvZH0KCWVjaG8gMjU6ICR7dHMvLysoYVwvYikvJHRyfQoJZWNobyAyNjogJHt0cy8vKyhhXC9iKS9cJHRyfQoJZWNobyAyNzogJHt0cy8vKygkdHApLyR0cn0KCWVjaG8gMjg6ICR7dHMvLysoJHRwKS9jL2R9CgllY2hvIDI5OiAke3RzLy8rKCR0cCkvY1wvZH0KCXRwPSIrKCR0cCkiCgllY2hvIDMwOiAke3RzLyR0cC8kdHJ9CgllY2hvIDMxOiAke3RzLy8kdHAvJHRyfQpleHBlY3RlZC1zdGRvdXQ6CgkxOiAkcGZ4L3RtcAoJMjogL2V0Yy90bXAKCTM6ICRwZngvdG1wCgk0OiAvZXRjL3RtcAoJNTogL2V0Yy90bXAKCTY6ICRwZngvdG1wCgk3OiBjL2RhL2IkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKCTg6ICR0cmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJOTogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMDogYS9iYS9iYy9kJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMTogYS9iYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMjogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxMzogYy9kYS9iJHRwJHRwX2EvYiR0cF8qKGEvYilfKigkdHApCgkxNDogY1wvZGEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTU6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTY6ICR0ciR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTc6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTg6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMTk6IGMvZCR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMjA6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjE6ICR0ciR0ciR0cCR0cF8kdHIkdHBfKigkdHIpXyooJHRwKQoJMjI6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjM6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjQ6IGMvZGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjU6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjY6ICR0ciR0cCR0cF8kdHIkdHBfKigkdHIpXyooJHRwKQoJMjc6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjg6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMjk6IGMvZCR0cCR0cF9jL2QkdHBfKihjL2QpXyooJHRwKQoJMzA6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQoJMzE6IGEvYmEvYiR0cCR0cF9hL2IkdHBfKihhL2IpXyooJHRwKQojCVRoaXMgaXMgd2hhdCBHTlUgYmFzaCBkb2VzOgojCTMwOiBjL2QkdHAkdHBfYS9iJHRwXyooYS9iKV8qKCR0cCkKIwkzMTogYy9kJHRwJHRwX2MvZCR0cF8qKGMvZClfKigkdHApCi0tLQpuYW1lOiBlZ2xvYi11dGY4LTEKZGVzY3JpcHRpb246CglVVEYtOCBtb2RlIGRpZmZlcmVuY2VzIGZvciBlZ2xvYmJpbmcKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJcz1ibMO2ZAoJc2V0ICtVCglwcmludCAxOiAke3MlPz8/fSAuCglwcmludCAyOiAke3MvYj8/P2QveH0gLgoJc2V0IC1VCglwcmludCAzOiAke3MlPz8/fSAuCglwcmludCA0OiAke3MvYj8/ZC94fSAuCgl4PW7DtgoJcHJpbnQgNTogJHt4JT99ICR7eCUlP30gLgoJeD3DpGgKCXByaW50IDY6ICR7eCM/fSAke3gjIz99IC4KCXg9gYIKCXByaW50IDc6ICR7eCU/fSAke3glJT99IC4KCXg9bcOkgAoJcHJpbnQgODogJHt4JT99ICR7eCUlP30gLgoJeD3kvZUKCXByaW50IDk6ICR7eCU/fSAke3glJT99IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTogYmwgLgoJMjogeCAuCgkzOiBiIC4KCTQ6IHggLgoJNTogbiBuIC4KCTY6IGggaCAuCgk3OiCBIIEgLgoJODogbcOkIG3DpCAuCgk5OiAuCi0tLQpuYW1lOiBnbG9iLWJhZC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBbIG1hdGNoZXMgaXRzZWxmIGlmIGl0J3Mgbm90IGEgdmFsaWQgYnJhY2tldCBleHByCglidXQgZG9lcyBub3QgcHJldmVudCBnbG9iYmluZywgd2hpbGUgYmFja3NsYXNoLWVzY2FwaW5nIGRvZXMKZmlsZS1zZXR1cDogZGlyIDc1NSAiW3giCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJbeC9mb28iCnN0ZGluOgoJZWNobyBbKgoJZWNobyAqW3gKCWVjaG8gW3gvKgoJOj4nYWJbeCcKCTo+J2FbYS16XVt4JwoJZWNobyBhW2Etel1bKgoJZWNobyBhW2Etel0qCgllY2hvIGFbYVwtel0qCmV4cGVjdGVkLXN0ZG91dDoKCVt4CglbeAoJW3gvZm9vCglhYlt4CglhYlt4CglhW2Etel0qCi0tLQpuYW1lOiBnbG9iLWJhZC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzeW1ib2xpYyBsaW5rcyBhcmVuJ3Qgc3RhdCgpJ2QKIyBicmVha3Mgb24gRGVsbCBVTklYIDQuMCBSMi4yIChTVlI0KSB3aGVyZSB1bmxpbmsgYWxzbyBmYWlscwojIGJyZWFrcyBvbiBGcmVlTWlOVCAoY2Fubm90IHVubGluayBkYW5nbGluZyBzeW1saW5rcykKIyBicmVha3Mgb24gTVNZUywgT1MvMiAoZG8gbm90IHN1cHBvcnQgc3ltbGlua3MpCmNhdGVnb3J5OiAhb3M6bWludCwhb3M6bXN5cywhb3M6c3ZyNC4wLCFub3N5bWxpbmsKZmlsZS1zZXR1cDogZGlyIDc1NSAiZGlyIgpmaWxlLXNldHVwOiBzeW1saW5rIDY0NCAiZGlyL2FiYyIKCW5vbi1leGlzdGVudC1maWxlCnN0ZGluOgoJZWNobyBkKi8qCgllY2hvIGQqL2FiYwpleHBlY3RlZC1zdGRvdXQ6CglkaXIvYWJjCglkaXIvYWJjCi0tLQpuYW1lOiBnbG9iLWJhZC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2xhc2ggaXMgcGFyc2VkIGJlZm9yZSB0aGUgZ2xvYgpzdGRpbjoKCW1rZGlyIGEgJ2FbYicKCShjZCAnYVtiJzsgZWNobyBvayA+J2NdZCcpCgllY2hvIG5vayA+YWJkCgllY2hvIGZhaWwgPmEvZAoJY2F0IGFbYi9jXWQKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMQpkZXNjcmlwdGlvbjoKCVRlc3QgcmFuZ2UgbWF0Y2hpbmcKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImJiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImNiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi1iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIiFiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIl5iYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIitiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIixiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIjBiYyIKZmlsZS1zZXR1cDogZmlsZSA2NDQgIjFiYyIKc3RkaW46CgllY2hvIFthYi1dKgoJZWNobyBbLWFiXSoKCWVjaG8gWyEtYWJdKgoJZWNobyBbIWFiXSoKCWVjaG8gW11hYl0qCgllY2hvIFteYWJdKgoJZWNobyBbKy0tXSoKCWVjaG8gWy0tMV0qCgpleHBlY3RlZC1zdGRvdXQ6CgktYmMgYWJjIGJiYwoJLWJjIGFiYyBiYmMKCSFiYyArYmMgLGJjIDBiYyAxYmMgXmJjIGNiYwoJIWJjICtiYyAsYmMgLWJjIDBiYyAxYmMgXmJjIGNiYwoJYWJjIGJiYwoJXmJjIGFiYyBiYmMKCStiYyAsYmMgLWJjCgktYmMgMGJjIDFiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS0yCmRlc2NyaXB0aW9uOgoJVGVzdCByYW5nZSBtYXRjaGluZwoJKEFUJlQga3NoIGZhaWxzIHRoaXM7IFBPU0lYIHNheXMgaW52YWxpZCkKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiYyIKc3RkaW46CgllY2hvIFthLS1dKgpleHBlY3RlZC1zdGRvdXQ6CglbYS0tXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2xvYmJpbmcgbWF0Y2hlcyB0aGUgcmlnaHQgdGhpbmdzLi4uCiMgYnJlYWtzIG9uIE1hYyBPU1ggKEhGUysgbm9uLXN0YW5kYXJkIFVURi04IGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uKQojIGJyZWFrcyBvbiBDeWd3aW4gMS43IChmaWxlcyBhcmUgbm93IFVURi0xNiBvciBzb21ldGhpbmcpCiMgYnJlYWtzIG9uIFFOWCA2LjQuMSAoc2F5cyBSVCkKY2F0ZWdvcnk6ICFvczpjeWd3aW4sIW9zOm1pZGlwaXgsIW9zOmRhcndpbiwhb3M6bXN5cywhb3M6bnRvLCFvczpvczIsIW9zOm9zMzkwCm5lZWQtcGFzczogbm8KZmlsZS1zZXR1cDogZmlsZSA2NDQgImHCYyIKc3RkaW46CgllY2hvIGFbwS3aXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJYcJjCi0tLQpuYW1lOiBnbG9iLXJhbmdlLTQKZGVzY3JpcHRpb246CglSZXN1bHRzIHVuc3BlY2lmaWVkIGFjY29yZGluZyB0byBQT1NJWApmaWxlLXNldHVwOiBmaWxlIDY0NCAiLmJjIgpzdGRpbjoKCWVjaG8gW2EuXSoKZXhwZWN0ZWQtc3Rkb3V0OgoJW2EuXSoKLS0tCm5hbWU6IGdsb2ItcmFuZ2UtNQpkZXNjcmlwdGlvbjoKCVJlc3VsdHMgdW5zcGVjaWZpZWQgYWNjb3JkaW5nIHRvIFBPU0lYCgkoQVQmVCBrc2ggdHJlYXRzIHRoaXMgbGlrZSBbYS1jYy1lXSopCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJhYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJiYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJjYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJkYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICItYmMiCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJAYmMiCnN0ZGluOgoJZWNobyBbYS1jLWVdKgoJZWNobyBbYS0tQF0qCmV4cGVjdGVkLXN0ZG91dDoKCS1iYyBhYmMgYmJjIGNiYyBlYmMKCUBiYwotLS0KbmFtZTogZ2xvYi1yYW5nZS02CmRlc2NyaXB0aW9uOgoJa3NoOTMgZmFpbHMgdGhpcyBidXQgUE9TSVggcHJvYmFibHkgZGVtYW5kcyBpdApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiY2JjIgpzdGRpbjoKCWVjaG8gKmIqCglbICcqYionID0gKmIqIF0gJiYgZWNobyB5ZXA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGNiYwoJMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4qLwotLS0KbmFtZTogZ2xvYi13b3JkLTEKZGVzY3JpcHRpb246CglDaGVjayBCU0Qgd29yZCBib3VuZGFyeSBtYXRjaGVzCnN0ZGluOgoJdCgpIHsgW1sgJDEgPSAqW1s6XDw6XV1iYXJbWzpcPjpdXSogXV07IGVjaG8gPSQ/OyB9Cgl0ICdmb28gYmFyIGJheicKCXQgJ2Zvb2JhciBiYXonCgl0ICdmb28gYmFyYmF6JwoJdCAnYmFyJwoJdCAnX2JhcicKCXQgJ2Jhcl8nCmV4cGVjdGVkLXN0ZG91dDoKCT0wCgk9MQoJPTEKCT0wCgk9MQoJPTEKLS0tCm5hbWU6IGdsb2ItdHJpbS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYWdhaW5zdCBhIHJlZ3Jlc3Npb24gZnJvbSBmaXhpbmcgSUZTLXN1YnN0LTIKc3RkaW46Cgl4PScjZm9vJwoJcHJpbnQgLXIgImJlZm9yZT0nJHgnIgoJeD0ke3glJSMqfQoJcHJpbnQgLXIgImFmdGVyID0nJHgnIgpleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmU9JyNmb28nCglhZnRlciA9JycKLS0tCm5hbWU6IGhlcmVkb2MtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9yZGVyaW5nL2NvbnRlbnQgb2YgcmVkdW5kZW50IGhlcmUgZG9jdW1lbnRzLgpzdGRpbjoKCWNhdCA8PCBFT0YxIDw8IEVPRjIKCWhpCglFT0YxCgl0aGVyZQoJRU9GMgpleHBlY3RlZC1zdGRvdXQ6Cgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcXVvdGVkIGhlcmUtZG9jIGlzIHByb3RlY3RlZC4Kc3RkaW46CglhPWZvbwoJY2F0IDw8ICdFT0YnCgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaVwKCXRoZXJlJGEKCXN0dWZmCglFT1wKCUYKLS0tCm5hbWU6IGhlcmVkb2MtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbmV3bGluZSBpc24ndCBuZWVkZWQgYWZ0ZXIgaGVyZWRvYy1kZWxpbWl0ZXIgbWFya2VyLgpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCXRoZXJlCi0tLQpuYW1lOiBoZXJlZG9jLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MtZGVsaW1pdGVyIGlzIG1pc3NpbmcuCnN0ZGluOiAhCgljYXQgPDwgRU9GCgloaQoJdGhlcmUKZXhwZWN0ZWQtZXhpdDogZSA+IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi8KLS0tCm5hbWU6IGhlcmVkb2MtNGFuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MtZGVsaW1pdGVyIGlzIG1pc3NpbmcuCmFyZ3VtZW50czogIS1uIQpzdGRpbjogIQoJY2F0IDw8IEVPRgoJaGkKCXRoZXJlCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MgaXMgbWlzc2luZy4Kc3RkaW46ICEKCWNhdCA8PCBFT0YKZXhwZWN0ZWQtZXhpdDogZSA+IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uKi8KLS0tCm5hbWU6IGhlcmVkb2MtNGJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbiBlcnJvciBvY2N1cnMgaWYgdGhlIGhlcmVkb2MgaXMgbWlzc2luZy4KYXJndW1lbnRzOiAhLW4hCnN0ZGluOiAhCgljYXQgPDwgRU9GCmV4cGVjdGVkLWV4aXQ6IGUgPiAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiBoZXJlZG9jLTUKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGJhY2tzbGFzaCBxdW90ZXMgYSAkLCBgIGFuZCBcIGFuZCBraWxscyBhIFxuZXdsaW5lCnN0ZGluOgoJYT1CQUQKCWI9b2sKCWNhdCA8PCBFT0YKCWhcJHthfWkKCWhcXCR7Yn1pCgl0aFxgZWNobyBub3QtcnVuXGBlcmUKCXRoXFxgZWNobyBpcy1ydW5gZXJlCglmb2xcXGtzCgltb3JlXFwKCWxhc3QgXAoJbGluZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWgke2F9aQoJaFxva2kKCXRoYGVjaG8gbm90LXJ1bmBlcmUKCXRoXGlzLXJ1bmVyZQoJZm9sXGtzCgltb3JlXAoJbGFzdCBsaW5lCi0tLQpuYW1lOiBoZXJlZG9jLTYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFxuZXdsaW5lIGluIGluaXRpYWwgaGVyZS1kZWxpbSB3b3JkIGRvZXNuJ3QgaW1wbHkKCWEgcXVvdGVkIGhlcmUtZG9jLgpzdGRpbjoKCWE9aQoJY2F0IDw8IEVPXAoJRgoJaCRhCgl0aGVyZQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQotLS0KbmFtZTogaGVyZWRvYy03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBkb3VibGUgcXVvdGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZSBkZWxpbWl0ZXJzIGFyZQoJbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyLgpzdGRpbjoKCWE9YgoJY2F0IDw8ICJFJGEiCgloaQoJaCRhCgloYgoJRSRhCgllY2hvIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWgkYQoJaGIKCWRvbmUKLS0tCm5hbWU6IGhlcmVkb2MtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZG91YmxlIHF1b3RlZCBlc2NhcGVkICQgZXhwcmVzc2lvbnMgaW4gaGVyZQoJZGVsaW1pdGVycyBhcmUgbm90IGV4cGFuZGVkIGFuZCBtYXRjaCB0aGUgZGVsaW1pdGVyLgoJUE9TSVggc2F5cyBvbmx5IHF1b3RlIHJlbW92YWwgaXMgYXBwbGllZCB0byB0aGUgZGVsaW1pdGVyCgkoXCBjb3VudHMgYXMgYSBxdW90ZSkuCnN0ZGluOgoJYT1iCgljYXQgPDwgIkVcJGEiCgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglFJGEKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJaCRhCgloXCRhCgloYgoJaFxiCglkb25lCi0tLQpuYW1lOiBoZXJlZG9jLTkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmUgc3RyaW5ncyB3b3JrLgpzdGRpbjoKCWJhcj0iYmFyCgkJYmF6IgoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8Zm9vCgkiJF9fcHJvZ25hbWUiIC1jICJ0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDxmb28iCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwiJGJhciIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCckYmFyJwoJdHIgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG0gPDw8XCRiYXIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PC1mb28KCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCIkKGVjaG8gImZvbyBiYXIiKSIKCXRyIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IG5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtIDw8PCJBICQoZWNobyAiZm9vIGJhciIpIEIiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDxcJGJcJGIkYmFyCglmbm9yZD00MgoJYmFyPSJiYXIKCQkgXCRmbm9yZCBiYXoiCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwkYmFyCgl0ciBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbSA8PDwgYmFyCgllY2hvICQodHIgciB6IDw8PCdiYXInIDI+L2Rldi9udWxsKQoJY2F0IDw8PCAiJCggIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKWFhIgoJSUZTPSQnXG4nCgl4PShhICJiIGMiKQoJdHIgYWMgMTIgPDw8ICR7eFsqXX0KCXRyIGFjIDM0IDw8PCAiJHt4WypdfSIKCXRyIGFjIDU2IDw8PCAke3hbQF19Cgl0ciBhYyA3OCA8PDwgIiR7eFtAXX0iCmV4cGVjdGVkLXN0ZG91dDoKCXNiYgoJc2JiCglvbmUKCQlvbm0KCSRvbmUKCSRvbmUKCS1zYmIKCXNiYiBvbmUKCUEgc2JiIG9uZSBCCgkkbyRvb25lCgkJb25tCglvbmUKCQkgJHNhYmVxIG9ubQoJb25lCgliYXoKCWFhCgkxCgliIDIKCTMKCWIgNAoJNSBiIDYKCTcgYiA4Ci0tLQpuYW1lOiBoZXJlZG9jLTEwCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46Cgl4PXUKCXZhPTw8RU9GCgk9YSAkeCBceDQwPQoJRU9GCgl2Yj08PCdFT0YnCgk9YiAkeCBceDQwPQoJRU9GCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRgoJCQk9YyAkeCBceDQwPQoJCUVPRgoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCSMgcmF0aGVyIG5vbnNlbnNpY2FsLCBidXTigKYKCXZkPTw8PCI9ZCAkeCBceDQwPSIKCXZlPTw8PCc9ZSAkeCBceDQwPScKCXZmPTw8PCQnPWYgJHggXHg0MD0nCgkjIG5vdyBjaGVjawoJcHJpbnQgLXIgLS0gInwgdmE9eyR2YX0gdmI9eyR2Yn0gdmM9eyR2Y30gdmQ9eyR2ZH0gdmU9eyR2ZX0gdmY9eyR2Zn0gfCIKCSMgY2hlY2sgYXBwZW5kCgl2PTw8LUVPRgoJCXZhcHAxCglFT0YKCXYrPTw8LUVPRgoJCXZhcHAyCglFT0YKCXByaW50IC1yIC0tICJ8ICR7di8vJCdcbicvXn0gfCIKZXhwZWN0ZWQtc3Rkb3V0OgoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC1FT0YgCgk9YyAkeCBceDQwPQoJRU9GCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgdSBceDQwPQoJfSB2ZT17PWUgJHggXHg0MD0KCX0gdmY9ez1mICR4IEA9Cgl9IHwKCXwgdmFwcDFedmFwcDJeIHwKLS0tCm5hbWU6IGhlcmVkb2MtMTAtZWJjZGljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZGlyZWN0IGhlcmUgZG9jdW1lbnQgYXNzaWdubWVudApjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCXg9dQoJdmE9PDxFT0YKCT1hICR4IFx4N0M9CglFT0YKCXZiPTw8J0VPRicKCT1iICR4IFx4N0M9CglFT0YKCWZ1bmN0aW9uIGZvbyB7CgkJdmM9PDwtRU9GCgkJCT1jICR4IFx4N0M9CgkJRU9GCgl9CglmbmQ9JCh0eXBlc2V0IC1mIGZvbykKCXByaW50IC1yIC0tICIkZm5kIgoJZnVuY3Rpb24gZm9vIHsKCQllY2hvIGJsdWIKCX0KCWZvbwoJZXZhbCAiJGZuZCIKCWZvbwoJIyByYXRoZXIgbm9uc2Vuc2ljYWwsIGJ1dOKApgoJdmQ9PDw8Ij1kICR4IFx4N0M9IgoJdmU9PDw8Jz1lICR4IFx4N0M9JwoJdmY9PDw8JCc9ZiAkeCBceDdDPScKCSMgbm93IGNoZWNrCglwcmludCAtciAtLSAifCB2YT17JHZhfSB2Yj17JHZifSB2Yz17JHZjfSB2ZD17JHZkfSB2ZT17JHZlfSB2Zj17JHZmfSB8IgoJIyBjaGVjayBhcHBlbmQKCXY9PDwtRU9GCgkJdmFwcDEKCUVPRgoJdis9PDwtRU9GCgkJdmFwcDIKCUVPRgoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LUVPRiAKCT1jICR4IFx4N0M9CglFT0YKCQoJfSAKCWJsdWIKCXwgdmE9ez1hIHUgXHg3Qz0KCX0gdmI9ez1iICR4IFx4N0M9Cgl9IHZjPXs9YyB1IFx4N0M9Cgl9IHZkPXs9ZCB1IFx4N0M9Cgl9IHZlPXs9ZSAkeCBceDdDPQoJfSB2Zj17PWYgJHggQD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIHdpdGggbm8gb3IgZW1wdHkgZGVsaW1pdGVyCnN0ZGluOgoJeD11Cgl2YT08PAoJPWEgJHggXHg0MD0KCTw8Cgl2Yj08PCcnCgk9YiAkeCBceDQwPQoJCglmdW5jdGlvbiBmb28gewoJCXZjPTw8LQoJCQk9YyAkeCBceDQwPQoJCTw8CgkJdmQ9PDwtJycKCQkJPWQgJHggXHg0MD0KCQoJfQoJZm5kPSQodHlwZXNldCAtZiBmb28pCglwcmludCAtciAtLSAiJGZuZCIKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBibHViCgl9Cglmb28KCWV2YWwgIiRmbmQiCglmb28KCXByaW50IC1yIC0tICJ8IHZhPXskdmF9IHZiPXskdmJ9IHZjPXskdmN9IHZkPXskdmR9IHwiCgl4PXkKCWZvbwoJdHlwZXNldCAtZiBmb28KCXByaW50IC1yIC0tICJ8IHZjPXskdmN9IHZkPXskdmR9IHwiCgkjIGNoZWNrIGFwcGVuZAoJdj08PC0KCQl2YXBwMQoJPDwKCXYrPTw8LScnCgkJdmFwcDIKCQoJcHJpbnQgLXIgLS0gInwgJHt2Ly8kJ1xuJy9efSB8IgpleHBlY3RlZC1zdGRvdXQ6CglmdW5jdGlvbiBmb28gewoJCXZjPTw8LSAKCT1jICR4IFx4NDA9Cgk8PAoJCgkJdmQ9PDwtIiIgCgk9ZCAkeCBceDQwPQoJCgkKCX0gCglibHViCgl8IHZhPXs9YSB1IFx4NDA9Cgl9IHZiPXs9YiAkeCBceDQwPQoJfSB2Yz17PWMgdSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJZnVuY3Rpb24gZm9vIHsKCQl2Yz08PC0gCgk9YyAkeCBceDQwPQoJPDwKCQoJCXZkPTw8LSIiIAoJPWQgJHggXHg0MD0KCQoJCgl9IAoJfCB2Yz17PWMgeSBceDQwPQoJfSB2ZD17PWQgJHggXHg0MD0KCX0gfAoJfCB2YXBwMV52YXBwMl4gfAotLS0KbmFtZTogaGVyZWRvYy0xMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGhlcmUgZG9jdW1lbnRzIGNhbiB1c2UgJCogYW5kICRAOyBub3RlIHNoZWxscyB2YXJ5OgoJ4oCiIHBka3NoIDUuMi4xNCBhY3RzIHRoZSBzYW1lCgnigKIgZGFzaCBoYXMgMSBhbmQgMiB0aGUgc2FtZSBidXQgMyBsYWNrcyB0aGUgc3BhY2UKCeKAoiBrc2g5MywgYmFzaDQgZGlmZmVyIGluIDIgYnkgdXNpbmcgc3BhY2UgaXB2IGNvbG9uCnN0ZGluOgoJc2V0IC0tIGEgYgoJbmw9JwoJJwoJSUZTPSIgCSRubCI7IG49MQoJY2F0IDw8RU9GCgkkbiBmb28gJCogZm9vCgkkbiBiYXIgIiQqIiBiYXIKCSRuIGJheiAkQCBiYXoKCSRuIGJsYSAiJEAiIGJsYQoJRU9GCglJRlM9IjoiOyBuPTIKCWNhdCA8PEVPRgoJJG4gZm9vICQqIGZvbwoJJG4gYmFyICIkKiIgYmFyCgkkbiBiYXogJEAgYmF6CgkkbiBibGEgIiRAIiBibGEKCUVPRgoJSUZTPTsgbj0zCgljYXQgPDxFT0YKCSRuIGZvbyAkKiBmb28KCSRuIGJhciAiJCoiIGJhcgoJJG4gYmF6ICRAIGJhegoJJG4gYmxhICIkQCIgYmxhCglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb28gYSBiIGZvbwoJMSBiYXIgImEgYiIgYmFyCgkxIGJheiBhIGIgYmF6CgkxIGJsYSAiYSBiIiBibGEKCTIgZm9vIGE6YiBmb28KCTIgYmFyICJhOmIiIGJhcgoJMiBiYXogYTpiIGJhegoJMiBibGEgImE6YiIgYmxhCgkzIGZvbyBhIGIgZm9vCgkzIGJhciAiYSBiIiBiYXIKCTMgYmF6IGEgYiBiYXoKCTMgYmxhICJhIGIiIGJsYQotLS0KbmFtZTogaGVyZWRvYy0xNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdXNpbmcgbXVsdGlwbGUgaGVyZSBkb2N1bWVudHMgd29ya3MKc3RkaW46Cglmb28oKSB7CgkJZWNobyAiZ290ICQoY2F0KSBvbiBzdGRpbiIKCQllY2hvICJnb3QgJChjYXQgPCY0KSBvbiBmZCM0IgoJCWVjaG8gImdvdCAkKGNhdCA8JjUpIG9uIGZkIzUiCgl9CgliYXIoKSB7CgkJZm9vIDQ8PC1hIDw8LWIgNTw8LWMKCQlmb3VyCgkJYQoJCXplcm8KCQliCgkJZml2ZQoJCWMKCX0KCXg9JCh0eXBlc2V0IC1mIGJhcikKCWV2YWwgIiR4IgoJeT0kKHR5cGVzZXQgLWYgYmFyKQoJW1sgJHggPSAiJHkiIF1dOyBlY2hvICQ/Cgl0eXBlc2V0IC1mIGJhcgoJYmFyCmV4cGVjdGVkLXN0ZG91dDoKCTAKCWJhcigpIHsKCQlcZm9vIDQ8PC1hIDw8LWIgNTw8LWMgCglmb3VyCglhCgl6ZXJvCgliCglmaXZlCgljCgkKCX0gCglnb3QgemVybyBvbiBzdGRpbgoJZ290IGZvdXIgb24gZmQjNAoJZ290IGZpdmUgb24gZmQjNQotLS0KbmFtZTogaGVyZWRvYy0xNQpkZXNjcmlwdGlvbjoKCUNoZWNrIGhpZ2gtYml0NyBzZXBhcmF0b3JzIHdvcmsKc3RkaW46Cgl1PcOkCgl0ciBhLXogQS1aIDw8LeKApgoJCW0ke3V9aAoJ4oCmCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCU3DpEgKCW9rCi0tLQpuYW1lOiBoZXJlZG9jLWNvbXN1Yi0xCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzIGluIENPTVNVQiwgdGFrZW4gZnJvbSBBdXN0aW4gTUwKc3RkaW46Cgl0ZXh0PSQoY2F0IDw8RU9GCgloZXJlIGlzIHRoZSB0ZXh0CglFT0YpCgllY2hvID0gJHRleHQgPQpleHBlY3RlZC1zdGRvdXQ6Cgk9IGhlcmUgaXMgdGhlIHRleHQgPQotLS0KbmFtZTogaGVyZWRvYy1jb21zdWItMgpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBDT01TVUIsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJdW5iYWxhbmNlZD0kKGNhdCA8PEVPRgoJdGhpcyBwYXJlbiApIGlzIGEgcHJvYmxlbQoJRU9GKQoJZWNobyA9ICR1bmJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGlzIHBhcmVuICkgaXMgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTMKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGVzZSBwYXJlbnMgKCApIGFyZSBub3QgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJGJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGVzZSBwYXJlbnMgKCApIGFyZSBub3QgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTQKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gQ09NU1VCLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCWJhbGFuY2VkPSQoY2F0IDw8RU9GCgl0aGVzZSBwYXJlbnMgXCggKSBhcmUgYSBwcm9ibGVtCglFT0YpCgllY2hvID0gJGJhbGFuY2VkID0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSB0aGVzZSBwYXJlbnMgXCggKSBhcmUgYSBwcm9ibGVtID0KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTUKZGVzY3JpcHRpb246CglDaGVjayBoZXJlZG9jIGFuZCBDT01TVUIgbWl4dHVyZSBpbiBpbnB1dApzdGRpbjoKCXByZWZpeCgpIHsgc2VkIC1lICJzL14vJDE6LyI7IH0KCVhYWCgpIHsgZWNobyB4LWVuOyB9CglZWVkoKSB7IGVjaG8geS1lczsgfQoJCglwcmVmaXggQSA8PFhYWCAmJiBlY2hvICIkKHByZWZpeCBCIDw8WFhYCgllY2hvIGxpbmUgMQoJWFhYCgllY2hvIGxpbmUgMikiICYmIHByZWZpeCBDIDw8WVlZCgllY2hvIGxpbmUgMwoJWFhYCgllY2hvIGxpbmUgNCkiCgllY2hvIGxpbmUgNQoJWVlZCglYWFgKZXhwZWN0ZWQtc3Rkb3V0OgoJQTplY2hvIGxpbmUgMwoJQjplY2hvIGxpbmUgMQoJbGluZSAyCglDOmVjaG8gbGluZSA0KSIKCUM6ZWNobyBsaW5lIDUKCXgtZW4KLS0tCm5hbWU6IGhlcmVkb2MtY29tc3ViLTYKZGVzY3JpcHRpb246CglDaGVjayBoZXJlIGRvY3VtZW50cyBhbmQgaGVyZSBzdHJpbmdzIGNhbiBiZSB1c2VkCgl3aXRob3V0IGEgc3BlY2lmaWMgY29tbWFuZCwgbGlrZSAkKDzigKYpIChleHRlbnNpb24pCnN0ZGluOgoJZm9vPWJhcgoJeD0kKDw8PEVPJHtmb299RikKCWVjaG8gIjM8JHg+IgoJCXk9JCg8PC1FT0YKCQkJaGkhCgkKCQkJJGZvbykgaXMgbm90IGEgcHJvYmxlbQoJCgkKCQlFT0YpCgllY2hvICI3PCR5PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJMzxFT2JhckY+Cgk3PGhpIQoJCgliYXIpIGlzIG5vdCBhIHByb2JsZW0+Ci0tLQpuYW1lOiBoZXJlZG9jLXN1YnNoZWxsLTEKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gc3Vic2hlbGxzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCShjYXQgPDxFT0YKCXNvbWUgdGV4dAoJRU9GKQoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJc29tZSB0ZXh0CgllbmQKLS0tCm5hbWU6IGhlcmVkb2Mtc3Vic2hlbGwtMgpkZXNjcmlwdGlvbjoKCVRlc3RzIGZvciBoZXJlIGRvY3VtZW50cyBpbiBzdWJzaGVsbHMsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJKGNhdCA8PEVPRgoJc29tZSB0ZXh0CglFT0YKCSkKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCXNvbWUgdGV4dAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXN1YnNoZWxsLTMKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMgaW4gc3Vic2hlbGxzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTApzdGRpbjoKCShjYXQgPDxFT0Y7ICkKCXNvbWUgdGV4dAoJRU9GCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6Cglzb21lIHRleHQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy13ZWlyZC0xCmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTAoJRG9jdW1lbnRzIGN1cnJlbnQgc3RhdGUgaW4gbWtzaCwgKk5PVCogbmVjZXNzYXJpbHkgY29ycmVjdCEKc3RkaW46CgljYXQgPDxFTkQKCWhlbGxvCglFTkRcCglFTkQKCUVORAoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG8KCUVOREVORAoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXdlaXJkLTIKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMsIHRha2VuIGZyb20gQXVzdGluIE1MCnN0ZGluOgoJY2F0IDw8JyAgICBFTkQgICAgJwoJaGVsbG8KCSAgICBFTkQgICAgCgllY2hvIGVuZApleHBlY3RlZC1zdGRvdXQ6CgloZWxsbwoJZW5kCi0tLQpuYW1lOiBoZXJlZG9jLXdlaXJkLTQKZGVzY3JpcHRpb246CglUZXN0cyBmb3IgaGVyZSBkb2N1bWVudHMsIHRha2VuIGZyb20gQXVzdGluIE1MCglEb2N1bWVudHMgY3VycmVudCBzdGF0ZSBpbiBta3NoLCAqTk9UKiBuZWNlc3NhcmlseSBjb3JyZWN0IQpzdGRpbjoKCWNhdCA8PEVORAoJaGVsbG9cCglFTkQKCUVORAoJZWNobyBlbmQKZXhwZWN0ZWQtc3Rkb3V0OgoJaGVsbG9FTkQKCWVuZAotLS0KbmFtZTogaGVyZWRvYy13ZWlyZC01CmRlc2NyaXB0aW9uOgoJVGVzdHMgZm9yIGhlcmUgZG9jdW1lbnRzLCB0YWtlbiBmcm9tIEF1c3RpbiBNTAoJRG9jdW1lbnRzIGN1cnJlbnQgc3RhdGUgaW4gbWtzaCwgKk5PVCogbmVjZXNzYXJpbHkgY29ycmVjdCEKc3RkaW46CgljYXQgPDxFTkQKCWhlbGxvCglcRU5ECglFTkQKCWVjaG8gZW5kCmV4cGVjdGVkLXN0ZG91dDoKCWhlbGxvCglcRU5ECgllbmQKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIHNpbXBsZSBjb21tYW5kLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQljYXQgPDwtIEVPRgoJCWhpCgkJRU9GCgkJZm9yIGkgaW4gYSBiIDsgZG8KCQkJY2F0IDw8LSBFT0YKCQkJbW9yZQoJCQlFT0YKCQlkb25lCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCW1vcmUKCW1vcmUKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIGZ1bmN0aW9uLCBtdWx0aXBsZSBjYWxscyB0byBmdW5jdGlvbi4Kc3RkaW46CglUTVBESVI9JFBXRAoJZXZhbCAnCgkJZm9vKCkgewoJCQljYXQgPDwtIEVPRgoJCQloaQoJCQlFT0YKCQl9CgkJZm9vCgkJZm9vCgkgICAgJyAmCglzbGVlcCAxCgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJSGVyZWRvYyBpbiBmdW5jdGlvbiBpbiBsb29wLCBtdWx0aXBsZSBjYWxscyB0byBmdW5jdGlvbi4Kc3RkaW46CglUTVBESVI9JFBXRAoJZXZhbCAnCgkJZm9vKCkgewoJCQljYXQgPDwtIEVPRgoJCQloaQoJCQlFT0YKCQl9CgkJZm9yIGkgaW4gYSBiOyBkbwoJCQlmb28KCQkJZm9vKCkgewoJCQkJY2F0IDw8LSBFT0YKCQkJCWZvbGtzICRpCgkJCQlFT0YKCQkJfQoJCWRvbmUKCQlmb28KCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CgloaQoJZm9sa3MgYgoJZm9sa3MgYgoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUJhY2tncm91bmRlZCBzaW1wbGUgY29tbWFuZCB3aXRoIGhlcmUgZG9jCnN0ZGluOgoJVE1QRElSPSRQV0QKCWV2YWwgJwoJCWNhdCA8PC0gRU9GICYKCQloaQoJCUVPRgoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCWhpCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbyBsYXRlLgoJQmFja2dyb3VuZGVkIHN1YnNoZWxsIGNvbW1hbmQgd2l0aCBoZXJlIGRvYwpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCSAgICAgICgKCQlzbGVlcCAxCSMgc28gcGFyZW50IGV4aXRzCgkJZWNobyBBCgkJY2F0IDw8LSBFT0YKCQloaQoJCUVPRgoJCWVjaG8gQgoJICAgICAgKSAmCgkgICAgJyAmCglzbGVlcCA1CgllY2hvIExlZnQgb3ZlcnM6ICoKZXhwZWN0ZWQtc3Rkb3V0OgoJQQoJaGkKCUIKCUxlZnQgb3ZlcnM6ICoKLS0tCm5hbWU6IGhlcmVkb2MtdG1wZmlsZS02CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBoZXJlZG9jIHRlbXAgZmlsZXMgYXJlbid0IHJlbW92ZWQgdG9vIHNvb24gb3IgdG9vIGxhdGUuCglIZXJlZG9jIGluIHBpcGVsaW5lLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQljYXQgPDwtIEVPRiB8IHNlZCAicy9oaS9ISS8iCgkJaGkKCQlFT0YKCSAgICAnICYKCXNsZWVwIDEKCWVjaG8gTGVmdCBvdmVyczogKgpleHBlY3RlZC1zdGRvdXQ6CglISQoJTGVmdCBvdmVyczogKgotLS0KbmFtZTogaGVyZWRvYy10bXBmaWxlLTcKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGhlcmVkb2MgdGVtcCBmaWxlcyBhcmVuJ3QgcmVtb3ZlZCB0b28gc29vbiBvciB0b28gbGF0ZS4KCUhlcmVkb2MgaW4gYmFja2dyb3VuZGVkIHBpcGVsaW5lLgpzdGRpbjoKCVRNUERJUj0kUFdECglldmFsICcKCQljYXQgPDwtIEVPRiB8IHNlZCAncy9oaS9ISS8nICYKCQloaQoJCUVPRgoJICAgICcgJgoJc2xlZXAgMQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCUhJCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXRtcGZpbGUtOApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgaGVyZWRvYyB0ZW1wIGZpbGVzIGFyZW4ndCByZW1vdmVkIHRvbyBzb29uIG9yIHRvbwoJbGF0ZS4gSGVyZWRvYyBpbiBmdW5jdGlvbiwgYmFja2dyb3VuZGVkIGNhbGwgdG8gZnVuY3Rpb24uCglUaGlzIGNoZWNrIGNhbiBmYWlsIG9uIHNsb3cgbWFjaGluZXMgKDwxMDAgTUh6KSwgb3IgQ3lnd2luLAoJdGhhdCdzIG5vcm1hbC4KbmVlZC1wYXNzOiBubwpzdGRpbjoKCVRNUERJUj0kUFdECgkjIEJhY2tncm91bmQgZXZhbCBzbyBtYWluIHNoZWxsIGRvZXNuJ3QgZG8gcGFyc2luZwoJZXZhbCAnCgkJZm9vKCkgewoJCQljYXQgPDwtIEVPRgoJCQloaQoJCQlFT0YKCQl9CgkJZm9vCgkJIyBzbGVlcCBzbyBldmFsIGNhbiBkaWUKCQkoc2xlZXAgMTsgZm9vKSAmCgkJKHNsZWVwIDE7IGZvbykgJgoJCWZvbwoJICAgICcgJgoJc2xlZXAgNQoJZWNobyBMZWZ0IG92ZXJzOiAqCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgloaQoJaGkKCWhpCglMZWZ0IG92ZXJzOiAqCi0tLQpuYW1lOiBoZXJlZG9jLXF1b3RpbmctdW5zdWJzdApkZXNjcmlwdGlvbjoKCUNoZWNrIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHF1b3RlZCBjaGFyYWN0ZXJzIGluCgloZXJlIGRvY3VtZW50cyB3aXRob3V0IHN1YnN0aXR1dGlvbiAobWFya2VyIGlzIHF1b3RlZCkuCnN0ZGluOgoJZm9vPWJhcgoJY2F0IDw8LSdFT0YnCgkJeCAiIFwiIFwgXFwgJCBcJCBgZWNobyBiYXpgIFxgZWNobyBiYXpcYCAkZm9vIFwkZm9vIHgKCUVPRgpleHBlY3RlZC1zdGRvdXQ6Cgl4ICIgXCIgXCBcXCAkIFwkIGBlY2hvIGJhemAgXGBlY2hvIGJhelxgICRmb28gXCRmb28geAotLS0KbmFtZTogaGVyZWRvYy1xdW90aW5nLXN1YnN0CmRlc2NyaXB0aW9uOgoJQ2hlY2sgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgcXVvdGVkIGNoYXJhY3RlcnMgaW4KCWhlcmUgZG9jdW1lbnRzIHdpdGggc3Vic3RpdHV0aW9uIChtYXJrZXIgaXMgbm90IHF1b3RlZCkuCnN0ZGluOgoJZm9vPWJhcgoJY2F0IDw8LUVPRgoJCXggIiBcIiBcIFxcICQgXCQgYGVjaG8gYmF6YCBcYGVjaG8gYmF6XGAgJGZvbyBcJGZvbyB4CglFT0YKZXhwZWN0ZWQtc3Rkb3V0OgoJeCAiIFwiIFwgXCAkICQgYmF6IGBlY2hvIGJhemAgYmFyICRmb28geAotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1icmFjZXMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIHVucXVvdGVkIHt9IGFyZSB0cmVhdGVkIGFzIHF1b3RlcwpzdGRpbjoKCWZvbz0xCgllY2hvICR7Zm9vOisnYmxhaCAgJGZvbyd9CmV4cGVjdGVkLXN0ZG91dDoKCWJsYWggICRmb28KLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tcXVvdGVkLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgcXVvdGVkIHt9IGFyZSB0cmVhdGVkIGFzCglub3JtYWwgY2hhcgpzdGRpbjoKCWZvbz0xCgllY2hvICIke2ZvbzorJ2JsYWggICRmb28nfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJJ2JsYWggIDEnCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLWJyYWNlcy1uZXN0ZWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNpbmdsZSBxdW90ZXMgaW5zaWRlIHVucXVvdGVkIHt9IGFyZSB0cmVhdGVkIGFzIHF1b3RlcywKCWV2ZW4gaWYgdGhhdCdzIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY29tbWFuZCBleHBhbnNpb24Kc3RkaW46Cglmb289MQoJZWNobyAiJCggZWNobyAke2ZvbzorJ2JsYWggICRmb28nfSkiCmV4cGVjdGVkLXN0ZG91dDoKCWJsYWggICRmb28KLS0tCm5hbWU6IHNpbmdsZS1xdW90ZXMtaW4tYnJhY2UtcGF0dGVybgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUge30gcGF0dGVybiBhcmUgdHJlYXRlZCBhcyBxdW90ZXMKc3RkaW46Cglmb289MTIzNAoJZWNobyAke2ZvbyUnMicqfSAiJHtmb28lJzInKn0iICR7Zm9vJTInKid9ICIke2ZvbyUyJyonfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAxIDEyMzQgMTIzNAotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1oZXJlZG9jLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUge30gaW4gaGVyZWRvYyBhcmUgdHJlYXRlZAoJYXMgbm9ybWFsIGNoYXIKc3RkaW46Cglmb289MQoJY2F0IDw8RU9NCgkke2ZvbzorJ2JsYWggICRmb28nfQoJRU9NCmV4cGVjdGVkLXN0ZG91dDoKCSdibGFoICAxJwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1uZXN0ZWQtYnJhY2VzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQgdW5xdW90ZWQge30gYXJlCgl0cmVhdGVkIGFzIHF1b3RlcwpzdGRpbjoKCWZvbz0xCgllY2hvICR7Zm9vOiske2ZvbzorJ2JsYWggICRmb28nfX0KZXhwZWN0ZWQtc3Rkb3V0OgoJYmxhaCAgJGZvbwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1uZXN0ZWQtcXVvdGVkLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgbmVzdGVkIHF1b3RlZCB7fSBhcmUgdHJlYXRlZAoJYXMgbm9ybWFsIGNoYXIKc3RkaW46Cglmb289MQoJZWNobyAiJHtmb286KyR7Zm9vOisnYmxhaCAgJGZvbyd9fSIKZXhwZWN0ZWQtc3Rkb3V0OgoJJ2JsYWggIDEnCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLW5lc3RlZC1icmFjZXMtbmVzdGVkCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQgdW5xdW90ZWQge30gYXJlIHRyZWF0ZWQKCWFzIHF1b3RlcywgZXZlbiBpZiB0aGF0J3MgaW5zaWRlIGEgZG91YmxlLXF1b3RlZCBjb21tYW5kIGV4cGFuc2lvbgpzdGRpbjoKCWZvbz0xCgllY2hvICIkKCBlY2hvICR7Zm9vOiske2ZvbzorJ2JsYWggICRmb28nfX0pIgpleHBlY3RlZC1zdGRvdXQ6CglibGFoICAkZm9vCi0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLW5lc3RlZC1icmFjZS1wYXR0ZXJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzaW5nbGUgcXVvdGVzIGluc2lkZSBuZXN0ZWQge30gcGF0dGVybiBhcmUgdHJlYXRlZCBhcyBxdW90ZXMKc3RkaW46Cglmb289MTIzNAoJZWNobyAke2ZvbzorJHtmb28lJzInKn19ICIke2ZvbzorJHtmb28lJzInKn19IiAke2ZvbzorJHtmb28lMicqJ319ICIke2ZvbzorJHtmb28lMicqJ319IgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEgMTIzNCAxMjM0Ci0tLQpuYW1lOiBzaW5nbGUtcXVvdGVzLWluLWhlcmVkb2MtbmVzdGVkLWJyYWNlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2luZ2xlIHF1b3RlcyBpbnNpZGUgbmVzdGVkIHt9IGluIGhlcmVkb2MgYXJlIHRyZWF0ZWQKCWFzIG5vcm1hbCBjaGFyCnN0ZGluOgoJZm9vPTEKCWNhdCA8PEVPTQoJJHtmb286KyR7Zm9vOisnYmxhaCAgJGZvbyd9fQoJRU9NCmV4cGVjdGVkLXN0ZG91dDoKCSdibGFoICAxJwotLS0KbmFtZTogc2luZ2xlLXF1b3Rlcy1pbi1oZXJlZG9jLXRyaW0KZGVzY3JpcHRpb246CglJbiBzb21lIGNhc2VzLCBzaW5nbGUgcXVvdGVzIGluc2lkZSB7fSBpbiBoZXJlZG9jIGFyZSBub3Qgbm9ybWFsCnN0ZGluOgoJeD1ub3RPSwoJY2F0IDw8RU9GCgkxOiAke3gjbm90fSAke3g6KyR7eCNub3R9fQoJMjogJHt4I1xuXG9cdH0gJHt4Oiske3gjXG5cb1x0fX0KCTM6ICR7eCMibm90In0gJHt4Oiske3gjIm5vdCJ9fQoJNDogJHt4Iydub3QnfSAke3g6KyR7eCMnbm90J319Cgk1OiAke3gjJCdub3QnfSAke3g6KyR7eCMkJ25vdCd9fQoJRU9GCmV4cGVjdGVkLXN0ZG91dDoKCTE6IE9LIE9LCgkyOiBPSyBPSwoJMzogT0sgT0sKCTQ6IE9LIE9LCgk1OiBPSyBPSwotLS0KbmFtZTogaGlzdG9yeS1iYXNpYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiB3ZSBjYW4gdGVzdCBoaXN0b3J5IGF0IGFsbApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBoaQoJZmMgLWwKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCTEJZWNobyBoaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1kdXBzCmRlc2NyaXB0aW9uOgoJVmVyaWZ5IGR1cGxpY2F0ZXMgYW5kIHNwYWNlcyBhcmUgbm90IGVudGVyZWQKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWVjaG8gaGkKCSBlY2hvIHlvCgllY2hvIGhpCglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CgloaQoJeW8KCWhpCgkxCWVjaG8gaGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktdW5saW5rCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYnJva2VuIEhJU1RGSUxFcyBkbyBub3QgY2F1c2UgdHJvdWJsZQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWZvby9oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApmaWxlLXNldHVwOiBkaXIgNzU1ICJmb28iCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJmb28vaGlzdC5maWxlIgoJc29tZXRleHQKdGltZS1saW1pdDogNQpwZXJsLXNldHVwOiBjaG1vZCgwNTU1LCAiZm9vIik7CnN0ZGluOgoJZWNobyBoaQoJZmMgLWwKCWNobW9kIDA3NTUgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgkxCWVjaG8gaGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKC4qY2FuJ3QgdW5saW5rIEhJU1RGSUxFLipcbik/WCokLwotLS0KbmFtZTogaGlzdG9yeS1tdWx0aWxpbmUKZGVzY3JpcHRpb246CglDaGVjayBjb3JyZWN0IG11bHRpbGluZSBoaXN0b3J5LCBEZWJpYW4gIzc4Mzk3OApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKCVBTMj1ZCnN0ZGluOgoJZm9yIGkgaW4gQSBCIEMKCWRvCgkgICBwcmludCAkaQoJICAgcHJpbnQgJGkKCWRvbmUKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCUEKCUEKCUIKCUIKCUMKCUMKCTEJZm9yIGkgaW4gQSBCIEMKCQlkbwoJCSAgIHByaW50ICRpCgkJICAgcHJpbnQgJGkKCQlkb25lCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YWVlZWVhYJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgbW9yZSByZWNlbnQgY29tbWFuZCBpcyBleGVjdXRlZApuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBoaQoJZWNobyB0aGVyZQoJZmMgLWUgLQpleHBlY3RlZC1zdGRvdXQ6CgloaQoJdGhlcmUKCXRoZXJlCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gdGhlcmVcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCByZXBlYXRlZCBjb21tYW5kIGlzIHByaW50ZWQgYmVmb3JlIGNvbW1hbmQKCWlzIHJlLWV4ZWN1dGVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZXhlYyAyPiYxCgllY2hvIGhpCgllY2hvIHRoZXJlCglmYyAtZSAtCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL1gqaGlcblgqdGhlcmVcblgqZWNobyB0aGVyZVxudGhlcmVcblgqLwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1lLW1pbnVzLTMKZGVzY3JpcHRpb246CglmYyAtZSAtIGZhaWxzIHdoZW4gdGhlcmUgaXMgbm8gaGlzdG9yeQoJKGtzaDkzIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyB0aGlzIHRvIGZhaWwpCgkoa3NoODggbG9vcHMgb24gdGhpcykKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJFbnYiCglQUzE9WApzdGRpbjoKCWZjIC1lIC0KCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJb2sKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqLio6LipoaXN0b3J5LipcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZS1taW51cy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgImZjIC1lIC0iIGNvbW1hbmQgb3V0cHV0IGdvZXMgdG8gc3Rkb3V0LgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMKCWZjIC1lIC0gfCAocmVhZCB4OyBlY2hvICJBICR4IikKCWVjaG8gb2sKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjCglBIGFiYwoJb2sKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBhYmNcblgqLwotLS0KbmFtZTogaGlzdG9yeS1lLW1pbnVzLTUKZGVzY3JpcHRpb246CglmYyBpcyByZXBsYWNlZCBpbiBoaXN0b3J5IGJ5IG5ldyBjb21tYW5kLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCToKCWZjIC1lIC0gZWNobwoJZmMgLWwgMiA1CmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCWdoaSBqa2wKCTIJZWNobyBnaGkgamtsCgkzCToKCTQJZWNobyBnaGkgamtsCgk1CWZjIC1sIDIgNQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIGdoaSBqa2xcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC0xCmRlc2NyaXB0aW9uOgoJTGlzdCBsaXN0cyBjb3JyZWN0IHJhbmdlCgkoa3NoODggZmFpbHMgJ2NhdXNlIGl0IGxpc3RzIHRoZSBmYyBjb21tYW5kKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZmMgLWwgLS0gLTIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTIKZGVzY3JpcHRpb246CglMaXN0cyBvbGRlc3QgaGlzdG9yeSBpZiBnaXZlbiBwcmUtaGlzdG9yaWMgbnVtYmVyCgkoa3NoOTMgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIHRoaXMgdG8gZmFpbCkKCShrc2g4OCBmYWlscyAnY2F1c2UgaXQgbGlzdHMgdGhlIGZjIGNvbW1hbmQpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCglmYyAtbCAtLSAtNDAKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJMQllY2hvIGxpbmUgMQoJMgllY2hvIGxpbmUgMgoJMwllY2hvIGxpbmUgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTMKZGVzY3JpcHRpb246CglDYW4gZ2l2ZSBudW1iZXIgJ29wdGlvbnMnIHRvIGZjCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTMgLTIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CgkyCWVjaG8gbGluZSAyCgkzCWVjaG8gbGluZSAzCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtNApkZXNjcmlwdGlvbjoKCS0xIHJlZmVycyB0byBwcmV2aW91cyBjb21tYW5kCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTEgLTEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0Cgk0CWVjaG8gbGluZSA0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWxpc3QtNQpkZXNjcmlwdGlvbjoKCUxpc3QgY29tbWFuZCBzdGF5cyBpbiBoaXN0b3J5Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgLWwgLTEgLTEKCWZjIC1sIC0yIC0xCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJNAllY2hvIGxpbmUgNAoJNAllY2hvIGxpbmUgNAoJNQlmYyAtbCAtMSAtMQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTYKZGVzY3JpcHRpb246CglISVNUU0laRSBsaW1pdHMgYWJvdXQgb2YgaGlzdG9yeSBrZXB0LgoJKGtzaDg4IGZhaWxzICdjYXVzZSBpdCBsaXN0cyB0aGUgZmMgY29tbWFuZCkKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhSElTVFNJWkU9MyEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbApleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJNQllY2hvIGxpbmUgNQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LTcKZGVzY3JpcHRpb246CglmYyBhbGxvd3MgdG9vIG9sZC9uZXcgZXJyb3JzIGluIHJhbmdlIHNwZWNpZmljYXRpb24KbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCmVudi1zZXR1cDogIUVOVj0uL0VudiFISVNURklMRT1oaXN0LmZpbGUhSElTVFNJWkU9MyEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAxIDMwCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyCglsaW5lIDMKCWxpbmUgNAoJbGluZSA1Cgk0CWVjaG8gbGluZSA0Cgk1CWVjaG8gbGluZSA1Cgk2CWZjIC1sIDEgMzAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTEKZGVzY3JpcHRpb246Cgl0ZXN0IC1yIGZsYWcgaW4gaGlzdG9yeQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAtciAyIDQKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTQJZWNobyBsaW5lIDQKCTMJZWNobyBsaW5lIDMKCTIJZWNobyBsaW5lIDIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3RvcnktbGlzdC1yLTIKZGVzY3JpcHRpb246CglJZiBmaXJzdCBpcyBuZXdlciB0aGFuIGxhc3QsIC1yIGlzIGltcGxpZWQuCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZWNobyBsaW5lIDUKCWZjIC1sIDQgMgpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDEKCWxpbmUgMgoJbGluZSAzCglsaW5lIDQKCWxpbmUgNQoJNAllY2hvIGxpbmUgNAoJMwllY2hvIGxpbmUgMwoJMgllY2hvIGxpbmUgMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCokLwotLS0KbmFtZTogaGlzdG9yeS1saXN0LXItMwpkZXNjcmlwdGlvbjoKCUlmIGZpcnN0IGlzIG5ld2VyIHRoYW4gbGFzdCwgLXIgaXMgY2FuY2VsbGVkLgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyCgllY2hvIGxpbmUgMwoJZWNobyBsaW5lIDQKCWVjaG8gbGluZSA1CglmYyAtbCAtciA0IDIKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIKCWxpbmUgMwoJbGluZSA0CglsaW5lIDUKCTIJZWNobyBsaW5lIDIKCTMJZWNobyBsaW5lIDMKCTQJZWNobyBsaW5lIDQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqJC8KLS0tCm5hbWU6IGhpc3Rvcnktc3Vic3QtMQpkZXNjcmlwdGlvbjoKCUJhc2ljIHN1YnN0aXR1dGlvbgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gYWJjPUFCICdlY2hvIGEnCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCUFCIGRlZgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEFCIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC0yCmRlc2NyaXB0aW9uOgoJRG9lcyBzdWJzdCBmaW5kIHByZXZpb3VzIGNvbW1hbmQ/Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWVjaG8gZ2hpIGprbAoJZmMgLWUgLSBqa2w9WFlaUVJUICdlY2hvIGcnCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCWdoaSBqa2wKCWdoaSBYWVpRUlQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBnaGkgWFlaUVJUXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTMKZGVzY3JpcHRpb246CglEb2VzIHN1YnN0IGZpbmQgcHJldmlvdXMgY29tbWFuZCB3aGVuIG5vIGFyZ3VtZW50cyBnaXZlbgpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCgllY2hvIGdoaSBqa2wKCWZjIC1lIC0gamtsPVhZWlFSVApleHBlY3RlZC1zdGRvdXQ6CglhYmMgZGVmCglnaGkgamtsCglnaGkgWFlaUVJUCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gZ2hpIFhZWlFSVFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1zdWJzdC00CmRlc2NyaXB0aW9uOgoJR2xvYmFsIHN1YnN0aXR1dGlvbnMgd29yawoJKGtzaDg4IGFuZCBrc2g5MyBkbyBub3QgaGF2ZSAtZyBvcHRpb24pCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYgYXNqaiBzYWRqaGFzZGpoIGFzZGpoYXNkCglmYyAtZSAtIC1nIGE9Rm9vQkFSCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYgYXNqaiBzYWRqaGFzZGpoIGFzZGpoYXNkCglGb29CQVJiYyBkZWYgRm9vQkFSc2pqIHNGb29CQVJkamhGb29CQVJzZGpoIEZvb0JBUnNkamhGb29CQVJzZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCplY2hvIEZvb0JBUmJjIGRlZiBGb29CQVJzamogc0Zvb0JBUmRqaEZvb0JBUnNkamggRm9vQkFSc2RqaEZvb0JBUnNkXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LXN1YnN0LTUKZGVzY3JpcHRpb246CglNYWtlIHN1cmUgc2VhcmNoZXMgZG9uJ3QgZmluZCBjdXJyZW50IChmYykgY29tbWFuZAoJKGtzaDg4L2tzaDkzIGRvbid0IGhhdmUgdGhlID8gcHJlZml4IHRoaW5nIHNvIHRoZXkgZmFpbCB0aGlzIHRlc3QpCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWVjaG8gZ2hpIGprbAoJZmMgLWUgLSBhYmM9QUIgXD9hYmMKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJZ2hpIGprbAoJQUIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gQUIgZGVmXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTEtb2xkCmRlc2NyaXB0aW9uOgoJQmFzaWMgKGVkKSBlZGl0aW5nIHdvcmtzIChhc3N1bWVzIHlvdSBoYXZlIGdlbmVyaWMgZWQgZWRpdG9yCgl0aGF0IHByaW50cyBubyBwcm9tcHRzKS4gVGhpcyBpcyBmb3Igb2xkaXNoIGVkKDEpIHdoaWNoIHdyaXRlCgl0aGUgY2hhcmFjdGVyIGNvdW50IHRvIHN0ZG91dC4KY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjIGRlZgoJMTMKCTE2CglGT09CQVIgZGVmCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gRk9PQkFSIGRlZlxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0yLW9sZApkZXNjcmlwdGlvbjoKCUNvcnJlY3QgY29tbWFuZCBpcyBlZGl0ZWQgd2hlbiBudW1iZXIgZ2l2ZW4KY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGxpbmUgMQoJZWNobyBsaW5lIDIgaXMgaGVyZQoJZWNobyBsaW5lIDMKCWVjaG8gbGluZSA0CglmYyAyCglzL2lzIGhlcmUvaXMgY2hhbmdlZC8KCXcKCXEKZXhwZWN0ZWQtc3Rkb3V0OgoJbGluZSAxCglsaW5lIDIgaXMgaGVyZQoJbGluZSAzCglsaW5lIDQKCTIwCgkyMwoJbGluZSAyIGlzIGNoYW5nZWQKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqZWNobyBsaW5lIDIgaXMgY2hhbmdlZFxuWCokLwotLS0KbmFtZTogaGlzdG9yeS1lZC0zLW9sZApkZXNjcmlwdGlvbjoKCU5ld2x5IGNyZWF0ZWQgbXVsdGkgbGluZSBjb21tYW5kcyBzaG93IHVwIGFzIHNpbmdsZSBjb21tYW5kCglpbiBoaXN0b3J5LgoJKGtzaDg4IGZhaWxzICdjYXVzZSBpdCBsaXN0cyB0aGUgZmMgY29tbWFuZCkKY2F0ZWdvcnk6IHN0ZG91dC1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCSRhCgllY2hvIGEgbmV3IGxpbmUKCS4KCXcKCXEKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCTEzCgkzMgoJRk9PQkFSIGRlZgoJYSBuZXcgbGluZQoJMQllY2hvIGFiYyBkZWYKCTIJZWNobyBGT09CQVIgZGVmCgkJZWNobyBhIG5ldyBsaW5lCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKmVjaG8gRk9PQkFSIGRlZlxuZWNobyBhIG5ldyBsaW5lXG5YKiQvCi0tLQpuYW1lOiBoaXN0b3J5LWVkLTEKZGVzY3JpcHRpb246CglCYXNpYyAoZWQpIGVkaXRpbmcgd29ya3MgKGFzc3VtZXMgeW91IGhhdmUgZ2VuZXJpYyBlZCBlZGl0b3IKCXRoYXQgcHJpbnRzIG5vIHByb21wdHMpLiBUaGlzIGlzIGZvciBuZXdpc2ggZWQoMSkgYW5kIHN0ZGVyci4KY2F0ZWdvcnk6ICFuby1zdGRlcnItZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBhYmMgZGVmCglmYyBlY2hvCglzL2FiYy9GT09CQVIvCgl3CglxCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCUZPT0JBUiBkZWYKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXlgqMTNcbjE2XG5lY2hvIEZPT0JBUiBkZWZcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMgpkZXNjcmlwdGlvbjoKCUNvcnJlY3QgY29tbWFuZCBpcyBlZGl0ZWQgd2hlbiBudW1iZXIgZ2l2ZW4KY2F0ZWdvcnk6ICFuby1zdGRlcnItZWQKbmVlZC1jdHR5OiB5ZXMKbmVlZC1wYXNzOiBubwphcmd1bWVudHM6ICEtaSEKZW52LXNldHVwOiAhRU5WPS4vRW52IUhJU1RGSUxFPWhpc3QuZmlsZSEKZmlsZS1zZXR1cDogZmlsZSA2NDQgIkVudiIKCVBTMT1YCnN0ZGluOgoJZWNobyBsaW5lIDEKCWVjaG8gbGluZSAyIGlzIGhlcmUKCWVjaG8gbGluZSAzCgllY2hvIGxpbmUgNAoJZmMgMgoJcy9pcyBoZXJlL2lzIGNoYW5nZWQvCgl3CglxCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMQoJbGluZSAyIGlzIGhlcmUKCWxpbmUgMwoJbGluZSA0CglsaW5lIDIgaXMgY2hhbmdlZApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCoyMFxuMjNcbmVjaG8gbGluZSAyIGlzIGNoYW5nZWRcblgqJC8KLS0tCm5hbWU6IGhpc3RvcnktZWQtMwpkZXNjcmlwdGlvbjoKCU5ld2x5IGNyZWF0ZWQgbXVsdGkgbGluZSBjb21tYW5kcyBzaG93IHVwIGFzIHNpbmdsZSBjb21tYW5kCglpbiBoaXN0b3J5LgpjYXRlZ29yeTogIW5vLXN0ZGVyci1lZApuZWVkLWN0dHk6IHllcwpuZWVkLXBhc3M6IG5vCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgllY2hvIGFiYyBkZWYKCWZjIGVjaG8KCXMvYWJjL0ZPT0JBUi8KCSRhCgllY2hvIGEgbmV3IGxpbmUKCS4KCXcKCXEKCWZjIC1sCmV4cGVjdGVkLXN0ZG91dDoKCWFiYyBkZWYKCUZPT0JBUiBkZWYKCWEgbmV3IGxpbmUKCTEJZWNobyBhYmMgZGVmCgkyCWVjaG8gRk9PQkFSIGRlZgoJCWVjaG8gYSBuZXcgbGluZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eWCoxM1xuMzJcbmVjaG8gRk9PQkFSIGRlZlxuZWNobyBhIG5ldyBsaW5lXG5YKiQvCi0tLQpuYW1lOiBJRlMtc3BhY2UtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBkZWZhdWx0IElGUwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzZXQgLS0gQSBCIEMKCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCTwxPiA8QT4gPEI+IDxDPiAuCgk8Mj4gPEEgQiBDPiAuCgk8Mz4gPEE+IDxCPiA8Qz4gLgoJPDQ+IDxBPiA8Qj4gPEM+IC4KLS0tCm5hbWU6IElGUy1jb2xvbi0xCmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz06CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz06CglzZXQgLS0gQSBCIEMKCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCmV4cGVjdGVkLXN0ZG91dDoKCTwxPiA8QT4gPEI+IDxDPiAuCgk8Mj4gPEE6QjpDPiAuCgk8Mz4gPEE+IDxCPiA8Qz4gLgoJPDQ+IDxBPiA8Qj4gPEM+IC4KLS0tCm5hbWU6IElGUy1udWxsLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPSIiCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iIgoJc2V0IC0tIEEgQiBDCglzaG93YXJncyAxICQqCglzaG93YXJncyAyICIkKiIKCXNob3dhcmdzIDMgJEAKCXNob3dhcmdzIDQgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gPEE+IDxCPiA8Qz4gLgoJPDI+IDxBQkM+IC4KCTwzPiA8QT4gPEI+IDxDPiAuCgk8ND4gPEE+IDxCPiA8Qz4gLgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTEKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iJElGUzoiCglzZXQgLS0KCXNob3dhcmdzIDEgJCoKCXNob3dhcmdzIDIgIiQqIgoJc2hvd2FyZ3MgMyAkQAoJc2hvd2FyZ3MgNCAiJEAiCglzaG93YXJncyA1IDogIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gLgoJPDI+IDw+IC4KCTwzPiAuCgk8ND4gLgoJPDU+IDw6PiAuCi0tLQpuYW1lOiBJRlMtc3BhY2UtY29sb24tMgpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9PHdoaXRlLXNwYWNlPjoKCUFUJlQga3NoIGZhaWxzIHRoaXMsIFBPU0lYIHNheXMgdGhlIHRlc3QgaXMgY29ycmVjdC4Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPSIkSUZTOiIKCXNldCAtLQoJc2hvd2FyZ3MgOiIkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDo+IC4KLS0tCm5hbWU6IElGUy1zcGFjZS1jb2xvbi00CmRlc2NyaXB0aW9uOgoJU2ltcGxlIHRlc3QsIElGUz08d2hpdGUtc3BhY2U+OgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IiRJRlM6IgoJc2V0IC0tCglzaG93YXJncyAiJEAkQCIKZXhwZWN0ZWQtc3Rkb3V0OgoJLgotLS0KbmFtZTogSUZTLXNwYWNlLWNvbG9uLTUKZGVzY3JpcHRpb246CglTaW1wbGUgdGVzdCwgSUZTPTx3aGl0ZS1zcGFjZT46CglEb24ndCBrbm93IHdoYXQgUE9TSVggdGhpbmtzIG9mIHRoaXMuICBBVCZUIGtzaCBkb2VzIG5vdCBkbyB0aGlzLgpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglJRlM9IiRJRlM6IgoJc2V0IC0tCglzaG93YXJncyAiJHtAOi19IgpleHBlY3RlZC1zdGRvdXQ6Cgk8PiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBJRlM9PHdoaXRlLXNwYWNlPjoKc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPSIkSUZTOiIKCXg9IjpiOiA6IgoJZWNobyAtbiAnMTonOyBmb3IgaSBpbiAkeCA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCgllY2hvIC1uICcyOic7IGZvciBpIGluIDpiOjogOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgMyAkeAoJc2hvd2FyZ3MgNCA6Yjo6Cgl4PSJhOmI6IgoJZWNobyAtbiAnNTonOyBmb3IgaSBpbiAkeCA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCglzaG93YXJncyA2ICR4Cgl4PSJhOjpjIgoJZWNobyAtbiAnNzonOyBmb3IgaSBpbiAkeCA7IGRvIGVjaG8gLW4gIiBbJGldIiA7IGRvbmUgOyBlY2hvCglzaG93YXJncyA4ICR4CgllY2hvIC1uICc5Oic7IGZvciBpIGluICR7Rk9PLWBlY2hvIC1uIGg6aWB0aDplcmV9IDsgZG8gZWNobyAtbiAiIFskaV0iIDsgZG9uZSA7IGVjaG8KCXNob3dhcmdzIDEwICR7Rk9PLWBlY2hvIC1uIGg6aWB0aDplcmV9CglzaG93YXJncyAxMSAiJHtGT08tYGVjaG8gLW4gaDppYHRoOmVyZX0iCgl4PSIgQSA6ICBCOjpEIgoJZWNobyAtbiAnMTI6JzsgZm9yIGkgaW4gJHggOyBkbyBlY2hvIC1uICIgWyRpXSIgOyBkb25lIDsgZWNobwoJc2hvd2FyZ3MgMTMgJHgKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogW10gW2JdIFtdCgkyOiBbOmI6Ol0KCTwzPiA8PiA8Yj4gPD4gLgoJPDQ+IDw6Yjo6PiAuCgk1OiBbYV0gW2JdCgk8Nj4gPGE+IDxiPiAuCgk3OiBbYV0gW10gW2NdCgk8OD4gPGE+IDw+IDxjPiAuCgk5OiBbaF0gW2l0aF0gW2VyZV0KCTwxMD4gPGg+IDxpdGg+IDxlcmU+IC4KCTwxMT4gPGg6aXRoOmVyZT4gLgoJMTI6IFtBXSBbQl0gW10gW0RdCgk8MTM+IDxBPiA8Qj4gPD4gPEQ+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbGVhZGluZyB3aGl0ZXNwYWNlIGFmdGVyIHRyaW0gZG9lcyBub3QgbWFrZSBhIGZpZWxkCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXg9IlggMSAyIgoJc2hvd2FyZ3MgMSBzaGlmdCAke3gjWH0KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDxzaGlmdD4gPDE+IDwyPiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtMy1hcnIKZGVzY3JpcHRpb246CglDaGVjayBsZWFkaW5nIElGUyBub24td2hpdGVzcGFjZSBhZnRlciB0cmltIGRvZXMgbWFrZSBhIGZpZWxkCglidXQgbGVhZGluZyBJRlMgd2hpdGVzcGFjZSBkb2VzIG5vdCwgbm9yIGVtcHR5IHJlcGxhY2VtZW50cwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzaG93YXJncyAwICR7LSt9CglJRlM9OgoJc2hvd2FyZ3MgMSAkey0rOmZvbzpiYXJ9CglJRlM9JyAnCglzaG93YXJncyAyICR7LSsgZm9vIGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IC4KCTwxPiA8PiA8Zm9vPiA8YmFyPiAuCgk8Mj4gPGZvbz4gPGJhcj4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTMtYXNzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbm9uLWZpZWxkIHNlbWFudGljcwpzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9CglzaG93YXJncyAwIHg9JHstK30KCUlGUz06CglzaG93YXJncyAxIHg9JHstKzpmb286YmFyfQoJSUZTPScgJwoJc2hvd2FyZ3MgMiB4PSR7LSsgZm9vIGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IDx4PT4gLgoJPDE+IDx4PT4gPGZvbz4gPGJhcj4gLgoJPDI+IDx4PT4gPGZvbz4gPGJhcj4gLgotLS0KbmFtZTogSUZTLXN1YnN0LTMtbGNsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbm9uLWZpZWxkIHNlbWFudGljcywgc21hbGxlciBjb3JuZXIgY2FzZSAoTFAjMTM4MTk2NSkKc3RkaW46CglzZXQgLXgKCWxvY2FsIHJlZ2V4PSR7MjotfQoJZXhpdCAxCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWdleD0vCi0tLQpuYW1lOiBJRlMtc3Vic3QtNC0xCmRlc2NyaXB0aW9uOgoJcmVwb3J0ZWQgYnkgbWlrZXNlcnYKc3RkaW46CglwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9CglhPSdzcGFjZSBkaXZkZWQgIGFyZ3VtZW50CgloZXJlJwoJSUZTPVwgIDsgc2V0IC0tICRhCglJRlM9IDsgcT0iJCoiIDsgbnE9JCoKCXBmbiAiJCoiICQqICIkcSIgIiRucSIKCVsgIiRxIiA9ICIkbnEiIF0gJiYgZWNobyA9dHJ1ZSB8fCBlY2hvID1mYWxzZQpleHBlY3RlZC1zdGRvdXQ6Cgk8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCTxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCTxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJPXRydWUKLS0tCm5hbWU6IElGUy1zdWJzdC00LTIKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCAgOyBzZXQgLS0gJGEKCUlGUz0gOyBxPSIkQCIgOyBucT0kQAoJcGZuICIkKiIgJCogIiRxIiAiJG5xIgoJWyAiJHEiID0gIiRucSIgXSAmJiBlY2hvID10cnVlIHx8IGVjaG8gPWZhbHNlCmV4cGVjdGVkLXN0ZG91dDoKCTxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJPHNwYWNlPgoJPGRpdmRlZD4KCTxhcmd1bWVudAoJaGVyZT4KCTxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgk8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJPXRydWUKLS0tCm5hbWU6IElGUy1zdWJzdC00LTMKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gcHJvYmxlbSBieSBtaWtlc2VydgpzdGRpbjoKCXBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH0KCWE9J3NwYWNlIGRpdmRlZCAgYXJndW1lbnQKCWhlcmUnCglJRlM9XCA7IHNldCAtLSAkYTsgSUZTPQoJcXM9IiQqIgoJbnFzPSQqCglxaz0iJEAiCglucWs9JEAKCXByaW50IC1uciAtLSAnPSBxcyAnOyBwZm4gIiRxcyIKCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAiJCoiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICQqCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICIkQCIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJEAKZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTQtNApkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9Cglxcz0iJCoiCglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJ34gcXMgJzsgcGZuICIkKiIKCW5xcz0kKgoJcHJpbnQgLW5yIC0tICc9bnFzICc7IHBmbiAiJG5xcyIKCXByaW50IC1uciAtLSAnfm5xcyAnOyBwZm4gJCoKCXFrPSIkQCIKCXByaW50IC1uciAtLSAnPSBxayAnOyBwZm4gIiRxayIKCXByaW50IC1uciAtLSAnfiBxayAnOyBwZm4gIiRAIgoJbnFrPSRACglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+bnFrICc7IHBmbiAkQApleHBlY3RlZC1zdGRvdXQ6Cgk9IHFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgl+bnFzIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+bnFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Ci0tLQpuYW1lOiBJRlMtc3Vic3QtNC00cApkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9Cgl1bnNldCB2Cglxcz0ke3Y6LSIkKiJ9CglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJ34gcXMgJzsgcGZuICR7djotIiQqIn0KCW5xcz0ke3Y6LSQqfQoJcHJpbnQgLW5yIC0tICc9bnFzICc7IHBmbiAiJG5xcyIKCXByaW50IC1uciAtLSAnfm5xcyAnOyBwZm4gJHt2Oi0kKn0KCXFrPSR7djotIiRAIn0KCXByaW50IC1uciAtLSAnPSBxayAnOyBwZm4gIiRxayIKCXByaW50IC1uciAtLSAnfiBxayAnOyBwZm4gJHt2Oi0iJEAifQoJbnFrPSR7djotJEB9CglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+bnFrICc7IHBmbiAke3Y6LSRAfQpleHBlY3RlZC1zdGRvdXQ6Cgk9IHFzIDxzcGFjZWRpdmRlZGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2VkaXZkZWRhcmd1bWVudAoJaGVyZT4KCT1ucXMgPHNwYWNlZGl2ZGVkYXJndW1lbnQKCWhlcmU+Cgl+bnFzIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+bnFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Ci0tLQpuYW1lOiBJRlMtc3Vic3QtNC01CmRlc2NyaXB0aW9uOgoJZXh0ZW5kZWQgdGVzdHN1aXRlIGJhc2VkIG9uIHByb2JsZW0gYnkgbWlrZXNlcnYKc3RkaW46CglwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9CglhPSdzcGFjZSBkaXZkZWQgIGFyZ3VtZW50CgloZXJlJwoJSUZTPVwgOyBzZXQgLS0gJGE7IElGUz0sCglxcz0iJCoiCglwcmludCAtbnIgLS0gJz0gcXMgJzsgcGZuICIkcXMiCglwcmludCAtbnIgLS0gJ34gcXMgJzsgcGZuICIkKiIKCW5xcz0kKgoJcHJpbnQgLW5yIC0tICc9bnFzICc7IHBmbiAiJG5xcyIKCXByaW50IC1uciAtLSAnfm5xcyAnOyBwZm4gJCoKCXFrPSIkQCIKCXByaW50IC1uciAtLSAnPSBxayAnOyBwZm4gIiRxayIKCXByaW50IC1uciAtLSAnfiBxayAnOyBwZm4gIiRAIgoJbnFrPSRACglwcmludCAtbnIgLS0gJz1ucWsgJzsgcGZuICIkbnFrIgoJcHJpbnQgLW5yIC0tICd+bnFrICc7IHBmbiAkQApleHBlY3RlZC1zdGRvdXQ6Cgk9IHFzIDxzcGFjZSxkaXZkZWQsYXJndW1lbnQKCWhlcmU+Cgl+IHFzIDxzcGFjZSxkaXZkZWQsYXJndW1lbnQKCWhlcmU+Cgk9bnFzIDxzcGFjZSxkaXZkZWQsYXJndW1lbnQKCWhlcmU+Cgl+bnFzIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9IHFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+IHFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Cgk9bnFrIDxzcGFjZSBkaXZkZWQgYXJndW1lbnQKCWhlcmU+Cgl+bnFrIDxzcGFjZT4KCTxkaXZkZWQ+Cgk8YXJndW1lbnQKCWhlcmU+Ci0tLQpuYW1lOiBJRlMtc3Vic3QtNC01cApkZXNjcmlwdGlvbjoKCWV4dGVuZGVkIHRlc3RzdWl0ZSBiYXNlZCBvbiBwcm9ibGVtIGJ5IG1pa2VzZXJ2CnN0ZGluOgoJcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfQoJYT0nc3BhY2UgZGl2ZGVkICBhcmd1bWVudAoJaGVyZScKCUlGUz1cIDsgc2V0IC0tICRhOyBJRlM9LAoJdW5zZXQgdgoJcXM9JHt2Oi0iJCoifQoJcHJpbnQgLW5yIC0tICc9IHFzICc7IHBmbiAiJHFzIgoJcHJpbnQgLW5yIC0tICd+IHFzICc7IHBmbiAke3Y6LSIkKiJ9CglucXM9JHt2Oi0kKn0KCXByaW50IC1uciAtLSAnPW5xcyAnOyBwZm4gIiRucXMiCglwcmludCAtbnIgLS0gJ35ucXMgJzsgcGZuICR7djotJCp9Cglxaz0ke3Y6LSIkQCJ9CglwcmludCAtbnIgLS0gJz0gcWsgJzsgcGZuICIkcWsiCglwcmludCAtbnIgLS0gJ34gcWsgJzsgcGZuICR7djotIiRAIn0KCW5xaz0ke3Y6LSRAfQoJcHJpbnQgLW5yIC0tICc9bnFrICc7IHBmbiAiJG5xayIKCXByaW50IC1uciAtLSAnfm5xayAnOyBwZm4gJHt2Oi0kQH0KZXhwZWN0ZWQtc3Rkb3V0OgoJPSBxcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJfiBxcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJPW5xcyA8c3BhY2UsZGl2ZGVkLGFyZ3VtZW50CgloZXJlPgoJfm5xcyA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPSBxayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfiBxayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgoJPW5xayA8c3BhY2UgZGl2ZGVkIGFyZ3VtZW50CgloZXJlPgoJfm5xayA8c3BhY2U+Cgk8ZGl2ZGVkPgoJPGFyZ3VtZW50CgloZXJlPgotLS0KbmFtZTogSUZTLXN1YnN0LTUKZGVzY3JpcHRpb246CglleHRlbmRlZCB0ZXN0c3VpdGUgYmFzZWQgb24gSUZTLXN1YnN0LTMKCWRpZmZlcnMgc2xpZ2h0bHkgZnJvbSBrc2g5MzoKCS0gb21pdCB0cmFpbGluZyBmaWVsZCBpbiBhM3puYSwgYTdpbmEgKHVucXVvdGVkICRAIGV4cGFuc2lvbikKCS0gaGFzIGV4dHJhIG1pZGRsZSBmaWVsZHMgaW4gYjVpbnMsIGI3aW5hIChJRlNfTldTIHVucXVvdGVkIGV4cGFuc2lvbikKCWRpZmZlcnMgc2xpZ2h0bHkgZnJvbSBiYXNoOgoJLSBvbWl0IGxlYWRpbmcgZmllbGQgaW4gYTVpbnMsIGE3aW5hIChJRlNfTldTIHVucXVvdGVkIGV4cGFuc2lvbikKCWRpZmZlcnMgc2xpZ2h0bHkgZnJvbSB6c2g6CgktIGRpZmZlcnMgaW4gYXNzaWdubWVudCwgbm90IGV4cGFuc2lvbjsgcHJvYmFibHkgenNoIGJ1ZwoJLSBoYXMgZXh0cmEgbWlkZGxlIGZpZWxkcyBpbiBiNWlucywgYjdpbmEgKElGU19OV1MgdW5xdW90ZWQgZXhwYW5zaW9uKQoJJ2VtdWxhdGUgc2gnIHpzaCBoYXMgZXh0cmEgZmllbGRzIGluCgktIGE1aW5zIChJRlNfTldTIHVucXVvdGVkICQqKQoJLSBiNWlucywgbWF0Y2hpbmcgbWtzaOKAmXMKCSEhV0FSTklORyEhIG1vcmUgdG8gY29tZTogaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9ODg4CnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gIiIgMiAiIjsgcGZiICQqOyB4PSQqOyBwZm4gIiR4IicKCWVjaG8gJz1hMXpucycKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tICIiIDIgIiI7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWEyenFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gIiIgMiAiIjsgcGZiICRAOyB4PSRAOyBwZm4gIiR4IicKCWVjaG8gJz1hM3puYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tICIiIDIgIiI7IHBmYiAiJEAiOyB4PSIkQCI7IHBmbiAiJHgiJwoJZWNobyAnPWE0enFhJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tICIiIDIgIiI7IHBmYiAkKjsgeD0kKjsgcGZuICIkeCInCgllY2hvICc9YTVpbnMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gIiIgMiAiIjsgcGZiICIkKiI7IHg9IiQqIjsgcGZuICIkeCInCgllY2hvICc9YTZpcXMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gIiIgMiAiIjsgcGZiICRAOyB4PSRAOyBwZm4gIiR4IicKCWVjaG8gJz1hN2luYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPSw7IHNldCAtLSAiIiAyICIiOyBwZmIgIiRAIjsgeD0iJEAiOyBwZm4gIiR4IicKCWVjaG8gJz1hOGlxYScKCSIkX19wcm9nbmFtZSIgLWMgJ3BmYigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICJbJHNfYXJnXSI7IGRvbmU7IH07IHBmbigpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1yIC0tICI8JHNfYXJnPiI7IGRvbmU7IH07CgkJSUZTPTsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgJCo7IHg9JCo7IHBmbiAiJHgiJwoJZWNobyAnPWIxem5zJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWIyenFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9OyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAkQDsgeD0kQDsgcGZuICIkeCInCgllY2hvICc9YjN6bmEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz07IHNldCAtLSBBIEIgIiIgIiIgQzsgcGZiICIkQCI7IHg9IiRAIjsgcGZuICIkeCInCgllY2hvICc9YjR6cWEnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAkKjsgeD0kKjsgcGZuICIkeCInCgllY2hvICc9YjVpbnMnCgkiJF9fcHJvZ25hbWUiIC1jICdwZmIoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiWyRzX2FyZ10iOyBkb25lOyB9OyBwZm4oKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtciAtLSAiPCRzX2FyZz4iOyBkb25lOyB9OwoJCUlGUz0sOyBzZXQgLS0gQSBCICIiICIiIEM7IHBmYiAiJCoiOyB4PSIkKiI7IHBmbiAiJHgiJwoJZWNobyAnPWI2aXFzJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgJEA7IHg9JEA7IHBmbiAiJHgiJwoJZWNobyAnPWI3aW5hJwoJIiRfX3Byb2duYW1lIiAtYyAncGZiKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIlskc19hcmddIjsgZG9uZTsgfTsgcGZuKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIjwkc19hcmc+IjsgZG9uZTsgfTsKCQlJRlM9LDsgc2V0IC0tIEEgQiAiIiAiIiBDOyBwZmIgIiRAIjsgeD0iJEAiOyBwZm4gIiR4IicKCWVjaG8gJz1iOGlxYScKZXhwZWN0ZWQtc3Rkb3V0OgoJWzJdCgk8Mj4KCT1hMXpucwoJWzJdCgk8Mj4KCT1hMnpxcwoJWzJdCgk8IDIgPgoJPWEzem5hCglbXQoJWzJdCglbXQoJPCAyID4KCT1hNHpxYQoJWzJdCgk8LDIsPgoJPWE1aW5zCglbLDIsXQoJPCwyLD4KCT1hNmlxcwoJWzJdCgk8IDIgPgoJPWE3aW5hCglbXQoJWzJdCglbXQoJPCAyID4KCT1hOGlxYQoJW0FdCglbQl0KCVtDXQoJPEFCQz4KCT1iMXpucwoJW0FCQ10KCTxBQkM+Cgk9YjJ6cXMKCVtBXQoJW0JdCglbQ10KCTxBIEIgICBDPgoJPWIzem5hCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBIEIgICBDPgoJPWI0enFhCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBLEIsLCxDPgoJPWI1aW5zCglbQSxCLCwsQ10KCTxBLEIsLCxDPgoJPWI2aXFzCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBIEIgICBDPgoJPWI3aW5hCglbQV0KCVtCXQoJW10KCVtdCglbQ10KCTxBIEIgICBDPgoJPWI4aXFhCi0tLQpuYW1lOiBJRlMtc3Vic3QtNgpkZXNjcmlwdGlvbjoKCVJlZ3Jlc3Npb24gd3J0LiB2ZWN0b3IgZXhwYW5zaW9uIGluIHRyaW0Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJSUZTPQoJeD1hYmMKCXNldCAtLSBhIGIKCXNob3dhcmdzICR7eCMkKn0KZXhwZWN0ZWQtc3Rkb3V0OgoJPGM+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC03CmRlc2NyaXB0aW9uOgoJa3NoOTMgYnVnIHdydC4gdmVjdG9yIGV4cGFuc2lvbiBpbiB0cmltCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0iKiIKCWE9YWJjZAoJc2V0IC0tICcnIGMKCXNob3dhcmdzICIkKiIgJHthIyMiJCoifQpleHBlY3RlZC1zdGRvdXQ6Cgk8KmM+IDxhYmNkPiAuCi0tLQpuYW1lOiBJRlMtc3Vic3QtOApkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTIyMQpzdGRpbjoKCW4oKSB7IGVjaG8gIiQjIjsgfTsgbiAiJHtmb28tJEB9IgpleHBlY3RlZC1zdGRvdXQ6CgkxCi0tLQpuYW1lOiBJRlMtc3Vic3QtOQpkZXNjcmlwdGlvbjoKCVNjYWxhciBjb250ZXh0IGZvciAkKi8kQCBpbiBbWyBhbmQgY2FzZQpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IHNldCBhIGI7IFtbICQqID0gIiQxJDIiIF1dOyBlY2hvIDEgJD8nIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgW1sgJCogPSBhYiBdXTsgZWNobyAyICIkPyInIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgW1sgIiQqIiA9IGFiIF1dOyBlY2hvIDMgIiQ/Iicgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBbWyAkKiA9IGEgXV07IGVjaG8gNCAiJD8iJyBzaCBhIGIKCSIkX19wcm9nbmFtZSIgLWMgJ0lGUz07IFtbICIkKiIgPSBhIF1dOyBlY2hvIDUgIiQ/Iicgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBbWyAiJEAiID0gYSBdXTsgZWNobyA2ICIkPyInIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAnSUZTPTsgY2FzZSAiJEAiIGluIGEpIGVjaG8gNyBhOzsgYWIpIGVjaG8gNyBiOzsgYVwgYikgZWNobyA3IG9rOzsgZXNhYycgc2ggYSBiCgkiJF9fcHJvZ25hbWUiIC1jICdJRlM9OyBjYXNlICQqIGluIGEpIGVjaG8gOCBhOzsgYWIpIGVjaG8gOCBvazs7IGVzYWMnIHNoIGEgYgoJIiRfX3Byb2duYW1lIiAtYyAncGZzcCgpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiPCRzX2FyZz4gIjsgZG9uZTsgcHJpbnQgLjsgfTsgSUZTPTsgc3Rhcj0kKiBhdD0iJEAiOyBwZnNwIDkgIiRzdGFyIiAiJGF0Iicgc2ggYSBiCmV4cGVjdGVkLXN0ZG91dDoKCTEgMAoJMiAwCgkzIDAKCTQgMQoJNSAxCgk2IDEKCTcgb2sKCTggb2sKCTw5PiA8YWI+IDxhIGI+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0xMApkZXNjcmlwdGlvbjoKCVNjYWxhciBjb250ZXh0IGluICR7dmFyPSRzdWJzdH0Kc3RkaW46CglzaG93YXJncygpIHsgZm9yIHNfYXJnIGluICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLjsgfQoJc2V0IC0tIG9uZSAidHdvIHRocmVlIiBmb3VyCgl1bnNldCAtdiB2YXIKCXNhdmVfSUZTPSRJRlMKCUlGUz0KCXNldCAtLSAke3Zhcj0kKn0KCUlGUz0kc2F2ZV9JRlMKCWVjaG8gInZhcj0kdmFyIgoJc2hvd2FyZ3MgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgl2YXI9b25ldHdvIHRocmVlZm91cgoJPG9uZXR3byB0aHJlZWZvdXI+IC4KLS0tCm5hbWU6IElGUy1zdWJzdC0xMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGxlYWRpbmcgbm9uLXdoaXRlc3BhY2UgYWZ0ZXIgdHJpbSBtYWtlcyBvbmx5IG9uZSBmaWVsZApzdGRpbjoKCXNob3dhcmdzKCkgeyBmb3Igc19hcmcgaW4gIiRAIjsgZG8gZWNobyAtbiAiPCRzX2FyZz4gIjsgZG9uZTsgZWNobyAuOyB9Cgl2PSJmb28hb25lIXR3byF0aHJlZSIKCUlGUz0iISIKCXNob3dhcmdzIHggJHt2OjN9IHkKZXhwZWN0ZWQtc3Rkb3V0OgoJPHg+IDw+IDxvbmU+IDx0d28+IDx0aHJlZT4gPHk+IC4KLS0tCm5hbWU6IElGUy1hcml0aC0xCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9ODMyCnN0ZGluOgoJJHtaU0hfVkVSU0lPTitmYWxzZX0gfHwgZW11bGF0ZSBzaAoJJHtCQVNIX1ZFUlNJT04rc2V0IC1vIHBvc2l4fQoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCUlGUz0wCglzaG93YXJncyAkKCgxMjMwNDU2KSkKZXhwZWN0ZWQtc3Rkb3V0OgoJPDEyMz4gPDQ1Nj4gLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWVyci0xCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgaGF2ZSAwIGJhc2UgKGNhdXNlcyBzaGVsbCB0byBleGl0KQpleHBlY3RlZC1leGl0OiBlICE9IDAKc3RkaW46Cgl0eXBlc2V0IC1pIGkKCWk9MwoJaT0wIzQKCWVjaG8gJGkKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvXi4qOi4qMCM0LipcbiQvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtZXJyLTIKZGVzY3JpcHRpb246CglDYW4ndCBoYXZlIG11bHRpcGxlIGJhc2VzIGluIGEgJ2NvbnN0YW50JyAoY2F1c2VzIHNoZWxsIHRvIGV4aXQpCgkoa3NoODggZmFpbHMgdGhpcyB0ZXN0KQpleHBlY3RlZC1leGl0OiBlICE9IDAKc3RkaW46Cgl0eXBlc2V0IC1pIGkKCWk9MwoJaT0yIzExMCMxMQoJZWNobyAkaQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eLio6LioyIzExMCMxMS4qXG4kLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLWVyci0zCmRlc2NyaXB0aW9uOgoJU3ludGF4IGVycm9ycyBpbiBleHByZXNzaW9ucyBhbmQgZWZmZWN0cyBvbiBiYXNlcwoJKGludGVyYWN0aXZlIHNvIGVycm9ycyBkb24ndCBjYXVzZSBleGl0cykKCShrc2g4OCBmYWlscyB0aGlzIHRlc3QgLSBzaGVsbCBleGl0cywgZXZlbiB3aXRoIC1pKQpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CglQUzE9ICMgbWluaW1pc2UgcHJvbXB0IGhhc3NsZXMKCXR5cGVzZXQgLWk0IGE9MTAKCXR5cGVzZXQgLWkgYT0yKwoJZWNobyAkYQoJdHlwZXNldCAtaTQgYT0xMAoJdHlwZXNldCAtaTIgYT0yKwoJZWNobyAkYQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9eKFsjXCRdICk/Lio6LioyKy4qXG4uKjouKjIrLipcbiQvCmV4cGVjdGVkLXN0ZG91dDoKCTQjMjIKCTQjMjIKLS0tCm5hbWU6IGludGVnZXItYmFzZS1lcnItNApkZXNjcmlwdGlvbjoKCUFyZSBpbnZhbGlkIGRpZ2l0cyAoYWNjb3JkaW5nIHRvIGJhc2UpIGVycm9ycz8KCShrc2g5MyBmYWlscyB0aGlzIHRlc3QpCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApzdGRpbjoKCXR5cGVzZXQgLWkgaTsKCWk9MyM0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL14oWyNcJF0gKT8uKjouKjMjNC4qXG4kLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLTEKZGVzY3JpcHRpb246CglNaXNzaW5nIG51bWJlciBhZnRlciBiYXNlIGlzIHRyZWF0ZWQgYXMgMC4Kc3RkaW46Cgl0eXBlc2V0IC1pIGkKCWk9MwoJaT0yIwoJZWNobyAkaQpleHBlY3RlZC1zdGRvdXQ6CgkwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtMgpkZXNjcmlwdGlvbjoKCUNoZWNrICdzdGlja3luZXNzJyBvZiBiYXNlIGluIHZhcmlvdXMgc2l0dWF0aW9ucwpzdGRpbjoKCXR5cGVzZXQgLWkgaT04CgllY2hvICRpCgllY2hvIC0tLS0tLS0tLS0gQQoJdHlwZXNldCAtaTQgaj04CgllY2hvICRqCgllY2hvIC0tLS0tLS0tLS0gQgoJdHlwZXNldCAtaSBrPTgKCXR5cGVzZXQgLWk0IGs9OAoJZWNobyAkawoJZWNobyAtLS0tLS0tLS0tIEMKCXR5cGVzZXQgLWk0IGwKCWw9MyMxMAoJZWNobyAkbAoJZWNobyAtLS0tLS0tLS0tIEQKCXR5cGVzZXQgLWkgbQoJbT0zIzEwCgllY2hvICRtCgllY2hvIC0tLS0tLS0tLS0gRQoJbj0yIzExCgl0eXBlc2V0IC1pIG4KCWVjaG8gJG4KCW49MTAKCWVjaG8gJG4KCWVjaG8gLS0tLS0tLS0tLSBGCgl0eXBlc2V0IC1pOCBvPTEyCgl0eXBlc2V0IC1pNCBvCgllY2hvICRvCgllY2hvIC0tLS0tLS0tLS0gRwoJdHlwZXNldCAtaSBwCglsZXQgcD04IzEyCgllY2hvICRwCmV4cGVjdGVkLXN0ZG91dDoKCTgKCS0tLS0tLS0tLS0gQQoJNCMyMAoJLS0tLS0tLS0tLSBCCgk0IzIwCgktLS0tLS0tLS0tIEMKCTQjMwoJLS0tLS0tLS0tLSBECgkzIzEwCgktLS0tLS0tLS0tIEUKCTIjMTEKCTIjMTAxMAoJLS0tLS0tLS0tLSBGCgk0IzMwCgktLS0tLS0tLS0tIEcKCTgjMTIKLS0tCm5hbWU6IGludGVnZXItYmFzZS0zCmRlc2NyaXB0aW9uOgoJTW9yZSBiYXNlIHBhcnNpbmcgKGhtbSBkb2Vzbid0IHRlc3QgbXVjaC4uKQpzdGRpbjoKCXR5cGVzZXQgLWkgYWEKCWFhPTErMTIjMTArMgoJZWNobyAkYWEKCXR5cGVzZXQgLWkgYmIKCWJiPTErJGFhCgllY2hvICRiYgoJdHlwZXNldCAtaSBiYgoJYmI9JGFhCgllY2hvICRiYgoJdHlwZXNldCAtaSBjYwoJY2M9JGFhCgllY2hvICRjYwpleHBlY3RlZC1zdGRvdXQ6CgkxNQoJMTYKCTE1CgkxNQotLS0KbmFtZTogaW50ZWdlci1iYXNlLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoaW5ncyBub3QgZGVjbGFyZWQgYXMgaW50ZWdlcnMgYXJlIG5vdCBtYWRlIGludGVnZXJzLAoJYWxzbywgY2hlY2sgaWYgYmFzZSBpcyBub3QgcmVzZXQgYnkgLWkgd2l0aCBubyBhcmd1bWVudHMuCgkoa3NoOTMgZmFpbHMgLSBwcmludHMgMTAjMjAgLSBnbyBmaWd1cmUpCnN0ZGluOgoJeHg9MjAKCWxldCB4eD0xMAoJdHlwZXNldCAtaSB8IGdyZXAgJ154eD0nCgl0eXBlc2V0IC1pNCBhPTEwCgl0eXBlc2V0IC1pIGE9MjAKCWVjaG8gJGEKZXhwZWN0ZWQtc3Rkb3V0OgoJNCMxMTAKLS0tCm5hbWU6IGludGVnZXItYmFzZS01CmRlc2NyaXB0aW9uOgoJTW9yZSBiYXNlIHN0dWZmCnN0ZGluOgoJdHlwZXNldCAtaTQgYT0zIzEwCgllY2hvICRhCgllY2hvIC0tCgl0eXBlc2V0IC1pIGo9MwoJaj0nfjMnCgllY2hvICRqCgllY2hvIC0tCgl0eXBlc2V0IC1pIGs9MQoJeFtrPWsrMV09MwoJZWNobyAkawoJZWNobyAtLQoJdHlwZXNldCAtaSBsCglmb3IgbCBpbiAxIDIrMyA0OyBkbyBlY2hvICRsOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTQjMwoJLS0KCS00CgktLQoJMgoJLS0KCTEKCTUKCTQKLS0tCm5hbWU6IGludGVnZXItYmFzZS02CmRlc2NyaXB0aW9uOgoJRXZlbiBtb3JlIGJhc2Ugc3R1ZmYKCShrc2g5MyBmYWlscyB0aGlzIHRlc3QgLSBwcmludHMgMCkKc3RkaW46Cgl0eXBlc2V0IC1pNyBpCglpPQoJZWNobyAkaQpleHBlY3RlZC1zdGRvdXQ6Cgk3IzAKLS0tCm5hbWU6IGludGVnZXItYmFzZS03CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBub24taW50ZWdlciBwYXJhbWV0ZXJzIGRvbid0IGdldCBiYXNlcyBhc3NpZ25lZApzdGRpbjoKCWVjaG8gJCgoIHp6ID0gOCMxMDAgKSkKCWVjaG8gJHp6CmV4cGVjdGVkLXN0ZG91dDoKCTY0Cgk2NAotLS0KbmFtZTogaW50ZWdlci1iYXNlLTgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGJhc2UtMzYgd29ya3MgKGZ1bGwgc3BhbikKc3RkaW46CgllY2hvIDE6JCgoMzYjMTA5QVopKS4KCXR5cGVzZXQgLWkzNiB4PTE2OTE2NzUKCWVjaG8gMjokeC4KCXR5cGVzZXQgLVV1aTM2IHgKCWVjaG8gMzokeC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMToxNjkxNjc1LgoJMjozNiMxMDlhei4KCTM6MzYjMTA5QVouCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtY2hlY2stZmxhdApkZXNjcmlwdGlvbjoKCUNoZWNrIGJlaGF2aW91ciBkb2VzIG5vdCBtYXRjaCBQT1N1WCAoZXhjZXB0IGlmIHNldCAtbyBwb3NpeCksCgliZWNhdXNlIGEgbm90IHR5cGUtc2FmZSBzY3JpcHRpbmcgbGFuZ3VhZ2UgaGFzICpubyogYnVzaW5lc3MKCWludGVycHJldGluZyB0aGUgc3RyaW5nICIwMTAiIGFzIG9jdGFsIG51bWJlciBlaWdodCAoZGFuZ2Vyb3VzKS4Kc3RkaW46CgllY2hvIDEgIiQoIiRfX3Byb2duYW1lIiAtYyAnZWNobyA6JCgoMTApKS8kKCgwMTApKSwkKCgweDEwKSk6JykiIC4KCWVjaG8gMiAiJCgiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIDokKCgxMCkpLyQoKDAxMCkpLCQoKDB4MTApKTonKSIgLgoJZWNobyAzICIkKCIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gOiQoKDEwKSkvJCgoMDEwKSksJCgoMHgxMCkpOicpIiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgOjEwLzEwLDE2OiAuCgkyIDoxMC84LDE2OiAuCgkzIDoxMC8xMCwxNjogLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLW51bWVyaWMtZnJvbS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIG9uZQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46CgllY2hvIDE6JCgoMSMxKSkwLgpleHBlY3RlZC1zdGRvdXQ6CgkxOjQ5MC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLWZyb20tMS1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayBiZWhhdmlvdXIgZm9yIGJhc2Ugb25lCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJZWNobyAxOiQoKDEjMSkpMC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMToyNDEwLgotLS0KbmFtZTogaW50ZWdlci1iYXNlLWNoZWNrLW51bWVyaWMtZnJvbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIHR3byB0byAzNiwgYW5kIHRoYXQgMzcgZGVncmFkZXMgdG8gMTAKc3RkaW46CglpPTEKCXdoaWxlICgoICsraSA8PSAzNyApKTsgZG8KCQlldmFsICdlY2hvICckaSc6JCgoJyRpJyMxMCkpLicKCWRvbmUKCWVjaG8gMzc6JCgkX19wcm9nbmFtZSAtYyAnZWNobyAkKCgzNyMxMCkpJykuJD86CmV4cGVjdGVkLXN0ZG91dDoKCTI6Mi4KCTM6My4KCTQ6NC4KCTU6NS4KCTY6Ni4KCTc6Ny4KCTg6OC4KCTk6OS4KCTEwOjEwLgoJMTE6MTEuCgkxMjoxMi4KCTEzOjEzLgoJMTQ6MTQuCgkxNToxNS4KCTE2OjE2LgoJMTc6MTcuCgkxODoxOC4KCTE5OjE5LgoJMjA6MjAuCgkyMToyMS4KCTIyOjIyLgoJMjM6MjMuCgkyNDoyNC4KCTI1OjI1LgoJMjY6MjYuCgkyNzoyNy4KCTI4OjI4LgoJMjk6MjkuCgkzMDozMC4KCTMxOjMxLgoJMzI6MzIuCgkzMzozMy4KCTM0OjM0LgoJMzU6MzUuCgkzNjozNi4KCTM3OjEwLgoJMzc6MTAuMDoKLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLXRvLTEKZGVzY3JpcHRpb246CglDaGVjayBiZWhhdmlvdXIgZm9yIGJhc2Ugb25lCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCWk9MQoJdHlwZXNldCAtVXVpJGkgeD0weDQwCglldmFsICJ0eXBlc2V0IC1pMTAgeT0keCIKCXByaW50ICRpOiR4LiR5LgpleHBlY3RlZC1zdGRvdXQ6CgkxOjEjQC42NC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1jaGVjay1udW1lcmljLXRvLTEtZWJjZGljCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIG9uZQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCWk9MQoJdHlwZXNldCAtVXVpJGkgeD0weDdDCglldmFsICJ0eXBlc2V0IC1pMTAgeT0keCIKCXByaW50ICRpOiR4LiR5LgpleHBlY3RlZC1zdGRvdXQ6CgkxOjEjQC4xMjQuCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2UtY2hlY2stbnVtZXJpYy10by0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmVoYXZpb3VyIGZvciBiYXNlIHR3byB0byAzNiwgYW5kIHRoYXQgMzcgZGVncmFkZXMgdG8gMTAKc3RkaW46CglpPTEKCXdoaWxlICgoICsraSA8PSAzNyApKTsgZG8KCQl0eXBlc2V0IC1VdWkkaSB4PTB4NDAKCQlldmFsICJ0eXBlc2V0IC1pMTAgeT0keCIKCQlwcmludCAkaTokeC4keS4KCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMjoyIzEwMDAwMDAuNjQuCgkzOjMjMjEwMS42NC4KCTQ6NCMxMDAwLjY0LgoJNTo1IzIyNC42NC4KCTY6NiMxNDQuNjQuCgk3OjcjMTIxLjY0LgoJODo4IzEwMC42NC4KCTk6OSM3MS42NC4KCTEwOjY0LjY0LgoJMTE6MTEjNTkuNjQuCgkxMjoxMiM1NC42NC4KCTEzOjEzIzRDLjY0LgoJMTQ6MTQjNDguNjQuCgkxNToxNSM0NC42NC4KCTE2OjE2IzQwLjY0LgoJMTc6MTcjM0QuNjQuCgkxODoxOCMzQS42NC4KCTE5OjE5IzM3LjY0LgoJMjA6MjAjMzQuNjQuCgkyMToyMSMzMS42NC4KCTIyOjIyIzJLLjY0LgoJMjM6MjMjMkkuNjQuCgkyNDoyNCMyRy42NC4KCTI1OjI1IzJFLjY0LgoJMjY6MjYjMkMuNjQuCgkyNzoyNyMyQS42NC4KCTI4OjI4IzI4LjY0LgoJMjk6MjkjMjYuNjQuCgkzMDozMCMyNC42NC4KCTMxOjMxIzIyLjY0LgoJMzI6MzIjMjAuNjQuCgkzMzozMyMxVi42NC4KCTM0OjM0IzFVLjY0LgoJMzU6MzUjMVQuNjQuCgkzNjozNiMxUy42NC4KCTM3OjY0LjY0LgotLS0KbmFtZTogaW50ZWdlci1hcml0aG1ldGljLXNwYW4KZGVzY3JpcHRpb246CglDaGVjayB3cmFwYXJvdW5kIGFuZCBzaXplIHRoYXQgaXMgZGVmaW5lZCBpbiBta3NoCmNhdGVnb3J5OiBpbnQ6MzIKc3RkaW46CgllY2hvIHM6JCgoMjE0NzQ4MzY0NysxKSkuJCgoKDIxNDc0ODM2NDcqMikrMSkpLiQoKCgyMTQ3NDgzNjQ3KjIpKzIpKS4KCWVjaG8gdTokKCgjMjE0NzQ4MzY0NysxKSkuJCgoIygyMTQ3NDgzNjQ3KjIpKzEpKS4kKCgjKDIxNDc0ODM2NDcqMikrMikpLgpleHBlY3RlZC1zdGRvdXQ6CglzOi0yMTQ3NDgzNjQ4Li0xLjAuCgl1OjIxNDc0ODM2NDguNDI5NDk2NzI5NS4wLgotLS0KbmFtZTogaW50ZWdlci1hcml0aG1ldGljLXNwYW4tNjQKZGVzY3JpcHRpb246CglDaGVjayB3cmFwYXJvdW5kIGFuZCBzaXplIHRoYXQgaXMgZGVmaW5lZCBpbiBta3NoCmNhdGVnb3J5OiBpbnQ6NjQKc3RkaW46CgllY2hvIHM6JCgoOTIyMzM3MjAzNjg1NDc3NTgwNysxKSkuJCgoKDkyMjMzNzIwMzY4NTQ3NzU4MDcqMikrMSkpLiQoKCg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzIpKS4KCWVjaG8gdTokKCgjOTIyMzM3MjAzNjg1NDc3NTgwNysxKSkuJCgoIyg5MjIzMzcyMDM2ODU0Nzc1ODA3KjIpKzEpKS4kKCgjKDkyMjMzNzIwMzY4NTQ3NzU4MDcqMikrMikpLgpleHBlY3RlZC1zdGRvdXQ6CglzOi05MjIzMzcyMDM2ODU0Nzc1ODA4Li0xLjAuCgl1OjkyMjMzNzIwMzY4NTQ3NzU4MDguMTg0NDY3NDQwNzM3MDk1NTE2MTUuMC4KLS0tCm5hbWU6IGludGVnZXItc2l6ZS1GQUlMLXRvLWRldGVjdApkZXNjcmlwdGlvbjoKCU5vdGlmeSB0aGUgdXNlciB0aGF0IHRoZWlyIGludHMgYXJlIG5vdCAzMiBvciA2NCBiaXQKY2F0ZWdvcnk6IGludDp1CnN0ZGluOgoJOgotLS0KbmFtZTogbGluZW5vLXN0ZGluCmRlc2NyaXB0aW9uOgoJU2VlIGlmICRMSU5FTk8gaXMgdXBkYXRlZCBhbmQgY2FuIGJlIG1vZGlmaWVkLgpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJTElORU5PPTIwCgllY2hvIEMgJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJQyAyMAotLS0KbmFtZTogbGluZW5vLWluYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiAkTElORU5PIGlzIHNldCBmb3IgLidkIGZpbGVzLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCglMSU5FTk89MjAKCWVjaG8gZG90IEMgJExJTkVOTwpzdGRpbjoKCWVjaG8gQSAkTElORU5PCgllY2hvIEIgJExJTkVOTwoJLiAuL2RvdGZpbGUKZXhwZWN0ZWQtc3Rkb3V0OgoJQSAxCglCIDIKCWRvdCBBIDEKCWRvdCBCIDIKCWRvdCBDIDIwCi0tLQpuYW1lOiBsaW5lbm8tZnVuYwpkZXNjcmlwdGlvbjoKCVNlZSBpZiAkTElORU5PIGlzIHNldCBmb3IgY29tbWFuZHMgaW4gYSBmdW5jdGlvbi4Kc3RkaW46CgllY2hvIEEgJExJTkVOTwoJZWNobyBCICRMSU5FTk8KCWJhcigpIHsKCSAgICBlY2hvIGZ1bmMgQSAkTElORU5PCgkgICAgZWNobyBmdW5jIEIgJExJTkVOTwoJfQoJYmFyCgllY2hvIEMgJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CglBIDEKCUIgMgoJZnVuYyBBIDQKCWZ1bmMgQiA1CglDIDgKLS0tCm5hbWU6IGxpbmVuby11bnNldApkZXNjcmlwdGlvbjoKCVNlZSBpZiB1bnNldHRpbmcgTElORU5PIG1ha2VzIGl0IG5vbi1tYWdpYy4KZmlsZS1zZXR1cDogZmlsZSA2NDQgImRvdGZpbGUiCgllY2hvIGRvdCBBICRMSU5FTk8KCWVjaG8gZG90IEIgJExJTkVOTwpzdGRpbjoKCXVuc2V0IExJTkVOTwoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgliYXIoKSB7CgkgICAgZWNobyBmdW5jIEEgJExJTkVOTwoJICAgIGVjaG8gZnVuYyBCICRMSU5FTk8KCX0KCWJhcgoJLiAuL2RvdGZpbGUKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEKCUIKCWZ1bmMgQQoJZnVuYyBCCglkb3QgQQoJZG90IEIKCUMKLS0tCm5hbWU6IGxpbmVuby11bnNldC11c2UKZGVzY3JpcHRpb246CglTZWUgaWYgdW5zZXR0aW5nIExJTkVOTyBtYWtlcyBpdCBub24tbWFnaWMgZXZlbgoJd2hlbiBpdCBpcyByZS11c2VkLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAiZG90ZmlsZSIKCWVjaG8gZG90IEEgJExJTkVOTwoJZWNobyBkb3QgQiAkTElORU5PCnN0ZGluOgoJdW5zZXQgTElORU5PCglMSU5FTk89MwoJZWNobyBBICRMSU5FTk8KCWVjaG8gQiAkTElORU5PCgliYXIoKSB7CgkgICAgZWNobyBmdW5jIEEgJExJTkVOTwoJICAgIGVjaG8gZnVuYyBCICRMSU5FTk8KCX0KCWJhcgoJLiAuL2RvdGZpbGUKCWVjaG8gQyAkTElORU5PCmV4cGVjdGVkLXN0ZG91dDoKCUEgMwoJQiAzCglmdW5jIEEgMwoJZnVuYyBCIDMKCWRvdCBBIDMKCWRvdCBCIDMKCUMgMwotLS0KbmFtZTogbGluZW5vLXRyYXAKZGVzY3JpcHRpb246CglDaGVjayBpZiBMSU5FTk8gaXMgdHJhY2tlZCBpbiB0cmFwcwpzdGRpbjoKCWZhaWwoKSB7CgkJZWNobyAibGluZSA8JDE+IgoJCWV4aXQgMQoJfQoJdHJhcCAnZmFpbCAkTElORU5PJyBJTlQgRVJSCglmYWxzZQpleHBlY3RlZC1zdGRvdXQ6CglsaW5lIDw2PgpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiBsaW5lbm8tZXZhbC1hbGlhcwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIExJTkVOTyBpcyB0cmFwcGVkIGluIGV2YWwgYW5kIGFsaWFzZXMKc3RkaW46Cgkke1pTSF9WRVJTSU9OK2ZhbHNlfSB8fCBlbXVsYXRlIHNoOyBlY2hvICRMSU5FTk8KCWVjaG8gJExJTkVOTwoJZXZhbCAnCWVjaG8gJExJTkVOTwoJCWVjaG8gJExJTkVOTwoJCWVjaG8gJExJTkVOTycKCWVjaG8gJExJTkVOTwpleHBlY3RlZC1zdGRvdXQ6CgkxCgkyCgkzCgkzCgkzCgk2Ci0tLQpuYW1lOiB1bmtub3duLXRyYXAKZGVzY3JpcHRpb246CglFbnN1cmUgdW5rbm93biB0cmFwcyBhcmUgbm90IGEgc3ludGF4IGVycm9yCnN0ZGluOgoJKAoJdHJhcCAiZWNobyB0cmFwIDEgZXhlY3V0ZWQiIFVOS05PV05TSUdOQUwgfHwgZWNobyAiZm9vIgoJZWNobyA9MQoJdHJhcCAiZWNobyB0cmFwIDIgZXhlY3V0ZWQiIFVOS05PV05TSUdOQUwgRVhJVCA5OTk5OTkgRk5PUkQKCWVjaG8gPSAkPwoJKSAyPiYxIHwgc2VkICJzAV4ke19fcHJvZ25hbWUlLmV4ZX1cLiplKngqZSo6IDxzdGRpbj5cW1swLTldKl0BUFJPRwEiCmV4cGVjdGVkLXN0ZG91dDoKCVBST0c6IHRyYXA6IGJhZCBzaWduYWwgJ1VOS05PV05TSUdOQUwnCglmb28KCT0xCglQUk9HOiB0cmFwOiBiYWQgc2lnbmFsICdVTktOT1dOU0lHTkFMJwoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnOTk5OTk5JwoJUFJPRzogdHJhcDogYmFkIHNpZ25hbCAnRk5PUkQnCgk9IDEKCXRyYXAgMiBleGVjdXRlZAotLS0KbmFtZTogcmVhZC1JRlMtMQpkZXNjcmlwdGlvbjoKCVNpbXBsZSB0ZXN0LCBkZWZhdWx0IElGUwpzdGRpbjoKCWVjaG8gIkEgQiAiID4gSU4KCXVuc2V0IHggeSB6CglyZWFkIHggeSB6IDwgSU4KCWVjaG8gMTogInhbJHhdIHlbJHldIHpbJHpdIgoJZWNobyAxYTogJHt6LXogbm90IHNldH0KCXJlYWQgeCA8IElOCgllY2hvIDI6ICJ4WyR4XSIKZXhwZWN0ZWQtc3Rkb3V0OgoJMTogeFtBXSB5W0JdIHpbXQoJMWE6CgkyOiB4W0EgQl0KLS0tCm5hbWU6IHJlYWQtSUZTLTIKZGVzY3JpcHRpb246CglDb21wbGV4IHRlc3RzLCBJRlMgZWl0aGVyIGNvbG9uIChJRlMtTldTKSBvciBiYWNrc2xhc2ggKHRyaWNreSkKc3RkaW46CgluPTAKCXNob3dhcmdzKCkgeyBwcmludCAtbnIgIiQxIjsgc2hpZnQ7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBwcmludCAtbnIgLS0gIiBbJHNfYXJnXSI7IGRvbmU7IHByaW50OyB9CgkoSUZTPVxcIGE9XDxcXFw+OyBzaG93YXJncyAzICRhKQoJKElGUz06IGI9XDw6XD47IHNob3dhcmdzIDQgJGIpCglwcmludCAtciAnPFw+JyB8IChJRlM9XFwgcmVhZCBmIGc7IHNob3dhcmdzIDUgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcXD4nIHwgKElGUz1cXCByZWFkIGYgZzsgc2hvd2FyZ3MgNiAiJGYiICIkZyIpCglwcmludCAnPFxcXG4+JyB8IChJRlM9XFwgcmVhZCBmIGc7IHNob3dhcmdzIDcgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcPicgfCAoSUZTPVxcIHJlYWQgZjsgc2hvd2FyZ3MgOCAiJGYiKQoJcHJpbnQgLXIgJzxcXD4nIHwgKElGUz1cXCByZWFkIGY7IHNob3dhcmdzIDkgIiRmIikKCXByaW50ICc8XFxcbj4nIHwgKElGUz1cXCByZWFkIGY7IHNob3dhcmdzIDEwICIkZiIpCglwcmludCAtciAnPFw+JyB8IChJRlM9XFwgcmVhZCAtciBmIGc7IHNob3dhcmdzIDExICIkZiIgIiRnIikKCXByaW50IC1yICc8XFw+JyB8IChJRlM9XFwgcmVhZCAtciBmIGc7IHNob3dhcmdzIDEyICIkZiIgIiRnIikKCXByaW50ICc8XFxcbj4nIHwgKElGUz1cXCByZWFkIC1yIGYgZzsgc2hvd2FyZ3MgMTMgIiRmIiAiJGciKQoJcHJpbnQgLXIgJzxcPicgfCAoSUZTPVxcIHJlYWQgLXIgZjsgc2hvd2FyZ3MgMTQgIiRmIikKCXByaW50IC1yICc8XFw+JyB8IChJRlM9XFwgcmVhZCAtciBmOyBzaG93YXJncyAxNSAiJGYiKQoJcHJpbnQgJzxcXFxuPicgfCAoSUZTPVxcIHJlYWQgLXIgZjsgc2hvd2FyZ3MgMTYgIiRmIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgZiBnOyBzaG93YXJncyAxNyAiJGYiICIkZyIpCglwcmludCAtciAnPDo6PicgfCAoSUZTPTogcmVhZCBmIGc7IHNob3dhcmdzIDE4ICIkZiIgIiRnIikKCXByaW50ICc8OlxuPicgfCAoSUZTPTogcmVhZCBmIGc7IHNob3dhcmdzIDE5ICIkZiIgIiRnIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgZjsgc2hvd2FyZ3MgMjAgIiRmIikKCXByaW50IC1yICc8Ojo+JyB8IChJRlM9OiByZWFkIGY7IHNob3dhcmdzIDIxICIkZiIpCglwcmludCAnPDpcbj4nIHwgKElGUz06IHJlYWQgZjsgc2hvd2FyZ3MgMjIgIiRmIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgLXIgZiBnOyBzaG93YXJncyAyMyAiJGYiICIkZyIpCglwcmludCAtciAnPDo6PicgfCAoSUZTPTogcmVhZCAtciBmIGc7IHNob3dhcmdzIDI0ICIkZiIgIiRnIikKCXByaW50ICc8OlxuPicgfCAoSUZTPTogcmVhZCAtciBmIGc7IHNob3dhcmdzIDI1ICIkZiIgIiRnIikKCXByaW50IC1yICc8Oj4nIHwgKElGUz06IHJlYWQgLXIgZjsgc2hvd2FyZ3MgMjYgIiRmIikKCXByaW50IC1yICc8Ojo+JyB8IChJRlM9OiByZWFkIC1yIGY7IHNob3dhcmdzIDI3ICIkZiIpCglwcmludCAnPDpcbj4nIHwgKElGUz06IHJlYWQgLXIgZjsgc2hvd2FyZ3MgMjggIiRmIikKZXhwZWN0ZWQtc3Rkb3V0OgoJMyBbPF0gWz5dCgk0IFs8XSBbPl0KCTUgWzxdIFs+XQoJNiBbPF0gWz5dCgk3IFs8Pl0gW10KCTggWzw+XQoJOSBbPFw+XQoJMTAgWzw+XQoJMTEgWzxdIFs+XQoJMTIgWzxdIFtcPl0KCTEzIFs8XSBbXQoJMTQgWzxcPl0KCTE1IFs8XFw+XQoJMTYgWzxdCgkxNyBbPF0gWz5dCgkxOCBbPF0gWzo+XQoJMTkgWzxdIFtdCgkyMCBbPDo+XQoJMjEgWzw6Oj5dCgkyMiBbPF0KCTIzIFs8XSBbPl0KCTI0IFs8XSBbOj5dCgkyNSBbPF0gW10KCTI2IFs8Oj5dCgkyNyBbPDo6Pl0KCTI4IFs8XQotLS0KbmFtZTogcmVhZC1rc2gtMQpkZXNjcmlwdGlvbjoKCUlmIG5vIHZhciBzcGVjaWZpZWQsIFJFUExZIGlzIHVzZWQKc3RkaW46CgllY2hvICJhYmMiID4gSU4KCXJlYWQgPCBJTgoJZWNobyAiWyRSRVBMWV0iOwpleHBlY3RlZC1zdGRvdXQ6CglbYWJjXQotLS0KbmFtZTogcmVhZC1yZWdyZXNzLTEKZGVzY3JpcHRpb246CglDaGVjayBhIHJlZ3Jlc3Npb24gb2YgcmVhZApmaWxlLXNldHVwOiBmaWxlIDY0NCAiZm9vIgoJZm9vIGJhcgoJYmF6CglibGFoCnN0ZGluOgoJd2hpbGUgcmVhZCBhIGIgYzsgZG8KCQlyZWFkIGQKCQlicmVhawoJZG9uZSA8Zm9vCgllY2hvICI8JGF8JGJ8JGM+PCRkPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvb3xiYXJ8PjxiYXo+Ci0tLQpuYW1lOiByZWFkLWRlbGltLTEKZGVzY3JpcHRpb246CglDaGVjayByZWFkIHdpdGggZGVsaW1pdGVycwpzdGRpbjoKCWVtaXQoKSB7CgkJcHJpbnQgLW4gJ2ZvbyBiYXJcdGJhelxuYmxhaCBcMGJsdWJcdGJsZWNoXG5teW9rIG1lY2sgXDAnCgl9CgllbWl0IHwgd2hpbGUgSUZTPSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICIiIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKCWVtaXQgfCB3aGlsZSByZWFkIC1kICJlaD8iIGZvbzsgZG8gcHJpbnQgLXIgLS0gIjwkZm9vPiI7IGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJPGZvbyBiYXIJYmF6CglibGFoID4KCTxibHViCWJsZWNoCglteW9rIG1lY2sgPgoJPGZvbyBiYXIJYmF6CglibGFoPgoJPGJsdWIJYmxlY2gKCW15b2sgbWVjaz4KCTxmb28gYmFyCWJhegoJYmxhaCBibHViCWJsPgoJPGNoCglteW9rIG0+Ci0tLQpuYW1lOiByZWFkLWV4dC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZCB3aXRoIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQsIGFuZCAtQQpzdGRpbjoKCXByaW50ICdmb29cbmJhcicgPngxCglwcmludCAtbiB4ID54MgoJcHJpbnQgJ2Zvb1xcIGJhciBiYXonID54MwoJeDFhPXU7IHJlYWQgeDFhIDx4MQoJeDFiPXU7IHJlYWQgLU4tMSB4MWIgPHgxCgl4MmE9dTsgcmVhZCB4MmEgPHgyOyByMmE9JD8KCXgyYj11OyByZWFkIC1OMiB4MmMgPHgyOyByMmI9JD8KCXgyYz11OyByZWFkIC1uMiB4MmMgPHgyOyByMmM9JD8KCXgzYT11OyByZWFkIC1BIHgzYSA8eDMKCXByaW50IC1yICJ4MWE9PCR4MWE+IgoJcHJpbnQgLXIgIngxYj08JHgxYj4iCglwcmludCAtciAieDJhPSRyMmE8JHgyYT4iCglwcmludCAtciAieDJiPSRyMmI8JHgyYj4iCglwcmludCAtciAieDJjPSRyMmM8JHgyYz4iCglwcmludCAtciAieDNhPTwke3gzYVswXX18JHt4M2FbMV19fCR7eDNhWzJdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCXgxYT08Zm9vPgoJeDFiPTxmb28KCWJhcj4KCXgyYT0xPHg+Cgl4MmI9MTx1PgoJeDJjPTA8eD4KCXgzYT08Zm9vIGJhcnxiYXp8PgotLS0KbmFtZTogcmVncmVzc2lvbi0xCmRlc2NyaXB0aW9uOgoJTGV4IGFycmF5IGNvZGUgaGFkIHByb2JsZW1zIHdpdGggdGhpcy4Kc3RkaW46CgllY2hvIGZvb1sKCW49YmFyCgllY2hvICJoaVsgJG4gXT0xIgpleHBlY3RlZC1zdGRvdXQ6Cglmb29bCgloaVsgYmFyIF09MQotLS0KbmFtZTogcmVncmVzc2lvbi0yCmRlc2NyaXB0aW9uOgoJV2hlbiBQQVRIIGlzIHNldCBiZWZvcmUgcnVubmluZyBhIGNvbW1hbmQsIHRoZSBuZXcgcGF0aCBpcwoJbm90IHVzZWQgaW4gZG9pbmcgdGhlIHBhdGggc2VhcmNoCgkJJCBlY2hvIGVjaG8gaGkgPiAvdG1wL3EgOyBjaG1vZCBhK3J4IC90bXAvcQoJCSQgUEFUSD0vdG1wIHEKCQlxOiBub3QgZm91bmQKCQkkCglpbiBjb21leGVjKCkgdGhlIHR3byBsaW5lcwoJCXdoaWxlICgqdnAgIT0gTlVMTCkKCQkJKHZvaWQpIHR5cGVzZXQoKnZwKyssIHh4eCwgMCk7CgluZWVkIHRvIGJlIG1vdmVkIG91dCBvZiB0aGUgc3dpdGNoIHRvIGJlZm9yZSBmaW5kY29tKCkgaXMKCWNhbGxlZCAtIEkgZG9uJ3Qga25vdyB3aGF0IHRoaXMgd2lsbCBicmVhay4Kc3RkaW46Cgk6ICIke1BXRDotYHB3ZCAyPiAvZGV2L251bGxgfSIKCTogIiR7UFdEOj8iUFdEIG5vdCBzZXQgLSBjYW5ub3QgZG8gdGVzdCJ9IgoJbWtkaXIgWQoJY2F0ID4gWS94eHhzY3JpcHQgPDwgRU9GCgkjIS9iaW4vc2gKCSMgTmVlZCB0byByZXN0b3JlIHBhdGggc28gZWNobyBjYW4gYmUgZm91bmQgKHNvbWUgc2hlbGxzIGRvbid0IGhhdmUKCSMgaXQgYXMgYSBidWlsdC1pbikKCVBBVEg9XCRPTERQQVRICgllY2hvIGhpCglleGl0IDAKCUVPRgoJY2htb2QgYStyeCBZL3h4eHNjcmlwdAoJZXhwb3J0IE9MRFBBVEg9IiRQQVRIIgoJUEFUSD0kUFdEL1kgeHh4c2NyaXB0CglleGl0ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYKZGVzY3JpcHRpb246CglQYXJzaW5nIG9mICQoLi4pIGV4cHJlc3Npb25zIGlzIG5vbi1vcHRpbWFsLiAgSXQgaXMKCWltcG9zc2libGUgdG8gaGF2ZSBhbnkgcGFyZW50aGVzZXMgaW5zaWRlIHRoZSBleHByZXNzaW9uLgoJSS5lLiwKCQkkIGtzaCAtYyAnZWNobyAkKGVjaG8gXCggKScKCQlubyBjbG9zaW5nIHF1b3RlCgkJJCBrc2ggLWMgJ2VjaG8gJChlY2hvICIoIiApJwoJCW5vIGNsb3NpbmcgcXVvdGUKCQkkCglUaGUgc29sdXRpb24gaXMgdG8gaGFjayB0aGUgcGFyc2luZyBjbG9kZSBpbiBsZXguYywgdGhlCglxdWVzdGlvbiBpcyBob3cgdG8gaGFjayBpdDogc2hvdWxkIGFueSBwYXJlbnRoZXNlcyBiZQoJZXNjYXBlZCBieSBhIGJhY2tzbGFzaCwgb3Igc2hvdWxkIHJlY3Vyc2l2ZSBwYXJzaW5nIGJlIGRvbmUKCShzbyBxdW90ZXMgY291bGQgYWxzbyBiZSB1c2VkIHRvIGhpZGUgaGVtKS4gIFRoZSBmb3JtZXIgaXMKCWVhc2llciwgdGhlIGxhdGVyIGJldHRlci4uLgpzdGRpbjoKCWVjaG8gJChlY2hvIFwoICkKCWVjaG8gJChlY2hvICIoIiApCmV4cGVjdGVkLXN0ZG91dDoKCSgKCSgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tOQpkZXNjcmlwdGlvbjoKCUNvbnRpbnVlIGluIGEgZm9yIGxvb3AgZG9lcyBub3Qgd29yayByaWdodDoKCQlmb3IgaSBpbiBhIGIgYyA7IGRvCgkJCWlmIFsgJGkgPSBiIF0gOyB0aGVuCgkJCQljb250aW51ZQoJCQlmaQoJCQllY2hvICRpCgkJZG9uZQoJUHJpbnRzIGEgZm9yZXZlci4uLgpzdGRpbjoKCWZpcnN0PXllcwoJZm9yIGkgaW4gYSBiIGMgOyBkbwoJCWlmIFsgJGkgPSBiIF0gOyB0aGVuCgkJCWlmIFsgJGZpcnN0ID0gbm8gXSA7IHRoZW4KCQkJCWVjaG8gJ2NvbnRpbnVlIGluIGZvciBsb29wIGJyb2tlbicKCQkJCWJyZWFrCSMgaG9wZSBicmVhayBpc24ndCBicm9rZW4gdG9vIDotKQoJCQlmaQoJCQlmaXJzdD1ubwoJCQljb250aW51ZQoJCWZpCglkb25lCgllY2hvIGJ5ZQpleHBlY3RlZC1zdGRvdXQ6CglieWUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTAKZGVzY3JpcHRpb246CglUaGUgZm9sbG93aW5nOgoJCXNldCAtLSBgZmFsc2VgCgkJZWNobyAkPwoJc2hvdWxkIHByaW50IDAgYWNjb3JkaW5nIHRvIFBPU0lYIChkYXNoLCBiYXNoLCBrc2g5MywgcG9zaCkKCWJ1dCBub3QgMCBhY2NvcmRpbmcgdG8gdGhlIGdldG9wdCgxKSBtYW51YWwgcGFnZSwga3NoODgsIGFuZAoJQm91cm5lIHNoIChzdWNoIGFzIC9iaW4vc2ggb24gU29sYXJpcykuCglXZSBob25vdXIgUE9TSVggZXhjZXB0IHdoZW4gLW8gc2ggaXMgc2V0LgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LW5vCnN0ZGluOgoJc2hvd2YoKSB7CgkJW1sgLW8gcG9zaXggXV07IEZQT1NJWD0kKCgxLSQ/KSkKCQlbWyAtbyBzaCBdXTsgRlNIPSQoKDEtJD8pKQoJCWVjaG8gLW4gIkZQT1NJWD0kRlBPU0lYIEZTSD0kRlNIICIKCX0KCXNldCArbyBwb3NpeCArbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHBvc2l4CglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KCXNldCAtbyBwb3NpeCAtbyBzaAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CmV4cGVjdGVkLXN0ZG91dDoKCUZQT1NJWD0wIEZTSD0wIHJ2PTAKCUZQT1NJWD0wIEZTSD0xIHJ2PTEKCUZQT1NJWD0xIEZTSD0wIHJ2PTAKCUZQT1NJWD0xIEZTSD0xIHJ2PTAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTAtbGVnYWN5CmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQlzZXQgLS0gYGZhbHNlYAoJCWVjaG8gJD8KCXNob3VsZCBwcmludCAwIGFjY29yZGluZyB0byBQT1NJWCAoZGFzaCwgYmFzaCwga3NoOTMsIHBvc2gpCglidXQgbm90IDAgYWNjb3JkaW5nIHRvIHRoZSBnZXRvcHQoMSkgbWFudWFsIHBhZ2UsIGtzaDg4LCBhbmQKCUJvdXJuZSBzaCAoc3VjaCBhcyAvYmluL3NoIG9uIFNvbGFyaXMpLgpjYXRlZ29yeTogc2hlbGw6bGVnYWN5LXllcwpzdGRpbjoKCXNob3dmKCkgewoJCVtbIC1vIHBvc2l4IF1dOyBGUE9TSVg9JCgoMS0kPykpCgkJW1sgLW8gc2ggXV07IEZTSD0kKCgxLSQ/KSkKCQllY2hvIC1uICJGUE9TSVg9JEZQT1NJWCBGU0g9JEZTSCAiCgl9CglzZXQgK28gcG9zaXggK28gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwoJc2V0IC1vIHNoCglzaG93ZgoJc2V0IC0tIGBmYWxzZWAKCWVjaG8gcnY9JD8KCXNldCAtbyBwb3NpeAoJc2hvd2YKCXNldCAtLSBgZmFsc2VgCgllY2hvIHJ2PSQ/CglzZXQgLW8gcG9zaXggLW8gc2gKCXNob3dmCglzZXQgLS0gYGZhbHNlYAoJZWNobyBydj0kPwpleHBlY3RlZC1zdGRvdXQ6CglGUE9TSVg9MCBGU0g9MCBydj0xCglGUE9TSVg9MCBGU0g9MSBydj0xCglGUE9TSVg9MSBGU0g9MCBydj0wCglGUE9TSVg9MSBGU0g9MSBydj0wCi0tLQpuYW1lOiByZWdyZXNzaW9uLTExCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZzoKCQl4PS9mb28vYmFyL2JsYWgKCQllY2hvICR7eCMjKi99CglzaG91bGQgZWNobyBibGFoIGJ1dCBvbiBzb21lIG1hY2hpbmVzIGVjaG9zIC9mb28vYmFyL2JsYWguCnN0ZGluOgoJeD0vZm9vL2Jhci9ibGFoCgllY2hvICR7eCMjKi99CmV4cGVjdGVkLXN0ZG91dDoKCWJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTIKZGVzY3JpcHRpb246CglCb3RoIG9mIHRoZSBmb2xsb3dpbmcgZWNob3MgcHJvZHVjZSB0aGUgc2FtZSBvdXRwdXQgdW5kZXIgc2gva3NoLmF0dDoKCQkjIS9iaW4vc2gKCQl4PSJmb28JYmFyIgoJCWVjaG8gImBlY2hvIFwiJHhcImAiCgkJZWNobyAiYGVjaG8gIiR4ImAiCglwZGtzaCBwcm9kdWNlcyBkaWZmZXJlbnQgb3V0cHV0IGZvciB0aGUgZm9ybWVyIChmb28gaW5zdGVhZCBvZiBmb29cdGJhcikKc3RkaW46Cgl4PSJmb28JYmFyIgoJZWNobyAiYGVjaG8gXCIkeFwiYCIKCWVjaG8gImBlY2hvICIkeCJgIgpleHBlY3RlZC1zdGRvdXQ6Cglmb28JYmFyCglmb28JYmFyCi0tLQpuYW1lOiByZWdyZXNzaW9uLTEzCmRlc2NyaXB0aW9uOgoJVGhlIGZvbGxvd2luZyBjb21tYW5kIGhhbmdzIGZvcmV2ZXI6CgkJJCAoOiA7IGNhdCAvZXRjL3Rlcm1jYXApIHwgc2xlZXAgMgoJVGhpcyBpcyBiZWNhdXNlIHRoZSBzaGVsbCBmb3JrcyBhIHNoZWxsIHRvIHJ1biB0aGUgKC4uKSBjb21tYW5kCglhbmQgdGhpcyBzaGVsbCBoYXMgdGhlIHBpcGUgb3Blbi4gIFdoZW4gdGhlIHNsZWVwIGRpZXMsIHRoZSBjYXQKCWRvZXNuJ3QgZ2V0IGEgU0lHUElQRSAnY2F1c2UgYSBwcm9jZXNzIChpZSwgdGhlIHNlY29uZCBzaGVsbCkKCXN0aWxsIGhhcyB0aGUgcGlwZSBvcGVuLgoJCglOT1RFOiB0aGlzIHRlc3QgcHJvdm9rZXMgYSBiaXphcnJlIGJ1ZyBpbiBrc2g5MyAoc2hlbGwgc3RhcnRzIHJlYWRpbmcKCSAgICAgIGNvbW1hbmRzIGZyb20gL2V0Yy90ZXJtY2FwLi4pCnRpbWUtbGltaXQ6IDEwCnN0ZGluOgoJZWNobyBBIGxpbmUgb2YgdGV4dCB0aGF0IHdpbGwgYmUgZHVwbGljYXRlZCBxdWl0ZSBhIG51bWJlciBvZiB0aW1lcy4+IHQxCgljYXQgdDEgdDEgdDEgdDEgIHQxIHQxIHQxIHQxICB0MSB0MSB0MSB0MSAgdDEgdDEgdDEgdDEgID4gdDIKCWNhdCB0MiB0MiB0MiB0MiAgdDIgdDIgdDIgdDIgIHQyIHQyIHQyIHQyICB0MiB0MiB0MiB0MiAgPiB0MQoJY2F0IHQxIHQxIHQxIHQxID4gdDIKCSg6IDsgY2F0IHQyIDI+L2Rldi9udWxsKSB8IHNsZWVwIDEKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTQKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCSQgKGZvb2JhcikgMj4gL2Rldi9udWxsCglnZW5lcmF0ZXMgbm8gb3V0cHV0IHVuZGVyIC9iaW4vc2gsIGJ1dCBwZGtzaCBwcm9kdWNlcyB0aGUgZXJyb3IKCQlmb29iYXI6IG5vdCBmb3VuZAoJQWxzbywgdGhlIGNvbW1hbmQKCQkkIGZvb2JhciAyPiAvZGV2L251bGwKCWdlbmVyYXRlcyBhbiBlcnJvciB1bmRlciAvYmluL3NoIGFuZCBwZGtzaCwgYnV0IEFUJlQga3NoODggcHJvZHVjZXMKCW5vIGVycm9yIChyZWRpcmVjdGVkIHRvIC9kZXYvbnVsbCkuCnN0ZGluOgoJKHlvdS9zaG91bGQvbm90L3NlZS90aGlzL2Vycm9yLzEpIDI+IC9kZXYvbnVsbAoJeW91L3Nob3VsZC9ub3Qvc2VlL3RoaXMvZXJyb3IvMiAyPiAvZGV2L251bGwKCXRydWUKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTUKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCSQgd2hlbmNlIGZvb2JhcgoJZ2VuZXJhdGVzIGEgYmxhbmsgbGluZSB1bmRlciBwZGtzaCBhbmQgc2V0cyB0aGUgZXhpdCBzdGF0dXMgdG8gMC4KCUFUJlQga3NoODggZ2VuZXJhdGVzIG5vIG91dHB1dCBhbmQgc2V0cyB0aGUgZXhpdCBzdGF0dXMgdG8gMS4gIEFsc28sCgl0aGUgY29tbWFuZAoJCSQgd2hlbmNlIGZvb2JhciBjYXQKCWdlbmVyYXRlcyBubyBvdXRwdXQgdW5kZXIgQVQmVCBrc2g4OCAocGRrc2ggZ2VuZXJhdGVzIGEgYmxhbmsgbGluZQoJYW5kIC9iaW4vY2F0KS4Kc3RkaW46Cgl3aGVuY2UgZG9lcy9ub3QvZXhpc3QgPiAvZGV2L251bGwKCWVjaG8gMTogJD8KCWVjaG8gMjogJCh3aGVuY2UgZG9lcy9ub3QvZXhpc3QgfCB3YyAtbCkKCWVjaG8gMzogJCh3aGVuY2UgZG9lcy9ub3QvZXhpc3QgY2F0IHwgd2MgLWwpCmV4cGVjdGVkLXN0ZG91dDoKCTE6IDEKCTI6IDAKCTM6IDAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTYKZGVzY3JpcHRpb246Cgkke3ZhciUlZXhwcn0gc2VlbXMgdG8gYmUgYnJva2VuIGluIG1hbnkgcGxhY2VzLiAgT24gdGhlIG1pcHMKCXRoZSBjb21tYW5kcwoJCSQgcmVhZCBsaW5lIDwgL2V0Yy9wYXNzd2QKCQkkIGVjaG8gJGxpbmUKCQlyb290OjA6MTouLi4KCQkkIGVjaG8gJHtsaW5lJSU6Kn0KCQlyb290CgkJJCBlY2hvICRsaW5lCgkJcm9vdAoJCSQKCWNoYW5nZSB0aGUgdmFsdWUgb2YgbGluZS4gIE9uIHN1bjRzICYgcGFzLCB0aGUgZWNobyAke2xpbmUlJToqfSBkb2Vzbid0Cgl3b3JrLiAgSGF2ZW4ndCBjaGVja2VkIGVsc2V3aGVyZS4uLgpzY3JpcHQ6CglyZWFkIHgKCXk9JHgKCWVjaG8gJHt4JSU6Kn0KCWVjaG8gJHgKc3RkaW46Cglyb290OmFzZGpoYXNkYXNqaHM6MDoxOlJvb3Q6LzovYmluL3NoCmV4cGVjdGVkLXN0ZG91dDoKCXJvb3QKCXJvb3Q6YXNkamhhc2Rhc2poczowOjE6Um9vdDovOi9iaW4vc2gKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMTcKZGVzY3JpcHRpb246CglUaGUgY29tbWFuZAoJCS4gL2Zvby9iYXIKCXNob3VsZCBzZXQgdGhlIGV4aXQgc3RhdHVzIHRvIG5vbi16ZXJvIChzaCBhbmQgQVQmVCBrc2g4OCBkbykuCglYWFggZG90aW5nIGEgbm9uIGV4aXN0ZW50IGZpbGUgaXMgYSBmYXRhbCBlcnJvciBmb3IgYSBzY3JpcHQKc3RkaW46CgkuIGRvZXMvbm90L2V4aXN0CmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjogLy4/LwotLS0KbmFtZTogcmVncmVzc2lvbi0xOQpkZXNjcmlwdGlvbjoKCUJvdGggb2YgdGhlIGZvbGxvd2luZyBlY2hvcyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0aGluZywgYnV0IGRvbid0OgoJCSQgeD1mb28vYmFyCgkJJCBlY2hvICR7eCUvKn0KCQlmb28KCQkkIGVjaG8gIiR7eCUvKn0iCgkJZm9vL2JhcgpzdGRpbjoKCXg9Zm9vL2JhcgoJZWNobyAiJHt4JS8qfSIKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vCi0tLQpuYW1lOiByZWdyZXNzaW9uLTIxCmRlc2NyaXB0aW9uOgoJYmFja3NsYXNoIGRvZXMgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaW4gY2FzZSBsYWJlbHM6CgkkIHg9Jy14JwoJJCBjYXNlICR4IGluCgktXD8pIGVjaG8gaGkKCWVzYWMKCWhpCgkkIHg9Jy0/JwoJJCBjYXNlICR4IGluCgktXFw/KSBlY2hvIGhpCgllc2FjCgloaQoJJApzdGRpbjoKCWNhc2UgLXggaW4KCS1cPykJZWNobyBmYWlsCgllc2FjCi0tLQpuYW1lOiByZWdyZXNzaW9uLTIyCmRlc2NyaXB0aW9uOgoJUXVvdGluZyBiYWNrcXVvdGVzIGluc2lkZSBiYWNrcXVvdGVzIGRvZXNuJ3Qgd29yazoKCSQgZWNobyBgZWNobyBoaSBcYGVjaG8gdGhlcmVcYCBmb2xrc2AKCWFza3MgZm9yIG1vcmUgaW5mby4gIHNoIGFuZCBBVCZUIGtzaDg4IGJvdGggZWNobwoJaGkgdGhlcmUgZm9sa3MKc3RkaW46CgllY2hvIGBlY2hvIGhpIFxgZWNobyB0aGVyZVxgIGZvbGtzYApleHBlY3RlZC1zdGRvdXQ6CgloaSB0aGVyZSBmb2xrcwotLS0KbmFtZTogcmVncmVzc2lvbi0yMwpkZXNjcmlwdGlvbjoKCSkpIGlzIG5vdCB0cmVhdGVkIGBjb3JyZWN0bHknOgoJICAgICQgKGVjaG8gaGkgOyAoZWNobyB0aGVyZSA7IGVjaG8gZm9sa3MpKQoJICAgIG1pc3NpbmcgKCgKCSAgICAkCglpbnN0ZWFkIG9mIChhcyBzaCBhbmQga3NoLmF0dCkKCSAgICAkIChlY2hvIGhpIDsgKGVjaG8gdGhlcmUgOyBlY2hvIGZvbGtzKSkKCSAgICBoaQoJICAgIHRoZXJlCgkgICAgZm9sa3MKCSAgICAkCnN0ZGluOgoJKCA6IDsgKCA6IDsgZWNobyBoaSkpCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI1CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgb25seSByZWFkCglhIHNpbmdsZSBsaW5lLCBub3QgYSB3aG9sZSBzdGRpbyBidWZmZXI7IHRoZSBjYXQgc2hvdWxkIGdldAoJdGhlIHJlc3QuCnN0ZGluOgoJKGVjaG8gYTsgZWNobyBiKSB8IHdoaWxlIHJlYWQgeCA7IGRvCgkgICAgZWNobyAkeAoJICAgIGNhdCA+IC9kZXYvbnVsbAoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgcmVhZGluZyBzdGRpbiBpbiBhIHdoaWxlIGxvb3AuICBUaGUgcmVhZCBzaG91bGQgcmVhZCBib3RoCglsaW5lcywgbm90IGp1c3QgdGhlIGZpcnN0LgpzY3JpcHQ6CglhPQoJd2hpbGUgWyAiJGEiICE9IHh4eCBdIDsgZG8KCSAgICBsYXN0PSR4CgkgICAgcmVhZCB4CgkgICAgY2F0IC9kZXYvbnVsbCB8IHNlZCAncy94L3kvJwoJICAgIGE9eCRhCglkb25lCgllY2hvICRsYXN0CnN0ZGluOgoJYQoJYgpleHBlY3RlZC1zdGRvdXQ6CgliCi0tLQpuYW1lOiByZWdyZXNzaW9uLTI3CmRlc2NyaXB0aW9uOgoJVGhlIGNvbW1hbmQKCQkuIC9kb2VzL25vdC9leGlzdAoJc2hvdWxkIGNhdXNlIGEgc2NyaXB0IHRvIGV4aXQuCnN0ZGluOgoJLiBkb2VzL25vdC9leGlzdAoJZWNobyBoaQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9kb2VzXC9ub3RcL2V4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi0yOApkZXNjcmlwdGlvbjoKCXZhcmlhYmxlIGFzc2lnbmVtZW50cyBub3QgZGV0ZWN0ZWQgd2VsbApzdGRpbjoKCWEueD0xIGVjaG8gaGkKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvYVwueD0xLwotLS0KbmFtZTogcmVncmVzc2lvbi0yOQpkZXNjcmlwdGlvbjoKCWFsaWFzIGV4cGFuc2lvbiBkaWZmZXJlbnQgZnJvbSBBVCZUIGtzaDg4CnN0ZGluOgoJYWxpYXMgYT0nZm9yICcgYj0naSBpbicKCWEgYiBoaSA7IGRvIGVjaG8gJGkgOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTMwCmRlc2NyaXB0aW9uOgoJc3RyYW5nZSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW5zaWRlICR7Li4ufQpzdGRpbjoKCWVjaG8gJHthe2J9fQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC8uPy8KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzEKZGVzY3JpcHRpb246CglEb2VzIHJlYWQgaGFuZGxlIHBhcnRpYWwgbGluZXMgY29ycmVjdGx5CnNjcmlwdDoKCWE9IHJldD0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgcmVhZCB4IHkgegoJICAgIHJldD0kPwoJICAgIGE9eCRhCglkb25lCgllY2hvICJbJHhdIgoJZWNobyAkcmV0CnN0ZGluOiAhCglhIEEgYUEKCWIgQiBCYgoJYwpleHBlY3RlZC1zdGRvdXQ6CglbY10KCTEKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzIKZGVzY3JpcHRpb246CglEb2VzIHJlYWQgc2V0IHZhcmlhYmxlcyB0byBudWxsIGF0IGVvZj8Kc2NyaXB0OgoJYT0KCXdoaWxlIFsgIiRhIiAhPSB4eHggXSA7IGRvCgkgICAgcmVhZCB4IHkgegoJICAgIGE9eCRhCglkb25lCgllY2hvIDE6ICR7eC14IG5vdCBzZXR9ICR7eS15IG5vdCBzZXR9ICR7ei16IG5vdCBzZXR9CgllY2hvIDI6ICR7eDoreCBub3QgbnVsbH0gJHt5Oit5IG5vdCBudWxsfSAke3o6K3ogbm90IG51bGx9CnN0ZGluOgoJYSBBIEFhCgliIEIgQmIKZXhwZWN0ZWQtc3Rkb3V0OgoJMToKCTI6Ci0tLQpuYW1lOiByZWdyZXNzaW9uLTMzCmRlc2NyaXB0aW9uOgoJRG9lcyB1bWFzayBwcmludCBhIGxlYWRpbmcgMCB3aGVuIHVtYXNrIGlzIDMgZGlnaXRzPwpzdGRpbjoKCSMgb24gTWlOVCwgdGhlIGZpcnN0IHVtYXNrIGNhbGwgc2VlbXMgdG8gZmFpbAoJdW1hc2sgMDIyCgkjIG5vdywgdGhlIHRlc3QgcHJvcGVyCgl1bWFzayAyMjIKCXVtYXNrCmV4cGVjdGVkLXN0ZG91dDoKCTAyMjIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzUKZGVzY3JpcHRpb246CglUZW1wb3J5IGZpbGVzIHVzZWQgZm9yIGhlcmUtZG9jcyBpbiBmdW5jdGlvbnMgZ2V0IHRyYXNoZWQgYWZ0ZXIKCXRoZSBmdW5jdGlvbiBpcyBwYXJzZWQgKGJlZm9yZSBpdCBpcyBleGVjdXRlZCkKc3RkaW46CglmMSgpIHsKCQljYXQgPDwtIEVPRgoJCQlGMQoJCUVPRgoJCWYyKCkgewoJCQljYXQgPDwtIEVPRgoJCQkJRjIKCQkJRU9GCgkJfQoJfQoJZjEKCWYyCgl1bnNldCAtZiBmMQoJZjIKZXhwZWN0ZWQtc3Rkb3V0OgoJRjEKCUYyCglGMgotLS0KbmFtZTogcmVncmVzc2lvbi0zNgpkZXNjcmlwdGlvbjoKCUNvbW1hbmQgc3Vic3RpdHV0aW9uIGJyZWFrcyByZWFkaW5nIGluIHdoaWxlIGxvb3AKCSh0ZXN0IGZyb20gPHNqZ0B2b2lkLnplbi5vei5hdT4pCnN0ZGluOgoJKGVjaG8gYWJjZGVmOyBlY2hvOyBlY2hvIDEyMykgfAoJICAgIHdoaWxlIHJlYWQgbGluZQoJICAgIGRvCgkgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBicmVha3MgaXQKCSAgICAgIGM9YGVjaG8gJGxpbmUgfCB3YyAtY2AKCSAgICAgIGVjaG8gJGMKCSAgICBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTcKCTEKCTQKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tMzcKZGVzY3JpcHRpb246CglNYWNoaW5lcyB3aXRoIGJyb2tlbiB0aW1lcygpIChyZXBvcnRlZCBieSA8c2pnQHZvaWQuemVuLm96LmF1PikKCXRpbWUgZG9lcyBub3QgcmVwb3J0IGNvcnJlY3QgcmVhbCB0aW1lCnN0ZGluOgoJdGltZSBzbGVlcCAxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL15ccyowXC4wW1xzXGRdK3JlYWx8XlxzKnJlYWxbXHNdKzArXC4wLwotLS0KbmFtZTogcmVncmVzc2lvbi0zOApkZXNjcmlwdGlvbjoKCXNldCAtZSBkb2Vzbid0IGlnbm9yZSBleGl0IGNvZGVzIGZvciBpZi93aGlsZS91bnRpbC8mJi98fC8hLgphcmd1bWVudHM6ICEtZSEKc3RkaW46CglpZiBmYWxzZTsgdGhlbiBlY2hvIGhpIDsgZmkKCWZhbHNlIHx8IHRydWUKCWZhbHNlICYmIHRydWUKCXdoaWxlIGZhbHNlOyBkbyBlY2hvIGhpOyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTM5CmRlc2NyaXB0aW9uOgoJT25seSBwb3NoIGFuZCBva3NoKDIwMTMtMDcpIHNheSDigJxoaeKAnSBiZWxvdzsgRnJlZUJTRCBzaCwKCUdOVSBiYXNoIGluIFBPU0lYIG1vZGUsIGRhc2gsIGtzaDkzLCBta3NoIGRvbuKAmXQuIEFsbCBvZgoJdGhlbSBleGl0IDAuIFRoZSBQT1NJWCBiZWhhdmlvdXIgaXMgbmVlZGVkIGJ5IEJTRCBtYWtlLgpzdGRpbjoKCXNldCAtZQoJZWNobyBgZmFsc2U7IGVjaG8gaGlgICQoPHRoaXMtZmlsZS1kb2VzLW5vdC1leGlzdCkKCWVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJCgkwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvdGhpcy1maWxlLWRvZXMtbm90LWV4aXN0LwotLS0KbmFtZTogcmVncmVzc2lvbi00MApkZXNjcmlwdGlvbjoKCVRoaXMgdXNlZCB0byBjYXVzZSBhIGNvcmUgZHVtcAplbnYtc2V0dXA6ICFSQU5ET009MTIhCnN0ZGluOgoJZWNobyBoaQpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogcmVncmVzc2lvbi00MQpkZXNjcmlwdGlvbjoKCWZvbyBzaG91bGQgYmUgc2V0IHRvIGJhciAoc2hvdWxkIG5vdCBiZSBlbXB0eSkKc3RkaW46Cglmb289YAoJZWNobyBiYXJgCgllY2hvICIoJGZvbykiCmV4cGVjdGVkLXN0ZG91dDoKCShiYXIpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQyCmRlc2NyaXB0aW9uOgoJQ2FuJ3QgdXNlIGNvbW1hbmQgbGluZSBhc3NpZ25tZW50cyB0byBhc3NpZ24gcmVhZG9ubHkgcGFyYW1ldGVycy4Kc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICglmb289YmFyCglyZWFkb25seSBmb28KCWZvbz1zdHVmZiBlbnYgfCBncmVwICdeZm9vJwpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVncmVzc2lvbi00MwpkZXNjcmlwdGlvbjoKCUNhbiBzdWJzaGVsbHMgYmUgcHJlZml4ZWQgYnkgcmVkaXJlY3Rpb25zIChoaXN0b3JpY2FsIHNoZWxscyBhbGxvdwoJdGhpcykKc3RkaW46Cgk8IC9kZXYvbnVsbCAoc2VkICdzL14vWC8nKQotLS0KbmFtZTogcmVncmVzc2lvbi00NQpkZXNjcmlwdGlvbjoKCVBhcmFtZXRlciBhc3NpZ25tZW50cyB3aXRoIFtdIHJlY29nbmlzZWQgY29ycmVjdGx5CnN0ZGluOgoJRk9PPSpbMTJdCglCQVI9YWJjWwoJTU9SRT1bYWJjXQoJSlVOSz1hW2JjCgllY2hvICI8JEZPTz4iCgllY2hvICI8JEJBUj4iCgllY2hvICI8JE1PUkU+IgoJZWNobyAiPCRKVU5LPiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPCpbMTJdPgoJPGFiY1s+Cgk8W2FiY10+Cgk8YVtiYz4KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNDYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsaWFzIGV4cGFuc2lvbiB3b3JrcyBpbiBjb21tYW5kIHN1YnN0aXR1dGlvbnMgYW5kCglhdCB0aGUgZW5kIG9mIGZpbGUuCnN0ZGluOgoJYWxpYXMgeD0nZWNobyBoaScKCUZPTz0iYHhgICIKCWVjaG8gIlskRk9PXSIKCXgKZXhwZWN0ZWQtc3Rkb3V0OgoJW2hpIF0KCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ3CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBhbGlhc2VzIGFyZSBmdWxseSByZWFkLgpzdGRpbjoKCWFsaWFzIHg9J2VjaG8gaGk7CgllY2hvIHRoZXJlJwoJeAoJZWNobyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWhpCgl0aGVyZQoJZG9uZQotLS0KbmFtZTogcmVncmVzc2lvbi00OApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgKGhlcmUgZG9jKSB0ZW1wIGZpbGVzIGFyZSBub3QgbGVmdCBiZWhpbmQgYWZ0ZXIgYW4gZXhlYy4Kc3RkaW46Cglta2RpciBmb28gfHwgZXhpdCAxCglUTVBESVI9JFBXRC9mb28gIiRfX3Byb2duYW1lIiA8PC0gJ0VPRicKCQl4KCkgewoJCQlzZWQgJ3MvXi9YIC8nIDw8IEVfT19GCgkJCWhpCgkJCXRoZXJlCgkJCWZvbGtzCgkJCUVfT19GCgkJCWVjaG8gImRvbmUgKCQ/KSIKCQl9CgkJZWNobz1lY2hvOyBbIC14IC9iaW4vZWNobyBdICYmIGVjaG89L2Jpbi9lY2hvCgkJZXhlYyAkZWNobyBzdWJ0ZXN0LTEgaGkKCUVPRgoJZWNobyBzdWJ0ZXN0LTEgZm9vLyoKCVRNUERJUj0kUFdEL2ZvbyAiJF9fcHJvZ25hbWUiIDw8LSAnRU9GJwoJCWVjaG89ZWNobzsgWyAteCAvYmluL2VjaG8gXSAmJiBlY2hvPS9iaW4vZWNobwoJCXNlZCAncy9eL1ggLycgPDwgRV9PX0Y7IGV4ZWMgJGVjaG8gc3VidGVzdC0yIGhpCgkJYQoJCWZldwoJCWxpbmVzCgkJRV9PX0YKCUVPRgoJZWNobyBzdWJ0ZXN0LTIgZm9vLyoKZXhwZWN0ZWQtc3Rkb3V0OgoJc3VidGVzdC0xIGhpCglzdWJ0ZXN0LTEgZm9vLyoKCVggYQoJWCBmZXcKCVggbGluZXMKCXN1YnRlc3QtMiBoaQoJc3VidGVzdC0yIGZvby8qCi0tLQpuYW1lOiByZWdyZXNzaW9uLTQ5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bnNldCBwYXJhbXMgd2l0aCBhdHRyaWJ1dGVzIGFyZSByZXBvcnRlZCBieSBzZXQsIHRob3NlCglzYW5zIGF0dHJpYnV0ZXMgYXJlIG5vdC4Kc3RkaW46Cgl1bnNldCBGT08gQkFSCgllY2hvIFgkRk9PCglleHBvcnQgQkFSCgl0eXBlc2V0IC1pIEJMQUgKCXNldCB8IGdyZXAgRk9PCglzZXQgfCBncmVwIEJBUgoJc2V0IHwgZ3JlcCBCTEFICmV4cGVjdGVkLXN0ZG91dDoKCVgKCUJBUgoJQkxBSAotLS0KbmFtZTogcmVncmVzc2lvbi01MApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyBkbyBub3QgdXNlIGNvbnRpbnVhdGlvbiBwcm9tcHQgYWZ0ZXIgdHJhaWxpbmcKCXNlbWktY29sb24uCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJlbnZmIgoJUFMxPVkKCVBTMj1YCmVudi1zZXR1cDogIUVOVj0uL2VudmYhCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBoaSA7ICcKCWZvbwoJZm9vIGVjaG8gdGhlcmUKZXhwZWN0ZWQtc3Rkb3V0OgoJaGkKCWhpCgl0aGVyZQpleHBlY3RlZC1zdGRlcnI6ICEKCVlZWVkKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHNldCBhbGxvd3MgYm90aCArbyBhbmQgLW8gb3B0aW9ucyBvbiBzYW1lIGNvbW1hbmQgbGluZS4Kc3RkaW46CglzZXQgYSBiIGMKCXNldCAtbyBub2dsb2IgK28gYWxsZXhwb3J0CgllY2hvIEE6ICQqLCAqCmV4cGVjdGVkLXN0ZG91dDoKCUE6IGEgYiBjLCAqCi0tLQpuYW1lOiByZWdyZXNzaW9uLTUyCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBnbG9iYmluZyB3b3JrcyBpbiBwaXBlbGluZWQgY29tbWFuZHMKZmlsZS1zZXR1cDogZmlsZSA2NDQgImVudmYiCglQUzE9UApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjIgoJc3R1ZmYKZW52LXNldHVwOiAhRU5WPS4vZW52ZiEKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJc2VkICdzL14vWCAvJyA8IGFiKgoJZWNobyBtYXJrIDEKCXNlZCAncy9eL1ggLycgPCBhYiogfCBzZWQgJ3MvXi9ZIC8nCgllY2hvIG1hcmsgMgpleHBlY3RlZC1zdGRvdXQ6CglYIHN0dWZmCgltYXJrIDEKCVkgWCBzdHVmZgoJbWFyayAyCmV4cGVjdGVkLXN0ZGVycjogIQoJUFBQUFAKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGdldG9wdHMgd29ya3MgaW4gZnVuY3Rpb25zCnN0ZGluOgoJYmZ1bmMoKSB7CgkgICAgZWNobyBiZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgQiBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEIpCgkJICAgIGVjaG8gYmZ1bmM6IEIgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGJmdW5jOiBsZWF2ZQoJfQoJCglmdW5jdGlvbiBrZnVuYyB7CgkgICAgZWNobyBrZnVuYzogZW50ZXIgIihhcmdzOiAkKjsgT1BUSU5EPSRPUFRJTkQpIgoJICAgIHdoaWxlIGdldG9wdHMgSyBvYzsgZG8KCQljYXNlICRvYyBpbgoJCSAgKEspCgkJICAgIGVjaG8ga2Z1bmM6IEsgb3B0aW9uCgkJICAgIDs7CgkJICAoKikKCQkgICAgZWNobyBiZnVuYzogb2RkIG9wdGlvbiAiKCRvYykiCgkJICAgIDs7CgkJZXNhYwoJICAgIGRvbmUKCSAgICBlY2hvIGtmdW5jOiBsZWF2ZQoJfQoJCglzZXQgLS0gLWYgLWIgLWsgLWwKCWVjaG8gImxpbmUgMTogT1BUSU5EPSRPUFRJTkQiCglnZXRvcHRzIGtiZmwgb3B0YwoJZWNobyAibGluZSAyOiByZXQ9JD8sIG9wdGM9JG9wdGMsIE9QVElORD0kT1BUSU5EIgoJYmZ1bmMgLUJCQiBibGFoCgllY2hvICJsaW5lIDM6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDogcmV0PSQ/LCBvcHRjPSRvcHRjLCBPUFRJTkQ9JE9QVElORCIKCWtmdW5jIC1LS0sgYmxhaAoJZWNobyAibGluZSA1OiBPUFRJTkQ9JE9QVElORCIKCWdldG9wdHMga2JmbCBvcHRjCgllY2hvICJsaW5lIDY6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgllY2hvCgkKCU9QVElORD0xCglzZXQgLS0gLWZia2wKCWVjaG8gImxpbmUgMTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgMjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCgliZnVuYyAtQkJCIGJsYWgKCWVjaG8gImxpbmUgMzA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNDA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCglrZnVuYyAtS0tLIGJsYWgKCWVjaG8gImxpbmUgNTA6IE9QVElORD0kT1BUSU5EIgoJZ2V0b3B0cyBrYmZsIG9wdGMKCWVjaG8gImxpbmUgNjA6IHJldD0kPywgb3B0Yz0kb3B0YywgT1BUSU5EPSRPUFRJTkQiCmV4cGVjdGVkLXN0ZG91dDoKCWxpbmUgMTogT1BUSU5EPTEKCWxpbmUgMjogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzogT1BUSU5EPTIKCWxpbmUgNDogcmV0PTAsIG9wdGM9YiwgT1BUSU5EPTMKCWtmdW5jOiBlbnRlciAoYXJnczogLUtLSyBibGFoOyBPUFRJTkQ9MSkKCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBsZWF2ZQoJbGluZSA1OiBPUFRJTkQ9MwoJbGluZSA2OiByZXQ9MCwgb3B0Yz1rLCBPUFRJTkQ9NAoJCglsaW5lIDEwOiBPUFRJTkQ9MQoJbGluZSAyMDogcmV0PTAsIG9wdGM9ZiwgT1BUSU5EPTIKCWJmdW5jOiBlbnRlciAoYXJnczogLUJCQiBibGFoOyBPUFRJTkQ9MikKCWJmdW5jOiBCIG9wdGlvbgoJYmZ1bmM6IEIgb3B0aW9uCgliZnVuYzogbGVhdmUKCWxpbmUgMzA6IE9QVElORD0yCglsaW5lIDQwOiByZXQ9MSwgb3B0Yz0/LCBPUFRJTkQ9MgoJa2Z1bmM6IGVudGVyIChhcmdzOiAtS0tLIGJsYWg7IE9QVElORD0xKQoJa2Z1bmM6IEsgb3B0aW9uCglrZnVuYzogSyBvcHRpb24KCWtmdW5jOiBLIG9wdGlvbgoJa2Z1bmM6IGxlYXZlCglsaW5lIDUwOiBPUFRJTkQ9MgoJbGluZSA2MDogcmV0PTEsIG9wdGM9PywgT1BUSU5EPTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IDsgaXMgbm90IHJlcXVpcmVkIGJlZm9yZSB0aGUgdGhlbiBpbiBpZiAoKCAuLi4gKSkgdGhlbiAuLi4Kc3RkaW46CglpZiAoKCAxICkpIHRoZW4KCSAgICBlY2hvIG9rIGRwYXJlbgoJZmkKCWlmIFtbIC1uIDEgXV0gdGhlbgoJICAgIGVjaG8gb2sgZGJyYWNrZXRzCglmaQpleHBlY3RlZC1zdGRvdXQ6CglvayBkcGFyZW4KCW9rIGRicmFja2V0cwotLS0KbmFtZTogcmVncmVzc2lvbi01NQpkZXNjcmlwdGlvbjoKCUNoZWNrICR7Zm9vOiViYXJ9IGlzIGFsbG93ZWQgKGtzaDg4IGFsbG93cyBpdC4uLikKc3RkaW46Cgl4PWZvb1hiYXJYYmxhaAoJZWNobyAxICR7eCVYKn0KCWVjaG8gMiAke3g6JVgqfQoJZWNobyAzICR7eCUlWCp9CgllY2hvIDQgJHt4OiUlWCp9CgllY2hvIDUgJHt4IypYfQoJZWNobyA2ICR7eDojKlh9CgllY2hvIDcgJHt4IyMqWH0KCWVjaG8gOCAke3g6IyMqWH0KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmb29YYmFyCgkyIGZvb1hiYXIKCTMgZm9vCgk0IGZvbwoJNSBiYXJYYmxhaAoJNiBiYXJYYmxhaAoJNyBibGFoCgk4IGJsYWgKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNTcKZGVzY3JpcHRpb246CglDaGVjayBpZiB0eXBlc2V0IG91dHB1dCBpcyBjb3JyZWN0IGZvcgoJdW5pbml0aWFsaXNlZCBhcnJheSBlbGVtZW50cy4Kc3RkaW46Cgl0eXBlc2V0IC1pIHh4eFs0XQoJZWNobyBBCgl0eXBlc2V0IC1pIHwgZ3JlcCB4eHggfCBzZWQgJ3MvXi8gICAgLycKCWVjaG8gQgoJdHlwZXNldCB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgkKCXh4eFsxXT0yKzUKCWVjaG8gTQoJdHlwZXNldCAtaSB8IGdyZXAgeHh4IHwgc2VkICdzL14vICAgIC8nCgllY2hvIE4KCXR5cGVzZXQgfCBncmVwIHh4eCB8IHNlZCAncy9eLyAgICAvJwpleHBlY3RlZC1zdGRvdXQ6CglBCgkgICAgeHh4CglCCgkgICAgdHlwZXNldCAtaSB4eHgKCU0KCSAgICB4eHhbMV09NwoJTgoJICAgIHNldCAtQSB4eHgKCSAgICB0eXBlc2V0IC1pIHh4eFsxXQotLS0KbmFtZTogcmVncmVzc2lvbi01OApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRyYXAgZXhpdCBpcyBvayAoZXhpdCBub3QgbWlzdGFrZW4gZm9yIHNpZ25hbCBuYW1lKQpzdGRpbjoKCXRyYXAgJ2VjaG8gaGknIGV4aXQKCXRyYXAgZXhpdCAxCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiByZWdyZXNzaW9uLTU5CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgJHsjYXJyYXlbKl19IGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgpzdGRpbjoKCWFbMTJdPWhpCglhWzhdPXRoZXJlCgllY2hvICR7I2FbKl19CmV4cGVjdGVkLXN0ZG91dDoKCTIKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjAKZGVzY3JpcHRpb246CglDaGVjayBpZiBkZWZhdWx0IGV4aXQgc3RhdHVzIGlzIHByZXZpb3VzIGNvbW1hbmQKc3RkaW46CgkodHJ1ZTsgZXhpdCkKCWVjaG8gQSAkPwoJKGZhbHNlOyBleGl0KQoJZWNobyBCICQ/CgkoIChleGl0IDEwMykgOyBleGl0KQoJZWNobyBDICQ/CmV4cGVjdGVkLXN0ZG91dDoKCUEgMAoJQiAxCglDIDEwMwotLS0KbmFtZTogcmVncmVzc2lvbi02MQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEVYSVQgdHJhcCBpcyBleGVjdXRlZCBmb3Igc3ViIHNoZWxscy4Kc3RkaW46Cgl0cmFwICdlY2hvIHBhcmVudCBleGl0JyBFWElUCgllY2hvIHN0YXJ0CgkoZWNobyBBOyBlY2hvIEEgbGFzdCkKCWVjaG8gQgoJKGVjaG8gQzsgdHJhcCAnZWNobyBzdWIgZXhpdCcgRVhJVDsgZWNobyBDIGxhc3QpCgllY2hvIHBhcmVudCBsYXN0CmV4cGVjdGVkLXN0ZG91dDoKCXN0YXJ0CglBCglBIGxhc3QKCUIKCUMKCUMgbGFzdAoJc3ViIGV4aXQKCXBhcmVudCBsYXN0CglwYXJlbnQgZXhpdAotLS0KbmFtZTogcmVncmVzc2lvbi02MgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHRlc3QgLW50Ly1vdCBzdWNjZWVkcyBpZiBzZWNvbmQoZmlyc3QpIGZpbGUgaXMgbWlzc2luZy4Kc3RkaW46CgltYXRyaXgoKSB7CgkJbG9jYWwgYSBiIGMgZCBlIGYgZyBoCgkJdGVzdCBhIC1udCBiOyBhPSQ/CgkJdGVzdCBiIC1udCBhOyBiPSQ/CgkJdGVzdCBhIC1vdCBiOyBjPSQ/CgkJdGVzdCBiIC1vdCBhOyBkPSQ/CgkJdGVzdCBhIC1udCBhOyBlPSQ/CgkJdGVzdCBiIC1udCBiOyBmPSQ/CgkJdGVzdCBhIC1vdCBhOyBnPSQ/CgkJdGVzdCBiIC1vdCBiOyBoPSQ/CgkJZWNobyAkMSAkYSAkYiAkYyAkZCAvICRlICRmICRnICRoIC4KCX0KCW1hdHJpeCBhCgk6PmEKCW1hdHJpeCBiCglzbGVlcCAyCQkjIG10aW1lIGdyYW51bGFyaXR5IGZvciBPUy8yIGFuZCBGQVQKCTo+YgoJbWF0cml4IGMKCXNsZWVwIDIKCWVjaG8gZHVtbXkgPmEJIyBEZWJpYW4gR05VL0h1cmQgIzk1NTI3MAoJbWF0cml4IGQKCXJtIGEKCW1hdHJpeCBlCmV4cGVjdGVkLXN0ZG91dDoKCWEgMSAxIDEgMSAvIDEgMSAxIDEgLgoJYiAwIDEgMSAwIC8gMSAxIDEgMSAuCgljIDEgMCAwIDEgLyAxIDEgMSAxIC4KCWQgMCAxIDEgMCAvIDEgMSAxIDEgLgoJZSAxIDAgMCAxIC8gMSAxIDEgMSAuCi0tLQpuYW1lOiByZWdyZXNzaW9uLTYzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgdHlwZXNldCwgZXhwb3J0LCBhbmQgcmVhZG9ubHkgd29yawpzdGRpbjoKCXsKCQllY2hvIEZOT1JELTAKCQlGTk9SRF9BPTEKCQlGTk9SRF9CPTIKCQlGTk9SRF9DPTMKCQlGTk9SRF9EPTQKCQlGTk9SRF9FPTUKCQlGTk9SRF9GPTYKCQlGTk9SRF9HPTcKCQlGTk9SRF9IPTgKCQlpbnRlZ2VyIEZOT1JEX0UgRk5PUkRfRiBGTk9SRF9HIEZOT1JEX0gKCQlleHBvcnQgRk5PUkRfQyBGTk9SRF9EIEZOT1JEX0cgRk5PUkRfSAoJCXJlYWRvbmx5IEZOT1JEX0IgRk5PUkRfRCBGTk9SRF9GIEZOT1JEX0gKCQllY2hvIEZOT1JELTEKCQlleHBvcnQKCQllY2hvIEZOT1JELTIKCQlleHBvcnQgLXAKCQllY2hvIEZOT1JELTMKCQlyZWFkb25seQoJCWVjaG8gRk5PUkQtNAoJCXJlYWRvbmx5IC1wCgkJZWNobyBGTk9SRC01CgkJdHlwZXNldAoJCWVjaG8gRk5PUkQtNgoJCXR5cGVzZXQgLXAKCQllY2hvIEZOT1JELTcKCQl0eXBlc2V0IC0KCQllY2hvIEZOT1JELTgKCX0gfCBmZ3JlcCBGTk9SRAoJZm5vcmQ9KDQyIDIzKQoJdHlwZXNldCAtcCBmbm9yZAoJZWNobyBGTk9SRC05CmV4cGVjdGVkLXN0ZG91dDoKCUZOT1JELTAKCUZOT1JELTEKCUZOT1JEX0MKCUZOT1JEX0QKCUZOT1JEX0cKCUZOT1JEX0gKCUZOT1JELTIKCWV4cG9ydCBGTk9SRF9DPTMKCWV4cG9ydCBGTk9SRF9EPTQKCWV4cG9ydCBGTk9SRF9HPTcKCWV4cG9ydCBGTk9SRF9IPTgKCUZOT1JELTMKCUZOT1JEX0IKCUZOT1JEX0QKCUZOT1JEX0YKCUZOT1JEX0gKCUZOT1JELTQKCXJlYWRvbmx5IEZOT1JEX0I9MgoJcmVhZG9ubHkgRk5PUkRfRD00CglyZWFkb25seSBGTk9SRF9GPTYKCXJlYWRvbmx5IEZOT1JEX0g9OAoJRk5PUkQtNQoJdHlwZXNldCBGTk9SRF9BCgl0eXBlc2V0IC1yIEZOT1JEX0IKCXR5cGVzZXQgLXggRk5PUkRfQwoJdHlwZXNldCAteCAtciBGTk9SRF9ECgl0eXBlc2V0IC1pIEZOT1JEX0UKCXR5cGVzZXQgLWkgLXIgRk5PUkRfRgoJdHlwZXNldCAtaSAteCBGTk9SRF9HCgl0eXBlc2V0IC1pIC14IC1yIEZOT1JEX0gKCUZOT1JELTYKCXR5cGVzZXQgRk5PUkRfQT0xCgl0eXBlc2V0IC1yIEZOT1JEX0I9MgoJdHlwZXNldCAteCBGTk9SRF9DPTMKCXR5cGVzZXQgLXggLXIgRk5PUkRfRD00Cgl0eXBlc2V0IC1pIEZOT1JEX0U9NQoJdHlwZXNldCAtaSAtciBGTk9SRF9GPTYKCXR5cGVzZXQgLWkgLXggRk5PUkRfRz03Cgl0eXBlc2V0IC1pIC14IC1yIEZOT1JEX0g9OAoJRk5PUkQtNwoJRk5PUkRfQT0xCglGTk9SRF9CPTIKCUZOT1JEX0M9MwoJRk5PUkRfRD00CglGTk9SRF9FPTUKCUZOT1JEX0Y9NgoJRk5PUkRfRz03CglGTk9SRF9IPTgKCUZOT1JELTgKCXNldCAtQSBmbm9yZAoJdHlwZXNldCBmbm9yZFswXT00MgoJdHlwZXNldCBmbm9yZFsxXT0yMwoJRk5PUkQtOQotLS0KbmFtZTogcmVncmVzc2lvbi02NApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgd2UgY2FuIHJlZGVmaW5lIGZ1bmN0aW9ucyBjYWxsaW5nIHRpbWUgYnVpbHRpbgpzdGRpbjoKCXQoKSB7CgkJdGltZSA+L2Rldi9udWxsCgl9Cgl0IDI+L2Rldi9udWxsCgl0KCkgewoJCXRpbWUKCX0KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjUKZGVzY3JpcHRpb246CgljaGVjayBmb3IgYSByZWdyZXNzaW9uIHdpdGggc2xlZXAgYnVpbHRpbiBhbmQgc2lnbmFsIG1hc2sKY2F0ZWdvcnk6ICFub2pzaWcKdGltZS1saW1pdDogNQpzdGRpbjoKCXNsZWVwIDEKCWVjaG8gYmx1YiB8JgoJd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyA6OyBkb25lCgllY2hvIG9rCmV4cGVjdGVkLXN0ZG91dDoKCW9rCi0tLQpuYW1lOiByZWdyZXNzaW9uLTY2CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBxdW90aW5nIGlzIHNhbmUKY2F0ZWdvcnk6ICFub2pzaWcKc3RkaW46CglhY19zcGFjZT0nICcKCWFjX25ld2xpbmU9JwoJJwoJc2V0IHwgZ3JlcCBeYWNfIHwmCglzZXQgLUEgbGluZXMKCXdoaWxlIElGUz0gcmVhZCAtcHIgbGluZTsgZG8KCQlpZiBbWyAkbGluZSA9ICpzcGFjZSogXV07IHRoZW4KCQkJbGluZXNbMF09JGxpbmUKCQllbHNlCgkJCWxpbmVzWzFdPSRsaW5lCgkJZmkKCWRvbmUKCWZvciBsaW5lIGluICIke2xpbmVzW0BdfSI7IGRvCgkJcHJpbnQgLXIgLS0gIiRsaW5lIgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglhY19zcGFjZT0nICcKCWFjX25ld2xpbmU9JCdcbicKLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjcKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBib3RoIGJyZWFrIGFuZCB1c2Ugc291cmNlIG9uIHRoZSBzYW1lIGxpbmUKc3RkaW46Cglmb3IgcyBpbiBzOyBkbyBicmVhazsgZG9uZTsgcHJpbnQgLXMgcwotLS0KbmFtZTogcmVncmVzc2lvbi02OApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxsIGNvbW1vbiBhcml0aG1ldGljIG9wZXJhdG9ycyB3b3JrIGFzIGV4cGVjdGVkCnN0ZGluOgoJZWNobyAxICQoKCBhID0gNSApKSAuCgllY2hvIDIgJCgoICsrYSApKSAsICQoKCBhKysgKSkgLCAkKCggYSApKSAuCgllY2hvIDMgJCgoIC0tYSApKSAsICQoKCBhLS0gKSkgLCAkKCggYSApKSAuCgllY2hvIDQgJCgoIGEgPT0gNSApKSAsICQoKCBhID09IDYgKSkgLgoJZWNobyA1ICQoKCBhICE9IDUgKSkgLCAkKCggYSAhPSA2ICkpIC4KCWVjaG8gNiAkKCggYSAqPSAzICkpIC4KCWVjaG8gNyAkKCggYSAvPSA1ICkpIC4KCWVjaG8gOCAkKCggYSAlPSAyICkpIC4KCWVjaG8gOSAkKCggYSArPSA5ICkpIC4KCWVjaG8gMTAgJCgoIGEgLT0gNCApKSAuCgllY2hvIDExICQoKCBhIDw8PSAxICkpIC4KCWVjaG8gMTIgJCgoIGEgPj49IDEgKSkgLgoJZWNobyAxMyAkKCggYSAmPSA0ICkpIC4KCWVjaG8gMTQgJCgoIGEgXj0gYSApKSAuCgllY2hvIDE1ICQoKCBhIHw9IDUgKSkgLgoJZWNobyAxNiAkKCggNSA8PCAxICkpIC4KCWVjaG8gMTcgJCgoIDUgPj4gMSApKSAuCgllY2hvIDE4ICQoKCA1IDw9IDYgKSkgLCAkKCggNSA8PSA1ICkpICwgJCgoIDUgPD0gNCApKSAuCgllY2hvIDE5ICQoKCA1ID49IDYgKSkgLCAkKCggNSA+PSA1ICkpICwgJCgoIDUgPj0gNCApKSAuCgllY2hvIDIwICQoKCA1IDwgNiApKSAsICQoKCA1IDwgNSApKSAsICQoKCA1IDwgNCApKSAuCgllY2hvIDIxICQoKCA1ID4gNiApKSAsICQoKCA1ID4gNSApKSAsICQoKCA1ID4gNCApKSAuCgllY2hvIDIyICQoKCAwICYmIDAgKSkgLCAkKCggMCAmJiAxICkpICwgJCgoIDEgJiYgMCApKSAsICQoKCAxICYmIDEgKSkgLgoJZWNobyAyMyAkKCggMCB8fCAwICkpICwgJCgoIDAgfHwgMSApKSAsICQoKCAxIHx8IDAgKSkgLCAkKCggMSB8fCAxICkpIC4KCWVjaG8gMjQgJCgoIDUgKiAzICkpIC4KCWVjaG8gMjUgJCgoIDcgLyAyICkpIC4KCWVjaG8gMjYgJCgoIDUgJSA1ICkpICwgJCgoIDUgJSA0ICkpICwgJCgoIDUgJSAxICkpICwgJCgoIDUgJSAtMSApKSAsICQoKCA1ICUgLTIgKSkgLgoJZWNobyAyNyAkKCggNSArIDIgKSkgLCAkKCggNSArIDAgKSkgLCAkKCggNSArIC0yICkpIC4KCWVjaG8gMjggJCgoIDUgLSAyICkpICwgJCgoIDUgLSAwICkpICwgJCgoIDUgLSAtMiApKSAuCgllY2hvIDI5ICQoKCA2ICYgNCApKSAsICQoKCA2ICYgOCApKSAuCgllY2hvIDMwICQoKCA0IF4gMiApKSAsICQoKCA0IF4gNCApKSAuCgllY2hvIDMxICQoKCA0IHwgMiApKSAsICQoKCA0IHwgNCApKSAsICQoKCA0IHwgMCApKSAuCgllY2hvIDMyICQoKCAwID8gMSA6IDIgKSkgLCAkKCggMyA/IDQgOiA1ICkpIC4KCWVjaG8gMzMgJCgoIDUgLCAyICwgMyApKSAuCgllY2hvIDM0ICQoKCB+MCApKSAsICQoKCB+MSApKSAsICQoKCB+fjEgKSkgLCAkKCggfn4yICkpIC4KCWVjaG8gMzUgJCgoICEwICkpICwgJCgoICExICkpICwgJCgoICEhMSApKSAsICQoKCAhITIgKSkgLgoJZWNobyAzNiAkKCggKDUpICkpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSA1IC4KCTIgNiAsIDYgLCA3IC4KCTMgNiAsIDYgLCA1IC4KCTQgMSAsIDAgLgoJNSAwICwgMSAuCgk2IDE1IC4KCTcgMyAuCgk4IDEgLgoJOSAxMCAuCgkxMCA2IC4KCTExIDEyIC4KCTEyIDYgLgoJMTMgNCAuCgkxNCAwIC4KCTE1IDUgLgoJMTYgMTAgLgoJMTcgMiAuCgkxOCAxICwgMSAsIDAgLgoJMTkgMCAsIDEgLCAxIC4KCTIwIDEgLCAwICwgMCAuCgkyMSAwICwgMCAsIDEgLgoJMjIgMCAsIDAgLCAwICwgMSAuCgkyMyAwICwgMSAsIDEgLCAxIC4KCTI0IDE1IC4KCTI1IDMgLgoJMjYgMCAsIDEgLCAwICwgMCAsIDEgLgoJMjcgNyAsIDUgLCAzIC4KCTI4IDMgLCA1ICwgNyAuCgkyOSA0ICwgMCAuCgkzMCA2ICwgMCAuCgkzMSA2ICwgNCAsIDQgLgoJMzIgMiAsIDQgLgoJMzMgMyAuCgkzNCAtMSAsIC0yICwgMSAsIDIgLgoJMzUgMSAsIDAgLCAxICwgMSAuCgkzNiA1IC4KLS0tCm5hbWU6IHJlZ3Jlc3Npb24tNjkKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFsbCBub24tbGtzaCBhcml0aG1ldGljIG9wZXJhdG9ycyB3b3JrIGFzIGV4cGVjdGVkCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3ktbm8Kc3RkaW46CglhPTUgYj0weDgwMDAwMDA1CgllY2hvIDEgJCgoIGEgXjw9IDEgKSkgLCAkKCggYiBePD0gMSApKSAuCgllY2hvIDIgJCgoIGEgXj49IDIgKSkgLCAkKCggYiBePj0gMiApKSAuCgllY2hvIDMgJCgoIDUgXjwgMSApKSAuCgllY2hvIDQgJCgoIDUgXj4gMSApKSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMTAgLCAxMSAuCgkyIC0yMTQ3NDgzNjQ2ICwgLTEwNzM3NDE4MjIgLgoJMyAxMCAuCgk0IC0yMTQ3NDgzNjQ2IC4KLS0tCm5hbWU6IGV4cG9ydC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYWxsZXhwb3J0IHdvcmtzLCBiYXNpYwpzdGRpbjoKCXFhPTEKCXNldCAtQSBxYiAyIDMKCXNldCAtYQoJcWM9NAoJc2V0IC1BIHFkIDUgNgoJZXhwb3J0IC1wIHwgZ3JlcCAnXmV4cG9ydCBxJwpleHBlY3RlZC1zdGRvdXQ6CglleHBvcnQgcWM9NAoJZXhwb3J0IHFkWzBdPTUKCWV4cG9ydCBxZFsxXT02Ci0tLQpuYW1lOiByZWFkb25seS0wCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHJlYWRvbmx5IGlzIGhvbm91cmVkIGZvciBhc3NpZ25tZW50cyBhbmQgdW5zZXQKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICd1PXg7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSB1OyB1PXg7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICd1PXg7IHJlYWRvbmx5IHU7IHVuc2V0IHU7IGVjaG8gJD8gJHUgLicgfHwgZWNobyBhYm9ydGVkLCAkPwpleHBlY3RlZC1zdGRvdXQ6CgkwIHggLgoJPQoJYWJvcnRlZCwgMgoJPQoJMSB4IC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktMQpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTM2NyBmb3IgZXhwb3J0CnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgZm9vOyBleHBvcnQgZm9vPWE7IGVjaG8gJD8nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJYWJvcnRlZCwgMgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZ2V0b3B0cyB3b3JrcyBhcyBpbnRlbmRlZCwgZm9yIHJlYWRvbmx5LTJiIHRvIGJlIHZhbGlkCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnc2V0IC0tIC1hIGI7IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC47IGdldG9wdHMgYSBjOyBlY2hvICQ/ICRjIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMCBhIC4KCTEgPyAuCi0tLQpuYW1lOiByZWFkb25seS0yYgpkZXNjcmlwdGlvbjoKCWh0dHA6Ly9hdXN0aW5ncm91cGJ1Z3MubmV0L3ZpZXcucGhwP2lkPTM2NyBmb3IgZ2V0b3B0cwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IGM7IHNldCAtLSAtYSBiOyBnZXRvcHRzIGEgYzsgZWNobyAkPyAkYyAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTIgLgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkLW9ubHkvCi0tLQpuYW1lOiByZWFkb25seS0zCmRlc2NyaXB0aW9uOgoJaHR0cDovL2F1c3Rpbmdyb3VwYnVncy5uZXQvdmlldy5waHA/aWQ9MzY3IGZvciByZWFkCnN0ZGluOgoJZWNobyB4IHwgIiRfX3Byb2duYW1lIiAtYyAncmVhZCBzOyBlY2hvICQ/ICRzIC4nIHx8IGVjaG8gYWJvcnRlZCwgJD8KCWVjaG8geSB8ICIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHM7IHJlYWQgczsgZWNobyAkPyAkcyAuJyB8fCBlY2hvIGFib3J0ZWQsICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAgeCAuCgkyIC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvcmVhZC1vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktNApkZXNjcmlwdGlvbjoKCURvIG5vdCBwZXJtaXQgYnlwYXNzaW5nIHJlYWRvbmx5IGZvciBmaXJzdCBhcnJheSBpdGVtCnN0ZGluOgoJc2V0IC1BIGFyciAtLSBmb28gYmFyCglyZWFkb25seSBhcnIKCWFycj1iYXoKCXByaW50IC1yIC0tICIke2FycltAXX0iCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9yZWFkWyAtXT9vbmx5LwotLS0KbmFtZTogcmVhZG9ubHktNQpkZXNjcmlwdGlvbjoKCUVuc3VyZSByZWFkb25seSBpcyBpZGVtcG90ZW50CnN0ZGluOgoJcmVhZG9ubHkgeD0xCglyZWFkb25seSB4Ci0tLQpuYW1lOiBzeW50YXgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgbG9uZSBhbXBlcnNhbmQgaXMgYSBzeW50YXggZXJyb3IKc3RkaW46CgkgJgpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46Cgkvc3ludGF4IGVycm9yLwotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgaW5zaWRlIG9mICR7fQpzdGRpbjoKCWFiYz0yCgllY2hvICR7YWJcCgljfQpleHBlY3RlZC1zdGRvdXQ6CgkyCi0tLQpuYW1lOiB4eHgtcXVvdGVkLW5ld2xpbmUtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgXDxuZXdsaW5lPiB3b3JrcyBhdCB0aGUgc3RhcnQgb2YgYSBoZXJlIGRvY3VtZW50CnN0ZGluOgoJY2F0IDw8IEVPXAoJRgoJaGkKCUVPRgpleHBlY3RlZC1zdGRvdXQ6CgloaQotLS0KbmFtZTogeHh4LXF1b3RlZC1uZXdsaW5lLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFw8bmV3bGluZT4gd29ya3MgYXQgdGhlIGVuZCBvZiBhIGhlcmUgZG9jdW1lbnQKc3RkaW46CgljYXQgPDwgRU9GCgloaQoJRU9cCglGCmV4cGVjdGVkLXN0ZG91dDoKCWhpCi0tLQpuYW1lOiB4eHgtbXVsdGktYXNzaWdubWVudC1jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGFzc2lnbm1lbnRzIGluIGEgY29tbWFuZCBhZmZlY3Qgc3Vic2VxdWVudCBhc3NpZ25tZW50cwoJaW4gdGhlIHNhbWUgY29tbWFuZApzdGRpbjoKCUZPTz1hYmMKCUZPTz0xMjMgQkFSPSRGT08KCWVjaG8gJEJBUgpleHBlY3RlZC1zdGRvdXQ6CgkxMjMKLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LWNtZApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgd2l0aCBhCgljb21tYW5kIG5hbWUgbWF0Y2hlcyBQT1NJWC4gU2VlOgoJaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC5zdGFuZGFyZHMucG9zaXguYXVzdGluLmdlbmVyYWwvMTkyNQpzdGRpbjoKCVg9YSBZPWI7IFg9JFkgWT0kWCAiJF9fcHJvZ25hbWUiIC1jICdlY2hvIDEgJFggJFkgLic7IGVjaG8gMiAkWCAkWSAuCgl1bnNldCBYIFkgWgoJWD1hIFk9JHtYPWJ9IFo9JFggIiRfX3Byb2duYW1lIiAtYyAnZWNobyAzICRaIC4nCgl1bnNldCBYIFkgWgoJWD1hIFk9JHtYPWJ9IFo9JFg7IGVjaG8gNCAkWiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYiBhIC4KCTIgYSBiIC4KCTMgYiAuCgk0IGEgLgotLS0KbmFtZTogeHh4LW11bHRpLWFzc2lnbm1lbnQtcG9zaXgtbm9jbWQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBiZWhhdmlvdXIgZm9yIG11bHRpcGxlIGFzc2lnbm1lbnRzIHdpdGggbm8KCWNvbW1hbmQgbmFtZSBtYXRjaGVzIFBPU0lYIChEZWJpYW4gIzMzNDE4MikuIFNlZToKCWh0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmNvbXAuc3RhbmRhcmRzLnBvc2l4LmF1c3Rpbi5nZW5lcmFsLzE5MjUKc3RkaW46CglYPWEgWT1iOyBYPSRZIFk9JFg7IGVjaG8gMSAkWCAkWSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgYiBiIC4KLS0tCm5hbWU6IHh4eC1tdWx0aS1hc3NpZ25tZW50LXBvc2l4LXN1YmFzc2lnbgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGJlaGF2aW91ciBmb3IgbXVsdGlwbGUgYXNzaWdubWVudHMgbWF0Y2hlcyBQT1NJWDoKCS0gVGhlIGFzc2lnbm1lbnQgd29yZHMgc2hhbGwgYmUgZXhwYW5kZWQgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uCgkgIGVudmlyb25tZW50LgoJLSBUaGUgYXNzaWdubWVudHMgaGFwcGVuIGluIHRoZSB0ZW1wb3JhcnkgZXhlY3V0aW9uIGVudmlyb25tZW50LgpzdGRpbjoKCXVuc2V0IFggWSBaCglaPWEgWT0ke1g6PWJ9IHNoIC1jICdlY2hvICskWCsgKyRZKyArJForJwoJZWNobyAvJFgvCgkjIE5vdyBmb3IgdGhlIHNwZWNpYWwgY2FzZToKCXVuc2V0IFggWSBaCglYPSBZPSR7WDo9Yn0gc2ggLWMgJ2VjaG8gKyRYKyArJFkrJwoJZWNobyAvJFgvCmV4cGVjdGVkLXN0ZG91dDoKCSsrICtiKyArYSsKCS9iLwoJKysgK2IrCgkvYi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTEKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgaWYgZXhlYyBzZXRzIGl0J3MgZW52aXJvbm1lbnQgY29ycmVjdGx5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG51bnNldCBSQU5ET01cbmV4cG9ydCB8IHdoaWxlIElGUz0gcmVhZCAtcicgXAoJICAgICdSQU5ET007IGRvIGV2YWwgJ1wnJ3ByaW50IC1yIC0tICIkUkFORE9NPSQnXCcnIiRSQU5ET00iJ1wnXCJcJ1w7IFwKCSAgICBkb25lID5lbnY7IGNobW9kICt4IGVudjsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJRk9PPWJhciBleGVjIGVudgpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS8oXnwuKlxuKUZPTz1iYXJcbi8KLS0tCm5hbWU6IHh4eC1leGVjLWVudmlyb25tZW50LTIKZGVzY3JpcHRpb246CglDaGVjayB0byBtYWtlIHN1cmUgZXhlYyBkb2Vzbid0IGNoYW5nZSBlbnZpcm9ubWVudCBpZiBhIHByb2dyYW0KCWlzbid0IGV4ZWMtZWQKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnVuc2V0IFJBTkRPTVxuZXhwb3J0IHwgd2hpbGUgSUZTPSByZWFkIC1yJyBcCgkgICAgJ1JBTkRPTTsgZG8gZXZhbCAnXCcncHJpbnQgLXIgLS0gIiRSQU5ET009JCdcJyciJFJBTkRPTSInXCdcIlwnXDsgXAoJICAgIGRvbmUgPmVudjsgY2htb2QgK3ggZW52OyBQQVRIPS4kUEFUSFNFUCRQQVRICgllbnYgPmJhcjEKCUZPTz1iYXIgZXhlYzsgZW52ID5iYXIyCgljbXAgLXMgYmFyMSBiYXIyCi0tLQpuYW1lOiBleGVjLWZ1bmN0aW9uLWVudmlyb25tZW50LTEKZGVzY3JpcHRpb246CglDaGVjayBhc3NpZ25tZW50cyBpbiBmdW5jdGlvbiBjYWxscyBhbmQgd2hldGhlciB0aGV5IGFmZmVjdAoJdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGVudmlyb25tZW50CnN0ZGluOgoJZigpIHsgYT0yOyB9OyBnKCkgeyBiPTM7IGVjaG8geSRjLTsgfTsgYT0xIGY7IGI9MjsgYz0xIGcKCWVjaG8geCRhLSRiLSB6JGMtCmV4cGVjdGVkLXN0ZG91dDoKCXkxLQoJeC0zLSB6LQotLS0KbmFtZTogZXhlYy1tb2Rlcm4ta29ybi1zaGVsbApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgZXhlYyBjYW4gZXhlY3V0ZSBhbnkgY29tbWFuZCB0aGF0IG1ha2VzIGl0Cgl0aHJvdWdoIHN5bnRheCBhbmQgcGFyc2VyCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG5lY2hvIHRmJyA+bHEKCWNobW9kICt4IGxxCglQQVRIPSRQV0QKCWV4ZWMgMj4mMQoJZm9vKCkgeyBwcmludCB0d287IH0KCXByaW50ID0xCgkoZXhlYyBwcmludCBvbmUpCglwcmludCA9MgoJKGV4ZWMgZm9vKQoJcHJpbnQgPTMKCShleGVjIGxzKQoJcHJpbnQgPTQKCShleGVjIGxxKQpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS89MVxub25lXG49MlxudHdvXG49M1xuLio6IGxzOiBpbmFjY2Vzc2libGUgb3Igbm90IGZvdW5kXG49NFxudGZcbi8KLS0tCm5hbWU6IGV4ZWMta3NoODgKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGV4ZWMgb25seSBleGVjdXRlcyBhZnRlciBhIFBBVEggc2VhcmNoCmFyZ3VtZW50czogIS1vIXBvc2l4IQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZWNobyB0ZicgPmxxCgljaG1vZCAreCBscQoJUEFUSD0kUFdECglleGVjIDI+JjEKCWZvbygpIHsgcHJpbnQgdHdvOyB9CglwcmludCA9MQoJKGV4ZWMgcHJpbnQgb25lKQoJcHJpbnQgPTIKCShleGVjIGZvbykKCXByaW50ID0zCgkoZXhlYyBscykKCXByaW50ID00CgkoZXhlYyBscSkKZXhwZWN0ZWQtc3Rkb3V0LXBhdHRlcm46CgkvPTFcbi4qOiBwcmludDogaW5hY2Nlc3NpYmxlIG9yIG5vdCBmb3VuZFxuPTJcbi4qOiBmb286IGluYWNjZXNzaWJsZSBvciBub3QgZm91bmRcbj0zXG4uKjogbHM6IGluYWNjZXNzaWJsZSBvciBub3QgZm91bmRcbj00XG50ZlxuLwotLS0KbmFtZTogeHh4LXdoYXQtZG8teW91LWNhbGwtdGhpcy0xCnN0ZGluOgoJZWNobyAiJHtmb286LSJhIn0qIgpleHBlY3RlZC1zdGRvdXQ6CglhKgotLS0KbmFtZTogeHh4LXByZWZpeC1zdHJpcC0xCnN0ZGluOgoJZm9vPSdhIGNkZWYnCgllY2hvICR7Zm9vI2EgY30KZXhwZWN0ZWQtc3Rkb3V0OgoJZGVmCi0tLQpuYW1lOiB4eHgtcHJlZml4LXN0cmlwLTIKc3RkaW46CglzZXQgYSBjCgl4PSdhIGNkZWYnCgllY2hvICR7eCMkKn0KZXhwZWN0ZWQtc3Rkb3V0OgoJZGVmCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTEKc3RkaW46CgllY2hvICR7On0KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvYmFkIHN1YnN0aXR1dGlvbi8KZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogeHh4LXZhcmlhYmxlLXN5bnRheC0yCnN0ZGluOgoJc2V0IDAKCWVjaG8gJHsqOjB9CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHh4eC12YXJpYWJsZS1zeW50YXgtMwpzdGRpbjoKCXNldCAtQSBmb28gMAoJZWNobyAke2Zvb1sqXTowfQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgc3Vic3RpdHV0aW9uLwpleHBlY3RlZC1leGl0OiAxCi0tLQpuYW1lOiB4eHgtdmFyaWFibGUtc3ludGF4LTQKZGVzY3JpcHRpb246CglOb3QgYWxsIGtpbmRzIG9mIHRyaW1zIGFyZSBjdXJyZW50bHkgaW1wb3NzaWJsZSwgY2hlY2sgdGhvc2Ugd2hvIGRvCnN0ZGluOgoJZm9vKCkgewoJCWVjaG8gIjwkKj4gWCR7KjorIH1YIgoJfQoJZm9vIGEgYgoJZm9vICIiIGMKCWZvbyAiIgoJZm9vICIiICIiCglJRlM9OgoJZm9vIGEgYgoJZm9vICIiIGMKCWZvbyAiIgoJZm9vICIiICIiCglJRlM9Cglmb28gYSBiCglmb28gIiIgYwoJZm9vICIiCglmb28gIiIgIiIKZXhwZWN0ZWQtc3Rkb3V0OgoJPGEgYj4gWCBYCgk8IGM+IFggWAoJPD4gWFgKCTwgPiBYIFgKCTxhOmI+IFggWAoJPDpjPiBYIFgKCTw+IFhYCgk8Oj4gWCBYCgk8YWI+IFggWAoJPGM+IFggWAoJPD4gWFgKCTw+IFhYCi0tLQpuYW1lOiB4eHgtc3Vic3RpdHV0aW9uLWV2YWwtb3JkZXIKZGVzY3JpcHRpb246CglDaGVjayBvcmRlciBvZiBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25zCnN0ZGluOgoJaT0xIHg9IHk9CglzZXQgLUEgQSBhYmMgZGVmIEdISSBqIEcgawoJZWNobyAke0FbeD0oaSs9MSldIyR7QVt5PShpKz0yKV19fQoJZWNobyAkeCAkeQpleHBlY3RlZC1zdGRvdXQ6CglISQoJMiA0Ci0tLQpuYW1lOiB4eHgtc3Vic3RpdHV0aW9uLWV2YWwtb3JkZXItMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJdW5zZXQgdmFyCglpPTQyCgk6ICR7dmFyKyR7cVtpPTc3N119fSByZXF1aXJlZCB0byBiZSBsYXp5IGJ5IFBPU0lYCgllY2hvIDE9JGkKCXZhcj1tZW93CglpPTQyCgk6ICR7dmFyKyR7cVtpPTc3N119fSBldmFsIHNpbmNlIHZhciBpcyBub3cgc2V0CgllY2hvIDI9JGkKCXVuc2V0IHZhcgoJaT00MgoJOiAke3ZhciMke3FbaT03NzddfX0gcGF0dGVybiBpcyBuZWVkZWQgZXZlbiBpZiB2YXIgaXMgZW1wdHkKCWVjaG8gMz0kaQoJdmFyPW1lb3cKCWk9NDIKCTogJHt2YXIjJHtxW2k9Nzc3XX19CgllY2hvIDQ9JGkKZXhwZWN0ZWQtc3Rkb3V0OgoJMT00MgoJMj03NzcKCTM9Nzc3Cgk0PTc3NwotLS0KbmFtZTogeHh4LXNldC1vcHRpb24tMQpkZXNjcmlwdGlvbjoKCUNoZWNrIG9wdGlvbiBwYXJzaW5nIGluIHNldApzdGRpbjoKCXNldCAtdnNBIGZvbyAtLSBBIDEgMyAyCgllY2hvICR7Zm9vWypdfQpleHBlY3RlZC1zdGRlcnI6CgllY2hvICR7Zm9vWypdfQpleHBlY3RlZC1zdGRvdXQ6CgkxIDIgMyBBCi0tLQpuYW1lOiB4eHgtZXhlYy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBleGVjIGV4aXRzIGZvciBidWlsdC1pbnMKbmVlZC1jdHR5OiB5ZXMKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJZXhlYyBlY2hvIGhpCgllY2hvIHN0aWxsIGhlcnJlCmV4cGVjdGVkLXN0ZG91dDoKCWhpCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiB4eHgtd2hpbGUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygd2hpbGUgbG9vcHMKCVhYWCBuZWVkIHRvIGRvIHNhbWUgZm9yIGZvci9zZWxlY3QvdW50aWwgbG9vcHMKc3RkaW46CglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgaWYgWyAkaSA9IHh4eCBdIDsgdGhlbgoJCWZhbHNlCgkJY29udGludWUKCSAgICBmaQoJZG9uZQoJZWNobyBsb29wMT0kPwoJCglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgaWYgWyAkaSA9IHh4eCBdIDsgdGhlbgoJCWZhbHNlCgkJYnJlYWsKCSAgICBmaQoJZG9uZQoJZWNobyBsb29wMj0kPwoJCglpPXgKCXdoaWxlIFsgJGkgIT0geHh4IF0gOyBkbwoJICAgIGk9eCRpCgkgICAgZmFsc2UKCWRvbmUKCWVjaG8gbG9vcDM9JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJbG9vcDE9MAoJbG9vcDI9MAoJbG9vcDM9MQotLS0KbmFtZTogeHh4LXN0YXR1cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBibGFuayBsaW5lcyBkb24ndCBjbGVhciAkPwpuZWVkLWN0dHk6IHllcwphcmd1bWVudHM6ICEtaSEKc3RkaW46CgkoZXhpdCAxKQoJZWNobyAkPwoJKGV4aXQgMSkKCQoJZWNobyAkPwoJdHJ1ZQpleHBlY3RlZC1zdGRvdXQ6CgkxCgkxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLiovCi0tLQpuYW1lOiB4eHgtc3RhdHVzLTIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICQ/IGlzIHByZXNlcnZlZCBpbiBzdWJzaGVsbHMsIGluY2x1ZGVzLCB0cmFwcy4Kc3RkaW46CgkoZXhpdCAxKQoJCgllY2hvIGJsYW5rOiAkPwoJCgkoZXhpdCAyKQoJKGVjaG8gc3Vic2hlbGw6ICQ/KQoJCgllY2hvICdlY2hvIGluY2x1ZGU6ICQ/JyA+IGZvbwoJKGV4aXQgMykKCS4gLi9mb28KCQoJdHJhcCAnZWNobyB0cmFwOiAkPycgRVJSCgkoZXhpdCA0KQoJZWNobyBleGl0OiAkPwpleHBlY3RlZC1zdGRvdXQ6CglibGFuazogMQoJc3Vic2hlbGw6IDIKCWluY2x1ZGU6IDMKCXRyYXA6IDQKCWV4aXQ6IDQKLS0tCm5hbWU6IHh4eC1zdGF0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRlc3RzIG9uIGZpbGVzIGFyZSBjb25zaXN0ZW50CgkoZmFpbHMgd2hlbiBydW4gYXMgcm9vdCwgdW5mb3J0dW5hdGVseSkKY2F0ZWdvcnk6IGRpc2FibGVkCnN0ZGluOgoJbWtkaXIgYQoJZWNobyB4ID5hL2IKCXRlc3QgLWUgYS9iOyBlY2hvIDFlICQ/IC4KCXRlc3QgLWYgYS9iOyBlY2hvIDFmICQ/IC4KCWNobW9kIDAgYQoJdGVzdCAtZSBhL2I7IGVjaG8gMmUgJD8gLgoJdGVzdCAtZiBhL2I7IGVjaG8gMmYgJD8gLgoJY2htb2QgNzAwIGEKCXRlc3QgLWUgYS9iOyBlY2hvIDNlICQ/IC4KCXRlc3QgLWYgYS9iOyBlY2hvIDNmICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMWUgMCAuCgkxZiAwIC4KCTJlIDEgLgoJMmYgMSAuCgkzZSAwIC4KCTNmIDAgLgotLS0KbmFtZTogeHh4LWNsZWFuLWNoYXJzLTEKZGVzY3JpcHRpb246CglDaGVjayBNQUdJQyBjaGFyYWN0ZXIgaXMgc3R1ZmZlZCBjb3JyZWN0bHkKc3RkaW46CgllY2hvIGBlY2hvIFujYApleHBlY3RlZC1zdGRvdXQ6CglbowotLS0KbmFtZTogeHh4LXBhcmFtLXN1YnN0LXFtYXJrLTEKZGVzY3JpcHRpb246CglDaGVjayBzdXBwcmVzaW9uIG9mIGVycm9yIG1lc3NhZ2Ugd2l0aCBudWxsIHN0cmluZy4gIEFjY29yZGluZyB0bwoJUE9TSVgsIGl0IHNob3VsZG4ndCBwcmludCB0aGUgZXJyb3IgYXMgJ3dvcmQnIGlzbid0IG9tbWl0dGVkLgoJa3NoODgvOTMsIFNvbGFyaXMgL2Jpbi9zaCBhbmQgL3Vzci94cGc0L2Jpbi9zaCBhbGwgcHJpbnQgdGhlIGVycm9yLgpzdGRpbjoKCXVuc2V0IGZvbwoJeD0KCWVjaG8geCR7Zm9vPyR4fQpleHBlY3RlZC1leGl0OiAxCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL25vdCBzZXQvCi0tLQpuYW1lOiB4eHgtcGFyYW0tc3Vic3QtcW1hcmstbmFtZXNwZWMKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsIG5hbWVzIGFyZSBvdXRwdXQgY29ycmVjdGx5CnN0ZGluOgoJZG9pdCgpIHsKCQkiJF9fcHJvZ25hbWUiIC1jICIkQCIgPm8xIDI+bzIKCQlydj0kPwoJCWVjaG8gUkVUVkFMOiAkcnYKCQlzZWQgLWUgInMBXiR7X19wcm9nbmFtZSUuZXhlfVwuKmUqeCplKjogAVBST0c6IAEiIC1lICdzL14vU1RET1VUOiAvZycgPG8xCgkJc2VkIC1lICJzAV4ke19fcHJvZ25hbWUlLmV4ZX1cLiplKngqZSo6IAFQUk9HOiABIiAtZSAncy9eL1NUREVSUjogL2cnIDxvMgoJfQoJZG9pdCAnZWNobyAkezF4fScKCWRvaXQgJ2VjaG8gIiR7MXh9IicKCWRvaXQgJ2VjaG8gJHsxP30nCglkb2l0ICdlY2hvICR7MTk/fScKCWRvaXQgJ2VjaG8gJHshOj99JwoJZG9pdCAtdSAnZWNobyAkeyo6P30nIGZvbyAiIgpleHBlY3RlZC1zdGRvdXQ6CglSRVRWQUw6IDEKCVNUREVSUjogUFJPRzogJHsxeH06IGJhZCBzdWJzdGl0dXRpb24KCVJFVFZBTDogMQoJU1RERVJSOiBQUk9HOiAkezF4fTogYmFkIHN1YnN0aXR1dGlvbgoJUkVUVkFMOiAxCglTVERFUlI6IFBST0c6IDE6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCVJFVFZBTDogMQoJU1RERVJSOiBQUk9HOiAxOTogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJUkVUVkFMOiAxCglTVERFUlI6IFBST0c6ICE6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCVJFVFZBTDogMQoJU1RERVJSOiBmb286ICR7Kjo/fTogYmFkIHN1YnN0aXR1dGlvbgotLS0KbmFtZTogeHh4LXBhcmFtLV8tMQojIGZhaWxzIGR1ZSB0byB3ZWlyZG5lc3Mgb2YgZXhlY3Ygc3R1ZmYKY2F0ZWdvcnk6ICFvczp1d2luLW50CmRlc2NyaXB0aW9uOgoJQ2hlY2sgYyBmbGFnIGlzIHNldC4KYXJndW1lbnRzOiAhLWMhZWNobyAiWyQtXSIhCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOiAvXlxbLipjLipcXSQvCi0tLQpuYW1lOiB0aWxkZS1leHBhbmQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRpbGRlIGV4cGFuc2lvbiBhZnRlciBlcXVhbCBzaWducwplbnYtc2V0dXA6ICFIT01FPS9zd2VldCEKc3RkaW46CgllY2hvICR7QT1hPX1+IGI9fiBjPWR+IH4KCWV4cG9ydCBlPX4gZj1kfgoJY29tbWFuZCBjb21tYW5kIGV4cG9ydCBnPX4gaD1kfgoJZWNobyAiLiAkZSAuICRmIC4iCgllY2hvICIuICRnIC4gJGggLiIKCXNldCAtbyBwb3NpeAoJdW5zZXQgQSBlIGYgZyBoCgllY2hvICR7QT1hPX1+IGI9fiBjPWR+IH4KCWV4cG9ydCBlPX4gZj1kfgoJY29tbWFuZCBjb21tYW5kIGV4cG9ydCBnPX4gaD1kfgoJZWNobyAiLiAkZSAuICRmIC4iCgllY2hvICIuICRnIC4gJGggLiIKZXhwZWN0ZWQtc3Rkb3V0OgoJYT0vc3dlZXQgYj0vc3dlZXQgYz1kfiAvc3dlZXQKCS4gL3N3ZWV0IC4gZH4gLgoJLiAvc3dlZXQgLiBkfiAuCglhPX4gYj1+IGM9ZH4gL3N3ZWV0CgkuIC9zd2VldCAuIGR+IC4KCS4gL3N3ZWV0IC4gZH4gLgotLS0KbmFtZTogdGlsZGUtZXhwYW5kLTIKZGVzY3JpcHRpb246CglDaGVjayB0aWxkZSBleHBhbnNpb24gd29ya3MKZW52LXNldHVwOiAhSE9NRT0vc3dlZXQhCnN0ZGluOgoJOj4nYz1hJwoJdHlwZXNldCBjPVthYl0KCTo+J2Q9YScKCXg9dHlwZXNldDsgJHggZD1bYWJdCgllY2hvICI8JGM+IiAiPCRkPiIKCXdkPSRQV0QKCWNkIC8KCXBsdXM9JChwcmludCAtciAtLSB+KykKCW1pbnVzPSQocHJpbnQgLXIgLS0gfi0pCgluaXg9JChwcmludCAtciAtLSB+KQoJW1sgJHBsdXMgPSAvIF1dOyBlY2hvIG9uZSAkPyAuCglbWyAkbWludXMgPSAiJHdkIiBdXTsgZWNobyB0d28gJD8gLgoJW1sgJG5peCA9IC9zd2VldCBdXTsgZWNobyBuaXggJD8gLgpleHBlY3RlZC1zdGRvdXQ6Cgk8W2FiXT4gPGE+CglvbmUgMCAuCgl0d28gMCAuCgluaXggMCAuCi0tLQpuYW1lOiB0aWxkZS1leHBhbmQtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIG1vc3RseSBBdXN0aW4gMzUxIHN0dWZmCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXNldCAiMSBiPTIiICIzIGQ9NCIKCWV4cG9ydCBhPSQxIFxjPSQyCglzaG93YXJncyAxICIkYSIgIiRiIiAiJGMiICIkZCIKCXVuc2V0IGEgYiBjIGQKCUhPTUU9L3RtcAoJZXhwb3J0IFxhPX4gYj1+Cgljb21tYW5kIGV4cG9ydCBjPX4KCWJ1aWx0aW4gZXhwb3J0IGQ9fgoJXFxidWlsdGluIGV4cG9ydCBlPX4KCXNob3dhcmdzIDIgIiRhIiAiJGIiICIkYyIgIiRkIiAiJGUiIGtzaAoJdW5zZXQgYSBiIGMgZCBlCglzZXQgLW8gcG9zaXgKCWV4cG9ydCBcYT1+IGI9fgoJY29tbWFuZCBleHBvcnQgYz1+CglidWlsdGluIGV4cG9ydCBkPX4KCVxcYnVpbHRpbiBleHBvcnQgZT1+CglzaG93YXJncyAzICIkYSIgIiRiIiAiJGMiICIkZCIgIiRlIiBwb3NpeAoJdW5zZXQgYSBiIGMgZCBlCglzZXQgK28gcG9zaXgKCWV4cG9ydCBhPSQxCglzaG93YXJncyA0ICIkYSIgIiRiIiBrc2gKCXVuc2V0IGEgYgoJc2hvd2FyZ3MgNSBhPSQxIGtzaAoJZXhwb3J0IFxhPSQxCglzaG93YXJncyA2ICIkYSIgIiRiIiBrc2gKCXVuc2V0IGEgYgoJc2V0IC1vIHBvc2l4CglleHBvcnQgYT0kMQoJc2hvd2FyZ3MgNyAiJGEiICIkYiIgcG9zaXgKCXVuc2V0IGEgYgoJc2hvd2FyZ3MgOCBhPSQxIHBvc2l4CglleHBvcnQgXGE9JDEKCXNob3dhcmdzIDkgIiRhIiAiJGIiIHBvc2l4Cgl1bnNldCBhIGIKCXNldCArbyBwb3NpeAoJY29tbWFuZCBlY2hvIDEwIGtzaCBhPX4KCWNvbW1hbmQgY29tbWFuZCBleHBvcnQgYT1+CglzaG93YXJncyAxMSAiJGEiCgl1bnNldCBhCglzZXQgLW8gcG9zaXgKCWNvbW1hbmQgZWNobyAxMiBwb3NpeCBhPX4KCWNvbW1hbmQgY29tbWFuZCBleHBvcnQgYT1+CglzaG93YXJncyAxMyAiJGEiCgl1bnNldCBhCgkjIHVuc3BlY2lmaWVkIHdoZXRoZXIgL3RtcCBvciB+Cgl2YXI9ZXhwb3J0OyBjb21tYW5kICR2YXIgYT1+CglzaG93YXJncyAxNCAiJGEiCgllY2hvICdlY2hvICI8JGZvbz4iJyA+YmFyCgkiJF9fcHJvZ25hbWUiIGJhcgoJdmFyPWZvbwoJZXhwb3J0ICR2YXI9MQoJIiRfX3Byb2duYW1lIiBiYXIKCWV4cG9ydCAkdmFyPX4KCSIkX19wcm9nbmFtZSIgYmFyCgkjIHVuc3BlY2lmaWVkCgljb21tYW5kIC0tIGV4cG9ydCBhPX4KCXNob3dhcmdzIDE4ICIkYSIKCXNldCAtQSBibGEKCXR5cGVzZXQgYmxhWzFdPX46fgoJdHlwZXNldCAtZyBnYmw9fiBnMj0kMQoJbG9jYWwgbGNsPX4gbDI9JDEKCXJlYWRvbmx5IHJvPX4gcjI9JDEKCXNob3dhcmdzIDE5ICIke2JsYVsxXX0iIGE9fiAiJGdibCIgIiRsY2wiICIkcm8iICIkZzIiICIkbDIiICIkcjIiCglzZXQgK28gcG9zaXgKCWVjaG8gIjIwIHNvbWUgYXJiaXRyYXJ5IHN0dWZmICI9fgoJc2V0IC1vIHBvc2l4CgllY2hvICIyMSBzb21lIGFyYml0cmFyeSBzdHVmZiAiPX4KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDwxIGI9Mj4gPD4gPDM+IDw0PiAuCgk8Mj4gPC90bXA+IDwvdG1wPiA8L3RtcD4gPC90bXA+IDwvdG1wPiA8a3NoPiAuCgk8Mz4gPH4+IDwvdG1wPiA8L3RtcD4gPH4+IDwvdG1wPiA8cG9zaXg+IC4KCTw0PiA8MSBiPTI+IDw+IDxrc2g+IC4KCTw1PiA8YT0xPiA8Yj0yPiA8a3NoPiAuCgk8Nj4gPDE+IDwyPiA8a3NoPiAuCgk8Nz4gPDEgYj0yPiA8PiA8cG9zaXg+IC4KCTw4PiA8YT0xPiA8Yj0yPiA8cG9zaXg+IC4KCTw5PiA8MT4gPDI+IDxwb3NpeD4gLgoJMTAga3NoIGE9L3RtcAoJPDExPiA8L3RtcD4gLgoJMTIgcG9zaXggYT1+Cgk8MTM+IDwvdG1wPiAuCgk8MTQ+IDx+PiAuCgk8PgoJPDE+Cgk8fj4KCTwxOD4gPH4+IC4KCTwxOT4gPC90bXA6L3RtcD4gPGE9fj4gPC90bXA+IDwvdG1wPiA8L3RtcD4gPDEgYj0yPiA8MSBiPTI+IDwxIGI9Mj4gLgoJMjAgc29tZSBhcmJpdHJhcnkgc3R1ZmYgPS90bXAKCTIxIHNvbWUgYXJiaXRyYXJ5IHN0dWZmID1+Ci0tLQpuYW1lOiBleGl0LWVyci0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgY29uZGl0aW9ucwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCgljaG1vZCAreCBlbnYgZmFsc2UKCVBBVEg9LiRQQVRIU0VQJFBBVEgKCXNldCAtZXgKCWVudiBmYWxzZSAmJiBlY2hvIHNvbWV0aGluZwoJZWNobyBFTkQKZXhwZWN0ZWQtc3Rkb3V0OgoJRU5ECmV4cGVjdGVkLXN0ZGVycjoKCSsgZW52IGZhbHNlCgkrIGVjaG8gRU5ECi0tLQpuYW1lOiBleGl0LWVyci0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSAiZXhpdCBvbiBlcnJvciIgZWRnZSBjb25kaXRpb25zIChQT1NJWGx5KQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZXhlYyAiJDEiJyA+ZW52CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMScgPmZhbHNlCglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmV4aXQgMCcgPnRydWUKCWNobW9kICt4IGVudiBmYWxzZQoJUEFUSD0uJFBBVEhTRVAkUEFUSAoJc2V0IC1leAoJaWYgZW52IHRydWU7IHRoZW4KCQllbnYgZmFsc2UgJiYgZWNobyBzb21ldGhpbmcKCWZpCgllY2hvIEVORApleHBlY3RlZC1zdGRvdXQ6CglFTkQKZXhwZWN0ZWQtc3RkZXJyOgoJKyBlbnYgdHJ1ZQoJKyBlbnYgZmFsc2UKCSsgZWNobyBFTkQKLS0tCm5hbWU6IGV4aXQtZXJyLTMKZGVzY3JpcHRpb246CglwZGtzaCByZWdyZXNzaW9uIHdoaWNoIEFUJlQga3NoIGRvZXMgcmlnaHQKCVRGTSBzYXlzOiBbc2V0XSAtZSB8IGVycmV4aXQKCQlFeGl0IChhZnRlciBleGVjdXRpbmcgdGhlIEVSUiB0cmFwKSAuLi4Kc3RkaW46Cgl0cmFwICdlY2hvIEVYSVQnIEVYSVQKCXRyYXAgJ2VjaG8gRVJSJyBFUlIKCXNldCAtZQoJY2QgL1hYWFhYIDI+L2Rldi9udWxsCgllY2hvIERPTkUKCWV4aXQgMApleHBlY3RlZC1zdGRvdXQ6CglFUlIKCUVYSVQKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBleGl0LWVyci00CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoUE9TSVgpCnN0ZGluOgoJc2V0IC1lCgllY2hvIHByZQoJaWYgdHJ1ZSA7IHRoZW4KCQlmYWxzZSAmJiBlY2hvIGZvbwoJZmkKCWVjaG8gYmFyCmV4cGVjdGVkLXN0ZG91dDoKCXByZQoJYmFyCi0tLQpuYW1lOiBleGl0LWVyci01CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoUE9TSVgpCnN0ZGluOgoJc2V0IC1lCglmb28oKSB7CgkJd2hpbGUgWyAiJDEiIF07IGRvCgkJCWZvciBFIGluICR4OyBkbwoJCQkJWyAiJDEiID0gIiRFIiBdICYmIHsgc2hpZnQgOyBjb250aW51ZSAyIDsgfQoJCQlkb25lCgkJCXg9IiR4ICQxIgoJCQlzaGlmdAoJCWRvbmUKCQllY2hvICR4Cgl9CgllY2hvIHByZQoJZm9vIGEgYiBiIGMKCWVjaG8gcG9zdApleHBlY3RlZC1zdGRvdXQ6CglwcmUKCWEgYiBjCglwb3N0Ci0tLQpuYW1lOiBleGl0LWVyci02CmRlc2NyaXB0aW9uOgoJInNldCAtZSIgdGVzdCBzdWl0ZSAoQlNEIG1ha2UpCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46Cglta2RpciB6ZCB6ZC9hIHpkL2IKCXByaW50ICdhbGw6XG5cdEBlY2hvIGVpbnNcblx0QGV4aXQgNDJcbicgPnpkL2EvTWFrZWZpbGUKCXByaW50ICdhbGw6XG5cdEBlY2hvIHp3ZWlcbicgPnpkL2IvTWFrZWZpbGUKCXdkPSQocHdkKQoJc2V0IC1lCglmb3IgZW50cnkgaW4gYSBiOyBkbyAoICBzZXQgLWU7ICBpZiBbWyAtZCAkd2QvemQvJGVudHJ5LmkzODYgXV07IHRoZW4gIF9uZXdkaXJfPSIkZW50cnkuaTM4NiI7ICBlbHNlICBfbmV3ZGlyXz0iJGVudHJ5IjsgIGZpOyAgaWYgW1sgLXogJF9USElTRElSXyBdXTsgdGhlbiAgX25leHRkaXJfPSIkX25ld2Rpcl8iOyAgZWxzZSAgX25leHRkaXJfPSIkX1RISVNESVJfLyRfbmV3ZGlyXyI7ICBmaTsgIF9tYWtlZmlsZV9zcGVjXz07ICBbWyAhIC1mICR3ZC96ZC8kX25ld2Rpcl8vTWFrZWZpbGUuYnNkLXdyYXBwZXIgXV0gIHx8IF9tYWtlZmlsZV9zcGVjXz0iLWYgTWFrZWZpbGUuYnNkLXdyYXBwZXIiOyAgc3Vic2tpcGRpcj07ICBmb3Igc2tpcGRpciBpbiA7IGRvICBzdWJlbnRyeT0ke3NraXBkaXIjJGVudHJ5fTsgIGlmIFtbICRzdWJlbnRyeSAhPSAkc2tpcGRpciBdXTsgdGhlbiAgaWYgW1sgLXogJHN1YmVudHJ5IF1dOyB0aGVuICBlY2hvICIoJF9uZXh0ZGlyXyBza2lwcGVkKSI7ICBicmVhazsgIGZpOyAgc3Vic2tpcGRpcj0iJHN1YnNraXBkaXIgJHtzdWJlbnRyeSMvfSI7ICBmaTsgIGRvbmU7ICBpZiBbWyAteiAkc2tpcGRpciB8fCAtbiAkc3ViZW50cnkgXV07IHRoZW4gIGVjaG8gIj09PT4gJF9uZXh0ZGlyXyI7ICBjZCAkd2QvemQvJF9uZXdkaXJfOyAgbWFrZSBTS0lQRElSPSIkc3Vic2tpcGRpciIgJF9tYWtlZmlsZV9zcGVjXyAgX1RISVNESVJfPSIkX25leHRkaXJfIiAgIGFsbDsgIGZpOyAgKSBkb25lIDI+JjEgfCBzZWQgInMhJHdkIVdEIWciCmV4cGVjdGVkLXN0ZG91dDoKCT09PT4gYQoJZWlucwoJKioqIEVycm9yIGNvZGUgNDIKCQoJU3RvcCBpbiBXRC96ZC9hIChsaW5lIDIgb2YgTWFrZWZpbGUpLgotLS0KbmFtZTogZXhpdC1lcnItNwpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHJlZ3Jlc3Npb24gKExQIzExMDQ1NDMpCnN0ZGluOgoJc2V0IC1lCglibGEoKSB7CgkJWyAteCAkUFdEL25vbmV4aXN0YW50IF0gJiYgJFBXRC9ub25leGlzdGFudAoJfQoJZWNobyB4CglibGEKCWVjaG8geSQ/CmV4cGVjdGVkLXN0ZG91dDoKCXgKZXhwZWN0ZWQtZXhpdDogMQotLS0KbmFtZTogZXhpdC1lcnItOApkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHJlZ3Jlc3Npb24gKERlYmlhbiAjNzAwNTI2KQpzdGRpbjoKCXNldCAtZQoJX2RiX2NtZCgpIHsgcmV0dXJuICQxOyB9CglkYl9pbnB1dCgpIHsgX2RiX2NtZCAzMDsgfQoJZGJfZ28oKSB7IF9kYl9jbWQgMDsgfQoJZGJfaW5wdXQgfHwgOgoJZGJfZ28KCWV4aXQgMAotLS0KbmFtZTogZXhpdC1lcnItOQpkZXNjcmlwdGlvbjoKCSJzZXQgLWUiIHZlcnN1cyBiYW5nIHBpcGVsaW5lcwpzdGRpbjoKCXNldCAtZQoJISBmYWxzZSB8IGZhbHNlCgllY2hvIDEgb2sKCSEgZmFsc2UgJiYgZmFsc2UKCWVjaG8gMiB3cm9uZwpleHBlY3RlZC1zdGRvdXQ6CgkxIG9rCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IGV4aXQtZXJyLTEwCmRlc2NyaXB0aW9uOgoJRGViaWFuICMyNjkwNjcgKGNmLiByZWdyZXNzaW9uLTM4IGJ1dCB3aXRoIGV2YWwpCmFyZ3VtZW50czogIS1lIQpzdGRpbjoKCWV2YWwgZmFsc2UgfHwgdHJ1ZQoJZWNobyA9ICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPSAwIC4KLS0tCm5hbWU6IGV4aXQtZXJyLTExCmRlc2NyaXB0aW9uOgoJRml4IC1lIGluc2lkZSBldmFsLCBmcm9tIE1hcnRpam4gRGVra2VyOyBleHBlY3RlZC1zdGRvdXQgZnJvbSBrc2g5MwpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2V2YWwgJ1wnJ2VjaG8gJHstLy9bIWVoXX07IGZhbHNlOyBlY2hvIHBoYW50b20gZSdcJyc7IGVjaG8geCQ/JwoJZWNobyA9ICQ/CgkiJF9fcHJvZ25hbWUiIC1lYyAnZXZhbCAnXCcnZWNobyAkey0vL1shZWhdfTsgZmFsc2U7IGVjaG8gcGhhbnRvbSBlJ1wnJzsgZWNobyB4JD8nCgllY2hvID0gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJaAoJcGhhbnRvbSBlCgl4MAoJPSAwCgllaAoJPSAxCi0tLQpuYW1lOiBleGl0LWVub2VudC0xCmRlc2NyaXB0aW9uOgoJU1VTdjQgc2F5cyB0aGF0IHRoZSBzaGVsbCBzaG91bGQgZXhpdCB3aXRoIDEyNi8xMjcgaW4gc29tZSBzaXR1YXRpb25zCnN0ZGluOgoJaT0wCgkoZWNobzsgZWNobyA6KSA+eAoJIiRfX3Byb2duYW1lIiAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCSIkX19wcm9nbmFtZSIgLWMgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCgllY2hvIGV4aXQgNDIgPngKCSIkX19wcm9nbmFtZSIgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCgkiJF9fcHJvZ25hbWUiIC1jIC4veCA+L2Rldi9udWxsIDI+JjE7IHI9JD87IGVjaG8gJCgoaSsrKSkgJHIgLgoJcm0gLWYgeAoJIiRfX3Byb2duYW1lIiAuL3ggPi9kZXYvbnVsbCAyPiYxOyByPSQ/OyBlY2hvICQoKGkrKykpICRyIC4KCSIkX19wcm9nbmFtZSIgLWMgLi94ID4vZGV2L251bGwgMj4mMTsgcj0kPzsgZWNobyAkKChpKyspKSAkciAuCmV4cGVjdGVkLXN0ZG91dDoKCTAgMCAuCgkxIDEyNiAuCgkyIDQyIC4KCTMgMTI2IC4KCTQgMTI3IC4KCTUgMTI3IC4KLS0tCm5hbWU6IGV4aXQtZXZhbC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgZXZhbCB2cyBzdWJzdGl0dXRpb24gZXhpdCBjb2RlcyAoa3NoOTMgYWxpa2UpCnN0ZGluOgoJKGV4aXQgMTIpCglldmFsICQoZmFsc2UpCgllY2hvIEEgJD8KCShleGl0IDEyKQoJZXZhbCAnICQoZmFsc2UpJwoJZWNobyBCICQ/CgkoZXhpdCAxMikKCWV2YWwgIiAkKGZhbHNlKSIKCWVjaG8gQyAkPwoJKGV4aXQgMTIpCglldmFsICJldmFsICQoZmFsc2UpIgoJZWNobyBEICQ/CgkoZXhpdCAxMikKCWV2YWwgJ2V2YWwgJyIkKGZhbHNlKSIKCWVjaG8gRSAkPwoJSUZTPSIkSUZTOiIKCShleGl0IDEyKQoJZXZhbCAkKGVjaG8gOjsgZmFsc2UpCgllY2hvIEYgJD8KCWVjaG8gLW4gIkcgIgoJKGV4aXQgMTIpCglldmFsICdlY2hvICQ/JwoJZWNobyBIICQ/CmV4cGVjdGVkLXN0ZG91dDoKCUEgMAoJQiAxCglDIDAKCUQgMAoJRSAwCglGIDAKCUcgMTIKCUggMAotLS0KbmFtZTogZXhpdC10cmFwLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICJleGl0IiB3aXRoIG5vIGFyZ3VtZW50cyBiZWhhdmVzIFNVU3Y0IGNvbmZvcm1hbnQuCnN0ZGluOgoJdHJhcCAnZWNobyBoaTsgZXhpdCcgRVhJVAoJZXhpdCA5CmV4cGVjdGVkLXN0ZG91dDoKCWhpCmV4cGVjdGVkLWV4aXQ6IDkKLS0tCm5hbWU6IGV4aXQtdHJhcC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBFUlIgYW5kIEVYSVQgdHJhcHMgYXJlIHJ1biBqdXN0IGxpa2UgR05VIGJhc2ggZG9lcy4KCWtzaDkzIHJ1bnMgRVJ0cmFwIGFmdGVyIOKAnHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXTigJ0gKHdoaWNoIG1rc2gKCXVzZWQgdG8gZG8pIGJ1dCAoYnVnKSBjb250aW51ZXMg4oCcYW5kIG91dOKAnSwgZXhpdCAwLCBpbiArZSBldmFsLXVuZGVmLgpmaWxlLXNldHVwOiBmaWxlIDY0NCAieCIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICJhbmQgcnVuICQyIgoJZXZhbCAkMgoJZWNobyBhbmQgb3V0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4dCIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICdhbmQgcnVuIHRydWUnCgl0cnVlCgllY2hvIGFuZCBvdXQKZmlsZS1zZXR1cDogZmlsZSA2NDQgInhmIgoJdj07IHVuc2V0IHYKCXRyYXAgJ2VjaG8gRVh0cmFwJyBFWElUCgl0cmFwICdlY2hvIEVSdHJhcCcgRVJSCglzZXQgJDEKCWVjaG8gJ2FuZCBydW4gZmFsc2UnCglmYWxzZQoJZWNobyBhbmQgb3V0CmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICJ4dSIKCXY9OyB1bnNldCB2Cgl0cmFwICdlY2hvIEVYdHJhcCcgRVhJVAoJdHJhcCAnZWNobyBFUnRyYXAnIEVSUgoJc2V0ICQxCgllY2hvICdhbmQgcnVuICR7dj99JwoJJHt2P30KCWVjaG8gYW5kIG91dApzdGRpbjoKCXJ1bnRlc3QoKSB7CgkJcm0gLWYgcmMKCQkoCgkJCSIkX19wcm9nbmFtZSIgIiRAIgoJCQllY2hvICQ/ID5yYwoJCSkgMj4mMSB8IHNlZCBcCgkJICAgIC1lICdzL3BhcmFtZXRlciBub3Qgc2V0L3BhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQvJyBcCgkJICAgIC1lICdzL1tbXTZdLy8nIC1lICdzLzogZXZhbDogbGluZSAxLy8nIC1lICdzLzogbGluZSA2Ly8nIFwKCQkgICAgLWUgInMBXiR7X19wcm9nbmFtZSUuZXhlfVwuKmUqeCplKjogPHN0ZGluPlxbWzAtOV0qXQFQUk9HASIKCX0KCXhlPS1lCgllY2hvIDogJHhlCglydW50ZXN0IHggJHhlIHRydWUKCWVjaG8gPSBldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgZmFsc2UKCWVjaG8gPSBldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHggJHhlICcke3Y/fScKCWVjaG8gPSBldmFsLXVuZGVmICQoPHJjKSAuCglydW50ZXN0IHh0ICR4ZQoJZWNobyA9IG5vZXZhbC10cnVlICQoPHJjKSAuCglydW50ZXN0IHhmICR4ZQoJZWNobyA9IG5vZXZhbC1mYWxzZSAkKDxyYykgLgoJcnVudGVzdCB4dSAkeGUKCWVjaG8gPSBub2V2YWwtdW5kZWYgJCg8cmMpIC4KCXhlPStlCgllY2hvIDogJHhlCglydW50ZXN0IHggJHhlIHRydWUKCWVjaG8gPSBldmFsLXRydWUgJCg8cmMpIC4KCXJ1bnRlc3QgeCAkeGUgZmFsc2UKCWVjaG8gPSBldmFsLWZhbHNlICQoPHJjKSAuCglydW50ZXN0IHggJHhlICcke3Y/fScKCWVjaG8gPSBldmFsLXVuZGVmICQoPHJjKSAuCglydW50ZXN0IHh0ICR4ZQoJZWNobyA9IG5vZXZhbC10cnVlICQoPHJjKSAuCglydW50ZXN0IHhmICR4ZQoJZWNobyA9IG5vZXZhbC1mYWxzZSAkKDxyYykgLgoJcnVudGVzdCB4dSAkeGUKCWVjaG8gPSBub2V2YWwtdW5kZWYgJCg8cmMpIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJOiAtZQoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC10cnVlIDAgLgoJYW5kIHJ1biBmYWxzZQoJRVJ0cmFwCglFWHRyYXAKCT0gZXZhbC1mYWxzZSAxIC4KCWFuZCBydW4gJHt2P30KCXg6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVYdHJhcAoJPSBldmFsLXVuZGVmIDEgLgoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gbm9ldmFsLXRydWUgMCAuCglhbmQgcnVuIGZhbHNlCglFUnRyYXAKCUVYdHJhcAoJPSBub2V2YWwtZmFsc2UgMSAuCglhbmQgcnVuICR7dj99Cgl4dTogdjogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJRVh0cmFwCgk9IG5vZXZhbC11bmRlZiAxIC4KCTogK2UKCWFuZCBydW4gdHJ1ZQoJYW5kIG91dAoJRVh0cmFwCgk9IGV2YWwtdHJ1ZSAwIC4KCWFuZCBydW4gZmFsc2UKCUVSdHJhcAoJRVJ0cmFwCglhbmQgb3V0CglFWHRyYXAKCT0gZXZhbC1mYWxzZSAwIC4KCWFuZCBydW4gJHt2P30KCXg6IHY6IHBhcmFtZXRlciBudWxsIG9yIG5vdCBzZXQKCUVYdHJhcAoJPSBldmFsLXVuZGVmIDEgLgoJYW5kIHJ1biB0cnVlCglhbmQgb3V0CglFWHRyYXAKCT0gbm9ldmFsLXRydWUgMCAuCglhbmQgcnVuIGZhbHNlCglFUnRyYXAKCWFuZCBvdXQKCUVYdHJhcAoJPSBub2V2YWwtZmFsc2UgMCAuCglhbmQgcnVuICR7dj99Cgl4dTogdjogcGFyYW1ldGVyIG51bGwgb3Igbm90IHNldAoJRVh0cmFwCgk9IG5vZXZhbC11bmRlZiAxIC4KLS0tCm5hbWU6IGV4aXQtdHJhcC0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgRVhJVCB0cmFwIGlzIHJ1biBpbiBtYW55IHBsYWNlcywgRGViaWFuICM5MTAyNzYKc3RkaW46Cglma3QoKSB7CgkJdHJhcCAtLSAiZWNobyAkMSA+JjIiIEVYSVQKCX0KCWZrdCBzaGVsbF9leGl0CgkkKGZrdCBmbl9leGl0KQoJJCh0cmFwIC0tICJlY2hvIGNvbXN1Yl9leGl0ID4mMiIgRVhJVCkKCSh0cmFwIC0tICJlY2hvIHN1YnNoZWxsX2V4aXQgPiYyIiBFWElUKQpleHBlY3RlZC1zdGRlcnI6Cglmbl9leGl0Cgljb21zdWJfZXhpdAoJc3Vic2hlbGxfZXhpdAoJc2hlbGxfZXhpdAotLS0KbmFtZTogZXhpdC10cmFwLWludGVyYWN0aXZlCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBpbnRlcmFjdGl2ZSBzaGVsbCBkb2Vzbid0IGV4aXQgdmlhIEVYSVQgdHJhcCBvbiBzeW50YXggZXJyb3IKYXJndW1lbnRzOiAhLWkhCnN0ZGluOgoJdHJhcCAtLSBFWElUCgllY2hvIFN5bnRheCBlcnJvciA8CgllY2hvICdBZnRlciBlcnJvciAxJwoJdHJhcCAnZWNobyBFeGl0IHRyYXAnIEVYSVQKCWVjaG8gU3ludGF4IGVycm9yIDwKCWVjaG8gJ0FmdGVyIGVycm9yIDInCgl0cmFwICdlY2hvIEV4aXQgdHJhcCcgRVhJVAoJZXhpdAoJZWNobyAnQWZ0ZXIgZXhpdCcKZXhwZWN0ZWQtc3Rkb3V0OgoJQWZ0ZXIgZXJyb3IgMQoJQWZ0ZXIgZXJyb3IgMgoJRXhpdCB0cmFwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL3N5bnRheCBlcnJvcjogdW5leHBlY3RlZCAnbmV3bGluZScvCi0tLQpuYW1lOiB0ZXN0LXN0bHQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGVzdCBhbHNvIGNhbiBoYW5kbGUgc3RyaW5nMSA8IHN0cmluZzIgZXRjLgpzdGRpbjoKCXRlc3QgMjAwNS8xMC8wOCAnPCcgMjAwNS8wOC8yMSAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgoJdGVzdCAyMDA1LzA4LzIxIFw8IDIwMDUvMTAvMDggJiYgZWNobyBqYSB8fCBlY2hvIG5laW4KCXRlc3QgMjAwNS8xMC8wOCAnPicgMjAwNS8wOC8yMSAmJiBlY2hvIGphIHx8IGVjaG8gbmVpbgoJdGVzdCAyMDA1LzA4LzIxIFw+IDIwMDUvMTAvMDggJiYgZWNobyBqYSB8fCBlY2hvIG5laW4KZXhwZWN0ZWQtc3Rkb3V0OgoJbmVpbgoJamEKCWphCgluZWluCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAhL3VuZXhwZWN0ZWQgb3AvCi0tLQpuYW1lOiB0ZXN0LXN0ci1wYXR0ZXJuCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBbWyB4ID0gJHkgXV0gY2FuIHRha2UgZXh0Z2xvYnMsIGxpa2Uga3NoOTMKc3RkaW46CglbWyAtbiAkQkFTSF9WRVJTSU9OIF1dICYmIHNob3B0IC1zIGV4dGdsb2IKCWZ1bmN0aW9uIG9uZSB7CgkJbj0kMSB4PSQyIHk9JDMgej0kezQ6LSQzfQoJCVtbICR4ID0gJHkgXV07IGE9JD8KCQlbWyAkeCA9ICIkeSIgXV07IGI9JD8KCQlldmFsICdbWyAkeCA9ICciJHoiJyBdXTsgYz0kPycKCQlldmFsICdbWyAkeCA9ICInIiR6IiciIF1dOyBkPSQ/JwoJCWVjaG8gJG4gJGEgJGIgJGMgJGQgLgoJfQoJeD0nYVwnCglbWyAkeCA9IGFcICBdXTsgZWNobyAwMSAkPyAuCglbWyAkeCA9IGFcXCBdXTsgZWNobyAwMiAkPyAuCglvbmUgMDMgJ2FcJwknYVwnCSdhXFwnCglvbmUgMDQgJ2FcYicJJ2FcYicKCW9uZSAwNSAnYVxiJwknYVxcYicKCW9uZSAwNiAnZm9vJwknZisobyknCglvbmUgMDcgJ2YrKG8pJwknZisobyknCglvbmUgMDggJ2YrKG8nCSdmKyhvJwknZitcKG8nCglvbmUgMDkgZm9vCSdmKyhvJwknZitcKG8nCglvbmUgMTAgYWJjZGUJJ2FcKmUnCglvbmUgMTEgJ2EqZScJJ2FcKmUnCglvbmUgMTIgJ2FcKmUnCSdhXCplJwoJZWNobyBleHRyYXM6Cgl4PSdmKyhvJwoJej0nZisobycKCWV2YWwgJ1tbICR4ID0gIiciJHoiJyIgXV07IGVjaG8gMTQgJD8gIigwODo0KSIgLicKCXg9Zm9vCglldmFsICdbWyAkeCA9ICInIiR6IiciIF1dOyBlY2hvIDE1ICQ/ICIoMDk6NCkiIC4nCmV4cGVjdGVkLXN0ZG91dDoKCTAxIDEgLgoJMDIgMCAuCgkwMyAwIDAgMCAwIC4KCTA0IDEgMCAxIDAgLgoJMDUgMCAxIDAgMCAuCgkwNiAwIDEgMCAxIC4KCTA3IDEgMCAxIDAgLgoJMDggMCAwIDAgMSAuCgkwOSAxIDEgMSAxIC4KCTEwIDEgMSAxIDEgLgoJMTEgMCAxIDAgMSAuCgkxMiAxIDAgMSAwIC4KCWV4dHJhczoKCTE0IDAgKDA4OjQpIC4KCTE1IDEgKDA5OjQpIC4KLS0tCm5hbWU6IHRlc3QtcHJlY2VkZW5jZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYSB3ZWlyZCBwcmVjZWRlbmNlIGNhc2UgKGFuZCBQT1NJWCBlY2hvKQpzdGRpbjoKCXRlc3QgXCggLWYgPSAtZiBcKQoJcnY9JD8KCWVjaG8gJHJ2CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IHRlc3Qtb3B0aW9uLTEKZGVzY3JpcHRpb246CglUZXN0IHRoZSB0ZXN0IC1vIG9wZXJhdG9yCnN0ZGluOgoJcnVudGVzdCgpIHsKCQl0ZXN0IC1vICQxOyBlY2hvICQ/CgkJWyAtbyAkMSBdOyBlY2hvICQ/CgkJW1sgLW8gJDEgXV07IGVjaG8gJD8KCX0KCWlmX3Rlc3QoKSB7CgkJdGVzdCAtbyAkMSAtbyAtbyAhJDE7IGVjaG8gJD8KCQlbIC1vICQxIC1vIC1vICEkMSBdOyBlY2hvICQ/CgkJW1sgLW8gJDEgfHwgLW8gISQxIF1dOyBlY2hvICQ/CgkJdGVzdCAtbyA/JDE7IGVjaG8gJD8KCX0KCWVjaG8gMHkgJChpZl90ZXN0IHV0ZjgtbW9kZSkgPQoJZWNobyAwbiAkKGlmX3Rlc3QgdXRmOC1oYWNrKSA9CgllY2hvIDE9ICQocnVudGVzdCB1dGY4LWhhY2spID0KCWVjaG8gMj0gJChydW50ZXN0ICF1dGY4LWhhY2spID0KCWVjaG8gMz0gJChydW50ZXN0ID91dGY4LWhhY2spID0KCXNldCArVQoJZWNobyAxKyAkKHJ1bnRlc3QgdXRmOC1tb2RlKSA9CgllY2hvIDIrICQocnVudGVzdCAhdXRmOC1tb2RlKSA9CgllY2hvIDMrICQocnVudGVzdCA/dXRmOC1tb2RlKSA9CglzZXQgLVUKCWVjaG8gMS0gJChydW50ZXN0IHV0ZjgtbW9kZSkgPQoJZWNobyAyLSAkKHJ1bnRlc3QgIXV0ZjgtbW9kZSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgP3V0ZjgtbW9kZSkgPQoJZWNobyA9IHNob3J0IGZsYWdzID0KCWVjaG8gMHkgJChpZl90ZXN0IC1VKSA9CgllY2hvIDB5ICQoaWZfdGVzdCArVSkgPQoJZWNobyAwbiAkKGlmX3Rlc3QgLV8pID0KCWVjaG8gMG4gJChpZl90ZXN0IC1VLSkgPQoJZWNobyAxPSAkKHJ1bnRlc3QgLV8pID0KCWVjaG8gMj0gJChydW50ZXN0ICEtXykgPQoJZWNobyAzPSAkKHJ1bnRlc3QgPy1fKSA9CglzZXQgK1UKCWVjaG8gMSsgJChydW50ZXN0IC1VKSA9CgllY2hvIDIrICQocnVudGVzdCAhLVUpID0KCWVjaG8gMysgJChydW50ZXN0ID8tVSkgPQoJZWNobyAxKyAkKHJ1bnRlc3QgK1UpID0KCWVjaG8gMisgJChydW50ZXN0ICErVSkgPQoJZWNobyAzKyAkKHJ1bnRlc3QgPytVKSA9CglzZXQgLVUKCWVjaG8gMS0gJChydW50ZXN0IC1VKSA9CgllY2hvIDItICQocnVudGVzdCAhLVUpID0KCWVjaG8gMy0gJChydW50ZXN0ID8tVSkgPQoJZWNobyAxLSAkKHJ1bnRlc3QgK1UpID0KCWVjaG8gMi0gJChydW50ZXN0ICErVSkgPQoJZWNobyAzLSAkKHJ1bnRlc3QgPytVKSA9CmV4cGVjdGVkLXN0ZG91dDoKCTB5IDAgMCAwIDAgPQoJMG4gMSAxIDEgMSA9CgkxPSAxIDEgMSA9CgkyPSAxIDEgMSA9CgkzPSAxIDEgMSA9CgkxKyAxIDEgMSA9CgkyKyAwIDAgMCA9CgkzKyAwIDAgMCA9CgkxLSAwIDAgMCA9CgkyLSAxIDEgMSA9CgkzLSAwIDAgMCA9Cgk9IHNob3J0IGZsYWdzID0KCTB5IDAgMCAwIDAgPQoJMHkgMCAwIDAgMCA9CgkwbiAxIDEgMSAxID0KCTBuIDEgMSAxIDEgPQoJMT0gMSAxIDEgPQoJMj0gMSAxIDEgPQoJMz0gMSAxIDEgPQoJMSsgMSAxIDEgPQoJMisgMCAwIDAgPQoJMysgMCAwIDAgPQoJMSsgMSAxIDEgPQoJMisgMCAwIDAgPQoJMysgMCAwIDAgPQoJMS0gMCAwIDAgPQoJMi0gMSAxIDEgPQoJMy0gMCAwIDAgPQoJMS0gMCAwIDAgPQoJMi0gMSAxIDEgPQoJMy0gMCAwIDAgPQotLS0KbmFtZTogdGVzdC12YXJzZXQtMQpkZXNjcmlwdGlvbjoKCVRlc3QgdGhlIHRlc3QgLXYgb3BlcmF0b3IKc3RkaW46CglbWyAtdiBhIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCWE9CglbWyAtdiBhIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXVuc2V0IGEKCVtbIC12IGEgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJYT14CglbWyAtdiBhIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCW5hbWVyZWYgYj1hCglbWyAtdiBiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXVuc2V0IGEKCVtbIC12IGIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeFsxXT15CglbWyAtdiB4IF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbIC12IHhbMF0gXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLXYgeFsxXSBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtdiB4WzJdIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAxCgkyIDAKCTMgMQoJNCAwCgk1IDAKCTYgMQoJNyAxCgk4IDEKCTkgMAoJMTAgMQotLS0KbmFtZTogdGVzdC12YXJzZXQtMgpkZXNjcmlwdGlvbjoKCXRlc3QgLXYgd29ya3Mgb25seSBvbiBzY2FsYXJzCnN0ZGluOgoJW1sgLXYgeFsqXSBdXQoJZWNobyBvawpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvdW5leHBlY3RlZCAnXConLwotLS0KbmFtZTogdGVzdC1zdG56ZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hvcnQgZm9ybSBbICR4IF0gd29ya3MKc3RkaW46CglpPTAKCVsgLW4gJHggXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAtbiAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAiJHgiIF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJeD0wCglbIC1uICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgLW4gIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9JzEgLWEgMSA9IDInCglbIC1uICR4IF0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJWyAkeCBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgLW4gIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVsgIiR4IiBdCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwCgkyIDEKCTMgMQoJNCAxCgk1IDAKCTYgMAoJNyAwCgk4IDAKCTkgMQoJMTAgMQoJMTEgMAoJMTIgMAotLS0KbmFtZTogdGVzdC1zdG56ZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgc2hvcnQgZm9ybSBbWyAkeCBdXSB3b3JrcyAoa3NoOTMgZXh0ZW5zaW9uKQpzdGRpbjoKCWk9MAoJW1sgLW4gJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLW4gIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9MAoJW1sgLW4gJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgJHggXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgoJW1sgLW4gIiR4IiBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCXg9JzEgLWEgMSA9IDInCglbWyAtbiAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAkeCBdXQoJcnY9JD87IGVjaG8gJCgoKytpKSkgJHJ2CglbWyAtbiAiJHgiIF1dCglydj0kPzsgZWNobyAkKCgrK2kpKSAkcnYKCVtbICIkeCIgXV0KCXJ2PSQ/OyBlY2hvICQoKCsraSkpICRydgpleHBlY3RlZC1zdGRvdXQ6CgkxIDEKCTIgMQoJMyAxCgk0IDEKCTUgMAoJNiAwCgk3IDAKCTggMAoJOSAwCgkxMCAwCgkxMSAwCgkxMiAwCi0tLQpuYW1lOiB0ZXN0LW51bWVxCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbnVtZXJpYyAtZXEgd29ya3MgKFI0MGQgcmVncmVzc2lvbik7IHNwb3R0ZWQgYnkgTWFydGlqbiBEZWtrZXIKc3RkaW46Cgl0c3QoKSB7CgkJZXZhbCAiJDIiCgkJY2FzZSAkPyBpbgoJCSgwKSBlY2hvIHllcHAgMCBcIyIkKiIgOzsKCQkoMSkgZWNobyBub3BlIDEgXCMiJCoiIDs7CgkJKDIpIGVjaG8gdGVyciAyIFwjIiQqIiA7OwoJCSgqKSBlY2hvIHd0Zlw/ICQ/IFwjIiQqIiA7OwoJCWVzYWMKCX0KCXRzdCAxICd0ZXN0IDIgLWVxIDInCgl0c3QgMiAndGVzdCAyIC1lcSAyYScKCXRzdCAzICd0ZXN0IDIgLWVxIDMnCgl0c3QgNCAndGVzdCAyIC1uZSAyJwoJdHN0IDUgJ3Rlc3QgMiAtbmUgMmEnCgl0c3QgNiAndGVzdCAyIC1uZSAzJwoJdHN0IDcgJ3Rlc3QgXCEgMiAtZXEgMicKCXRzdCA4ICd0ZXN0IFwhIDIgLWVxIDJhJwoJdHN0IDkgJ3Rlc3QgXCEgMiAtZXEgMycKZXhwZWN0ZWQtc3Rkb3V0OgoJeWVwcCAwICMxIHRlc3QgMiAtZXEgMgoJdGVyciAyICMyIHRlc3QgMiAtZXEgMmEKCW5vcGUgMSAjMyB0ZXN0IDIgLWVxIDMKCW5vcGUgMSAjNCB0ZXN0IDIgLW5lIDIKCXRlcnIgMiAjNSB0ZXN0IDIgLW5lIDJhCgl5ZXBwIDAgIzYgdGVzdCAyIC1uZSAzCglub3BlIDEgIzcgdGVzdCBcISAyIC1lcSAyCgl0ZXJyIDIgIzggdGVzdCBcISAyIC1lcSAyYQoJeWVwcCAwICM5IHRlc3QgXCEgMiAtZXEgMwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9iYWQgbnVtYmVyLwotLS0KbmFtZTogbWtzaHJjLTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IH4vLm1rc2hyYyB3b3JrcyBjb3JyZWN0bHkuCglQYXJ0IDE6IHZlcmlmeSB1c2VyIGVudmlyb25tZW50IGlzIG5vdCByZWFkIChpbnRlcm5hbCkKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IG1rc2hyYy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMjogdmVyaWZ5IG1rc2hyYyBpcyBub3QgcmVhZCAobm9uLWludGVyYWN0aXZlIHNoZWxscykKZmlsZS1zZXR1cDogZmlsZSA2NDQgIi5ta3NocmMiCglGTk9SRD00MgplbnYtc2V0dXA6ICFIT01FPS4hRU5WPSEKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IG1rc2hyYy0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgfi8ubWtzaHJjIHdvcmtzIGNvcnJlY3RseS4KCVBhcnQgMjogdmVyaWZ5IG1rc2hyYyBjYW4gYmUgcmVhZCAoaW50ZXJhY3RpdmUgc2hlbGxzKQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiLm1rc2hyYyIKCUZOT1JEPTQyCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFIT01FPS4hRU5WPSFQUzE9IQpzdGRpbjoKCWVjaG8geCAkRk5PUkQKZXhwZWN0ZWQtc3Rkb3V0OgoJeCA0MgpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8oIyApKi8KLS0tCm5hbWU6IG1rc2hyYy0zCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB+Ly5ta3NocmMgd29ya3MgY29ycmVjdGx5LgoJUGFydCAzOiB2ZXJpZnkgbWtzaHJjIGNhbiBiZSB0dXJuZWQgb2ZmCmZpbGUtc2V0dXA6IGZpbGUgNjQ0ICIubWtzaHJjIgoJRk5PUkQ9NDIKZW52LXNldHVwOiAhSE9NRT0uIUVOVj1ub25leGlzdGFudCEKc3RkaW46CgllY2hvIHggJEZOT1JECmV4cGVjdGVkLXN0ZG91dDoKCXgKLS0tCm5hbWU6IHNoLW1vZGUtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc2ggbW9kZSB0dXJucyBicmFjZWV4cGFuZCBvZmYKCWFuZCB0aGF0IHRoYXQgd29ya3MgY29ycmVjdGx5CnN0ZGluOgoJc2V0IC1vIGJyYWNlZXhwYW5kCglzZXQgK28gc2gKCVtbIC1vIHNoIF1dICYmIGVjaG8gc2gKCVtbIC1vICFzaCBdXSAmJiBlY2hvIG5vc2gKCVtbIC1vIGJyYWNlZXhwYW5kIF1dICYmIGVjaG8gYnJleAoJW1sgLW8gIWJyYWNlZXhwYW5kIF1dICYmIGVjaG8gbm9icmV4CgllY2hvIHthLGIsY30KCXNldCArbyBicmFjZWV4cGFuZAoJZWNobyB7YSxiLGN9CglzZXQgLW8gYnJhY2VleHBhbmQKCWVjaG8ge2EsYixjfQoJc2V0IC1vIHNoCgllY2hvIHthLGIsY30KCVtbIC1vIHNoIF1dICYmIGVjaG8gc2gKCVtbIC1vICFzaCBdXSAmJiBlY2hvIG5vc2gKCVtbIC1vIGJyYWNlZXhwYW5kIF1dICYmIGVjaG8gYnJleAoJW1sgLW8gIWJyYWNlZXhwYW5kIF1dICYmIGVjaG8gbm9icmV4CglzZXQgLW8gYnJhY2VleHBhbmQKCWVjaG8ge2EsYixjfQoJW1sgLW8gc2ggXV0gJiYgZWNobyBzaAoJW1sgLW8gIXNoIF1dICYmIGVjaG8gbm9zaAoJW1sgLW8gYnJhY2VleHBhbmQgXV0gJiYgZWNobyBicmV4CglbWyAtbyAhYnJhY2VleHBhbmQgXV0gJiYgZWNobyBub2JyZXgKCVtbICQoZXhlYyAtYSAtc2V0ICIkX19wcm9nbmFtZSIgLW8pID0gKmxvZ2luKygnICcpb24qIF1dOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCW5vc2gKCWJyZXgKCWEgYiBjCgl7YSxiLGN9CglhIGIgYwoJe2EsYixjfQoJc2gKCW5vYnJleAoJYSBiIGMKCXNoCglicmV4CgkwCi0tLQpuYW1lOiBzaC1tb2RlLTJhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBwb3NpeCBvciBzaCBtb2RlIGlzICpub3QqIGF1dG9tYXRpY2FsbHkgdHVybmVkIG9uCmNhdGVnb3J5OiAhYmluc2gKc3RkaW46Cglmb3Igc2hlbGwgaW4geywtfXsscn17LGssbWt9c2ggeywtfXssUn17LEssTUt9U0guRVhFOyBkbwoJCWxuIC1zICIkX19wcm9nbmFtZSIgLi8kc2hlbGwgfHwgY3AgIiRfX3Byb2duYW1lIiAuLyRzaGVsbAoJCXByaW50IC0tICRzaGVsbCAkKC4vJHNoZWxsICtsIC1jICcKCQkJW1sgLW8gc2ggfHwgLW8gcG9zaXggXV0gJiYgZWNobyBzaAoJCQlbWyAtbyAhc2ggJiYgLW8gIXBvc2l4IF1dICYmIGVjaG8gbm9zaAoJCQlbWyAtbyByZXN0cmljdGVkIF1dICYmIGVjaG8gbGltIHx8IGVjaG8gb2sKCQkgICAgJykKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJc2ggbm9zaCBvawoJa3NoIG5vc2ggb2sKCW1rc2ggbm9zaCBvawoJcnNoIG5vc2ggbGltCglya3NoIG5vc2ggbGltCglybWtzaCBub3NoIGxpbQoJLXNoIG5vc2ggb2sKCS1rc2ggbm9zaCBvawoJLW1rc2ggbm9zaCBvawoJLXJzaCBub3NoIGxpbQoJLXJrc2ggbm9zaCBsaW0KCS1ybWtzaCBub3NoIGxpbQoJU0guRVhFIG5vc2ggb2sKCUtTSC5FWEUgbm9zaCBvawoJTUtTSC5FWEUgbm9zaCBvawoJUlNILkVYRSBub3NoIGxpbQoJUktTSC5FWEUgbm9zaCBsaW0KCVJNS1NILkVYRSBub3NoIGxpbQoJLVNILkVYRSBub3NoIG9rCgktS1NILkVYRSBub3NoIG9rCgktTUtTSC5FWEUgbm9zaCBvawoJLVJTSC5FWEUgbm9zaCBsaW0KCS1SS1NILkVYRSBub3NoIGxpbQoJLVJNS1NILkVYRSBub3NoIGxpbQotLS0KbmFtZTogc2gtbW9kZS0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcG9zaXggb3Igc2ggbW9kZSAqaXMqIGF1dG9tYXRpY2FsbHkgdHVybmVkIG9uCmNhdGVnb3J5OiBiaW5zaApzdGRpbjoKCWZvciBzaGVsbCBpbiB7LC19eyxyfXssayxta31zaCB7LC19eyxSfXssSyxNS31TSC5FWEU7IGRvCgkJbG4gLXMgIiRfX3Byb2duYW1lIiAuLyRzaGVsbCB8fCBjcCAiJF9fcHJvZ25hbWUiIC4vJHNoZWxsCgkJcHJpbnQgLS0gJHNoZWxsICQoLi8kc2hlbGwgK2wgLWMgJwoJCQlbWyAtbyBzaCB8fCAtbyBwb3NpeCBdXSAmJiBlY2hvIHNoCgkJCVtbIC1vICFzaCAmJiAtbyAhcG9zaXggXV0gJiYgZWNobyBub3NoCgkJCVtbIC1vIHJlc3RyaWN0ZWQgXV0gJiYgZWNobyBsaW0gfHwgZWNobyBvawoJCSAgICAnKQoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglzaCBzaCBvawoJa3NoIG5vc2ggb2sKCW1rc2ggbm9zaCBvawoJcnNoIHNoIGxpbQoJcmtzaCBub3NoIGxpbQoJcm1rc2ggbm9zaCBsaW0KCS1zaCBzaCBvawoJLWtzaCBub3NoIG9rCgktbWtzaCBub3NoIG9rCgktcnNoIHNoIGxpbQoJLXJrc2ggbm9zaCBsaW0KCS1ybWtzaCBub3NoIGxpbQoJU0guRVhFIHNoIG9rCglLU0guRVhFIG5vc2ggb2sKCU1LU0guRVhFIG5vc2ggb2sKCVJTSC5FWEUgc2ggbGltCglSS1NILkVYRSBub3NoIGxpbQoJUk1LU0guRVhFIG5vc2ggbGltCgktU0guRVhFIHNoIG9rCgktS1NILkVYRSBub3NoIG9rCgktTUtTSC5FWEUgbm9zaCBvawoJLVJTSC5FWEUgc2ggbGltCgktUktTSC5FWEUgbm9zaCBsaW0KCS1STUtTSC5FWEUgbm9zaCBsaW0KLS0tCm5hbWU6IHNoLW9wdGlvbnMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICJzZXQgK28iIERUUlQgcGVyIFBPU0lYCnN0ZGluOgoJdCgpIHsKCQlbWyAtbyB2aSBdXTsgYT0kPwoJCVtbIC1vIHBpcGVmYWlsIF1dOyBiPSQ/CgkJZWNobyAkKCgrK2kpKSAkYSAkYiAuCgl9CglzZXQgLWUKCXNldCAtbyB2aQoJc2V0ICtvIHBpcGVmYWlsCglzZXQgK2UKCXQKCXg9JChzZXQgK28pCglzZXQgK28gdmkKCXNldCAtbyBwaXBlZmFpbAoJdAoJZXZhbCAiJHgiCgl0CmV4cGVjdGVkLXN0ZG91dDoKCTEgMCAxIC4KCTIgMSAwIC4KCTMgMCAxIC4KLS0tCm5hbWU6IHBpcGVsaW5lLTEKZGVzY3JpcHRpb246CglwZGtzaCBidWc6IGxhc3QgY29tbWFuZCBvZiBhIHBpcGVsaW5lIGlzIGV4ZWN1dGVkIGluIGEKCXN1YnNoZWxsIC0gbWFrZSBzdXJlIGl0IHN0aWxsIGlzLCBzY3JpcHRzIGRlcGVuZCBvbiBpdApmaWxlLXNldHVwOiBmaWxlIDY0NCAiYWJjeCIKZmlsZS1zZXR1cDogZmlsZSA2NDQgImFiY3kiCnN0ZGluOgoJZWNobyAqCgllY2hvIGEgfCB3aGlsZSByZWFkIGQ7IGRvCgkJZWNobyAkZAoJCWVjaG8gJGQqCgkJZWNobyAqCgkJc2V0IC1vIG5vZ2xvYgoJCWVjaG8gJGQqCgkJZWNobyAqCglkb25lCgllY2hvICoKZXhwZWN0ZWQtc3Rkb3V0OgoJYWJjeCBhYmN5CglhCglhYmN4IGFiY3kKCWFiY3ggYWJjeQoJYSoKCSoKCWFiY3ggYWJjeQotLS0KbmFtZTogcGlwZWxpbmUtMgpkZXNjcmlwdGlvbjoKCWNoZWNrIHRoYXQgY28tcHJvY2Vzc2VzIHdvcmsgd2l0aCBUQ09NcywgVFBJUEVzIGFuZCBUUEFSRU5zCmNhdGVnb3J5OiAhbm9qc2lnCnN0ZGluOgoJIiRfX3Byb2duYW1lIiAtYyAnaT0xMDA7IGVjaG8gaGkgfCYgd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyBlY2hvICIkKChpKyspKSAkbGluZSI7IGRvbmUnCgkiJF9fcHJvZ25hbWUiIC1jICdpPTIwMDsgZWNobyBoaSB8IGNhdCB8JiB3aGlsZSByZWFkIC1wIGxpbmU7IGRvIGVjaG8gIiQoKGkrKykpICRsaW5lIjsgZG9uZScKCSIkX19wcm9nbmFtZSIgLWMgJ2k9MzAwOyAoZWNobyBoaSB8IGNhdCkgfCYgd2hpbGUgcmVhZCAtcCBsaW5lOyBkbyBlY2hvICIkKChpKyspKSAkbGluZSI7IGRvbmUnCmV4cGVjdGVkLXN0ZG91dDoKCTEwMCBoaQoJMjAwIGhpCgkzMDAgaGkKLS0tCm5hbWU6IHBpcGVsaW5lLTMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IFBJUEVTVEFUVVMgZG9lcyB3aGF0IGl0J3Mgc3VwcG9zZWQgdG8Kc3RkaW46CgllY2hvIDEgJFBJUEVTVEFUVVMgLgoJZWNobyAyICR7UElQRVNUQVRVU1swXX0gLgoJZWNobyAzICR7UElQRVNUQVRVU1sxXX0gLgoJKGVjaG8geDsgZXhpdCAxMikgfCAoY2F0OyBleGl0IDIzKSB8IChjYXQ7IGV4aXQgNDIpCgllY2hvIDUgJD8gLCAkUElQRVNUQVRVUyAsICR7UElQRVNUQVRVU1swXX0gLCAke1BJUEVTVEFUVVNbMV19ICwgJHtQSVBFU1RBVFVTWzJdfSAsICR7UElQRVNUQVRVU1szXX0gLgoJZWNobyA2ICR7UElQRVNUQVRVU1swXX0gLgoJc2V0IHwgZmdyZXAgUElQRVNUQVRVUwoJZWNobyA4ICQoc2V0IHwgZmdyZXAgUElQRVNUQVRVUykgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIDAgLgoJMiAwIC4KCTMgLgoJeAoJNSA0MiAsIDEyICwgMTIgLCAyMyAsIDQyICwgLgoJNiAwIC4KCVBJUEVTVEFUVVNbMF09MAoJOCBQSVBFU1RBVFVTWzBdPTAgUElQRVNUQVRVU1sxXT0wIC4KLS0tCm5hbWU6IHBpcGVsaW5lLTQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICJzZXQgLW8gcGlwZWZhaWwiIGRvZXMgd2hhdCBpdCdzIHN1cHBvc2VkIHRvCnN0ZGluOgoJZWNobyAxICIkKCIkX19wcm9nbmFtZSIgLWMgJyhleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDIgIiQoIiRfX3Byb2duYW1lIiAtYyAnISAoZXhpdCAxMikgfCAoZXhpdCAyMykgfCAoZXhpdCA0Mik7IGVjaG8gJD8nKSIgLgoJZWNobyAzICIkKCIkX19wcm9nbmFtZSIgLW8gcGlwZWZhaWwgLWMgJyhleGl0IDEyKSB8IChleGl0IDIzKSB8IChleGl0IDQyKTsgZWNobyAkPycpIiAuCgllY2hvIDQgIiQoIiRfX3Byb2duYW1lIiAtbyBwaXBlZmFpbCAtYyAnISAoZXhpdCAxMikgfCAoZXhpdCAyMykgfCAoZXhpdCA0Mik7IGVjaG8gJD8nKSIgLgoJZWNobyA1ICIkKCIkX19wcm9nbmFtZSIgLWMgJyhleGl0IDIzKSB8IChleGl0IDQyKSB8IDo7IGVjaG8gJD8nKSIgLgoJZWNobyA2ICIkKCIkX19wcm9nbmFtZSIgLWMgJyEgKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOjsgZWNobyAkPycpIiAuCgllY2hvIDcgIiQoIiRfX3Byb2duYW1lIiAtbyBwaXBlZmFpbCAtYyAnKGV4aXQgMjMpIHwgKGV4aXQgNDIpIHwgOjsgZWNobyAkPycpIiAuCgllY2hvIDggIiQoIiRfX3Byb2duYW1lIiAtbyBwaXBlZmFpbCAtYyAnISAoZXhpdCAyMykgfCAoZXhpdCA0MikgfCA6OyBlY2hvICQ/JykiIC4KCWVjaG8gOSAiJCgiJF9fcHJvZ25hbWUiIC1vIHBpcGVmYWlsIC1jICd4PSQoIChleGl0IDIzKSB8IChleGl0IDQyKSB8IDopOyBlY2hvICQ/JykiIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSA0MiAuCgkyIDAgLgoJMyA0MiAuCgk0IDAgLgoJNSAwIC4KCTYgMSAuCgk3IDQyIC4KCTggMCAuCgk5IDQyIC4KLS0tCm5hbWU6IHBlcnNpc3QtaGlzdG9yeS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgcGVyc2lzdGVudCBoaXN0b3J5IHNhdmluZyB3b3JrcwpjYXRlZ29yeTogIW5vLWhpc3RmaWxlCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFFTlY9Li9FbnYhSElTVEZJTEU9aGlzdC5maWxlIQpmaWxlLXNldHVwOiBmaWxlIDY0NCAiRW52IgoJUFMxPVgKc3RkaW46CgljYXQgaGlzdC5maWxlCmV4cGVjdGVkLXN0ZG91dC1wYXR0ZXJuOgoJL2NhdCBoaXN0LmZpbGUvCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL15YKiQvCi0tLQpuYW1lOiB0eXBlc2V0LTEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHR5cGVzZXQgLWcgd29ya3MgY29ycmVjdGx5CnN0ZGluOgoJc2V0IC1BIGFycmZvbyA2NQoJZm9vKCkgewoJCXR5cGVzZXQgLWcgLVV1aTE2IGFycmZvb1sqXQoJfQoJZWNobyBiZWZvcmUgJHthcnJmb29bMF19IC4KCWZvbwoJZWNobyBhZnRlciAke2FycmZvb1swXX0gLgoJc2V0IC1BIGFycmJhciA2NQoJYmFyKCkgewoJCWVjaG8gaW5zaWRlIGJlZm9yZSAke2FycmJhclswXX0gLgoJCWFycmJhclswXT05NwoJCWVjaG8gaW5zaWRlIGNoYW5nZWQgJHthcnJiYXJbMF19IC4KCQl0eXBlc2V0IC1nIC1VdWkxNiBhcnJiYXJbKl0KCQllY2hvIGluc2lkZSB0eXBlc2V0ICR7YXJyYmFyWzBdfSAuCgkJYXJyYmFyWzBdPTQ4CgkJZWNobyBpbnNpZGUgY2hhbmdlZCAke2FycmJhclswXX0gLgoJfQoJZWNobyBiZWZvcmUgJHthcnJiYXJbMF19IC4KCWJhcgoJZWNobyBhZnRlciAke2FycmJhclswXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmUgNjUgLgoJYWZ0ZXIgMTYjNDEgLgoJYmVmb3JlIDY1IC4KCWluc2lkZSBiZWZvcmUgNjUgLgoJaW5zaWRlIGNoYW5nZWQgOTcgLgoJaW5zaWRlIHR5cGVzZXQgMTYjNjEgLgoJaW5zaWRlIGNoYW5nZWQgMTYjMzAgLgoJYWZ0ZXIgMTYjMzAgLgotLS0KbmFtZTogdHlwZXNldC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0eXBlc2V0IC1wIG9uIGFycmF5cyB3b3JrcyBjb3JyZWN0bHkKc3RkaW46CglzZXQgLUEgeCAtLSBhIGIgYwoJZWNobyA9Cgl0eXBlc2V0IC1wIHgKCWVjaG8gPQoJdHlwZXNldCAtcCB4WzFdCmV4cGVjdGVkLXN0ZG91dDoKCT0KCXNldCAtQSB4Cgl0eXBlc2V0IHhbMF09YQoJdHlwZXNldCB4WzFdPWIKCXR5cGVzZXQgeFsyXT1jCgk9Cgl0eXBlc2V0IHhbMV09YgotLS0KbmFtZTogdHlwZXNldC1wYWRkaW5nLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBsZWZ0L3JpZ2h0IGp1c3RpZmljYXRpb24gd29ya3MgYXMgcGVyIFRGTQpzdGRpbjoKCXR5cGVzZXQgLUwxMCBsbj0waGFsbDAKCXR5cGVzZXQgLVIxMCBybj0waGFsbDAKCXR5cGVzZXQgLVpMMTAgbHo9MGhhbGwwCgl0eXBlc2V0IC1aUjEwIHJ6PTBoYWxsMAoJdHlwZXNldCAtWjEwIHJ4PSIgaGFsbG8gIgoJZWNobyAiPCRsbj4gPCRybj4gPCRsej4gPCRyej4gPCRyeD4iCmV4cGVjdGVkLXN0ZG91dDoKCTwwaGFsbDAgICAgPiA8ICAgIDBoYWxsMD4gPGhhbGwwICAgICA+IDwwMDAwMGhhbGwwPiA8MDAwMCBoYWxsbz4KLS0tCm5hbWU6IHR5cGVzZXQtcGFkZGluZy0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzZS0hMTAgaW50ZWdlcnMgYXJlIHBhZGRlZCByaWdodApzdGRpbjoKCXR5cGVzZXQgLVV1aTE2IC1MOSBsbj0xNiMxCgl0eXBlc2V0IC1VdWkxNiAtUjkgcm49MTYjMQoJdHlwZXNldCAtVXVpMTYgLVo5IHpuPTE2IzEKCXR5cGVzZXQgLUw5IGxzPTE2IzEKCXR5cGVzZXQgLVI5IHJzPTE2IzEKCXR5cGVzZXQgLVo5IHpzPTE2IzEKCWVjaG8gIjwkbG4+IDwkcm4+IDwkem4+IDwkbHM+IDwkcnM+IDwkenM+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8MTYjMSAgICAgPiA8ICAgICAxNiMxPiA8MTYjMDAwMDAxPiA8MTYjMSAgICAgPiA8ICAgICAxNiMxPiA8MDAwMDAxNiMxPgotLS0KbmFtZTogdHlwZXNldC1wYWRkaW5nLTMKZGVzY3JpcHRpb246CglDaGVjayBmb3IgYSByZWdyZXNzaW9uIGluIHdoaWNoIFVURi04IHdhc27igJl0IGxlZnQtcGFkZGVkIHJpZ2h0CnN0ZGluOgoJc2V0IC1VCglubD0kJ1xuJwoJdHlwZXNldCAtTDIwIHg9Jy4gIGFrJwoJdHlwZXNldCAtUjIwIHk9Jy4gIGFrJwoJcHJpbnQgLXIgLS0gIjwkeD4gKDEkbmw8MTIzNDU2Nzg5MTAgMzQ1Njc4OTIwJG5sPCR5PiAxKSIKCXR5cGVzZXQgLUwyMCB4PScuICBh4bqeJwoJdHlwZXNldCAtUjIwIHk9Jy4gIGHhup4nCglwcmludCAtciAtLSAiPCR4PiAoMiRubDwxMjM0NTY3ODkxMCAzNDU2Nzg5MjAkbmw8JHk+IDIpIgpleHBlY3RlZC1zdGRvdXQ6Cgk8LiAgYWsgICAgICAgICAgICAgICA+ICgxCgk8MTIzNDU2Nzg5MTAgMzQ1Njc4OTIwCgk8ICAgICAgICAgICAgICAgLiAgYWs+IDEpCgk8LiAgYeG6niAgICAgICAgICAgICAgID4gKDIKCTwxMjM0NTY3ODkxMCAzNDU2Nzg5MjAKCTwgICAgICAgICAgICAgICAuICBh4bqePiAyKQotLS0KbmFtZTogdXRmOGJvbS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgVVRGLTggQnl0ZSBPcmRlciBNYXJrIGlzIGlnbm9yZWQgYXMgdGhlIGZpcnN0CgltdWx0aWJ5dGUgY2hhcmFjdGVyIG9mIHRoZSBzaGVsbCBpbnB1dCAod2l0aCAtYywgZnJvbSBzdGFuZGFyZAoJaW5wdXQsIGFzIGZpbGUsIG9yIGFzIGV2YWwgYXJndW1lbnQpLCBidXQgbm93aGVyZSBlbHNlCiMgYnJlYWtzIG9uIE1hYyBPU1ggKEhGUysgbm9uLXN0YW5kYXJkIFVURi04IGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uKQpjYXRlZ29yeTogIW9zOmRhcndpbiwhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCW1rZGlyIGZvbwoJcHJpbnQgJyMhL2Jpbi9zaFxuZWNobyBvaG5lJyA+Zm9vL2Zub3JkCglwcmludCAnIyEvYmluL3NoXG5lY2hvIG1pdCcgPmZvby/vu79mbm9yZAoJcHJpbnQgJ++7v2Zub3JkXG5mbm9yZFxu77u/Zm5vcmRcbmZub3JkJyA+Zm9vL2JhcgoJcHJpbnQgZXZhbCBcJyfvu79mbm9yZFxuZm5vcmRcbu+7v2Zub3JkXG5mbm9yZCdcJyA+Zm9vL3pvbwoJc2V0IC1BIGFuemFobCAtLSBmb28vKgoJZWNobyBnb3QgJHsjYW56YWhsWypdfSBmaWxlcwoJY2htb2QgK3ggZm9vLyoKCWV4cG9ydCBQQVRIPSQocHdkKS9mb28kUEFUSFNFUCRQQVRICgkiJF9fcHJvZ25hbWUiIC1jICfvu79mbm9yZCcKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiAtYyAn77u/Zm5vcmQ7IGZub3JkOyDvu79mbm9yZDsgZm5vcmQnCgllY2hvID0KCSIkX19wcm9nbmFtZSIgZm9vL2JhcgoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIDxmb28vYmFyCgllY2hvID0KCSIkX19wcm9nbmFtZSIgZm9vL3pvbwoJZWNobyA9CgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIO+7vzogJCjvu79mbm9yZCknCglybSAtcmYgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWdvdCA0IGZpbGVzCglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCW9obmUKCW9obmUKCW1pdAoJb2huZQoJPQoJb2huZQoJb2huZQoJbWl0CglvaG5lCgk9CglvaG5lCglvaG5lCgltaXQKCW9obmUKCT0KCe+7vzogb2huZQotLS0KbmFtZTogdXRmOGJvbS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB3ZSBjYW4gZXhlY3V0ZSBCT00tc2hlYmFuZ3MgKGZhaWx1cmVzIG5vdCBmYXRhbCkKCVhYWCBpZiB0aGUgT1MgY2FuIGFscmVhZHkgZXhlY3V0ZSB0aGVtLCB3ZSBsb3NlCglub3RlOiBjeWd3aW4gZXhlY3ZlKDIpIGRvZXNuJ3QgcmV0dXJuIHRvIHVzIHdpdGggRU5PRVhFQywgd2UgbG9zZQoJbm90ZTogVWx0cml4IHBlcmw1IHQ0IHJldHVybnMgNjUyODAgKGV4aXQtY29kZSAyNTUpIGFuZCBubyB0ZXh0CglYWFggZmFpbHMgd2hlbiBMRF9QUkVMT0FEIGlzIHNldCB3aXRoIC1lIGFuZCBQZXJsIGNob2tlcyBpdCAoQVNhbikKbmVlZC1wYXNzOiBubwpjYXRlZ29yeTogIW9zOmN5Z3dpbiwhb3M6bWlkaXBpeCwhb3M6bXN5cywhb3M6dWx0cml4LCFvczp1d2luLW50LCFzbWtzaAplbnYtc2V0dXA6ICFGT089QkFSIQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xucHJpbnQgIjEgYT0kRU5We0ZPT30iOycgPnQxCglwcmludCAn77u/IyEnIiRfX3Byb2duYW1lIidcbnByaW50ICIyIGE9JEVOVntGT099IjsnID50MgoJcHJpbnQgJyMhJyIkX19wZXJsbmFtZSInXG5wcmludCAiMyBhPSRFTlZ7Rk9PfVxuIjsnID50MwoJcHJpbnQgJ++7vyMhJyIkX19wZXJsbmFtZSInXG5wcmludCAiNCBhPSRFTlZ7Rk9PfVxuIjsnID50NAoJY2htb2QgK3ggdD8KCS4vdDEKCS4vdDIKCS4vdDMKCS4vdDQKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBhPS9ub25leGlzdGFudHtGT099CgkyIGE9L25vbmV4aXN0YW50e0ZPT30KCTMgYT1CQVIKCTQgYT1CQVIKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvKFVucmVjb2duaXplZCBjaGFyYWN0ZXIgLi4uLiBpZ25vcmVkIGF0IFwuLnQ0IGxpbmUgMSkqLwotLS0KbmFtZTogdXRmOG9wdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgbm90IHNldCBhdCBub24taW50ZXJhY3RpdmUgc3RhcnR1cAplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9QHV0ZmxvY2FsZUAhCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgbm90IHNldAotLS0KbmFtZTogdXRmOG9wdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB0aGUgdXRmOC1tb2RlIGZsYWcgaXMgc2V0IGF0IGludGVyYWN0aXZlIHN0YXJ0dXAuCglJZiB5b3VyIE9TIGlzIG9sZCwgdHJ5IHBhc3NpbmcgSEFWRV9TRVRMT0NBTEVfQ1RZUEU9MCB0byBCdWlsZC5zaApuZWVkLXBhc3M6IG5vCmNhdGVnb3J5OiAhbm91dGY4Cm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQplbnYtc2V0dXA6ICFQUzE9IVBTMj0hTENfQ1RZUEU9QHV0ZmxvY2FsZUAhCnN0ZGluOgoJaWYgW1sgJC0gPSAqVSogXV07IHRoZW4KCQllY2hvIGlzIHNldAoJZWxzZQoJCWVjaG8gaXMgbm90IHNldAoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJaXMgc2V0CmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLygjICkqLwotLS0KbmFtZTogdXRmOG9wdC0zYQpkZXNjcmlwdGlvbjoKCUVuc3VyZSDCsVUgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBob25vdXJlZAoJKHRoZXNlIHR3byB0ZXN0cyBtYXkgcGFzcyBmYWxzZWx5IGRlcGVuZGluZyBvbiBDUFBGTEFHUykKc3RkaW46CglleHBvcnQgaT0wCgljb2RlPSdpZiBbWyAkLSA9ICpVKiBdXTsgdGhlbiBlY2hvICRpIG9uOyBlbHNlIGVjaG8gJGkgb2ZmOyBmaScKCWxldCBpKys7ICIkX19wcm9nbmFtZSIgLVUgLWMgIiRjb2RlIgoJbGV0IGkrKzsgIiRfX3Byb2duYW1lIiArVSAtYyAiJGNvZGUiCgllY2hvICQoKCsraSkpIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBvbgoJMiBvZmYKCTMgZG9uZQotLS0KbmFtZTogdXRmOG9wdC0zYgpkZXNjcmlwdGlvbjoKCUVuc3VyZSDCsVUgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBob25vdXJlZCwgaW50ZXJhY3RpdmUgc2hlbGxzCm5lZWQtY3R0eTogeWVzCnN0ZGluOgoJZXhwb3J0IGk9MAoJY29kZT0naWYgW1sgJC0gPSAqVSogXV07IHRoZW4gZWNobyAkaSBvbjsgZWxzZSBlY2hvICRpIG9mZjsgZmknCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiIC1VIC1pYyAiJGNvZGUiCglsZXQgaSsrOyAiJF9fcHJvZ25hbWUiICtVIC1pYyAiJGNvZGUiCgllY2hvICQoKCsraSkpIGRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMSBvbgoJMiBvZmYKCTMgZG9uZQotLS0KbmFtZTogdXRmOGJ1Zy0xCmRlc2NyaXB0aW9uOgoJRW5zdXJlIHRyYWlsaW5nIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGFyZSBub3QgbG9zdApzdGRpbjoKCXNldCAtVQoJYT1hCgliPSQnXHUwMzAxJwoJeD0kYSRiCglwcmludCAtciAtLSAiPGUkeD4iCgl4PSRhCgl4Kz0kYgoJcHJpbnQgLXIgLS0gIjxlJHg+IgoJYj0kJ1x1MDMwMSdiCgl4PSRhCgl4Kz0kYgoJcHJpbnQgLXIgLS0gIjxlJHg+IgpleHBlY3RlZC1zdGRvdXQ6Cgk8ZWHMgT4KCTxlYcyBPgoJPGVhzIFiPgotLS0KbmFtZTogYWxpYXNlcy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYnVpbHQtaW4gc2hlbGwgYWxpYXNlcyBhcmUgb2theQpzdGRpbjoKCWFsaWFzCgl0eXBlc2V0IC1mCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSdcXGJ1aWx0aW4gdHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J1xcYnVpbHRpbiB0eXBlc2V0IC1mJwoJaGFzaD0nXFxidWlsdGluIGFsaWFzIC10JwoJaGlzdG9yeT0nXFxidWlsdGluIGZjIC1sJwoJaW50ZWdlcj0nXFxidWlsdGluIHR5cGVzZXQgLWknCglsb2NhbD0nXFxidWlsdGluIHR5cGVzZXQnCglsb2dpbj0nXFxidWlsdGluIGV4ZWMgbG9naW4nCgluYW1lcmVmPSdcXGJ1aWx0aW4gdHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdcXGJ1aWx0aW4gZmMgLWUgLScKCXR5cGU9J1xcYnVpbHRpbiB3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYg4oCcc2V0IC1vIHNo4oCdIGRvZXMgbm90IGluZmx1ZW5jZSBidWlsdC1pbiBhbGlhc2VzCmFyZ3VtZW50czogIS1vIXNoIQpzdGRpbjoKCWFsaWFzCgl0eXBlc2V0IC1mCmV4cGVjdGVkLXN0ZG91dDoKCWF1dG9sb2FkPSdcXGJ1aWx0aW4gdHlwZXNldCAtZnUnCglmdW5jdGlvbnM9J1xcYnVpbHRpbiB0eXBlc2V0IC1mJwoJaGFzaD0nXFxidWlsdGluIGFsaWFzIC10JwoJaGlzdG9yeT0nXFxidWlsdGluIGZjIC1sJwoJaW50ZWdlcj0nXFxidWlsdGluIHR5cGVzZXQgLWknCglsb2NhbD0nXFxidWlsdGluIHR5cGVzZXQnCglsb2dpbj0nXFxidWlsdGluIGV4ZWMgbG9naW4nCgluYW1lcmVmPSdcXGJ1aWx0aW4gdHlwZXNldCAtbicKCW5vaHVwPSdub2h1cCAnCglyPSdcXGJ1aWx0aW4gZmMgLWUgLScKCXR5cGU9J1xcYnVpbHRpbiB3aGVuY2UgLXYnCi0tLQpuYW1lOiBhbGlhc2VzLTNiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgcnVubmluZyBhcyBzaCBkb2VzIG5vdCBpbmZsdWVuY2UgYnVpbHQtaW4gYWxpYXNlcwpzdGRpbjoKCWNwICIkX19wcm9nbmFtZSIgc2gKCS4vc2ggLWMgJ2FsaWFzOyB0eXBlc2V0IC1mJwoJcm0gLWYgc2gKZXhwZWN0ZWQtc3Rkb3V0OgoJYXV0b2xvYWQ9J1xcYnVpbHRpbiB0eXBlc2V0IC1mdScKCWZ1bmN0aW9ucz0nXFxidWlsdGluIHR5cGVzZXQgLWYnCgloYXNoPSdcXGJ1aWx0aW4gYWxpYXMgLXQnCgloaXN0b3J5PSdcXGJ1aWx0aW4gZmMgLWwnCglpbnRlZ2VyPSdcXGJ1aWx0aW4gdHlwZXNldCAtaScKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWxvZ2luPSdcXGJ1aWx0aW4gZXhlYyBsb2dpbicKCW5hbWVyZWY9J1xcYnVpbHRpbiB0eXBlc2V0IC1uJwoJbm9odXA9J25vaHVwICcKCXI9J1xcYnVpbHRpbiBmYyAtZSAtJwoJdHlwZT0nXFxidWlsdGluIHdoZW5jZSAtdicKLS0tCm5hbWU6IGFsaWFzZXMtY21kbGluZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYWxpYXNlcyB3b3JrIGZyb20gdGhlIGNvbW1hbmQgbGluZSAoRGViaWFuICM1MTcwMDkpCglOb3RlIHRoYXQgZHVlIHRvIHRoZSBuYXR1cmUgb2YgdGhlIGxleGluZyBwcm9jZXNzLCBkZWZpbmluZwoJYWxpYXNlcyBpbiBDT01TVUJzIHRoZW4gaW1tZWRpYXRlbHkgdXNpbmcgdGhlbSwgYW5kIHRoaW5ncwoJbGlrZSAnYWxpYXMgZm9vPWJhciAmJiBmb28nLCBzdGlsbCBmYWlsLgpzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJCdhbGlhcyBhPSJlY2hvIE9LIlxuYScKZXhwZWN0ZWQtc3Rkb3V0OgoJT0sKLS0tCm5hbWU6IGFsaWFzZXMtZnVuY2RlZi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgUE9TSVggZnVuY3Rpb25zIHRha2UgcHJlY2VkZW5jZXMgb3ZlciBhbGlhc2VzCnN0ZGluOgoJYWxpYXMgZm9vPSdlY2hvIG1ha3JvJwoJZm9vKCkgewoJCWVjaG8gZnVua3Rpb24KCX0KCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgltYWtybwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTIKZGVzY3JpcHRpb246CglDaGVjayBpZiBQT1NJWCBmdW5jdGlvbnMgdGFrZSBwcmVjZWRlbmNlcyBvdmVyIGFsaWFzZXMKc3RkaW46CglhbGlhcyBmb289J2VjaG8gbWFrcm8nCglmb28gKCkgewoJCWVjaG8gZnVua3Rpb24KCX0KCWZvbwpleHBlY3RlZC1zdGRvdXQ6CgltYWtybwotLS0KbmFtZTogYWxpYXNlcy1mdW5jZGVmLTMKZGVzY3JpcHRpb246CglDaGVjayBpZiBhbGlhc2VzIHRha2UgcHJlY2VkZW5jZXMgb3ZlciBLb3JuIGZ1bmN0aW9ucwpzdGRpbjoKCWFsaWFzIGZvbz0nZWNobyBtYWtybycKCWZ1bmN0aW9uIGZvbyB7CgkJZWNobyBmdW5rdGlvbgoJfQoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCW1ha3JvCi0tLQpuYW1lOiBhbGlhc2VzLWZ1bmNkZWYtNApkZXNjcmlwdGlvbjoKCUZ1bmN0aW9ucyBzaG91bGQgb25seSB0YWtlIG92ZXIgaWYgYWN0dWFsbHkgYmVpbmcgZGVmaW5lZApzdGRpbjoKCWFsaWFzIGxvY2FsCgk6fHwgbG9jYWwoKSB7IDo7IH0KCWFsaWFzIGxvY2FsCmV4cGVjdGVkLXN0ZG91dDoKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKCWxvY2FsPSdcXGJ1aWx0aW4gdHlwZXNldCcKLS0tCm5hbWU6IGFycmF5cy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgS29ybiBTaGVsbCBhcnJheXMgd29yayBhcyBleHBlY3RlZApzdGRpbjoKCXY9ImMgZCIKCXNldCAtQSBmb28gLS0gYSBcJHYgIiR2IiAnJHYnIGIKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwiCmV4cGVjdGVkLXN0ZG91dDoKCTV8YXwkdnxjIGR8JHZ8YnwKLS0tCm5hbWU6IGFycmF5cy0yYQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgYXJyYXlzIHdvcmsgYXMgZXhwZWN0ZWQKc3RkaW46Cgl2PSJjIGQiCglmb289KGEgXCR2ICIkdiIgJyR2JyBiKQoJZWNobyAiJHsjZm9vWypdfXwke2Zvb1swXX18JHtmb29bMV19fCR7Zm9vWzJdfXwke2Zvb1szXX18JHtmb29bNF19fCIKZXhwZWN0ZWQtc3Rkb3V0OgoJNXxhfCR2fGMgZHwkdnxifAotLS0KbmFtZTogYXJyYXlzLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgYmFzaC1zdHlsZSBhcnJheXMgd29yayBhcyBleHBlY3RlZCwgd2l0aCBuZXdsaW5lcwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLW5yIC0tICIkeHwiOyBkb25lJyA+cGZwCgljaG1vZCAreCBwZnAKCXRlc3QgLW4gIiRaU0hfVkVSU0lPTiIgJiYgc2V0b3B0IEtTSF9BUlJBWVMKCXY9ImUgZiIKCWZvbz0oYQoJCWJjCgkJZCBcJHYgIiR2IiAnJHYnIGcKCSkKCS4vcGZwICIkeyNmb29bKl19IiAiJHtmb29bMF19IiAiJHtmb29bMV19IiAiJHtmb29bMl19IiAiJHtmb29bM119IiAiJHtmb29bNF19IiAiJHtmb29bNV19IiAiJHtmb29bNl19IjsgZWNobwoJZm9vPShhXAoJCWJjCgkJZCBcJHYgIiR2IiAnJHYnIGcKCSkKCS4vcGZwICIkeyNmb29bKl19IiAiJHtmb29bMF19IiAiJHtmb29bMV19IiAiJHtmb29bMl19IiAiJHtmb29bM119IiAiJHtmb29bNF19IiAiJHtmb29bNV19IiAiJHtmb29bNl19IjsgZWNobwoJZm9vPShhXAoJYmNcXAoJCWQgXCR2ICIkdiIgJyR2JwoJZykKCS4vcGZwICIkeyNmb29bKl19IiAiJHtmb29bMF19IiAiJHtmb29bMV19IiAiJHtmb29bMl19IiAiJHtmb29bM119IiAiJHtmb29bNF19IiAiJHtmb29bNV19IiAiJHtmb29bNl19IjsgZWNobwpleHBlY3RlZC1zdGRvdXQ6Cgk3fGF8YmN8ZHwkdnxlIGZ8JHZ8Z3wKCTd8YXxiY3xkfCR2fGUgZnwkdnxnfAoJNnxhYmNcfGR8JHZ8ZSBmfCR2fGd8fAotLS0KbmFtZTogYXJyYXlzLTMKZGVzY3JpcHRpb246CglDaGVjayBpZiBhcnJheSBib3VuZHMgYXJlIHVpbnQzMl90CnN0ZGluOgoJc2V0IC1BIGZvbyBhIGIgYwoJZm9vWzQwOTddPWQKCWZvb1syMTQ3NDgzNjM3XT1lCgllY2hvICR7Zm9vWypdfQoJZm9vWy0xXT1mCgllY2hvICR7Zm9vWzQyOTQ5NjcyOTVdfSBnICR7Zm9vWypdfQpleHBlY3RlZC1zdGRvdXQ6CglhIGIgYyBkIGUKCWYgZyBhIGIgYyBkIGUgZgotLS0KbmFtZTogYXJyYXlzLTQKZGVzY3JpcHRpb246CglDaGVjayBpZiBLb3JuIFNoZWxsIGFycmF5cyB3aXRoIHNwZWNpZmllZCBpbmRpY2VzIHdvcmsgYXMgZXhwZWN0ZWQKc3RkaW46Cgl2PSJjIGQiCglzZXQgLUEgZm9vIC0tIFsxXT1cJHYgWzJdPSIkdiIgWzRdPSckdicgWzBdPWEgWzVdPWIKCWVjaG8gIiR7I2Zvb1sqXX18JHtmb29bMF19fCR7Zm9vWzFdfXwke2Zvb1syXX18JHtmb29bM119fCR7Zm9vWzRdfXwke2Zvb1s1XX18IgoJIyB3ZSBkb24ndCB3YW50IHRoaXMgYXQgYWxsOgoJIwk1fGF8JHZ8YyBkfHwkdnxifAoJc2V0IC1BIGFyciAiWzVdPW1laCIKCWVjaG8gIjwke2FyclswXX0+PCR7YXJyWzVdfT4iCmV4cGVjdGVkLXN0ZG91dDoKCTV8WzFdPSR2fFsyXT1jIGR8WzRdPSR2fFswXT1hfFs1XT1ifHwKCTxbNV09bWVoPjw+Ci0tLQpuYW1lOiBhcnJheXMtNQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgYXJyYXlzIHdpdGggc3BlY2lmaWVkIGluZGljZXMgd29yayBhcyBleHBlY3RlZAoJKHRha2VuIG91dCB0ZW1wb3JhcmlseSB0byBmaXggYXJyYXlzLTQ7IHNlZSBhbHNvIGFycmF5cy05YSBjb21tZW50KQpjYXRlZ29yeTogZGlzYWJsZWQKc3RkaW46Cgl2PSJjIGQiCglmb289KFsxXT1cJHYgWzJdPSIkdiIgWzRdPSckdicgWzBdPWEgWzVdPWIpCgllY2hvICIkeyNmb29bKl19fCR7Zm9vWzBdfXwke2Zvb1sxXX18JHtmb29bMl19fCR7Zm9vWzNdfXwke2Zvb1s0XX18JHtmb29bNV19fCIKCXg9KFsxMjhdPWZvbyBiYXIgYmF6KQoJZWNobyBrPSAkeyF4WypdfSAuCgllY2hvIHY9ICR7eFsqXX0gLgoJIyBDaGVjayB0aGF0IHdlIGRvIG5vdCBicmVhayB0aGlzIGJ5IGdsb2JiaW5nCgk6PmI9YmxhaAoJYmxlaD01Cgl0eXBlc2V0IC1hIGFycgoJYXJyKz0oW2JsZWhdPWJsYWgpCgllY2hvICI8JHthcnJbMF19Pjwke2Fycls1XX0+IgpleHBlY3RlZC1zdGRvdXQ6Cgk1fGF8JHZ8YyBkfHwkdnxifAoJaz0gMTI4IDEyOSAxMzAgLgoJdj0gZm9vIGJhciBiYXogLgoJPD48YmxhaD4KLS0tCm5hbWU6IGFycmF5cy02CmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgd2UgY2FuIGdldCB0aGUgYXJyYXkga2V5cyAoaW5kaWNlcykgZm9yIGluZGV4ZWQgYXJyYXlzLAoJS29ybiBzaGVsbCBzdHlsZQpzdGRpbjoKCW9mKCkgewoJCWk9MAoJCWZvciB4IGluICIkQCI7IGRvCgkJCWVjaG8gLW4gIiQoKGkrKykpPCR4PiIKCQlkb25lCgkJZWNobwoJfQoJZm9vWzFdPWVpbnMKCXNldCB8IGdyZXAgJ15mb28nCgllY2hvID0KCWZvb1swXT16d2VpCglmb29bNF09ZHJlaQoJc2V0IHwgZ3JlcCAnXmZvbycKCWVjaG8gPQoJZWNobyBhICQob2YgJHtmb29bKl19KSA9ICQob2YgJHtiYXJbKl19KSBhCgllY2hvIGIgJChvZiAiJHtmb29bKl19IikgPSAkKG9mICIke2JhclsqXX0iKSBiCgllY2hvIGMgJChvZiAke2Zvb1tAXX0pID0gJChvZiAke2JhcltAXX0pIGMKCWVjaG8gZCAkKG9mICIke2Zvb1tAXX0iKSA9ICQob2YgIiR7YmFyW0BdfSIpIGQKCWVjaG8gZSAkKG9mICR7IWZvb1sqXX0pID0gJChvZiAkeyFiYXJbKl19KSBlCgllY2hvIGYgJChvZiAiJHshZm9vWypdfSIpID0gJChvZiAiJHshYmFyWypdfSIpIGYKCWVjaG8gZyAkKG9mICR7IWZvb1tAXX0pID0gJChvZiAkeyFiYXJbQF19KSBnCgllY2hvIGggJChvZiAiJHshZm9vW0BdfSIpID0gJChvZiAiJHshYmFyW0BdfSIpIGgKZXhwZWN0ZWQtc3Rkb3V0OgoJZm9vWzFdPWVpbnMKCT0KCWZvb1swXT16d2VpCglmb29bMV09ZWlucwoJZm9vWzRdPWRyZWkKCT0KCWEgMDx6d2VpPjE8ZWlucz4yPGRyZWk+ID0gYQoJYiAwPHp3ZWkgZWlucyBkcmVpPiA9IDA8PiBiCgljIDA8endlaT4xPGVpbnM+MjxkcmVpPiA9IGMKCWQgMDx6d2VpPjE8ZWlucz4yPGRyZWk+ID0gZAoJZSAwPDA+MTwxPjI8ND4gPSBlCglmIDA8MCAxIDQ+ID0gMDw+IGYKCWcgMDwwPjE8MT4yPDQ+ID0gZwoJaCAwPDA+MTwxPjI8ND4gPSBoCi0tLQpuYW1lOiBhcnJheXMtNwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIGFycmF5IGtleXMgKGluZGljZXMpIGZvciBpbmRleGVkIGFycmF5cywKCUtvcm4gc2hlbGwgc3R5bGUsIGluIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJZWNobyAhYXJ6OiAkeyFhcnp9CgllY2hvICFhcnpbMF06ICR7IWFyelswXX0KCWVjaG8gIWFyelsxXTogJHshYXJ6WzFdfQoJYXJ6PWZvbwoJZWNobyAhYXJ6OiAkeyFhcnp9CgllY2hvICFhcnpbMF06ICR7IWFyelswXX0KCWVjaG8gIWFyelsxXTogJHshYXJ6WzFdfQoJdW5zZXQgYXJ6CgllY2hvICFhcno6ICR7IWFyen0KCWVjaG8gIWFyelswXTogJHshYXJ6WzBdfQoJZWNobyAhYXJ6WzFdOiAkeyFhcnpbMV19CmV4cGVjdGVkLXN0ZG91dDoKCSFhcno6IGFyegoJIWFyelswXTogYXJ6WzBdCgkhYXJ6WzFdOiBhcnpbMV0KCSFhcno6IGFyegoJIWFyelswXTogYXJ6WzBdCgkhYXJ6WzFdOiBhcnpbMV0KCSFhcno6IGFyegoJIWFyelswXTogYXJ6WzBdCgkhYXJ6WzFdOiBhcnpbMV0KLS0tCm5hbWU6IGFycmF5cy04CmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBiZWhhdmlvdXJhbCBydWxlcyBmb3IgYXJyYXlzLgpzdGRpbjoKCWZuYSgpIHsKCQlzZXQgLUEgYWEgOQoJfQoJZm5iKCkgewoJCXR5cGVzZXQgYWIKCQlzZXQgLUEgYWIgOQoJfQoJZm5jKCkgewoJCXR5cGVzZXQgYWMKCQlzZXQgLUEgYWMgOTEKCQl1bnNldCBhYwoJCXNldCAtQSBhYyA5MgoJfQoJZm5kKCkgewoJCXNldCArQSBhZCA5Cgl9CglmbmUoKSB7CgkJdW5zZXQgYWUKCQlzZXQgK0EgYWUgOQoJfQoJZm5mKCkgewoJCXVuc2V0IGFmWzBdCgkJc2V0ICtBIGFmIDkKCX0KCWZuZygpIHsKCQl1bnNldCBhZ1sqXQoJCXNldCArQSBhZyA5Cgl9CglzZXQgLUEgYWEgMSAyCglzZXQgLUEgYWIgMSAyCglzZXQgLUEgYWMgMSAyCglzZXQgLUEgYWQgMSAyCglzZXQgLUEgYWUgMSAyCglzZXQgLUEgYWYgMSAyCglzZXQgLUEgYWcgMSAyCglzZXQgLUEgYWggMSAyCgl0eXBlc2V0IC1aMyBhYSBhYiBhYyBhZCBhZSBhZiBhZwoJcHJpbnQgMWEgJHthYVsqXX0gLgoJcHJpbnQgMWIgJHthYlsqXX0gLgoJcHJpbnQgMWMgJHthY1sqXX0gLgoJcHJpbnQgMWQgJHthZFsqXX0gLgoJcHJpbnQgMWUgJHthZVsqXX0gLgoJcHJpbnQgMWYgJHthZlsqXX0gLgoJcHJpbnQgMWcgJHthZ1sqXX0gLgoJcHJpbnQgMWggJHthaFsqXX0gLgoJZm5hCglmbmIKCWZuYwoJZm5kCglmbmUKCWZuZgoJZm5nCgl0eXBlc2V0IC1aNSBhaFsqXQoJcHJpbnQgMmEgJHthYVsqXX0gLgoJcHJpbnQgMmIgJHthYlsqXX0gLgoJcHJpbnQgMmMgJHthY1sqXX0gLgoJcHJpbnQgMmQgJHthZFsqXX0gLgoJcHJpbnQgMmUgJHthZVsqXX0gLgoJcHJpbnQgMmYgJHthZlsqXX0gLgoJcHJpbnQgMmcgJHthZ1sqXX0gLgoJcHJpbnQgMmggJHthaFsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxYSAwMDEgMDAyIC4KCTFiIDAwMSAwMDIgLgoJMWMgMDAxIDAwMiAuCgkxZCAwMDEgMDAyIC4KCTFlIDAwMSAwMDIgLgoJMWYgMDAxIDAwMiAuCgkxZyAwMDEgMDAyIC4KCTFoIDEgMiAuCgkyYSA5IC4KCTJiIDAwMSAwMDIgLgoJMmMgOTIgLgoJMmQgMDA5IDAwMiAuCgkyZSA5IC4KCTJmIDkgMDAyIC4KCTJnIDAwOSAuCgkyaCAwMDAwMSAwMDAwMiAuCi0tLQpuYW1lOiBhcnJheXMtOWEKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBjb25jYXRlbmF0ZSBhcnJheXMKc3RkaW46Cgl1bnNldCBmb287IGZvbz0oYmFyKTsgZm9vKz0oYmF6KTsgZWNobyAxICR7IWZvb1sqXX0gOiAke2Zvb1sqXX0gLgoJdW5zZXQgZm9vOyBmb289KGZvbyBiYXIpOyBmb28rPShiYXopOyBlY2hvIDIgJHshZm9vWypdfSA6ICR7Zm9vWypdfSAuCiMJdW5zZXQgZm9vOyBmb289KFsyXT1mb28gWzBdPWJhcik7IGZvbys9KGJheiBbNV09cXV1eCk7IGVjaG8gMyAkeyFmb29bKl19IDogJHtmb29bKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwIDEgOiBiYXIgYmF6IC4KCTIgMCAxIDIgOiBmb28gYmFyIGJheiAuCiMJMyAwIDIgMyA1IDogYmFyIGZvbyBiYXogcXV1eCAuCi0tLQpuYW1lOiBhcnJheXMtOWIKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHdlIGNhbiBjb25jYXRlbmF0ZSBwYXJhbWV0ZXJzIHRvbwpzdGRpbjoKCXVuc2V0IGZvbzsgZm9vPWJhcjsgZm9vKz1iYXo7IGVjaG8gMSAkZm9vIC4KCXVuc2V0IGZvbzsgdHlwZXNldCAtaTE2IGZvbz0xMDsgZm9vKz0yMDsgZWNobyAyICRmb28gLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGJhcmJheiAuCgkyIDE2I2EyMCAuCi0tLQpuYW1lOiBhcnJhc3NpZ24tYmFzaWMKZGVzY3JpcHRpb246CglDaGVjayBiYXNpYyB3aGl0ZXNwYWNlIGNvbnNlcnZpbmcgcHJvcGVydGllcyBvZiB3ZGFycmFzc2lnbgpzdGRpbjoKCWE9KCQoZWNobyBhICBiKSkKCWI9KCQoZWNobyAiYSAgYiIpKQoJYz0oIiQoZWNobyAiYSAgYiIpIikKCWQ9KCIkKGVjaG8gYSAgYikiKQoJYSs9KCQoZWNobyBjICBkKSkKCWIrPSgkKGVjaG8gImMgIGQiKSkKCWMrPSgiJChlY2hvICJjICBkIikiKQoJZCs9KCIkKGVjaG8gYyAgZCkiKQoJZWNobyAiLmE6JHthWzBdfS4ke2FbMV19LiR7YVsyXX0uJHthWzNdfToiCgllY2hvICIuYjoke2JbMF19LiR7YlsxXX0uJHtiWzJdfS4ke2JbM119OiIKCWVjaG8gIi5jOiR7Y1swXX0uJHtjWzFdfS4ke2NbMl19LiR7Y1szXX06IgoJZWNobyAiLmQ6JHtkWzBdfS4ke2RbMV19LiR7ZFsyXX0uJHtkWzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5hOmEuYi5jLmQ6CgkuYjphLmIuYy5kOgoJLmM6YSAgYi5jICBkLi46CgkuZDphIGIuYyBkLi46Ci0tLQpuYW1lOiBhcnJhc3NpZ24tZW9sCmRlc2NyaXB0aW9uOgoJQ29tbWFuZHMgYWZ0ZXIgYXJyYXkgYXNzaWdubWVudHMgYXJlIG5vdCBwZXJtaXR0ZWQKc3RkaW46Cglmb289KGEgYikgZW52CmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9zeW50YXggZXJyb3I6IHVuZXhwZWN0ZWQgJ2VudicvCi0tLQpuYW1lOiBhcnJhc3NpZ24tZm5jLW5vbmUKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBhcnJheSBhY2Nlc3MgaW5zaWRlIGEgZnVuY3Rpb24Kc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJeCs9KGYpCgkJZWNobyAiLmZuOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQlpZiBbWyAtbiAkQkFTSF9WRVJTSU9OIF1dOyB0aGVuCgkJCXk9KCkKCQllbHNlCgkJCXNldCAtQSB5CgkJZmkKCQl5Kz0oZikKCQllY2hvICIucmZuOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bS5tLi46CgkuZm46bS5tLmYuOgoJLmYxOm0ubS5mLjoKCS5mbjptLm0uZi5mOgoJLmYyOm0ubS5mLmY6CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTpmLi4uOgoJLnJmbjpmLi4uOgoJLnJmMjpmLi4uOgotLS0KbmFtZTogYXJyYXNzaWduLWZuYy1sb2NhbApkZXNjcmlwdGlvbjoKCUNoZWNrIGxvY2FsaXR5IG9mIGFycmF5IGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaC9ta3NoL2tzaDkzIGxvY2FsL3R5cGVzZXQga2V5d29yZAoJKG5vdGU6IGtzaDkzIGhhcyBubyBsb2NhbDsgdHlwZXNldCB3b3JrcyBvbmx5IGluIEZLU0gpCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgeAoJCXgrPShmKQoJCWVjaG8gIi5mbjoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCX0KCWZ1bmN0aW9uIHJmbiB7CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl5PSgpCgkJZWxzZQoJCQlzZXQgLUEgeQoJCWZpCgkJdHlwZXNldCB5CgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCB6CgkJaWYgW1sgLW4gJEJBU0hfVkVSU0lPTiBdXTsgdGhlbgoJCQl6PSgpCgkJZWxzZQoJCQlzZXQgLUEgegoJCWZpCgkJeis9KGYpCgkJZWNobyAiLmZucjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCX0KCXg9KG0gbSkKCXk9KG0gbSkKCXo9KG0gbSkKCWVjaG8gIi5mMDoke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjE6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCglmbgoJZWNobyAiLmYyOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZWNobyAiLnJmMDoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMToke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCXJmbgoJZWNobyAiLnJmMjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCWVjaG8gIi5mMHI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCglmbnIKCWVjaG8gIi5mMXI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCglmbnIKCWVjaG8gIi5mMnI6JHt6WzBdfS4ke3pbMV19LiR7elsyXX0uJHt6WzNdfToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptLm0uLjoKCS5mbjpmLi4uOgoJLmYxOm0ubS4uOgoJLmZuOmYuLi46CgkuZjI6bS5tLi46CgkucmYwOm0ubS4uOgoJLnJmbjpmLi4uOgoJLnJmMTouLi46CgkucmZuOmYuLi46CgkucmYyOi4uLjoKCS5mMHI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjFyOm0ubS4uOgoJLmZucjpmLi4uOgoJLmYycjptLm0uLjoKLS0tCm5hbWU6IGFycmFzc2lnbi1mbmMtZ2xvYmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2YgYXJyYXkgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCgl3aXRoIHRoZSBiYXNoNC9ta3NoL3lhc2gvenNoIHR5cGVzZXQgLWcga2V5d29yZApzdGRpbjoKCWZ1bmN0aW9uIGZuIHsKCQl0eXBlc2V0IC1nIHgKCQl4Kz0oZikKCQllY2hvICIuZm46JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgl9CglmdW5jdGlvbiByZm4gewoJCXNldCAtQSB5CgkJdHlwZXNldCAtZyB5CgkJeSs9KGYpCgkJZWNobyAiLnJmbjoke3lbMF19LiR7eVsxXX0uJHt5WzJdfS4ke3lbM119OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCAtZyB6CgkJc2V0IC1BIHoKCQl6Kz0oZikKCQllY2hvICIuZm5yOiR7elswXX0uJHt6WzFdfS4ke3pbMl19LiR7elszXX06IgoJfQoJeD0obSBtKQoJeT0obSBtKQoJej0obSBtKQoJZWNobyAiLmYwOiR7eFswXX0uJHt4WzFdfS4ke3hbMl19LiR7eFszXX06IgoJZm4KCWVjaG8gIi5mMToke3hbMF19LiR7eFsxXX0uJHt4WzJdfS4ke3hbM119OiIKCWZuCgllY2hvICIuZjI6JHt4WzBdfS4ke3hbMV19LiR7eFsyXX0uJHt4WzNdfToiCgllY2hvICIucmYwOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYxOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJcmZuCgllY2hvICIucmYyOiR7eVswXX0uJHt5WzFdfS4ke3lbMl19LiR7eVszXX06IgoJZWNobyAiLmYwcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYxcjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKCWZucgoJZWNobyAiLmYycjoke3pbMF19LiR7elsxXX0uJHt6WzJdfS4ke3pbM119OiIKZXhwZWN0ZWQtc3Rkb3V0OgoJLmYwOm0ubS4uOgoJLmZuOm0ubS5mLjoKCS5mMTptLm0uZi46CgkuZm46bS5tLmYuZjoKCS5mMjptLm0uZi5mOgoJLnJmMDptLm0uLjoKCS5yZm46Zi4uLjoKCS5yZjE6Zi4uLjoKCS5yZm46Zi4uLjoKCS5yZjI6Zi4uLjoKCS5mMHI6bS5tLi46CgkuZm5yOmYuLi46CgkuZjFyOmYuLi46CgkuZm5yOmYuLi46CgkuZjJyOmYuLi46Ci0tLQpuYW1lOiBzdHJhc3NpZ24tZm5jLW5vbmUKZGVzY3JpcHRpb246CglDaGVjayBsb2NhbGl0eSBvZiBzdHJpbmcgYWNjZXNzIGluc2lkZSBhIGZ1bmN0aW9uCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCXkrPWYKCQllY2hvICIucmZuOiR5OiIKCX0KCXg9bQoJeT1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOm1mOgoJLmYxOm1mOgoJLmZuOm1mZjoKCS5mMjptZmY6CgkucmYwOm06CgkucmZuOmY6CgkucmYxOmY6CgkucmZuOmY6CgkucmYyOmY6Ci0tLQpuYW1lOiBzdHJhc3NpZ24tZm5jLWxvY2FsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2Ygc3RyaW5nIGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaC9ta3NoL2tzaDkzIGxvY2FsL3R5cGVzZXQga2V5d29yZAoJKG5vdGU6IGtzaDkzIGhhcyBubyBsb2NhbDsgdHlwZXNldCB3b3JrcyBvbmx5IGluIEZLU0gpCnN0ZGluOgoJZnVuY3Rpb24gZm4gewoJCXR5cGVzZXQgeAoJCXgrPWYKCQllY2hvICIuZm46JHg6IgoJfQoJZnVuY3Rpb24gcmZuIHsKCQl5PQoJCXR5cGVzZXQgeQoJCXkrPWYKCQllY2hvICIucmZuOiR5OiIKCX0KCWZ1bmN0aW9uIGZuciB7CgkJdHlwZXNldCB6CgkJej0KCQl6Kz1mCgkJZWNobyAiLmZucjokejoiCgl9Cgl4PW0KCXk9bQoJej1tCgllY2hvICIuZjA6JHg6IgoJZm4KCWVjaG8gIi5mMTokeDoiCglmbgoJZWNobyAiLmYyOiR4OiIKCWVjaG8gIi5yZjA6JHk6IgoJcmZuCgllY2hvICIucmYxOiR5OiIKCXJmbgoJZWNobyAiLnJmMjokeToiCgllY2hvICIuZjByOiR6OiIKCWZucgoJZWNobyAiLmYxcjokejoiCglmbnIKCWVjaG8gIi5mMnI6JHo6IgpleHBlY3RlZC1zdGRvdXQ6CgkuZjA6bToKCS5mbjpmOgoJLmYxOm06CgkuZm46ZjoKCS5mMjptOgoJLnJmMDptOgoJLnJmbjpmOgoJLnJmMTo6CgkucmZuOmY6CgkucmYyOjoKCS5mMHI6bToKCS5mbnI6ZjoKCS5mMXI6bToKCS5mbnI6ZjoKCS5mMnI6bToKLS0tCm5hbWU6IHN0cmFzc2lnbi1mbmMtZ2xvYmFsCmRlc2NyaXB0aW9uOgoJQ2hlY2sgbG9jYWxpdHkgb2Ygc3RyaW5nIGFjY2VzcyBpbnNpZGUgYSBmdW5jdGlvbgoJd2l0aCB0aGUgYmFzaDQvbWtzaC95YXNoL3pzaCB0eXBlc2V0IC1nIGtleXdvcmQKc3RkaW46CglmdW5jdGlvbiBmbiB7CgkJdHlwZXNldCAtZyB4CgkJeCs9ZgoJCWVjaG8gIi5mbjokeDoiCgl9CglmdW5jdGlvbiByZm4gewoJCXk9CgkJdHlwZXNldCAtZyB5CgkJeSs9ZgoJCWVjaG8gIi5yZm46JHk6IgoJfQoJZnVuY3Rpb24gZm5yIHsKCQl0eXBlc2V0IC1nIHoKCQl6PQoJCXorPWYKCQllY2hvICIuZm5yOiR6OiIKCX0KCXg9bQoJeT1tCgl6PW0KCWVjaG8gIi5mMDokeDoiCglmbgoJZWNobyAiLmYxOiR4OiIKCWZuCgllY2hvICIuZjI6JHg6IgoJZWNobyAiLnJmMDokeToiCglyZm4KCWVjaG8gIi5yZjE6JHk6IgoJcmZuCgllY2hvICIucmYyOiR5OiIKCWVjaG8gIi5mMHI6JHo6IgoJZm5yCgllY2hvICIuZjFyOiR6OiIKCWZucgoJZWNobyAiLmYycjokejoiCmV4cGVjdGVkLXN0ZG91dDoKCS5mMDptOgoJLmZuOm1mOgoJLmYxOm1mOgoJLmZuOm1mZjoKCS5mMjptZmY6CgkucmYwOm06CgkucmZuOmY6CgkucmYxOmY6CgkucmZuOmY6CgkucmYyOmY6CgkuZjByOm06CgkuZm5yOmY6CgkuZjFyOmY6CgkuZm5yOmY6CgkuZjJyOmY6Ci0tLQpuYW1lOiB1bnNldC1mbmMtbG9jYWwta3NoCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCDigJx1bnNldOKAnSByZW1vdmVzIGEgcHJldmlvdXMg4oCcbG9jYWzigJ0KCShrc2g5MyBzeW50YXggY29tcGF0aWJsZSB2ZXJzaW9uKTsgYXBwYXJlbnRseSwKCXRoZXJlIGFyZSBzaGVsbHMgd2hpY2ggZmFpbCB0aGlzPwpzdGRpbjoKCWZ1bmN0aW9uIGYgewoJCWVjaG8gZjA6ICR4CgkJdHlwZXNldCB4CgkJZWNobyBmMTogJHgKCQl4PWZhCgkJZWNobyBmMjogJHgKCQl1bnNldCB4CgkJZWNobyBmMzogJHgKCQl4PWZiCgkJZWNobyBmNDogJHgKCX0KCXg9bwoJZWNobyBiZWZvcmU6ICR4CglmCgllY2hvIGFmdGVyOiAkeApleHBlY3RlZC1zdGRvdXQ6CgliZWZvcmU6IG8KCWYwOiBvCglmMToKCWYyOiBmYQoJZjM6IG8KCWY0OiBmYgoJYWZ0ZXI6IGZiCi0tLQpuYW1lOiB1bnNldC1mbmMtbG9jYWwtc2gKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IOKAnHVuc2V04oCdIHJlbW92ZXMgYSBwcmV2aW91cyDigJxsb2NhbOKAnQoJKERlYmlhbiBQb2xpY3kgwqcxMC40IHNoIHZlcnNpb24pOyBhcHBhcmVudGx5LAoJdGhlcmUgYXJlIHNoZWxscyB3aGljaCBmYWlsIHRoaXM/CnN0ZGluOgoJZigpIHsKCQllY2hvIGYwOiAkeAoJCWxvY2FsIHgKCQllY2hvIGYxOiAkeAoJCXg9ZmEKCQllY2hvIGYyOiAkeAoJCXVuc2V0IHgKCQllY2hvIGYzOiAkeAoJCXg9ZmIKCQllY2hvIGY0OiAkeAoJfQoJeD1vCgllY2hvIGJlZm9yZTogJHgKCWYKCWVjaG8gYWZ0ZXI6ICR4CmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZTogbwoJZjA6IG8KCWYxOgoJZjI6IGZhCglmMzogbwoJZjQ6IGZiCglhZnRlcjogZmIKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgc3Vic3RyaW5nIGV4cGFuc2lvbiB3b3JrcwoJd2hlbiB1c2luZyBwb3NpdGl2ZSBudW1lcmljcwpzdGRpbjoKCXg9YWJjZGVmZ2hpCgl0eXBlc2V0IC1pIHk9MTIzNDU2Nzg5Cgl0eXBlc2V0IC1pIDE2IHo9MTIzNDU2Nzg5CSMgMTYjNzViY2QxNQoJZWNobyBhIHQke3g6MjoyfSAke3k6MjozfSAke3o6MjozfSBhCgllY2hvIGIgJHt4OjozfSAke3k6OjN9ICR7ejo6M30gYgoJZWNobyBjICR7eDoyOn0gJHt5OjI6fSAke3o6Mjp9IGMKCWVjaG8gZCAke3g6Mn0gJHt5OjJ9ICR7ejoyfSBkCgllY2hvIGUgJHt4OjI6Nn0gJHt5OjI6Nn0gJHt6OjI6N30gZQoJZWNobyBmICR7eDoyOjd9ICR7eToyOjd9ICR7ejoyOjh9IGYKCWVjaG8gZyAke3g6Mjo4fSAke3k6Mjo4fSAke3o6Mjo5fSBnCmV4cGVjdGVkLXN0ZG91dDoKCWEgdGNkIDM0NSAjNzUgYQoJYiBhYmMgMTIzIDE2IyBiCgljIGMKCWQgY2RlZmdoaSAzNDU2Nzg5ICM3NWJjZDE1IGQKCWUgY2RlZmdoIDM0NTY3OCAjNzViY2QxIGUKCWYgY2RlZmdoaSAzNDU2Nzg5ICM3NWJjZDE1IGYKCWcgY2RlZmdoaSAzNDU2Nzg5ICM3NWJjZDE1IGcKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItMgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIGJhc2gtc3R5bGUgc3Vic3RyaW5nIGV4cGFuc2lvbiB3b3JrcwoJd2hlbiB1c2luZyBuZWdhdGl2ZSBudW1lcmljcyBvciBleHByZXNzaW9ucwpzdGRpbjoKCXg9YWJjZGVmZ2hpCgl0eXBlc2V0IC1pIHk9MTIzNDU2Nzg5Cgl0eXBlc2V0IC1pIDE2IHo9MTIzNDU2Nzg5CSMgMTYjNzViY2QxNQoJbj0yCgllY2hvIGEgJHt4OiRuOjN9ICR7eTokbjozfSAke3o6JG46M30gYQoJZWNobyBiICR7eDoobik6M30gJHt5OihuKTozfSAke3o6KG4pOjN9IGIKCWVjaG8gYyAke3g6KC0yKToxfSAke3k6KC0yKToxfSAke3o6KC0yKToxfSBjCgllY2hvIGQgdCR7eDogbjoyfSAke3k6IG46M30gJHt6OiBuOjN9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBjZGUgMzQ1ICM3NSBhCgliIGNkZSAzNDUgIzc1IGIKCWMgaCA4IDEgYwoJZCB0Y2QgMzQ1ICM3NSBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTMKZGVzY3JpcHRpb246CglNYXRjaCBiYXNoNQpzdGRpbjoKCWV4cG9ydCB4PWFiY2RlZmdoaSBuPTIKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gdiR7eDoobil9eCcKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gdyR7eDogbn14JwoJIiRfX3Byb2duYW1lIiAtYyAnZWNobyB4JHt4Om59eCcKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8geSR7eDp9eCcKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8geiR7eH14JwoJIiRfX3Byb2duYW1lIiAtYyAneD1hYmNkZWY7eT0xMjM7ZWNobyBxJHt4OiR7eToyOjF9OjJ9cScKZXhwZWN0ZWQtc3Rkb3V0OgoJdmNkZWZnaGl4Cgl3Y2RlZmdoaXgKCXhjZGVmZ2hpeAoJemFiY2RlZmdoaXgKCXFkZXEKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkveDp9LipiYWQgc3Vic3RpdHV0aW9uLwotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgY29ybmVyIGNhc2VzIGZvciBzdWJzdHJpbmcgZXhwYW5zaW9uCnN0ZGluOgoJeD1hYmNkZWZnaGkKCWludGVnZXIgeT0yCgllY2hvIGEgJHt4Oih5ID09IDEgPyAyIDogMyk6NH0gYQpleHBlY3RlZC1zdGRvdXQ6CglhIGRlZmcgYQotLS0KbmFtZTogdmFyZXhwYW5kLXN1YnN0ci01QQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3Vic3RyaW5nIGV4cGFuc2lvbnMgd29yayBvbiBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCgl4PW3DpGgKCWVjaG8gYSAke3g6OjF9ICR7eDogLTF9IGEKCWVjaG8gYiAke3g6OjN9ICR7eDogLTN9IGIKCWVjaG8gYyAke3g6MToyfSAke3g6IC0zOjJ9IGMKCWVjaG8gZCAkeyN4fSBkCmV4cGVjdGVkLXN0ZG91dDoKCWEgbSBoIGEKCWIgbcOkIMOkaCBiCgljIMOkIMOkIGMKCWQgNCBkCi0tLQpuYW1lOiB2YXJleHBhbmQtc3Vic3RyLTVXCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBzdWJzdHJpbmcgZXhwYW5zaW9ucyB3b3JrIG9uIGNoYXJhY3RlcnMKc3RkaW46CglzZXQgLVUKCXg9bcOkaAoJZWNobyBhICR7eDo6MX0gJHt4OiAtMX0gYQoJZWNobyBiICR7eDo6Mn0gJHt4OiAtMn0gYgoJZWNobyBjICR7eDoxOjF9ICR7eDogLTI6MX0gYwoJZWNobyBkICR7I3h9IGQKZXhwZWN0ZWQtc3Rkb3V0OgoJYSBtIGggYQoJYiBtw6Qgw6RoIGIKCWMgw6Qgw6QgYwoJZCAzIGQKLS0tCm5hbWU6IHZhcmV4cGFuZC1zdWJzdHItNgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgc3RyaW5nIHN1YnN0aXR1dGlvbiB3b3JrcyBjb3JyZWN0bHkKc3RkaW46Cglmb289MQoJYmFyPTIKCWJhej1xd2VydHl1aW9wCgllY2hvIGEgJHtiYXo6IGZvbzogYmFyfQoJZWNobyBiICR7YmF6OiBmb286ICRiYXJ9CgllY2hvIGMgJHtiYXo6ICRmb286IGJhcn0KCWVjaG8gZCAke2JhejogJGZvbzogJGJhcn0KZXhwZWN0ZWQtc3Rkb3V0OgoJYSB3ZQoJYiB3ZQoJYyB3ZQoJZCB3ZQotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaApkZXNjcmlwdGlvbjoKCUNoZWNrIHNwZWNpYWwgJHt2YXJAeH0gZXhwYW5zaW9uIGZvciB4PWhhc2gKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJdHlwZXNldCAtaTggZm9vPTEwCgliYXI9YmF6Cgl1bnNldCBiYXoKCXByaW50ICR7Zm9vQCN9ICR7YmFyQCN9ICR7YmF6QCN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJOUIxNUZCRkIgQ0ZCREQzMkIgMDAwMDAwMDAgLgotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtaGFzaC1lYmNkaWMKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsICR7dmFyQHh9IGV4cGFuc2lvbiBmb3IgeD1oYXNoCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJdHlwZXNldCAtaTggZm9vPTEwCgliYXI9YmF6Cgl1bnNldCBiYXoKCXByaW50ICR7Zm9vQCN9ICR7YmFyQCN9ICR7YmF6QCN9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMDE2QUUzM0QgOTc2OUM0QUYgMDAwMDAwMDAgLgotLS0KbmFtZTogdmFyZXhwYW5kLXNwZWNpYWwtcXVvdGUKZGVzY3JpcHRpb246CglDaGVjayBzcGVjaWFsICR7dmFyQFF9IGV4cGFuc2lvbiBmb3IgcXVvdGVkIHN0cmluZ3MKY2F0ZWdvcnk6ICFzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmRcMjQwZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZFwyNDBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1zcGVjaWFsLXF1b3RlLWZhdXgtRUJDRElDCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3BlY2lhbCAke3ZhckBRfSBleHBhbnNpb24gZm9yIHF1b3RlZCBzdHJpbmdzCmNhdGVnb3J5OiBzaGVsbDpmYXV4LWViY2RpYwpzdGRpbjoKCXNldCArVQoJaT14CglqPWFcIGIKCWs9JCdjCglkXHhBMCcnZeKCrGYnCglwcmludCAtciAtLSAiPGk9JGkgaj0kaiBrPSRrPiIKCXM9InU9JHtpQFF9IHY9JHtqQFF9IHc9JHtrQFF9IgoJcHJpbnQgLXIgLS0gInM9XCIkc1wiIgoJZXZhbCAiJHMiCgl0eXBlc2V0IC1wIHUgdiB3CmV4cGVjdGVkLXN0ZG91dDoKCTxpPXggaj1hIGIgaz1jCglkoGXigqxmPgoJcz0idT14IHY9J2EgYicgdz0kJ2NcbmSgZVx1MjBBQ2YnIgoJdHlwZXNldCB1PXgKCXR5cGVzZXQgdj0nYSBiJwoJdHlwZXNldCB3PSQnY1xuZKBlXHUyMEFDZicKLS0tCm5hbWU6IHZhcmV4cGFuZC1udWxsLTEKZGVzY3JpcHRpb246CglFbnN1cmUgZW1wdHkgc3RyaW5ncyBleHBhbmQgZW1wdGlseQpzdGRpbjoKCXByaW50IHMgJHthfSAuICR7Yn0gUwoJcHJpbnQgdCAke2EjP30gLiAke2IlP30gVAoJcHJpbnQgciAke2E9fSAuICR7Yi9jL2R9IFIKCXByaW50IHEKCXByaW50IHMgIiR7YX0iIC4gIiR7Yn0iIFMKCXByaW50IHQgIiR7YSM/fSIgLiAiJHtiJT99IiBUCglwcmludCByICIke2E9fSIgLiAiJHtiL2MvZH0iIFIKZXhwZWN0ZWQtc3Rkb3V0OgoJcyAuIFMKCXQgLiBUCglyIC4gUgoJcQoJcyAgLiAgUwoJdCAgLiAgVAoJciAgLiAgUgotLS0KbmFtZTogdmFyZXhwYW5kLW51bGwtMgpkZXNjcmlwdGlvbjoKCUVuc3VyZSBlbXB0eSBzdHJpbmdzLCB3aGVuIHF1b3RlZCwgYXJlIGV4cGFuZGVkIGFzIGVtcHR5IHN0cmluZ3MKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmZvciB4IGluICIkQCI7IGRvIHByaW50IC1uciAtLSAiPCR4PiAiOyBkb25lJyA+cGZzCgljaG1vZCAreCBwZnMKCS4vcGZzIDEgIiR7YX0iIDIgIiR7YSM/fSIgKyAiJHtiJT99IiAzICIke2E9fSIgKyAiJHtiL2MvZH0iCgllY2hvIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDw+IDwyPiA8PiA8Kz4gPD4gPDM+IDw+IDwrPiA8PiAuCi0tLQpuYW1lOiB2YXJleHBhbmQtbnVsbC0zCmRlc2NyaXB0aW9uOgoJRW5zdXJlIGNvbmNhdGVuYXRpbmcgYmVoYXZpb3VyIG1hdGNoZXMgb3RoZXIgc2hlbGxzCnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXNob3dhcmdzIDAgIiIkQAoJeD07IHNob3dhcmdzIDEgIiR4IiRACglzZXQgQTsgc2hvd2FyZ3MgMiAiJHtAOit9IgoJbigpIHsgZWNobyAiJCMiOyB9Cgl1bnNldCBlCglzZXQgLS0gYSBiCgluICIiIiRAIgoJbiAiJEAiCgluICIkQCIiIgoJbiAiJGUiIiRAIgoJbiAiJEAiCgluICIkQCIiJGUiCglzZXQgLS0KCW4gIiIiJEAiCgluICIkQCIKCW4gIiRAIiIiCgluICIkZSIiJEAiCgluICIkQCIKCW4gIiRAIiIkZSIKZXhwZWN0ZWQtc3Rkb3V0OgoJPDA+IDw+IC4KCTwxPiA8PiAuCgk8Mj4gPD4gLgoJMgoJMgoJMgoJMgoJMgoJMgoJMQoJMAoJMQoJMQoJMAoJMQotLS0KbmFtZTogdmFyZXhwYW5kLWZ1bm55LWNoYXJzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjaGFyYWN0ZXJzCglYWFggXHVFRjgwIGlzIGFzeW1tZXRyaWMsIHBvc3NpYmx5IGJ1Z2d5IHNvIHdlIGRvbuKAmXQgY2hlY2sgdGhpcwpzdGRpbjoKCXg9JCc8XHgwMD4nOyB0eXBlc2V0IC1wIHgKCXg9JCc8XHgwMT4nOyB0eXBlc2V0IC1wIHgKCXg9JCc8XHUwMDAwPic7IHR5cGVzZXQgLXAgeAoJeD0kJzxcdTAwMDE+JzsgdHlwZXNldCAtcCB4CmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgeD0nPCcKCXR5cGVzZXQgeD0kJzxcMDAxPicKCXR5cGVzZXQgeD0nPCcKCXR5cGVzZXQgeD0kJzxcMDAxPicKLS0tCm5hbWU6IHByaW50LWZ1bm55LWNoYXJzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJpbnQgYnVpbHRpbidzIGNhcGFiaWxpdHkgdG8gb3V0cHV0IGRlc2lnbmF0ZWQgY2hhcmFjdGVycwpzdGRpbjoKCXsKCQlwcmludCAnPFwwMTQ0XDAzNDRceERCXHUwMERCXHUyMEFDXHVEQlx4NDA+JwoJCXByaW50ICc8XHgwMD4nCgkJcHJpbnQgJzxceDAxPicKCQlwcmludCAnPFx1MDAwMD4nCgkJcHJpbnQgJzxcdTAwMDE+JwoJfSB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM0FyCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNSBodj0yMTQ3NDgzNjQ3CgkJZGFzYz0KCQlpZiByZWFkIC1hck4gLTEgbGluZTsgdGhlbgoJCQl0eXBlc2V0IC1pMSBsaW5lCgkJCWk9MAoJCQl3aGlsZSAoKCBpIDwgJHsjbGluZVsqXX0gKSk7IGRvCgkJCQlodj0ke2xpbmVbaSsrXX0KCQkJCWlmICgoIChwb3MgJiAxNSkgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAtciAtLSAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJcHJpbnQgLW4gIiR7aHYjMTYjfSAiCgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgKGh2ID4gMTI2KSApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MuCgkJCQllbHNlCgkJCQkJZGFzYz0kZGFzYyR7bGluZVtpLTFdIzEjfQoJCQkJZmkKCQkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQkJZG9uZQoJCWZpCgkJd2hpbGUgKCggcG9zICYgMTUgKSk7IGRvCgkJCXByaW50IC1uICcgICAnCgkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAtciAtLSAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgM0MgNjQgRTQgREIgQzMgOUIgRTIgODIgLSBBQyBDMyA5QiA0MCAzRSAwQSAzQyAwMCAgfDxkLi4uLi4uLi4uQD4uPC58CgkwMDAwMDAxMCAgM0UgMEEgM0MgMDEgM0UgMEEgM0MgMDAgLSAzRSAwQSAzQyAwMSAzRSAwQSAgICAgICAgfD4uPC4+LjwuPi48Lj4ufAotLS0KbmFtZTogcHJpbnQtYmtzbC1jCmRlc2NyaXB0aW9uOgoJQ2hlY2sgcHJpbnQgYnVpbHRpbidzIFxjIGVzY2FwZQpzdGRpbjoKCXByaW50ICdcY2EnOyBwcmludCBiCmV4cGVjdGVkLXN0ZG91dDoKCWFiCi0tLQpuYW1lOiBwcmludC1jcgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgQ1IrTEYgaXMgbm90IGNvbGxhcHNlZCBpbnRvIExGIGFzIHNvbWUgTVNZUyBzaGVsbHMgd3JvbmdseSBkbwpzdGRpbjoKCWVjaG8gJyMhJyIkX19wcm9nbmFtZSIgPmZvbwoJY2F0ID4+Zm9vIDw8LSdFT0YnCgkJcHJpbnQgLW4gLS0gJzIyMC1ibGF1Lm1pcmJzZC5vcmcgRVNNVFAgcmVhZHkgYXQgVGh1LCAyNSBKdWwgMjAxMyAxNTo1Nzo1NyBHTVRcclxuMjIwLT4+IEJpdHRlIGtlaW5lIFdlcmJ1bmcgZWlud2VyZmVuISA8PFxyXHJcbjIyMCBXaG8gZG8geW91IHdhbm5hIHByZXRlbmQgdG8gYmUgdG9kYXknCgkJcHJpbnQgXD8NCglFT0YKCWNobW9kICt4IGZvbwoJZWNobyAiWyQoLi9mb28pXSIKCS4vZm9vIHwgd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJcHJpbnQgLXIgLS0gInskbGluZX0iCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCVsyMjAtYmxhdS5taXJic2Qub3JnIEVTTVRQIHJlYWR5IGF0IFRodSwgMjUgSnVsIDIwMTMgMTU6NTc6NTcgR01UDQoJMjIwLT4+IEJpdHRlIGtlaW5lIFdlcmJ1bmcgZWlud2VyZmVuISA8PA0NCgkyMjAgV2hvIGRvIHlvdSB3YW5uYSBwcmV0ZW5kIHRvIGJlIHRvZGF5Pw1dCgl7MjIwLWJsYXUubWlyYnNkLm9yZyBFU01UUCByZWFkeSBhdCBUaHUsIDI1IEp1bCAyMDEzIDE1OjU3OjU3IEdNVA19Cgl7MjIwLT4+IEJpdHRlIGtlaW5lIFdlcmJ1bmcgZWlud2VyZmVuISA8PA0NfQoJezIyMCBXaG8gZG8geW91IHdhbm5hIHByZXRlbmQgdG8gYmUgdG9kYXk/DX0KLS0tCm5hbWU6IHByaW50LWNybGYKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IENSK0xGIGlzIHNob3duIGFuZCByZWFkIGFzLWlzCmNhdGVnb3J5OiBzaGVsbDp0ZXh0bW9kZS1ubwpzdGRpbjoKCWNhdCA+Zm9vIDw8LSdFT0YnCgkJeD0nYmFyDQoJCScgIw0KCQllY2hvIC4keyN4fSAjDQoJCWlmIHRlc3QgeCIkS1NIX1ZFUlNJT04iID0geCIiOyB0aGVuICMNCgkJCXByaW50ZiAnPCVzPicgIiR4IiAjDQoJCWVsc2UgIw0KCQkJcHJpbnQgLW5yIC0tICI8JHg+IiAjDQoJCWZpICMNCglFT0YKCWVjaG8gIlskKCIkX19wcm9nbmFtZSIgZm9vKV0iCgkiJF9fcHJvZ25hbWUiIGZvbyB8IHdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCXByaW50IC1yIC0tICJ7JGxpbmV9IgoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglbLjUKCTxiYXINCgk+XQoJey41fQoJezxiYXINfQotLS0KbmFtZTogcHJpbnQtY3JsZi10ZXh0bW9kZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgQ1IrTEYgaXMgdHJlYXRlZCBhcyBuZXdsaW5lCmNhdGVnb3J5OiBzaGVsbDp0ZXh0bW9kZS15ZXMKc3RkaW46CgljYXQgPmZvbyA8PC0nRU9GJwoJCXg9J2Jhcg0KCQknICMNCgkJZWNobyAuJHsjeH0gIw0KCQlpZiB0ZXN0IHgiJEtTSF9WRVJTSU9OIiA9IHgiIjsgdGhlbiAjDQoJCQlwcmludGYgJzwlcz4nICIkeCIgIw0KCQllbHNlICMNCgkJCXByaW50IC1uciAtLSAiPCR4PiIgIw0KCQlmaSAjDQoJRU9GCgllY2hvICJbJCgiJF9fcHJvZ25hbWUiIGZvbyldIgoJIiRfX3Byb2duYW1lIiBmb28gfCB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlwcmludCAtciAtLSAieyRsaW5lfSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJWy40Cgk8YmFyCgk+XQoJey40fQoJezxiYXJ9Ci0tLQpuYW1lOiBwcmludC1sZgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgTEYtb25seSBpcyBzaG93biBhbmQgcmVhZCBhcy1pcwpzdGRpbjoKCWNhdCA+Zm9vIDw8LSdFT0YnCgkJeD0nYmFyCgkJJyAjCgkJZWNobyAuJHsjeH0gIwoJCWlmIHRlc3QgeCIkS1NIX1ZFUlNJT04iID0geCIiOyB0aGVuICMKCQkJcHJpbnRmICc8JXM+JyAiJHgiICMKCQllbHNlICMKCQkJcHJpbnQgLW5yIC0tICI8JHg+IiAjCgkJZmkgIwoJRU9GCgllY2hvICJbJCgiJF9fcHJvZ25hbWUiIGZvbyldIgoJIiRfX3Byb2duYW1lIiBmb28gfCB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlwcmludCAtciAtLSAieyRsaW5lfSIKCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJWy40Cgk8YmFyCgk+XQoJey40fQoJezxiYXJ9Ci0tLQpuYW1lOiBwcmludC1udWwtY2hhcnMKZGVzY3JpcHRpb246CglDaGVjayBoYW5kbGluZyBvZiBOVUwgY2hhcmFjdGVycyBmb3IgcHJpbnQgYW5kIENPTVNVQgpzdGRpbjoKCXg9JChwcmludCAnPFwwPicpCglwcmludCAkKCgkKHByaW50ICc8XDA+JyB8IHdjIC1jKSkpICQoKCQocHJpbnQgIiR4IiB8IHdjIC1jKSkpIFwKCSAgICAkeyN4fSAiJHgiICc8XDA+JwpleHBlY3RlZC1zdGRvdXQtcGF0dGVybjoKCS9eNCAzIDIgPD4gPFwwPiQvCi0tLQpuYW1lOiBwcmludC1hcnJheQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgcHJpbnQgLUEgd29ya3MgYXMgZXhwZWN0ZWQKc3RkaW46CglwcmludCAtQW4gMHgyMEFDIDB4QzMgMHhCQyA4IzEwMQoJc2V0IC1VCglwcmludCAtQSAweDIwQUMgMHhDMyAweEJDIDgjMTAyCmV4cGVjdGVkLXN0ZG91dDoKCazDvEHigqzDg8K8QgotLS0KbmFtZTogcHJpbnQtZXNjYXBlcwpkZXNjcmlwdGlvbjoKCUNoZWNrIGJhY2tzbGFzaCBleHBhbnNpb24gYnkgdGhlIHByaW50IGJ1aWx0aW4Kc3RkaW46CglwcmludCAnXCBcIVwiXCNcJFwlXCYnXFxcJydcKFwpXCpcK1wsXC1cLlwvXDBcMVwyXDNcNFw1XDZcN1w4JyBcCgkgICAgJ1w5XDpcO1w8XD1cPlw/XEBcQVxCXENcRFxFXEZcR1xIXElcSlxLXExcTVxOXE9cUFxRXFJcU1xUJyBcCgkgICAgJ1xVXFZcV1xYXFlcWlxbXFxcXVxeXF9cYFxhXGIgIFxkXGVcZlxnXGhcaVxqXGtcbFxtXG5cb1xwJyBcCgkgICAgJ1xxXHJcc1x0XHVcdlx3XHhceVx6XHtcfFx9XH4nICdcdTIwYWNkJyAnXFUyMGFjZCcgJ1x4MTIzJyBcCgkgICAgJ1wweCcgJ1wwMTIzJyAnXDAxMjM0JyB8IHsKCQkjIGludGVnZXItYmFzZS1vbmUtM0FzCgkJdHlwZXNldCAtVXVpMTYgLVoxMSBwb3M9MAoJCXR5cGVzZXQgLVV1aTE2IC1aNSBodj0yMTQ3NDgzNjQ3CgkJdHlwZXNldCAtaTEgd2M9MHgwQQoJCWRhc2M9CgkJbmw9JHt3YyMxI30KCQl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQkJbGluZT0kbGluZSRubAoJCQl3aGlsZSBbWyAtbiAkbGluZSBdXTsgZG8KCQkJCWh2PTEjJHtsaW5lOjoxfQoJCQkJaWYgKCggKHBvcyAmIDE1KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50IC1yIC0tICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCWlmICgoIChodiA8IDMyKSB8fCAoaHYgPiAxMjYpICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYy4KCQkJCWVsc2UKCQkJCQlkYXNjPSRkYXNjJHtsaW5lOjoxfQoJCQkJZmkKCQkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQkJCWxpbmU9JHtsaW5lOjF9CgkJCWRvbmUKCQlkb25lCgkJd2hpbGUgKCggcG9zICYgMTUgKSk7IGRvCgkJCXByaW50IC1uICcgICAnCgkJCSgoIChwb3MrKyAmIDE1KSA9PSA3ICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAtciAtLSAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgNUMgMjAgNUMgMjEgNUMgMjIgNUMgMjMgLSA1QyAyNCA1QyAyNSA1QyAyNiA1QyAyNyAgfFwgXCFcIlwjXCRcJVwmXCd8CgkwMDAwMDAxMCAgNUMgMjggNUMgMjkgNUMgMkEgNUMgMkIgLSA1QyAyQyA1QyAyRCA1QyAyRSA1QyAyRiAgfFwoXClcKlwrXCxcLVwuXC98CgkwMDAwMDAyMCAgNUMgMzEgNUMgMzIgNUMgMzMgNUMgMzQgLSA1QyAzNSA1QyAzNiA1QyAzNyA1QyAzOCAgfFwxXDJcM1w0XDVcNlw3XDh8CgkwMDAwMDAzMCAgMjAgNUMgMzkgNUMgM0EgNUMgM0IgNUMgLSAzQyA1QyAzRCA1QyAzRSA1QyAzRiA1QyAgfCBcOVw6XDtcPFw9XD5cP1x8CgkwMDAwMDA0MCAgNDAgNUMgNDEgNUMgNDIgNUMgNDMgNUMgLSA0NCAxQiA1QyA0NiA1QyA0NyA1QyA0OCAgfEBcQVxCXENcRC5cRlxHXEh8CgkwMDAwMDA1MCAgNUMgNDkgNUMgNEEgNUMgNEIgNUMgNEMgLSA1QyA0RCA1QyA0RSA1QyA0RiA1QyA1MCAgfFxJXEpcS1xMXE1cTlxPXFB8CgkwMDAwMDA2MCAgNUMgNTEgNUMgNTIgNUMgNTMgNUMgNTQgLSAyMCA1QyA1NSA1QyA1NiA1QyA1NyA1QyAgfFxRXFJcU1xUIFxVXFZcV1x8CgkwMDAwMDA3MCAgNTggNUMgNTkgNUMgNUEgNUMgNUIgNUMgLSA1QyA1RCA1QyA1RSA1QyA1RiA1QyA2MCAgfFhcWVxaXFtcXF1cXlxfXGB8CgkwMDAwMDA4MCAgMDcgMDggMjAgMjAgNUMgNjQgMUIgMEMgLSA1QyA2NyA1QyA2OCA1QyA2OSA1QyA2QSAgfC4uICBcZC4uXGdcaFxpXGp8CgkwMDAwMDA5MCAgNUMgNkIgNUMgNkMgNUMgNkQgMEEgNUMgLSA2RiA1QyA3MCAyMCA1QyA3MSAwRCA1QyAgfFxrXGxcbS5cb1xwIFxxLlx8CgkwMDAwMDBBMCAgNzMgMDkgNUMgNzUgMEIgNUMgNzcgNUMgLSA3OCA1QyA3OSA1QyA3QSA1QyA3QiA1QyAgfHMuXHUuXHdceFx5XHpce1x8CgkwMDAwMDBCMCAgN0MgNUMgN0QgNUMgN0UgMjAgRTIgODIgLSBBQyA2NCAyMCBFRiBCRiBCRCAyMCAxMiAgfHxcfVx+IC4uLmQgLi4uIC58CgkwMDAwMDBDMCAgMzMgMjAgNzggMjAgNTMgMjAgNTMgMzQgLSAwQSAgICAgICAgICAgICAgICAgICAgICAgfDMgeCBTIFM0LnwKLS0tCm5hbWU6IGRvbGxhci1kb3VibGVxdW90ZWQtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgYSAkIHByZWNlZGluZyAi4oCmIiBpcyBpZ25vcmVkCnN0ZGluOgoJZWNobyAkIkxvY2FsaXNlIG1lISIKCWNhdCA8PDwkIk1lIHRvbyEiCglWPVgKCWFvbD1hb2wKCWNhdCA8PC0kImFvbCIKCQlJIGRvIG5vdCB0YWtlIGEgJFYgZm9yIGEgViEKCWFvbApleHBlY3RlZC1zdGRvdXQ6CglMb2NhbGlzZSBtZSEKCU1lIHRvbyEKCUkgZG8gbm90IHRha2UgYSAkViBmb3IgYSBWIQotLS0KbmFtZTogZG9sbGFyLXF1b3RlZC1zdHJpbmdzCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYmFja3NsYXNoIGV4cGFuc2lvbiBieSAkJ+KApicgc3RyaW5ncwpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJY2htb2QgK3ggcGZuCgkuL3BmbiAkJ1wgXCFcIlwjXCRcJVwmXCdcKFwpXCpcK1wsXC1cLlwvIFwxXDJcM1w0XDVcNicgXAoJICAgICQnYVwwYicgJCdhXDAxYicgJCdcN1w4XDlcOlw7XDxcPVw+XD9cQFxBXEJcQ1xEXEVcRlxHXEhcSScgXAoJICAgICQnXEpcS1xMXE1cTlxPXFBcUVxSXFNcVFxVMVxWXFdcWFxZXFpcW1xcXF1cXlxfXGBcYVxiXGRcZScgXAoJICAgICQnXGZcZ1xoXGlcalxrXGxcbVxuXG9ccFxxXHJcc1x0XHUxXHZcd1x4MVx5XHpce1x8XH1cfiAkeCcgXAoJICAgICQnXHUyMGFjZCcgJCdcVTIwYWNkJyAkJ1x4MTIzJyAkJ2ZuXHgwcmQnICQnXDAyMzQnICQnXDIzNCcgXAoJICAgICQnXDIzNDUnICQnXGNhJyAkJ1xjIScgJCdcYz8nICQnXGPigKYnICQnYVwKCWInIHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXMKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQl0eXBlc2V0IC1pMSB3Yz0weDBBCgkJZGFzYz0KCQlubD0ke3djIzEjfQoJCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCQlsaW5lPSRsaW5lJG5sCgkJCXdoaWxlIFtbIC1uICRsaW5lIF1dOyBkbwoJCQkJaHY9MSMke2xpbmU6OjF9CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmU6OjF9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQkJbGluZT0ke2xpbmU6MX0KCQkJZG9uZQoJCWRvbmUKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50IC1yIC0tICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICAyMCAyMSAyMiAyMyAyNCAyNSAyNiAyNyAtIDI4IDI5IDJBIDJCIDJDIDJEIDJFIDJGICB8ICEiIyQlJicoKSorLC0uL3wKCTAwMDAwMDEwICAyMCAwMSAwMiAwMyAwNCAwNSAwNiAwQSAtIDYxIDBBIDYxIDAxIDYyIDBBIDA3IDM4ICB8IC4uLi4uLi5hLmEuYi4uOHwKCTAwMDAwMDIwICAzOSAzQSAzQiAzQyAzRCAzRSAzRiA0MCAtIDQxIDQyIDQzIDQ0IDFCIDQ2IDQ3IDQ4ICB8OTo7PD0+P0BBQkNELkZHSHwKCTAwMDAwMDMwICA0OSAwQSA0QSA0QiA0QyA0RCA0RSA0RiAtIDUwIDUxIDUyIDUzIDU0IDAxIDU2IDU3ICB8SS5KS0xNTk9QUVJTVC5WV3wKCTAwMDAwMDQwICA1OCA1OSA1QSA1QiA1QyA1RCA1RSA1RiAtIDYwIDA3IDA4IDY0IDFCIDBBIDBDIDY3ICB8WFlaW1xdXl9gLi5kLi4uZ3wKCTAwMDAwMDUwICA2OCA2OSA2QSA2QiA2QyA2RCAwQSA2RiAtIDcwIDcxIDBEIDczIDA5IDAxIDBCIDc3ICB8aGlqa2xtLm9wcS5zLi4ud3wKCTAwMDAwMDYwICAwMSA3OSA3QSA3QiA3QyA3RCA3RSAyMCAtIDI0IDc4IDBBIEUyIDgyIEFDIDY0IDBBICB8Lnl6e3x9fiAkeC4uLi5kLnwKCTAwMDAwMDcwICBFRiBCRiBCRCAwQSBDNCBBMyAwQSA2NiAtIDZFIDBBIDEzIDM0IDBBIDlDIDBBIDlDICB8Li4uLi4uLmZuLi40Li4uLnwKCTAwMDAwMDgwICAzNSAwQSAwMSAwQSAwMSAwQSA3RiAwQSAtIDgyIDgwIEE2IDBBIDYxIDBBIDYyIDBBICB8NS4uLi4uLi4uLi4uYS5iLnwKLS0tCm5hbWU6IGRvbGxhci1xdW90ZXMtaW4taGVyZWRvY3Mtc3RyaW5ncwpkZXNjcmlwdGlvbjoKCVRoZXkgYXJlLCBob3dldmVyLCBub3QgcGFyc2VkIGluIGhlcmUgZG9jdW1lbnRzLCBoZXJlIHN0cmluZ3MKCShvdXRzaWRlIG9mIHN0cmluZyBkZWxpbWl0ZXJzKSBvciByZWd1bGFyIHN0cmluZ3MsIGJ1dCBpbgoJcGFyYW1ldGVyIHN1YnN0aXR1dGlvbnMuCnN0ZGluOgoJY2F0IDw8RU9GCgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglFT0YKCWNhdCA8PCQnYVx0YicKCWFcdGIKCWEJYgoJY2F0IDw8PCJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwnZG9sbGFyID0gc3RyY2hyKHMsICdcJyckJ1wnJyk7CS8qICdcJycgKi8nCgl4PSJkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLyIKCWNhdCA8PDwiJHgiCgljYXQgPDw8JCdhXEVbMG1cdGInCgl1bnNldCBubDsgcHJpbnQgLXIgLS0gIngke25sOj0kJ1xuJ315IgoJZWNobyAiMSBmb29cImJhciIKCSMgY2YgJiBIRVJFRE9DCgljYXQgPDxFT0YKCTIgZm9vXCJiYXIKCUVPRgoJIyBwcm9iYWJseSBuZXZlciByZWFjaGVkIGZvciBoZXJlIHN0cmluZ3M/CgljYXQgPDw8IjMgZm9vXCJiYXIiCgljYXQgPDw8IjQgZm9vXFxcImJhciIKCWNhdCA8PDwnNSBmb29cImJhcicKCSMgb2xkIHNjcmlwdHMgdXNlIHRoaXMgKGUuZy4gbmN1cnNlcykKCWVjaG8gIl4kIgoJIyBtYWtlIHN1cmUgdGhpcyB3b3Jrcywgb3V0c2lkZSBvZiBxdW90ZXMKCWNhdCA8PDwnNyckJ1x0JycuJwpleHBlY3RlZC1zdGRvdXQ6CgkJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCQlmb28gIiBiYXIgXCIgYmF6CglhXHRiCglkb2xsYXIgPSBzdHJjaHIocywgJyQnKTsJLyogJyAqLwoJZG9sbGFyID0gc3RyY2hyKHMsICckJyk7CS8qICcgKi8KCWRvbGxhciA9IHN0cmNocihzLCAnJCcpOwkvKiAnICovCglhG1swbQliCgl4Cgl5CgkxIGZvbyJiYXIKCTIgZm9vXCJiYXIKCTMgZm9vImJhcgoJNCBmb29cImJhcgoJNSBmb29cImJhcgoJXiQKCTcJLgotLS0KbmFtZTogZG90LW5lZWRzLWFyZ3VtZW50CmRlc2NyaXB0aW9uOgoJY2hlY2sgRGViaWFuICM0MTUxNjcgc29sdXRpb246ICcuJyB3aXRob3V0IGFyZ3VtZW50cyBzaG91bGQgZmFpbApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgLgoJIiRfX3Byb2duYW1lIiAtYyBzb3VyY2UKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL1wuOiBtaXNzaW5nIGFyZ3VtZW50Lipcbi4qc291cmNlOiBtaXNzaW5nIGFyZ3VtZW50LwotLS0KbmFtZTogZG90LWVycm9ybGV2ZWwKZGVzY3JpcHRpb246CglFbnN1cmUgZG90IHJlc2V0cyAkPwpzdGRpbjoKCTo+ZG90ZmlsZQoJKGV4aXQgNDIpCgkuIC4vZG90ZmlsZQoJZWNobyAxICQ/IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSAwIC4KLS0tCm5hbWU6IGFsaWFzLWZ1bmN0aW9uLW5vLWNvbmZsaWN0CmRlc2NyaXB0aW9uOgoJbWFrZSBhbGlhc2VzIG5vdCBjb25mbGljdCB3aXRoIGZ1bmN0aW9uIGRlZmluaXRpb25zCnN0ZGluOgoJIyBQT1NJWCBmdW5jdGlvbiBjYW4gYmUgZGVmaW5lZCwgYnV0IGFsaWFzIG92ZXJyaWRlcyBpdAoJYWxpYXMgZm9vPSdlY2hvIGJhcicKCWZvbwoJZm9vKCkgewoJCWVjaG8gYmF6Cgl9Cglmb28KCXVuc2V0IC1mIGZvbwoJZm9vIDI+L2Rldi9udWxsIHx8IGVjaG8gcmFiCgkjIGFsaWFzIG92ZXJyaWRlcyBrc2ggZnVuY3Rpb24KCWFsaWFzIGtvcm49J2VjaG8gYmFyJwoJa29ybgoJZnVuY3Rpb24ga29ybiB7CgkJZWNobyBiYXoKCX0KCWtvcm4KCSMgYWxpYXMgdGVtcG9yYXJpbHkgb3ZlcnJpZGVzIFBPU0lYIGZ1bmN0aW9uCglibGEoKSB7CgkJZWNobyBiZm4KCX0KCWJsYQoJYWxpYXMgYmxhPSdlY2hvIGJhbCcKCWJsYQoJdW5hbGlhcyBibGEKCWJsYQpleHBlY3RlZC1zdGRvdXQ6CgliYXIKCWJhcgoJYmFyCgliYXIKCWJhcgoJYmZuCgliYWwKCWJmbgotLS0KbmFtZTogYmFzaC1mdW5jdGlvbi1wYXJlbnMKZGVzY3JpcHRpb246CgllbnN1cmUgdGhlIGtleXdvcmQgZnVuY3Rpb24gaXMgaWdub3JlZCB3aGVuIHByZWNlZGluZwoJUE9TSVggc3R5bGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIChiYXNoaXNtKQpzdGRpbjoKCW1rKCkgewoJCWVjaG8gJyMhJyIkX19wcm9nbmFtZSIKCQllY2hvICIkMSB7IgoJCWVjaG8gJwllY2hvICJiYXI9J1wnJyQwJ1wnXCIKCQllY2hvICd9JwoJCXByaW50IC1yIC0tICIkezI6LWZvb30iCgl9CgltayAnZnVuY3Rpb24gZm9vJyA+Zi1rb3JuCgltayAnZm9vICgpJyA+Zi1kYXNoCgltayAnZnVuY3Rpb24gZm9vICgpJyA+Zi1iYXNoCglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbnByaW50IC1yIC0tICIkezAlL2YtYXJnaH0iJyA+Zi1hcmdoCgljaG1vZCAreCBmLSoKCXU9JCguL2YtYXJnaCkKCXg9Imtvcm46ICQoLi9mLWtvcm4pIjsgZWNobyAiJHt4L0AoIiR1IikvLn0iCgl4PSJkYXNoOiAkKC4vZi1kYXNoKSI7IGVjaG8gIiR7eC9AKCIkdSIpLy59IgoJeD0iYmFzaDogJCguL2YtYmFzaCkiOyBlY2hvICIke3gvQCgiJHUiKS8ufSIKZXhwZWN0ZWQtc3Rkb3V0OgoJa29ybjogYmFyPSdmb28nCglkYXNoOiBiYXI9Jy4vZi1kYXNoJwoJYmFzaDogYmFyPScuL2YtYmFzaCcKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMQpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSB3b3JrcwpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtVXVpMTYgaTA9MSPvIGkxPTEj4oKsCgl0eXBlc2V0IC1pMSBvMGE9NjQKCXR5cGVzZXQgLWkxIG8xYT0weDI2M0EKCXR5cGVzZXQgLVV1aTEgbzBiPTB4N0UKCXR5cGVzZXQgLVV1aTEgbzFiPTB4RkREMAoJaW50ZWdlciBweD0weENBRkUgJ3AwPTEjICcgcDE9MSPigKYgcGw9MSNmCgllY2hvICJpbiA8JGkwPiA8JGkxPiIKCWVjaG8gIm91dCA8JHtvMGEjMSN9fCR7bzBiIzEjfT4gPCR7bzFhIzEjfXwke28xYiMxI30+IgoJdHlwZXNldCAtVXVpMSBpMCBpMQoJZWNobyAicGFzcyA8JHB4PiA8JHAwPiA8JHAxPiA8JHBsPiA8JHtpMCMxI318JHtpMSMxI30+IgoJdHlwZXNldCAtVXVpMTYgdHYxPTEjfiB0djI9MSN/IHR2Mz0xI4AgdHY0PTEjgSB0djU9MSPAIHR2Nj0xI8EgdHY3PTEjwqAgdHY4PTEjwoAKCWVjaG8gInNwZWNYIDwke3R2MSMxNiN9PiA8JHt0djIjMTYjfT4gPCR7dHYzIzE2I30+IDwke3R2NCMxNiN9PiA8JHt0djUjMTYjfT4gPCR7dHY2IzE2I30+IDwke3R2NyMxNiN9PiA8JHt0djgjMTYjfT4iCgl0eXBlc2V0IC1pMSB0djEgdHYyIHR2MyB0djQgdHY1IHR2NiB0djcgdHY4CgllY2hvICJzcGVjVyA8JHt0djEjMSN9PiA8JHt0djIjMSN9PiA8JHt0djMjMSN9PiA8JHt0djQjMSN9PiA8JHt0djUjMSN9PiA8JHt0djYjMSN9PiA8JHt0djcjMSN9PiA8JHt0djgjMSN9PiIKCXR5cGVzZXQgLWkxIHhzMT0weEVGN0YgeHMyPTB4RUY4MCB4czM9MHhGREQwCgllY2hvICJzcGVjVSA8JHt4czEjMSN9PiA8JHt4czIjMSN9PiA8JHt4czMjMSN9PiIKZXhwZWN0ZWQtc3Rkb3V0OgoJaW4gPDE2I0VGRUY+IDwxNiMyMEFDPgoJb3V0IDxAfH4+IDzimLp877eQPgoJcGFzcyA8MTYjY2FmZT4gPDEjID4gPDEj4oCmPiA8MSNmPiA873zigqw+CglzcGVjWCA8N0U+IDw3Rj4gPEVGODA+IDxFRjgxPiA8RUZDMD4gPEVGQzE+IDxBMD4gPDgwPgoJc3BlY1cgPH4+IDx/PiA8gD4gPIE+IDzAPiA8wT4gPMKgPiA8woA+CglzcGVjVSA87r2/PiA8gD4gPO+3kD4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmEKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0IC1VCglpbnRlZ2VyIHg9MSNmb28KCWVjaG8gLyR4LwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI2ZvbzogdW5leHBlY3RlZCAnb28nLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmIKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0IC1VCglpbnRlZ2VyIHg9MSPAgAoJZWNobyAvJHgvCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJLzEjwIA6IHVuZXhwZWN0ZWQgJ4AnLwpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmMxCmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGNvcnJlY3QgY2hhcmFjdGVycwpzdGRpbjoKCXNldCAtVQoJaW50ZWdlciB4PTEj4oCmCgllY2hvIC8keC8KZXhwZWN0ZWQtc3Rkb3V0OgoJLzEj4oCmLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yYzIKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgY29ycmVjdCBjaGFyYWN0ZXJzCnN0ZGluOgoJc2V0ICtVCglpbnRlZ2VyIHg9MSPigKYKCWVjaG8gLyR4LwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI+KApjogdW5leHBlY3RlZCAngCcvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDEKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgaGFuZGxlcyBvY3RldHMgb2theQpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSP/CgllY2hvIC8keC8JIyBpbnZhbGlkIHV0Zi04CmV4cGVjdGVkLXN0ZG91dDoKCS8xNiNlZmZmLwotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDIKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgaGFuZGxlcyBvY3RldHMKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEjwgoJZWNobyAvJHgvCSMgaW52YWxpZCAyLWJ5dGUKZXhwZWN0ZWQtc3Rkb3V0OgoJLzE2I2VmYzIvCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkMwpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBoYW5kbGVzIG9jdGV0cwpzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPvCgllY2hvIC8keC8JIyBpbnZhbGlkIDItYnl0ZQpleHBlY3RlZC1zdGRvdXQ6CgkvMTYjZWZlZi8KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtMmQ0CmRlc2NyaXB0aW9uOgoJY2hlY2sgaWYgdGhlIHVzZSBvZiBmYWtlIGludGVnZXIgYmFzZSAxIHN0b3BzIGF0IGludmFsaWQgaW5wdXQKc3RkaW46CglzZXQgLVUKCXR5cGVzZXQgLWkxNiB4PTEj77/ACgllY2hvIC8keC8JIyBpbnZhbGlkIDMtYnl0ZQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI++/wDogdW5leHBlY3RlZCAnvycvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0yZDUKZGVzY3JpcHRpb246CgljaGVjayBpZiB0aGUgdXNlIG9mIGZha2UgaW50ZWdlciBiYXNlIDEgc3RvcHMgYXQgaW52YWxpZCBpbnB1dApzdGRpbjoKCXNldCAtVQoJdHlwZXNldCAtaTE2IHg9MSPAgAoJZWNobyAvJHgvCSMgbm9uLW1pbmltYWxpc3RpYwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI8CAOiB1bmV4cGVjdGVkICeAJy8KZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTJkNgpkZXNjcmlwdGlvbjoKCWNoZWNrIGlmIHRoZSB1c2Ugb2YgZmFrZSBpbnRlZ2VyIGJhc2UgMSBzdG9wcyBhdCBpbnZhbGlkIGlucHV0CnN0ZGluOgoJc2V0IC1VCgl0eXBlc2V0IC1pMTYgeD0xI+CAgAoJZWNobyAvJHgvCSMgbm9uLW1pbmltYWxpc3RpYwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8xI+CAgDogdW5leHBlY3RlZCAngCcvCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zQXMKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nCglub3QgTlVMIHNhZmU7IGlucHV0IGxpbmVzIG11c3QgYmUgTkwgdGVybWluYXRlZApzdGRpbjoKCXsKCQlwcmludCAnSGVsbG8sIFdvcmxkIVxcXG7jgZPjgpPjgavjgaHjga/vvIEnCgkJdHlwZXNldCAtVXVpMTYgaT0weDEwMAoJCSMgY2hhbmdlIHRoYXQgdG8gMHhGRiBvbmNlIHdlIGNhbiBoYW5kbGUgZW1iZWRkZWQKCQkjIE5VTCBjaGFyYWN0ZXJzIGluIHN0cmluZ3MgLyBoZXJlIGRvY3VtZW50cwoJCXdoaWxlICgoIGkrKyA8IDB4MUZGICkpOyBkbwoJCQlwcmludCAtbiAiXHgke2kjMTYjMX0iCgkJZG9uZQoJCXByaW50ICdcMHonCgl9IHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zQXMKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo1IGh2PTIxNDc0ODM2NDcKCQl0eXBlc2V0IC1pMSB3Yz0weDBBCgkJZGFzYz0KCQlubD0ke3djIzEjfQoJCXdoaWxlIElGUz0gcmVhZCAtciBsaW5lOyBkbwoJCQlsaW5lPSRsaW5lJG5sCgkJCXdoaWxlIFtbIC1uICRsaW5lIF1dOyBkbwoJCQkJaHY9MSMke2xpbmU6OjF9CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmU6OjF9CgkJCQlmaQoJCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCQkJbGluZT0ke2xpbmU6MX0KCQkJZG9uZQoJCWRvbmUKCQl3aGlsZSAoKCBwb3MgJiAxNSApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICcKCQkJKCggKHBvcysrICYgMTUpID09IDcgKSkgJiYgcHJpbnQgLW4gLS0gJy0gJwoJCWRvbmUKCQkoKCBodiA9PSAyMTQ3NDgzNjQ3ICkpIHx8IHByaW50IC1yIC0tICIkZGFzY3wiCgl9CmV4cGVjdGVkLXN0ZG91dDoKCTAwMDAwMDAwICA0OCA2NSA2QyA2QyA2RiAyQyAyMCA1NyAtIDZGIDcyIDZDIDY0IDIxIDVDIDBBIEUzICB8SGVsbG8sIFdvcmxkIVwuLnwKCTAwMDAwMDEwICA4MSA5MyBFMyA4MiA5MyBFMyA4MSBBQiAtIEUzIDgxIEExIEUzIDgxIEFGIEVGIEJDICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDIwICA4MSAwQSAwMSAwMiAwMyAwNCAwNSAwNiAtIDA3IDA4IDA5IDBBIDBCIDBDIDBEIDBFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDMwICAwRiAxMCAxMSAxMiAxMyAxNCAxNSAxNiAtIDE3IDE4IDE5IDFBIDFCIDFDIDFEIDFFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMDQwICAxRiAyMCAyMSAyMiAyMyAyNCAyNSAyNiAtIDI3IDI4IDI5IDJBIDJCIDJDIDJEIDJFICB8LiAhIiMkJSYnKCkqKywtLnwKCTAwMDAwMDUwICAyRiAzMCAzMSAzMiAzMyAzNCAzNSAzNiAtIDM3IDM4IDM5IDNBIDNCIDNDIDNEIDNFICB8LzAxMjM0NTY3ODk6Ozw9PnwKCTAwMDAwMDYwICAzRiA0MCA0MSA0MiA0MyA0NCA0NSA0NiAtIDQ3IDQ4IDQ5IDRBIDRCIDRDIDREIDRFICB8P0BBQkNERUZHSElKS0xNTnwKCTAwMDAwMDcwICA0RiA1MCA1MSA1MiA1MyA1NCA1NSA1NiAtIDU3IDU4IDU5IDVBIDVCIDVDIDVEIDVFICB8T1BRUlNUVVZXWFlaW1xdXnwKCTAwMDAwMDgwICA1RiA2MCA2MSA2MiA2MyA2NCA2NSA2NiAtIDY3IDY4IDY5IDZBIDZCIDZDIDZEIDZFICB8X2BhYmNkZWZnaGlqa2xtbnwKCTAwMDAwMDkwICA2RiA3MCA3MSA3MiA3MyA3NCA3NSA3NiAtIDc3IDc4IDc5IDdBIDdCIDdDIDdEIDdFICB8b3BxcnN0dXZ3eHl6e3x9fnwKCTAwMDAwMEEwICA3RiA4MCA4MSA4MiA4MyA4NCA4NSA4NiAtIDg3IDg4IDg5IDhBIDhCIDhDIDhEIDhFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEIwICA4RiA5MCA5MSA5MiA5MyA5NCA5NSA5NiAtIDk3IDk4IDk5IDlBIDlCIDlDIDlEIDlFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEMwICA5RiBBMCBBMSBBMiBBMyBBNCBBNSBBNiAtIEE3IEE4IEE5IEFBIEFCIEFDIEFEIEFFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEQwICBBRiBCMCBCMSBCMiBCMyBCNCBCNSBCNiAtIEI3IEI4IEI5IEJBIEJCIEJDIEJEIEJFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEUwICBCRiBDMCBDMSBDMiBDMyBDNCBDNSBDNiAtIEM3IEM4IEM5IENBIENCIENDIENEIENFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMEYwICBDRiBEMCBEMSBEMiBEMyBENCBENSBENiAtIEQ3IEQ4IEQ5IERBIERCIERDIEREIERFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTAwICBERiBFMCBFMSBFMiBFMyBFNCBFNSBFNiAtIEU3IEU4IEU5IEVBIEVCIEVDIEVEIEVFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTEwICBFRiBGMCBGMSBGMiBGMyBGNCBGNSBGNiAtIEY3IEY4IEY5IEZBIEZCIEZDIEZEIEZFICB8Li4uLi4uLi4uLi4uLi4uLnwKCTAwMDAwMTIwICBGRiA3QSAwQSAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgICAgICAgICB8LnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zV3MKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nIFVDUy0yCglub3QgTlVMIHNhZmU7IGlucHV0IGxpbmVzIG11c3QgYmUgTkwgdGVybWluYXRlZApzdGRpbjoKCXNldCAtVQoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJcdSR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQKCQlwcmludCBcXHhmZgkJIyBpbnZhbGlkIHV0Zi04CgkJcHJpbnQgXFx4YzIJCSMgaW52YWxpZCAyLWJ5dGUKCQlwcmludCBcXHhlZlxceGJmXFx4YzAJIyBpbnZhbGlkIDMtYnl0ZQoJCXByaW50IFxceGMwXFx4ODAJIyBub24tbWluaW1hbGlzdGljCgkJcHJpbnQgXFx4ZTBcXHg4MFxceDgwCSMgbm9uLW1pbmltYWxpc3RpYwoJCXByaW50ICfvv73vv77vv78nCSMgZW5kIG9mIHJhbmdlCgkJcHJpbnQgJ1wweicJCSMgZW1iZWRkZWQgTlVMCgl9IHwgewoJCSMgaW50ZWdlci1iYXNlLW9uZS0zV3MKCQl0eXBlc2V0IC1VdWkxNiAtWjExIHBvcz0wCgkJdHlwZXNldCAtVXVpMTYgLVo3IGh2CgkJdHlwZXNldCAtaTEgd2M9MHgwQQoJCXR5cGVzZXQgLWkgbHBvcwoJCWRhc2M9CgkJbmw9JHt3YyMxI30KCQl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQkJbGluZT0kbGluZSRubAoJCQlscG9zPTAKCQkJd2hpbGUgKCggbHBvcyA8ICR7I2xpbmV9ICkpOyBkbwoJCQkJd2M9MSMke2xpbmU6KGxwb3MrKyk6MX0KCQkJCWlmICgoICh3YyA8IDMyKSB8fCBcCgkJCQkgICAgKCh3YyA+IDEyNikgJiYgKHdjIDwgMTYwKSkgKSk7IHRoZW4KCQkJCQlkY2g9LgoJCQkJZWxpZiAoKCAod2MgJiAweEZGODApID09IDB4RUY4MCApKTsgdGhlbgoJCQkJCWRjaD3vv70KCQkJCWVsc2UKCQkJCQlkY2g9JHt3YyMxI30KCQkJCWZpCgkJCQlpZiAoKCAocG9zICYgNykgPT0gNyApKTsgdGhlbgoJCQkJCWRhc2M9JGRhc2MkZGNoCgkJCQkJZGNoPQoJCQkJZWxpZiAoKCAocG9zICYgNykgPT0gMCApKTsgdGhlbgoJCQkJCSgoIHBvcyApKSAmJiBwcmludCAtciAtLSAiJGRhc2N8IgoJCQkJCXByaW50IC1uICIke3BvcyMxNiN9ICAiCgkJCQkJZGFzYz0nIHwnCgkJCQlmaQoJCQkJbGV0IGh2PXdjCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCSgoIChwb3MrKyAmIDcpID09IDMgKSkgJiYgXAoJCQkJICAgIHByaW50IC1uIC0tICctICcKCQkJCWRhc2M9JGRhc2MkZGNoCgkJCWRvbmUKCQlkb25lCgkJd2hpbGUgKCggcG9zICYgNyApKTsgZG8KCQkJcHJpbnQgLW4gJyAgICAgJwoJCQkoKCAocG9zKysgJiA3KSA9PSAzICkpICYmIHByaW50IC1uIC0tICctICcKCQlkb25lCgkJKCggaHYgPT0gMjE0NzQ4MzY0NyApKSB8fCBwcmludCAtciAtLSAiJGRhc2N8IgoJfQpleHBlY3RlZC1zdGRvdXQ6CgkwMDAwMDAwMCAgMDA0OCAwMDY1IDAwNkMgMDA2QyAtIDAwNkYgMDAyQyAwMDIwIDAwNTcgIHxIZWxsbywgV3wKCTAwMDAwMDA4ICAwMDZGIDAwNzIgMDA2QyAwMDY0IC0gMDAyMSAwMDVDIDAwMEEgMzA1MyAgfG9ybGQhXC7jgZN8CgkwMDAwMDAxMCAgMzA5MyAzMDZCIDMwNjEgMzA2RiAtIEZGMDEgMDAwQSAwMDAxIDAwMDIgIHzjgpPjgavjgaHjga/vvIEuLi58CgkwMDAwMDAxOCAgMDAwMyAwMDA0IDAwMDUgMDAwNiAtIDAwMDcgMDAwOCAwMDA5IDAwMEEgIHwuLi4uLi4uLnwKCTAwMDAwMDIwICAwMDBCIDAwMEMgMDAwRCAwMDBFIC0gMDAwRiAwMDEwIDAwMTEgMDAxMiAgfC4uLi4uLi4ufAoJMDAwMDAwMjggIDAwMTMgMDAxNCAwMDE1IDAwMTYgLSAwMDE3IDAwMTggMDAxOSAwMDFBICB8Li4uLi4uLi58CgkwMDAwMDAzMCAgMDAxQiAwMDFDIDAwMUQgMDAxRSAtIDAwMUYgMDAyMCAwMDIxIDAwMjIgIHwuLi4uLiAhInwKCTAwMDAwMDM4ICAwMDIzIDAwMjQgMDAyNSAwMDI2IC0gMDAyNyAwMDI4IDAwMjkgMDAyQSAgfCMkJSYnKCkqfAoJMDAwMDAwNDAgIDAwMkIgMDAyQyAwMDJEIDAwMkUgLSAwMDJGIDAwMzAgMDAzMSAwMDMyICB8KywtLi8wMTJ8CgkwMDAwMDA0OCAgMDAzMyAwMDM0IDAwMzUgMDAzNiAtIDAwMzcgMDAzOCAwMDM5IDAwM0EgIHwzNDU2Nzg5OnwKCTAwMDAwMDUwICAwMDNCIDAwM0MgMDAzRCAwMDNFIC0gMDAzRiAwMDQwIDAwNDEgMDA0MiAgfDs8PT4/QEFCfAoJMDAwMDAwNTggIDAwNDMgMDA0NCAwMDQ1IDAwNDYgLSAwMDQ3IDAwNDggMDA0OSAwMDRBICB8Q0RFRkdISUp8CgkwMDAwMDA2MCAgMDA0QiAwMDRDIDAwNEQgMDA0RSAtIDAwNEYgMDA1MCAwMDUxIDAwNTIgIHxLTE1OT1BRUnwKCTAwMDAwMDY4ICAwMDUzIDAwNTQgMDA1NSAwMDU2IC0gMDA1NyAwMDU4IDAwNTkgMDA1QSAgfFNUVVZXWFlafAoJMDAwMDAwNzAgIDAwNUIgMDA1QyAwMDVEIDAwNUUgLSAwMDVGIDAwNjAgMDA2MSAwMDYyICB8W1xdXl9gYWJ8CgkwMDAwMDA3OCAgMDA2MyAwMDY0IDAwNjUgMDA2NiAtIDAwNjcgMDA2OCAwMDY5IDAwNkEgIHxjZGVmZ2hpanwKCTAwMDAwMDgwICAwMDZCIDAwNkMgMDA2RCAwMDZFIC0gMDA2RiAwMDcwIDAwNzEgMDA3MiAgfGtsbW5vcHFyfAoJMDAwMDAwODggIDAwNzMgMDA3NCAwMDc1IDAwNzYgLSAwMDc3IDAwNzggMDA3OSAwMDdBICB8c3R1dnd4eXp8CgkwMDAwMDA5MCAgMDA3QiAwMDdDIDAwN0QgMDA3RSAtIDAwN0YgMDA4MCAwMDgxIDAwODIgIHx7fH1+Li4uLnwKCTAwMDAwMDk4ICAwMDgzIDAwODQgMDA4NSAwMDg2IC0gMDA4NyAwMDg4IDAwODkgMDA4QSAgfC4uLi4uLi4ufAoJMDAwMDAwQTAgIDAwOEIgMDA4QyAwMDhEIDAwOEUgLSAwMDhGIDAwOTAgMDA5MSAwMDkyICB8Li4uLi4uLi58CgkwMDAwMDBBOCAgMDA5MyAwMDk0IDAwOTUgMDA5NiAtIDAwOTcgMDA5OCAwMDk5IDAwOUEgIHwuLi4uLi4uLnwKCTAwMDAwMEIwICAwMDlCIDAwOUMgMDA5RCAwMDlFIC0gMDA5RiAwMEEwIDAwQTEgMDBBMiAgfC4uLi4uwqDCocKifAoJMDAwMDAwQjggIDAwQTMgMDBBNCAwMEE1IDAwQTYgLSAwMEE3IDAwQTggMDBBOSAwMEFBICB8wqPCpMKlwqbCp8KowqnCqnwKCTAwMDAwMEMwICAwMEFCIDAwQUMgMDBBRCAwMEFFIC0gMDBBRiAwMEIwIDAwQjEgMDBCMiAgfMKrwqzCrcKuwq/CsMKxwrJ8CgkwMDAwMDBDOCAgMDBCMyAwMEI0IDAwQjUgMDBCNiAtIDAwQjcgMDBCOCAwMEI5IDAwQkEgIHzCs8K0wrXCtsK3wrjCucK6fAoJMDAwMDAwRDAgIDAwQkIgMDBCQyAwMEJEIDAwQkUgLSAwMEJGIDAwQzAgMDBDMSAwMEMyICB8wrvCvMK9wr7Cv8OAw4HDgnwKCTAwMDAwMEQ4ICAwMEMzIDAwQzQgMDBDNSAwMEM2IC0gMDBDNyAwMEM4IDAwQzkgMDBDQSAgfMODw4TDhcOGw4fDiMOJw4p8CgkwMDAwMDBFMCAgMDBDQiAwMENDIDAwQ0QgMDBDRSAtIDAwQ0YgMDBEMCAwMEQxIDAwRDIgIHzDi8OMw43DjsOPw5DDkcOSfAoJMDAwMDAwRTggIDAwRDMgMDBENCAwMEQ1IDAwRDYgLSAwMEQ3IDAwRDggMDBEOSAwMERBICB8w5PDlMOVw5bDl8OYw5nDmnwKCTAwMDAwMEYwICAwMERCIDAwREMgMDBERCAwMERFIC0gMDBERiAwMEUwIDAwRTEgMDBFMiAgfMObw5zDncOew5/DoMOhw6J8CgkwMDAwMDBGOCAgMDBFMyAwMEU0IDAwRTUgMDBFNiAtIDAwRTcgMDBFOCAwMEU5IDAwRUEgIHzDo8Okw6XDpsOnw6jDqcOqfAoJMDAwMDAxMDAgIDAwRUIgMDBFQyAwMEVEIDAwRUUgLSAwMEVGIDAwRjAgMDBGMSAwMEYyICB8w6vDrMOtw67Dr8Oww7HDsnwKCTAwMDAwMTA4ICAwMEYzIDAwRjQgMDBGNSAwMEY2IC0gMDBGNyAwMEY4IDAwRjkgMDBGQSAgfMOzw7TDtcO2w7fDuMO5w7p8CgkwMDAwMDExMCAgMDBGQiAwMEZDIDAwRkQgMDBGRSAtIDAwRkYgMDAwQSBFRkZGIDAwMEEgIHzDu8O8w73DvsO/Lu+/vS58CgkwMDAwMDExOCAgRUZDMiAwMDBBIEVGRUYgRUZCRiAtIEVGQzAgMDAwQSBFRkMwIEVGODAgIHzvv70u77+977+977+9Lu+/ve+/vXwKCTAwMDAwMTIwICAwMDBBIEVGRTAgRUY4MCBFRjgwIC0gMDAwQSBGRkZEIEVGRUYgRUZCRiAgfC7vv73vv73vv70u77+977+977+9fAoJMDAwMDAxMjggIEVGQkUgRUZFRiBFRkJGIEVGQkYgLSAwMDBBIDAwN0EgMDAwQSAgICAgICB877+977+977+977+9LnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zQXIKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nOyBOVUwgYW5kIGJpbmFyeSBzYWZlCnN0ZGluOgoJewoJCXByaW50ICdIZWxsbywgV29ybGQhXFxcbuOBk+OCk+OBq+OBoeOBr++8gScKCQl0eXBlc2V0IC1VdWkxNiBpPTB4MTAwCgkJIyBjaGFuZ2UgdGhhdCB0byAweEZGIG9uY2Ugd2UgY2FuIGhhbmRsZSBlbWJlZGRlZAoJCSMgTlVMIGNoYXJhY3RlcnMgaW4gc3RyaW5ncyAvIGhlcmUgZG9jdW1lbnRzCgkJd2hpbGUgKCggaSsrIDwgMHgxRkYgKSk7IGRvCgkJCXByaW50IC1uICJceCR7aSMxNiMxfSIKCQlkb25lCgkJcHJpbnQgJ1wweicKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNBcgoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjUgaHY9MjE0NzQ4MzY0NwoJCWRhc2M9CgkJaWYgcmVhZCAtYXJOIC0xIGxpbmU7IHRoZW4KCQkJdHlwZXNldCAtaTEgbGluZQoJCQlpPTAKCQkJd2hpbGUgKCggaSA8ICR7I2xpbmVbKl19ICkpOyBkbwoJCQkJaHY9JHtsaW5lW2krK119CgkJCQlpZiAoKCAocG9zICYgMTUpID09IDAgKSk7IHRoZW4KCQkJCQkoKCBwb3MgKSkgJiYgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCQkJCQlwcmludCAtbiAiJHtwb3MjMTYjfSAgIgoJCQkJCWRhc2M9JyB8JwoJCQkJZmkKCQkJCXByaW50IC1uICIke2h2IzE2I30gIgoJCQkJaWYgKCggKGh2IDwgMzIpIHx8IChodiA+IDEyNikgKSk7IHRoZW4KCQkJCQlkYXNjPSRkYXNjLgoJCQkJZWxzZQoJCQkJCWRhc2M9JGRhc2Mke2xpbmVbaS0xXSMxI30KCQkJCWZpCgkJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJCWRvbmUKCQlmaQoJCXdoaWxlICgoIHBvcyAmIDE1ICkpOyBkbwoJCQlwcmludCAtbiAnICAgJwoJCQkoKCAocG9zKysgJiAxNSkgPT0gNyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDQ4IDY1IDZDIDZDIDZGIDJDIDIwIDU3IC0gNkYgNzIgNkMgNjQgMjEgNUMgMEEgRTMgIHxIZWxsbywgV29ybGQhXC4ufAoJMDAwMDAwMTAgIDgxIDkzIEUzIDgyIDkzIEUzIDgxIEFCIC0gRTMgODEgQTEgRTMgODEgQUYgRUYgQkMgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMjAgIDgxIDBBIDAxIDAyIDAzIDA0IDA1IDA2IC0gMDcgMDggMDkgMEEgMEIgMEMgMEQgMEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwMzAgIDBGIDEwIDExIDEyIDEzIDE0IDE1IDE2IC0gMTcgMTggMTkgMUEgMUIgMUMgMUQgMUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwNDAgIDFGIDIwIDIxIDIyIDIzIDI0IDI1IDI2IC0gMjcgMjggMjkgMkEgMkIgMkMgMkQgMkUgIHwuICEiIyQlJicoKSorLC0ufAoJMDAwMDAwNTAgIDJGIDMwIDMxIDMyIDMzIDM0IDM1IDM2IC0gMzcgMzggMzkgM0EgM0IgM0MgM0QgM0UgIHwvMDEyMzQ1Njc4OTo7PD0+fAoJMDAwMDAwNjAgIDNGIDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IC0gNDcgNDggNDkgNEEgNEIgNEMgNEQgNEUgIHw/QEFCQ0RFRkdISUpLTE1OfAoJMDAwMDAwNzAgIDRGIDUwIDUxIDUyIDUzIDU0IDU1IDU2IC0gNTcgNTggNTkgNUEgNUIgNUMgNUQgNUUgIHxPUFFSU1RVVldYWVpbXF1efAoJMDAwMDAwODAgIDVGIDYwIDYxIDYyIDYzIDY0IDY1IDY2IC0gNjcgNjggNjkgNkEgNkIgNkMgNkQgNkUgIHxfYGFiY2RlZmdoaWprbG1ufAoJMDAwMDAwOTAgIDZGIDcwIDcxIDcyIDczIDc0IDc1IDc2IC0gNzcgNzggNzkgN0EgN0IgN0MgN0QgN0UgIHxvcHFyc3R1dnd4eXp7fH1+fAoJMDAwMDAwQTAgIDdGIDgwIDgxIDgyIDgzIDg0IDg1IDg2IC0gODcgODggODkgOEEgOEIgOEMgOEQgOEUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQjAgIDhGIDkwIDkxIDkyIDkzIDk0IDk1IDk2IC0gOTcgOTggOTkgOUEgOUIgOUMgOUQgOUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwQzAgIDlGIEEwIEExIEEyIEEzIEE0IEE1IEE2IC0gQTcgQTggQTkgQUEgQUIgQUMgQUQgQUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRDAgIEFGIEIwIEIxIEIyIEIzIEI0IEI1IEI2IC0gQjcgQjggQjkgQkEgQkIgQkMgQkQgQkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRTAgIEJGIEMwIEMxIEMyIEMzIEM0IEM1IEM2IC0gQzcgQzggQzkgQ0EgQ0IgQ0MgQ0QgQ0UgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAwRjAgIENGIEQwIEQxIEQyIEQzIEQ0IEQ1IEQ2IC0gRDcgRDggRDkgREEgREIgREMgREQgREUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMDAgIERGIEUwIEUxIEUyIEUzIEU0IEU1IEU2IC0gRTcgRTggRTkgRUEgRUIgRUMgRUQgRUUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMTAgIEVGIEYwIEYxIEYyIEYzIEY0IEY1IEY2IC0gRjcgRjggRjkgRkEgRkIgRkMgRkQgRkUgIHwuLi4uLi4uLi4uLi4uLi4ufAoJMDAwMDAxMjAgIEZGIDAwIDdBIDBBICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgIHwuLnoufAotLS0KbmFtZTogaW50ZWdlci1iYXNlLW9uZS0zV3IKZGVzY3JpcHRpb246Cglzb21lIHNhbXBsZSBjb2RlIGZvciBoZXhkdW1waW5nIFVDUy0yOyBOVUwgYW5kIGJpbmFyeSBzYWZlCnN0ZGluOgoJc2V0IC1VCgl7CgkJcHJpbnQgJ0hlbGxvLCBXb3JsZCFcXFxu44GT44KT44Gr44Gh44Gv77yBJwoJCXR5cGVzZXQgLVV1aTE2IGk9MHgxMDAKCQkjIGNoYW5nZSB0aGF0IHRvIDB4RkYgb25jZSB3ZSBjYW4gaGFuZGxlIGVtYmVkZGVkCgkJIyBOVUwgY2hhcmFjdGVycyBpbiBzdHJpbmdzIC8gaGVyZSBkb2N1bWVudHMKCQl3aGlsZSAoKCBpKysgPCAweDFGRiApKTsgZG8KCQkJcHJpbnQgLW4gIlx1JHtpIzE2IzF9IgoJCWRvbmUKCQlwcmludAoJCXByaW50IFxceGZmCQkjIGludmFsaWQgdXRmLTgKCQlwcmludCBcXHhjMgkJIyBpbnZhbGlkIDItYnl0ZQoJCXByaW50IFxceGVmXFx4YmZcXHhjMAkjIGludmFsaWQgMy1ieXRlCgkJcHJpbnQgXFx4YzBcXHg4MAkjIG5vbi1taW5pbWFsaXN0aWMKCQlwcmludCBcXHhlMFxceDgwXFx4ODAJIyBub24tbWluaW1hbGlzdGljCgkJcHJpbnQgJ++/ve+/vu+/vycJIyBlbmQgb2YgcmFuZ2UKCQlwcmludCAnXDB6JwkJIyBlbWJlZGRlZCBOVUwKCX0gfCB7CgkJIyBpbnRlZ2VyLWJhc2Utb25lLTNXcgoJCXR5cGVzZXQgLVV1aTE2IC1aMTEgcG9zPTAKCQl0eXBlc2V0IC1VdWkxNiAtWjcgaHY9MjE0NzQ4MzY0NwoJCWRhc2M9CgkJaWYgcmVhZCAtYXJOIC0xIGxpbmU7IHRoZW4KCQkJdHlwZXNldCAtaTEgbGluZQoJCQlpPTAKCQkJd2hpbGUgKCggaSA8ICR7I2xpbmVbKl19ICkpOyBkbwoJCQkJaHY9JHtsaW5lW2krK119CgkJCQlpZiAoKCAoaHYgPCAzMikgfHwgXAoJCQkJICAgICgoaHYgPiAxMjYpICYmIChodiA8IDE2MCkpICkpOyB0aGVuCgkJCQkJZGNoPS4KCQkJCWVsaWYgKCggKGh2ICYgMHhGRjgwKSA9PSAweEVGODAgKSk7IHRoZW4KCQkJCQlkY2g977+9CgkJCQllbHNlCgkJCQkJZGNoPSR7bGluZVtpLTFdIzEjfQoJCQkJZmkKCQkJCWlmICgoIChwb3MgJiA3KSA9PSA3ICkpOyB0aGVuCgkJCQkJZGFzYz0kZGFzYyRkY2gKCQkJCQlkY2g9CgkJCQllbGlmICgoIChwb3MgJiA3KSA9PSAwICkpOyB0aGVuCgkJCQkJKCggcG9zICkpICYmIHByaW50IC1yIC0tICIkZGFzY3wiCgkJCQkJcHJpbnQgLW4gIiR7cG9zIzE2I30gICIKCQkJCQlkYXNjPScgfCcKCQkJCWZpCgkJCQlwcmludCAtbiAiJHtodiMxNiN9ICIKCQkJCSgoIChwb3MrKyAmIDcpID09IDMgKSkgJiYgXAoJCQkJICAgIHByaW50IC1uIC0tICctICcKCQkJCWRhc2M9JGRhc2MkZGNoCgkJCWRvbmUKCQlmaQoJCXdoaWxlICgoIHBvcyAmIDcgKSk7IGRvCgkJCXByaW50IC1uICcgICAgICcKCQkJKCggKHBvcysrICYgNykgPT0gMyApKSAmJiBwcmludCAtbiAtLSAnLSAnCgkJZG9uZQoJCSgoIGh2ID09IDIxNDc0ODM2NDcgKSkgfHwgcHJpbnQgLXIgLS0gIiRkYXNjfCIKCX0KZXhwZWN0ZWQtc3Rkb3V0OgoJMDAwMDAwMDAgIDAwNDggMDA2NSAwMDZDIDAwNkMgLSAwMDZGIDAwMkMgMDAyMCAwMDU3ICB8SGVsbG8sIFd8CgkwMDAwMDAwOCAgMDA2RiAwMDcyIDAwNkMgMDA2NCAtIDAwMjEgMDA1QyAwMDBBIDMwNTMgIHxvcmxkIVwu44GTfAoJMDAwMDAwMTAgIDMwOTMgMzA2QiAzMDYxIDMwNkYgLSBGRjAxIDAwMEEgMDAwMSAwMDAyICB844KT44Gr44Gh44Gv77yBLi4ufAoJMDAwMDAwMTggIDAwMDMgMDAwNCAwMDA1IDAwMDYgLSAwMDA3IDAwMDggMDAwOSAwMDBBICB8Li4uLi4uLi58CgkwMDAwMDAyMCAgMDAwQiAwMDBDIDAwMEQgMDAwRSAtIDAwMEYgMDAxMCAwMDExIDAwMTIgIHwuLi4uLi4uLnwKCTAwMDAwMDI4ICAwMDEzIDAwMTQgMDAxNSAwMDE2IC0gMDAxNyAwMDE4IDAwMTkgMDAxQSAgfC4uLi4uLi4ufAoJMDAwMDAwMzAgIDAwMUIgMDAxQyAwMDFEIDAwMUUgLSAwMDFGIDAwMjAgMDAyMSAwMDIyICB8Li4uLi4gISJ8CgkwMDAwMDAzOCAgMDAyMyAwMDI0IDAwMjUgMDAyNiAtIDAwMjcgMDAyOCAwMDI5IDAwMkEgIHwjJCUmJygpKnwKCTAwMDAwMDQwICAwMDJCIDAwMkMgMDAyRCAwMDJFIC0gMDAyRiAwMDMwIDAwMzEgMDAzMiAgfCssLS4vMDEyfAoJMDAwMDAwNDggIDAwMzMgMDAzNCAwMDM1IDAwMzYgLSAwMDM3IDAwMzggMDAzOSAwMDNBICB8MzQ1Njc4OTp8CgkwMDAwMDA1MCAgMDAzQiAwMDNDIDAwM0QgMDAzRSAtIDAwM0YgMDA0MCAwMDQxIDAwNDIgIHw7PD0+P0BBQnwKCTAwMDAwMDU4ICAwMDQzIDAwNDQgMDA0NSAwMDQ2IC0gMDA0NyAwMDQ4IDAwNDkgMDA0QSAgfENERUZHSElKfAoJMDAwMDAwNjAgIDAwNEIgMDA0QyAwMDREIDAwNEUgLSAwMDRGIDAwNTAgMDA1MSAwMDUyICB8S0xNTk9QUVJ8CgkwMDAwMDA2OCAgMDA1MyAwMDU0IDAwNTUgMDA1NiAtIDAwNTcgMDA1OCAwMDU5IDAwNUEgIHxTVFVWV1hZWnwKCTAwMDAwMDcwICAwMDVCIDAwNUMgMDA1RCAwMDVFIC0gMDA1RiAwMDYwIDAwNjEgMDA2MiAgfFtcXV5fYGFifAoJMDAwMDAwNzggIDAwNjMgMDA2NCAwMDY1IDAwNjYgLSAwMDY3IDAwNjggMDA2OSAwMDZBICB8Y2RlZmdoaWp8CgkwMDAwMDA4MCAgMDA2QiAwMDZDIDAwNkQgMDA2RSAtIDAwNkYgMDA3MCAwMDcxIDAwNzIgIHxrbG1ub3BxcnwKCTAwMDAwMDg4ICAwMDczIDAwNzQgMDA3NSAwMDc2IC0gMDA3NyAwMDc4IDAwNzkgMDA3QSAgfHN0dXZ3eHl6fAoJMDAwMDAwOTAgIDAwN0IgMDA3QyAwMDdEIDAwN0UgLSAwMDdGIDAwODAgMDA4MSAwMDgyICB8e3x9fi4uLi58CgkwMDAwMDA5OCAgMDA4MyAwMDg0IDAwODUgMDA4NiAtIDAwODcgMDA4OCAwMDg5IDAwOEEgIHwuLi4uLi4uLnwKCTAwMDAwMEEwICAwMDhCIDAwOEMgMDA4RCAwMDhFIC0gMDA4RiAwMDkwIDAwOTEgMDA5MiAgfC4uLi4uLi4ufAoJMDAwMDAwQTggIDAwOTMgMDA5NCAwMDk1IDAwOTYgLSAwMDk3IDAwOTggMDA5OSAwMDlBICB8Li4uLi4uLi58CgkwMDAwMDBCMCAgMDA5QiAwMDlDIDAwOUQgMDA5RSAtIDAwOUYgMDBBMCAwMEExIDAwQTIgIHwuLi4uLsKgwqHConwKCTAwMDAwMEI4ICAwMEEzIDAwQTQgMDBBNSAwMEE2IC0gMDBBNyAwMEE4IDAwQTkgMDBBQSAgfMKjwqTCpcKmwqfCqMKpwqp8CgkwMDAwMDBDMCAgMDBBQiAwMEFDIDAwQUQgMDBBRSAtIDAwQUYgMDBCMCAwMEIxIDAwQjIgIHzCq8Kswq3CrsKvwrDCscKyfAoJMDAwMDAwQzggIDAwQjMgMDBCNCAwMEI1IDAwQjYgLSAwMEI3IDAwQjggMDBCOSAwMEJBICB8wrPCtMK1wrbCt8K4wrnCunwKCTAwMDAwMEQwICAwMEJCIDAwQkMgMDBCRCAwMEJFIC0gMDBCRiAwMEMwIDAwQzEgMDBDMiAgfMK7wrzCvcK+wr/DgMOBw4J8CgkwMDAwMDBEOCAgMDBDMyAwMEM0IDAwQzUgMDBDNiAtIDAwQzcgMDBDOCAwMEM5IDAwQ0EgIHzDg8OEw4XDhsOHw4jDicOKfAoJMDAwMDAwRTAgIDAwQ0IgMDBDQyAwMENEIDAwQ0UgLSAwMENGIDAwRDAgMDBEMSAwMEQyICB8w4vDjMONw47Dj8OQw5HDknwKCTAwMDAwMEU4ICAwMEQzIDAwRDQgMDBENSAwMEQ2IC0gMDBENyAwMEQ4IDAwRDkgMDBEQSAgfMOTw5TDlcOWw5fDmMOZw5p8CgkwMDAwMDBGMCAgMDBEQiAwMERDIDAwREQgMDBERSAtIDAwREYgMDBFMCAwMEUxIDAwRTIgIHzDm8Ocw53DnsOfw6DDocOifAoJMDAwMDAwRjggIDAwRTMgMDBFNCAwMEU1IDAwRTYgLSAwMEU3IDAwRTggMDBFOSAwMEVBICB8w6PDpMOlw6bDp8Oow6nDqnwKCTAwMDAwMTAwICAwMEVCIDAwRUMgMDBFRCAwMEVFIC0gMDBFRiAwMEYwIDAwRjEgMDBGMiAgfMOrw6zDrcOuw6/DsMOxw7J8CgkwMDAwMDEwOCAgMDBGMyAwMEY0IDAwRjUgMDBGNiAtIDAwRjcgMDBGOCAwMEY5IDAwRkEgIHzDs8O0w7XDtsO3w7jDucO6fAoJMDAwMDAxMTAgIDAwRkIgMDBGQyAwMEZEIDAwRkUgLSAwMEZGIDAwMEEgRUZGRiAwMDBBICB8w7vDvMO9w77Dvy7vv70ufAoJMDAwMDAxMTggIEVGQzIgMDAwQSBFRkVGIEVGQkYgLSBFRkMwIDAwMEEgRUZDMCBFRjgwICB877+9Lu+/ve+/ve+/vS7vv73vv718CgkwMDAwMDEyMCAgMDAwQSBFRkUwIEVGODAgRUY4MCAtIDAwMEEgRkZGRCBFRkVGIEVGQkYgIHwu77+977+977+9Lu+/ve+/ve+/vXwKCTAwMDAwMTI4ICBFRkJFIEVGRUYgRUZCRiBFRkJGIC0gMDAwQSAwMDAwIDAwN0EgMDAwQSAgfO+/ve+/ve+/ve+/vS4uei58Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTQKZGVzY3JpcHRpb246CglDaGVjayBpZiBrc2g5My1zdHlsZSBiYXNlLW9uZSBpbnRlZ2VycyB3b3JrCmNhdGVnb3J5OiAhc21rc2gKc3RkaW46CglzZXQgLVUKCWVjaG8gMSAkKCgnYScpKQoJKGVjaG8gMmYgJCgoJ2FhJykpKSAyPiYxIHwgc2VkICJzL15bXiddKicvMnAgJy8iCgllY2hvIDMgJCgoJ+KApicpKQoJeD0iJ2EnIgoJZWNobyAiNCA8JHg+IgoJZWNobyA1ICQoKCR4KSkKCWVjaG8gNiAkKCh4KSkKZXhwZWN0ZWQtc3Rkb3V0OgoJMSA5NwoJMnAgJ2FhJzogbXVsdGktY2hhcmFjdGVyIGNoYXJhY3RlciBjb25zdGFudAoJMyA4MjMwCgk0IDwnYSc+Cgk1IDk3Cgk2IDk3Ci0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTVBCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIHRoYXQgd2XigJlyZSBOVUwgYW5kIFVDUyBzYWZlCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLXllcwpzdGRpbjoKCXNldCArVQoJcHJpbnQgJ2FcMGJceGZkeicgPngKCXJlYWQgLWEgeSA8eAoJc2V0IC1VCgl0eXBlc2V0IC1VdWkxNiB5CglwcmludCAke3lbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTYjNjEgMTYjMCAxNiM2MiAxNiNGRCAxNiM3QSAuCi0tLQpuYW1lOiBpbnRlZ2VyLWJhc2Utb25lLTVFCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdG8gc2VlIHRoYXQgd2XigJlyZSBOVUwgYW5kIFVDUyBzYWZlCmNhdGVnb3J5OiAhc2hlbGw6ZWJjZGljLW5vCnN0ZGluOgoJc2V0ICtVCglwcmludCAnYVwwYlx4ZmR6JyA+eAoJcmVhZCAtYSB5IDx4CglzZXQgLVUKCXR5cGVzZXQgLVV1aTE2IHkKCXByaW50ICR7eVsqXX0gLgpleHBlY3RlZC1zdGRvdXQ6CgkxNiM4MSAxNiMwIDE2IzgyIDE2I0ZEIDE2I0E5IC4KLS0tCm5hbWU6IGludGVnZXItYmFzZS1vbmUtNVcKZGVzY3JpcHRpb246CglDaGVjayB0byBzZWUgdGhhdCB3ZeKAmXJlIE5VTCBhbmQgVUNTIHNhZmUKc3RkaW46CglzZXQgLVUKCXByaW50ICdhXDBi4oKsYycgPngKCXJlYWQgLWEgeSA8eAoJc2V0ICtVCgl0eXBlc2V0IC1VdWkxNiB5CglwcmludCAke3lbKl19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMTYjNjEgMTYjMCAxNiM2MiAxNiMyMEFDIDE2IzYzIC4KLS0tCm5hbWU6IHVsaW1pdC0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB1bGltaXQgYXMgdXNlZCBpbiBkb3QubWtzaCB3b3JrcyBvciBpcyBzdHViYmVkCnN0ZGluOgoJdWxpbWl0IC1jIDAKLS0tCm5hbWU6IHVsaW1pdC0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgd2UgY2FuIHVzZSBhIHNwZWNpZmljIHN5bnRheCBpZGlvbSBmb3IgdWxpbWl0CglYWFggSGFpa3Ugd29ya3MsIGJ1dCBvbmx5IGZvciAtbiBhbmQgLVYKY2F0ZWdvcnk6ICFvczpoYWlrdSwhb3M6c3lsbGFibGUKc3RkaW46CglpZiAhIHg9JCh1bGltaXQgLWQpIHx8IFtbICR4ID0gdW5rbm93biBdXTsgdGhlbgoJCSNlY2hvIGV4cGVjdGVkIHRvIGZhaWwgb24gdGhpcyBPUwoJCWVjaG8gb2theQoJZWxzZQoJCXVsaW1pdCAtZFMgJHggJiYgZWNobyBva2F5CglmaQpleHBlY3RlZC1zdGRvdXQ6Cglva2F5Ci0tLQpuYW1lOiB1bGltaXQtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBsaW1pdHMgKGlmIHRoaXMgZmFpbHMsCglpbW1lZGlhdGVseSBjb250YWN0IHdpdGggc3lzdGVtIGluZm9ybWF0aW9uIHRoZSBkZXZlbG9wZXJzKQpzdGRpbjoKCVtbIC16ICQoc2V0IHwgZ3JlcCBeb3B0KSBdXTsgbWlzPSQ/CglzZXQgfCBncmVwIF5vcHQgfCBzZWQgJ3MvXi91bmV4cGVjdGVkbHkgc2V0IGluIGVudmlyb25tZW50OiAvJwoJb3B0YT0nPHVzZWQgZm9yIHNob3dpbmcgYWxsIGxpbWl0cz4nCglvcHRIPSc8dXNlZCB0byBzZXQgaGFyZCBsaW1pdHM+JwoJb3B0Uz0nPHVzZWQgdG8gc2V0IHNvZnQgbGltaXRzPicKCXVsaW1pdCAtYSA+dG1wZgoJc2V0IC1vIG5vZ2xvYgoJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJeD0ke2xpbmU6MToxfQoJCWlmIFtbIC16ICR4IHx8ICR7I3h9LyR7JXh9ICE9IDEvMSBdXTsgdGhlbgoJCQlwcmludCAtciAtLSAid2VpcmQgbGluZTogJGxpbmUiCgkJCSgoIG1pcyB8PSAxICkpCgkJCWNvbnRpbnVlCgkJZmkKCQlzZXQgLS0gJGxpbmUKCQluYW1lcmVmIHY9b3B0JHgKCQlpZiBbWyAtbiAkdiBdXTsgdGhlbgoJCQlwcmludCAtciAtLSAiZHVwbGljYXRlIC0keCBcIiQyXCIgYWxyZWFkeSBzZWVuIGFzIFwiJHZcIiIKCQkJKCggbWlzIHw9IDIgKSkKCQlmaQoJCXY9JDIKCWRvbmUgPHRtcGYKCWlmICgoIG1pcyAmIDIgKSk7IHRoZW4KCQllY2hvIGZhaWxlZAoJZWxpZiAoKCBtaXMgJiAxICkpOyB0aGVuCgkJZWNobyBpbmNvbmNsdXNpdmUKCWVsc2UKCQllY2hvIGRvbmUKCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWRvbmUKLS0tCm5hbWU6IHJlZGlyLTEKZGVzY3JpcHRpb246CglDaGVjayBzb21lIG9mIHRoZSBtb3N0IGJhc2ljIGludmFyaWFudHMgb2YgSS9PIHJlZGlyZWN0aW9uCnN0ZGluOgoJaT0wCglmdW5jdGlvbiBkIHsKCQlwcmludCBvJGkuCgkJcHJpbnQgLXUyIGUkKChpKyspKS4KCX0KCWQgPmEgMj5iCgllY2hvID0xPQoJY2F0IGEKCWVjaG8gPTI9CgljYXQgYgoJZWNobyA9Mz0KCWQgMj4mMSA+YwoJZWNobyA9ND0KCWNhdCBjCgllY2hvID01PQpleHBlY3RlZC1zdGRvdXQ6Cgk9MT0KCW8wLgoJPTI9CgllMC4KCT0zPQoJZTEuCgk9ND0KCW8xLgoJPTU9Ci0tLQpuYW1lOiBiYXNoaW9wLTEKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAxOiB0aGlzIGlzIGFsc28gc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0ICY+Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtMmEKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiB3b3JrcwoJUGFydCAyOiB0aGlzIGlzICpub3QqIHN1cHBvcnRlZCBieSBHTlUgYmFzaApzdGRpbjoKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAzJj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXJhcwoJPT09Cglkd2EKCXRyaQotLS0KbmFtZTogYmFzaGlvcC0yYgpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgKm5vdCogc3VwcG9ydGVkIGJ5IEdOVSBiYXNoCnN0ZGluOgoJZXhlYyAzPiYxCglmdW5jdGlvbiB0aHJlZW91dCB7CgkJZWNobyByYXMKCQllY2hvIGR3YSA+JjIKCQllY2hvIHRyaSA+JjMKCX0KCXRocmVlb3V0IDM+Zm9vICY+JjMKCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCT09PQoJcmFzCglkd2EKCXRyaQotLS0KbmFtZTogYmFzaGlvcC0yYwpkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDI6IHRoaXMgaXMgc3VwcG9ydGVkIGJ5IEdOVSBiYXNoIDQgb25seQpzdGRpbjoKCWVjaG8gbWlyID5mb28KCXNldCAtbyBub2Nsb2JiZXIKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9Cgl0aHJlZW91dCAmPj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCXRyaQoJPT09CgltaXIKCXJhcwoJZHdhCi0tLQpuYW1lOiBiYXNoaW9wLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgaWYgR05VIGJhc2gtbGlrZSBJL08gcmVkaXJlY3Rpb24gZmFpbHMgY29ycmVjdGx5CglQYXJ0IDE6IHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CgllY2hvIG1pciA+Zm9vCglzZXQgLW8gbm9jbG9iYmVyCglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj5mb28KCWVjaG8gPT09CgljYXQgZm9vCmV4cGVjdGVkLXN0ZG91dDoKCT09PQoJbWlyCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLio6IGNhbid0IChjcmVhdGV8b3ZlcndyaXRlKSAuKi8KLS0tCm5hbWU6IGJhc2hpb3AtM2IKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBmYWlscyBjb3JyZWN0bHkKCVBhcnQgMjogdGhpcyBpcyAqbm90KiBzdXBwb3J0ZWQgYnkgR05VIGJhc2gKc3RkaW46CgllY2hvIG1pciA+Zm9vCglzZXQgLW8gbm9jbG9iYmVyCglleGVjIDM+JjEKCWZ1bmN0aW9uIHRocmVlb3V0IHsKCQllY2hvIHJhcwoJCWVjaG8gZHdhID4mMgoJCWVjaG8gdHJpID4mMwoJfQoJdGhyZWVvdXQgJj58Zm9vCgllY2hvID09PQoJY2F0IGZvbwpleHBlY3RlZC1zdGRvdXQ6Cgl0cmkKCT09PQoJcmFzCglkd2EKLS0tCm5hbWU6IGJhc2hpb3AtNApkZXNjcmlwdGlvbjoKCUNoZWNrIGlmIEdOVSBiYXNoLWxpa2UgSS9PIHJlZGlyZWN0aW9uIHdvcmtzCglQYXJ0IDQ6IHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgR05VIGJhc2gsCglidXQgZmFpbGVkIGluIHNvbWUgbWtzaCB2ZXJzaW9ucwpzdGRpbjoKCWV4ZWMgMz4mMQoJZnVuY3Rpb24gdGhyZWVvdXQgewoJCWVjaG8gcmFzCgkJZWNobyBkd2EgPiYyCgkJZWNobyB0cmkgPiYzCgl9CglmdW5jdGlvbiBibHViYiB7CgkJW1sgLWUgYmFyIF1dICYmIHRocmVlb3V0ICIkYmYiICY+Zm9vCgl9CglibHViYgoJZWNobyAtbiA+YmFyCglibHViYgoJZWNobyA9PT0KCWNhdCBmb28KZXhwZWN0ZWQtc3Rkb3V0OgoJdHJpCgk9PT0KCXJhcwoJZHdhCi0tLQpuYW1lOiBiYXNoaW9wLTUKZGVzY3JpcHRpb246CglDaGVjayBpZiBHTlUgYmFzaC1saWtlIEkvTyByZWRpcmVjdGlvbiBpcyBvbmx5IHN1cHBvcnRlZAoJaW4gIVBPU0lYICFzaCBtb2RlIGFzIGl0IGJyZWFrcyBleGlzdGluZyBzY3JpcHRzJyBzeW50YXgKc3RkaW46Cgk6Png7IGVjaG8gMSAiJCgiJF9fcHJvZ25hbWUiIC1jICdlY2hvIGZvbz4vZGV2L251bGwmPnggZWNobyBiYXInKSIgPSAiJCg8eCkiIC4KCTo+eDsgZWNobyAyICIkKCIkX19wcm9nbmFtZSIgLW8gcG9zaXggLWMgJ2VjaG8gZm9vPi9kZXYvbnVsbCY+eCBlY2hvIGJhcicpIiA9ICIkKDx4KSIgLgoJOj54OyBlY2hvIDMgIiQoIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyBmb28+L2Rldi9udWxsJj54IGVjaG8gYmFyJykiID0gIiQoPHgpIiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgID0gZm9vIGVjaG8gYmFyIC4KCTIgID0gYmFyIC4KCTMgID0gYmFyIC4KLS0tCm5hbWU6IG9rc2gtZXZhbApkZXNjcmlwdGlvbjoKCUNoZWNrIGV4cGFuc2lvbnMuCnN0ZGluOgoJYT0KCWZvciBuIGluICR7YSMqPX07IGRvIGVjaG8gMWh1ICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gIiR7YSMqPX0iOyBkbyBlY2hvIDFocSAke259IC47IGRvbmUKCWZvciBuIGluICR7YSMjKj19OyBkbyBlY2hvIDJodSAke259IC47IGRvbmUKCWZvciBuIGluICIke2EjIyo9fSI7IGRvIGVjaG8gMmhxICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gJHthJT0qfTsgZG8gZWNobyAxcHUgJHtufSAuOyBkb25lCglmb3IgbiBpbiAiJHthJT0qfSI7IGRvIGVjaG8gMXBxICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gJHthJSU9Kn07IGRvIGVjaG8gMnB1ICR7bn0gLjsgZG9uZQoJZm9yIG4gaW4gIiR7YSUlPSp9IjsgZG8gZWNobyAycHEgJHtufSAuOyBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCTFocSAuCgkyaHEgLgoJMXBxIC4KCTJwcSAuCi0tLQpuYW1lOiBva3NoLWFuZC1saXN0LWVycm9yLTEKZGVzY3JpcHRpb246CglUZXN0IGV4aXQgc3RhdHVzIG9mIHJpZ2h0bW9zdCBlbGVtZW50IGluIDIgZWxlbWVudCAmJiBsaXN0IGluIC1lIG1vZGUKc3RkaW46Cgl0cnVlICYmIGZhbHNlCgllY2hvICJzaG91bGQgbm90IHByaW50Igphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSAhPSAwCi0tLQpuYW1lOiBva3NoLWFuZC1saXN0LWVycm9yLTIKZGVzY3JpcHRpb246CglUZXN0IGV4aXQgc3RhdHVzIG9mIHJpZ2h0bW9zdCBlbGVtZW50IGluIDMgZWxlbWVudCAmJiBsaXN0IGluIC1lIG1vZGUKc3RkaW46Cgl0cnVlICYmIHRydWUgJiYgZmFsc2UKCWVjaG8gInNob3VsZCBub3QgcHJpbnQiCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlICE9IDAKLS0tCm5hbWU6IG9rc2gtb3ItbGlzdC1lcnJvci0xCmRlc2NyaXB0aW9uOgoJVGVzdCBleGl0IHN0YXR1cyBvZiB8fCBsaXN0IGluIC1lIG1vZGUKc3RkaW46CglmYWxzZSB8fCBmYWxzZQoJZWNobyAic2hvdWxkIG5vdCBwcmludCIKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMAotLS0KbmFtZTogb2tzaC1sb25nbGluZS1jcmFzaApkZXNjcmlwdGlvbjoKCVRoaXMgdXNlZCB0byBjYXVzZSBhIGNvcmUgZHVtcApzdGRpbjoKCXVsaW1pdCAtYyAwCglkZXBsaWJzPSItbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWx0aWZmIC1sanBlZyAtbHogLWxwbmcgLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnZGtfcGl4YnVmLmxhIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9wb3J0cy9kZXZlbC9nZXR0ZXh0L3ctZ2V0dGV4dC0wLjEwLjQwL2dldHRleHQtMC4xMC40MC9pbnRsLy5saWJzIC91c3IvbG9jYWwvbGliL2xpYmludGwubGEgL3Vzci9sb2NhbC9saWIvbGliZ2xpYi5sYSAtbG0gLWxtIC91c3IvbG9jYWwvbGliL2xpYmF1ZGlvZmlsZS5sYSAtbG0gLWxtIC1sYXVkaW9maWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZXNkLmxhIC1sbSAtbHogLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXN1cHBvcnQubGEgLWxtIC1seiAtbG0gLWxnbGliIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWUubGEgLWxYMTEgLWxYZXh0IC91c3IvbG9jYWwvbGliL2xpYmljb252LmxhIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbW9kdWxlLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdkay5sYSAtbGludGwgLWxtIC1sWDExIC1sWGV4dCAtTC91c3IvWDExUjYvbGliIC1sZ2xpYiAtbGdtb2R1bGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWxJQ0UgLWxTTSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAtbHogL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvWDExUjYvbGliIC91c3IvbG9jYWwvbGliL2xpYmdka19pbWxpYi5sYSAtbG0gLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJhcnRfbGdwbC5sYSAtbG0gLWx6IC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLWxJQ0UgLWxTTSAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1ML3Vzci9YMTFSNi9saWIgLWxtIC1seiAtbHBuZyAtbHVuZ2lmIC1seiAtbGpwZWcgLWx0aWZmIC1sanBlZyAtbGdka19pbWxpYiAtbGdsaWIgLWxtIC1sYXVkaW9maWxlIC1sbSAtbGF1ZGlvZmlsZSAtbGVzZCAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21ldWkubGEgLWx6IC1seiAvdXNyL2xvY2FsL2xpYi9saWJ4bWwubGEgLWx6IC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGlieG1sLmxhIC1sbSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL3BvcnRzL2RldmVsL2dldHRleHQvdy1nZXR0ZXh0LTAuMTAuNDAvZ2V0dGV4dC0wLjEwLjQwL2ludGwvLmxpYnMgL3Vzci9sb2NhbC9saWIvbGliaW50bC5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtTC91c3IvWDExUjYvbGliIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2xhZGUubGEgLWx6IC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGlieG1sLmxhIC91c3IvbG9jYWwvbGliL2xpYmdsaWIubGEgLWxtIC1sbSAvdXNyL2xvY2FsL2xpYi9saWJhdWRpb2ZpbGUubGEgLWxtIC1sbSAtbGF1ZGlvZmlsZSAvdXNyL2xvY2FsL2xpYi9saWJlc2QubGEgLWxtIC1seiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXN1cHBvcnQubGEgLWxtIC1seiAtbG0gLWxnbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lLmxhIC1sWDExIC1sWGV4dCAvdXNyL2xvY2FsL2xpYi9saWJpY29udi5sYSAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLWxnbGliIC1sZ21vZHVsZSAvdXNyL2xvY2FsL2xpYi9saWJnZGsubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLWxnbGliIC1sZ21vZHVsZSAvdXNyL2xvY2FsL2xpYi9saWJndGsubGEgLWxJQ0UgLWxTTSAtbHogLWxwbmcgL3Vzci9sb2NhbC9saWIvbGlidW5naWYubGEgL3Vzci9sb2NhbC9saWIvbGlianBlZy5sYSAtbHRpZmYgLWxtIC1seiAtbHogL3Vzci9sb2NhbC9saWIvbGliZ2RrX2ltbGliLmxhIC91c3IvbG9jYWwvbGliL2xpYmFydF9sZ3BsLmxhIC1sbSAtbHogLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbG0gLWxYMTEgLWxYZXh0IC1saW50bCAtbGdsaWIgLWxnbW9kdWxlIC1sZ2RrIC1sZ3RrIC1sbSAtbHogLWx1bmdpZiAtbHogLWxqcGVnIC1sanBlZyAtbGdka19pbWxpYiAtbGdsaWIgLWxtIC1sYXVkaW9maWxlIC1sbSAtbGF1ZGlvZmlsZSAtbGVzZCAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZXVpLmxhIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbGFkZS1nbm9tZS5sYSAvdXNyL2xvY2FsL2xpYi9saWJnbGliLmxhIC1sbSAtbG0gL3Vzci9sb2NhbC9saWIvbGliYXVkaW9maWxlLmxhIC1sbSAtbG0gLWxhdWRpb2ZpbGUgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJlc2QubGEgLWxtIC1seiAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmdub21lc3VwcG9ydC5sYSAtbG0gLWx6IC1sbSAtbGdsaWIgLUwvdXNyL2xvY2FsL2xpYiAvdXNyL2xvY2FsL2xpYi9saWJnbm9tZS5sYSAtbFgxMSAtbFhleHQgL3Vzci9sb2NhbC9saWIvbGliaWNvbnYubGEgLUwvdXNyL2xvY2FsL2xpYiAtTC91c3IvcG9ydHMvZGV2ZWwvZ2V0dGV4dC93LWdldHRleHQtMC4xMC40MC9nZXR0ZXh0LTAuMTAuNDAvaW50bC8ubGlicyAvdXNyL2xvY2FsL2xpYi9saWJpbnRsLmxhIC91c3IvbG9jYWwvbGliL2xpYmdtb2R1bGUubGEgLWxpbnRsIC1sbSAtbFgxMSAtbFhleHQgLUwvdXNyL1gxMVI2L2xpYiAtbGdsaWIgLWxnbW9kdWxlIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrLmxhIC1saW50bCAtbG0gLWxYMTEgLWxYZXh0IC1ML3Vzci9YMTFSNi9saWIgLWxnbGliIC1sZ21vZHVsZSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmd0ay5sYSAtbElDRSAtbFNNIC1seiAtbHBuZyAvdXNyL2xvY2FsL2xpYi9saWJ1bmdpZi5sYSAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtbG0gLWx6IC1scG5nIC91c3IvbG9jYWwvbGliL2xpYnVuZ2lmLmxhIC1seiAvdXNyL2xvY2FsL2xpYi9saWJqcGVnLmxhIC1sdGlmZiAtTC91c3IvbG9jYWwvbGliIC1ML3Vzci9YMTFSNi9saWIgL3Vzci9sb2NhbC9saWIvbGliZ2RrX2ltbGliLmxhIC1sbSAtTC91c3IvbG9jYWwvbGliIC91c3IvbG9jYWwvbGliL2xpYmFydF9sZ3BsLmxhIC1sbSAtbHogLWxtIC1sWDExIC1sWGV4dCAtbGludGwgLWxnbGliIC1sZ21vZHVsZSAtbGdkayAtbGd0ayAtbElDRSAtbFNNIC1sbSAtbFgxMSAtbFhleHQgLWxpbnRsIC1sZ2xpYiAtbGdtb2R1bGUgLWxnZGsgLWxndGsgLUwvdXNyL1gxMVI2L2xpYiAtbG0gLWx6IC1scG5nIC1sdW5naWYgLWx6IC1sanBlZyAtbHRpZmYgLWxqcGVnIC1sZ2RrX2ltbGliIC1sZ2xpYiAtbG0gLWxhdWRpb2ZpbGUgLWxtIC1sYXVkaW9maWxlIC1sZXNkIC1ML3Vzci9sb2NhbC9saWIgL3Vzci9sb2NhbC9saWIvbGliZ25vbWV1aS5sYSAtTC91c3IvWDExUjYvbGliIC1ML3Vzci9sb2NhbC9saWIiCglzcGVjaWFsZGVwbGlicz0iLWxnbm9tZXVpIC1sYXJ0X2xncGwgLWxnZGtfaW1saWIgLWx0aWZmIC1sanBlZyAtbHVuZ2lmIC1scG5nIC1seiAtbFNNIC1sSUNFIC1sZ3RrIC1sZ2RrIC1sZ21vZHVsZSAtbGludGwgLWxYZXh0IC1sWDExIC1sZ25vbWUgLWxnbm9tZXN1cHBvcnQgLWxlc2QgLWxhdWRpb2ZpbGUgLWxtIC1sZ2xpYiIKCWZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCgkJY2FzZSAkZGVwbGliIGluCgkJLUwqKQoJCQluZXdfbGlicz0iJGRlcGxpYiAkbmV3X2xpYnMiCgkJCTs7CgkJKikKCQkJY2FzZSAiICRzcGVjaWFsZGVwbGlicyAiIGluCgkJCSoiICRkZXBsaWIgIiopCgkJCQluZXdfbGlicz0iJGRlcGxpYiAkbmV3X2xpYnMiOzsKCQkJZXNhYwoJCQk7OwoJCWVzYWMKCWRvbmUKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItMQpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgY29tcG91bmQgbGlzdAoJZm9sbG93ZWQgYnkgYW4gaWYgc3RhdGVtZW50LgpzdGRpbjoKCWlmIHRydWU7IHRoZW4gZmFsc2UgJiYgZmFsc2U7IGZpCgl0cnVlCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItMgpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgY29tcG91bmQgbGlzdAoJZm9sbG93ZWQgYnkgYW4gaWYgc3RhdGVtZW50LgpzdGRpbjoKCWlmIHRydWU7IHRoZW4gaWYgdHJ1ZTsgdGhlbiBmYWxzZSAmJiBmYWxzZTsgZmk7IGZpCgl0cnVlCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItMwpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgY29tcG91bmQgbGlzdAoJZm9sbG93ZWQgYnkgYW4gZWxpZiBzdGF0ZW1lbnQuCnN0ZGluOgoJaWYgdHJ1ZTsgdGhlbiA6OyBlbGlmIHRydWU7IHRoZW4gZmFsc2UgJiYgZmFsc2U7IGZpCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1leGl0OiBlID09IDAKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItNApkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHNob3VsZCBiZSBpZ25vcmVkIHdoZW4gZXhlY3V0aW5nIGEgcGlwZWxpbmUKCWJlZ2lubmluZyB3aXRoICchJwpzdGRpbjoKCWZvciBpIGluIDEgMiAzCglkbwoJCWZhbHNlICYmIGZhbHNlCgkJdHJ1ZSB8fCBmYWxzZQoJZG9uZQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTUKZGVzY3JpcHRpb246CglUaGUgLWUgZmxhZyBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGV4ZWN1dGluZyBhIHBpcGVsaW5lCgliZWdpbm5pbmcgd2l0aCAnIScKc3RkaW46CgkhIHRydWUgfCBmYWxzZQoJdHJ1ZQphcmd1bWVudHM6ICEtZSEKZXhwZWN0ZWQtZXhpdDogZSA9PSAwCi0tLQpuYW1lOiBva3NoLXNldGVycm9yLTYKZGVzY3JpcHRpb246CglXaGVuIHRyYXBwaW5nIEVSUiBhbmQgRVhJVCwgYm90aCB0cmFwcyBzaG91bGQgcnVuIGluIC1lIG1vZGUKCXdoZW4gYW4gZXJyb3Igb2NjdXJzLgpzdGRpbjoKCXRyYXAgJ2VjaG8gRVhJVCcgRVhJVAoJdHJhcCAnZWNobyBFUlInIEVSUgoJc2V0IC1lCglmYWxzZQoJZWNobyBET05FCglleGl0IDAKYXJndW1lbnRzOiAhLWUhCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRvdXQ6CglFUlIKCUVYSVQKLS0tCm5hbWU6IG9rc2gtc2V0ZXJyb3ItNwpkZXNjcmlwdGlvbjoKCVRoZSAtZSBmbGFnIHdpdGhpbiBhIGNvbW1hbmQgc3Vic3RpdHV0aW9uIHNob3VsZCBiZSBob25vcmVkCnN0ZGluOgoJZWNobyAkKCBzZXQgLWU7IGZhbHNlOyBlY2hvIGZvbyApCmFyZ3VtZW50czogIS1lIQpleHBlY3RlZC1zdGRvdXQ6CgkKLS0tCm5hbWU6IG9rc2gtaW5wdXQtY29tc3ViCmRlc2NyaXB0aW9uOgoJQSBjb21tYW5kIHN1YnN0aXR1dGlvbiB1c2luZyBpbnB1dCByZWRpcmVjdGlvbiBzaG91bGQgZXhpdCB3aXRoCglmYWlsdXJlIGlmIHRoZSBpbnB1dCBmaWxlIGRvZXMgbm90IGV4aXN0LgpzdGRpbjoKCXZhcj0kKDwgbm9uLWV4aXN0ZW50KQpleHBlY3RlZC1leGl0OiBlICE9IDAKZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46IC9ub24tZXhpc3RlbnQvCi0tLQpuYW1lOiBva3NoLWVtcHR5LWZvci1saXN0CmRlc2NyaXB0aW9uOgoJQSBmb3IgbGlzdCB3aGljaCBleHBhbmRzIHRvIHplcm8gaXRlbXMgc2hvdWxkIG5vdCBleGVjdXRlIHRoZSBib2R5LgpzdGRpbjoKCXNldCBmb28gYmFyIGJheiA7IGZvciBvdXQgaW4gOyBkbyBlY2hvICRvdXQgOyBkb25lCi0tLQpuYW1lOiBva3NoLXZhcmZ1bmN0aW9uLW1vZDEKZGVzY3JpcHRpb246CgkoSW5zcGlyZWQgYnkgUFIgMjQ1MCBvbiBPcGVuQlNELikgQ2FsbGluZwoJCUZPTz1iYXIgZgoJd2hlcmUgZiBpcyBhIGtzaCBzdHlsZSBmdW5jdGlvbiwgc2hvdWxkIG5vdCBzZXQgRk9PIGluIHRoZSBjdXJyZW50CgllbnYuIElmIGYgaXMgYSBCb3VybmUgc3R5bGUgZnVuY3Rpb24sIChuZXcpIGFsc28gbm90LiBGdXJ0aGVybW9yZSwKCXRoZSBmdW5jdGlvbiBzaG91bGQgcmVjZWl2ZSBhIGNvcnJlY3QgdmFsdWUgb2YgRk9PLiBIb3dldmVyLCBkaWZmZXJpbmcKCWZyb20gb2tzaCwgc2V0dGluZyBGT08gaW4gdGhlIGZ1bmN0aW9uIGl0c2VsZiBtdXN0IGNoYW5nZSB0aGUgdmFsdWUgaW4KCXNldHRpbmcgRk9PIGluIHRoZSBmdW5jdGlvbiBpdHNlbGYgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIHZhbHVlIGluCglnbG9iYWwgZW52aXJvbm1lbnQuCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSInXG51bnNldCBSQU5ET01cbmV4cG9ydCB8IHdoaWxlIElGUz0gcmVhZCAtcicgXAoJICAgICdSQU5ET007IGRvIGV2YWwgJ1wnJ3ByaW50IC1yIC0tICIkUkFORE9NPSQnXCcnIiRSQU5ET00iJ1wnXCJcJ1w7IFwKCSAgICBkb25lID5lbnY7IGNobW9kICt4IGVudjsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZnVuY3Rpb24gayB7CgkJaWYgWyB4JEZPTyAhPSB4YmFyIF07IHRoZW4KCQkJZWNobyAxCgkJCXJldHVybiAxCgkJZmkKCQl4PSQoZW52IHwgZ3JlcCBGT08pCgkJaWYgWyAieCR4IiAhPSAieEZPTz1iYXIiIF07IHRoZW4KCQkJZWNobyAyCgkJCXJldHVybiAxOwoJCWZpCgkJRk9PPWZvbwoJCXJldHVybiAwCgl9CgliICgpIHsKCQlpZiBbIHgkRk9PICE9IHhiYXIgXTsgdGhlbgoJCQllY2hvIDMKCQkJcmV0dXJuIDEKCQlmaQoJCXg9JChlbnYgfCBncmVwIEZPTykKCQlpZiBbICJ4JHgiICE9ICJ4Rk9PPWJhciIgXTsgdGhlbgoJCQllY2hvIDQKCQkJcmV0dXJuIDE7CgkJZmkKCQlGT089Zm9vCgkJcmV0dXJuIDAKCX0KCUZPTz1iYXIgawoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHggXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXIgYgoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHggXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXJiYXIKCUZPTz1iYXIgawoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhiYXJiYXIgXTsgdGhlbgoJCWV4aXQgMQoJZmkKCUZPTz1iYXIgYgoJaWYgWyAkPyAhPSAwIF07IHRoZW4KCQlleGl0IDEKCWZpCglpZiBbIHgkRk9PICE9IHhiYXJiYXIgXTsgdGhlbgoJCWV4aXQgMQoJZmkKLS0tCm5hbWU6IGZkLWNsb2V4ZWMtMQpkZXNjcmlwdGlvbjoKCVZlcmlmeSB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgPiAyIGFyZSBwcml2YXRlIGZvciBLb3JuIHNoZWxscwoJQVQmVCBrc2g5MyBkb2VzIHRoaXMgc3RpbGwsIHdoaWNoIG1lYW5zIHdlIG11c3Qga2VlcCBpdCBhcyB3ZWxsCglYWFggZmFpbHMgb24gc29tZSBvbGQgUGVybCBpbnN0YWxsYXRpb25zCm5lZWQtcGFzczogbm8Kc3RkaW46CgljYXQgPmNsZCA8PC1FT0YKCQkjISRfX3BlcmxuYW1lCgkJb3BlbihteSBcJGZoLCAiPiYiLCA5KSBvciBkaWUgIkU6IG9wZW4gXCQhIjsKCQlzeXN3cml0ZShcJGZoLCAiRm93bFxcbiIsIDUpIG9yIGRpZSAiRTogd3JpdGUgXCQhIjsKCUVPRgoJY2htb2QgK3ggY2xkCglleGVjIDk+JjEKCS4vY2xkCmV4cGVjdGVkLWV4aXQ6IGUgIT0gMApleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS9FOiBvcGVuIC8KLS0tCm5hbWU6IGZkLWNsb2V4ZWMtMgpkZXNjcmlwdGlvbjoKCVZlcmlmeSB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgPiAyIGFyZSBub3QgcHJpdmF0ZSBmb3IgUE9TSVggc2hlbGxzCglTZWUgRGViaWFuIEJ1ZyAjMTU0NTQwLCBDbG9zZXM6ICM0OTkxMzkKCVhYWCBmYWlscyBvbiBzb21lIG9sZCBQZXJsIGluc3RhbGxhdGlvbnMKbmVlZC1wYXNzOiBubwpzdGRpbjoKCWNhdCA+Y2xkIDw8LUVPRgoJCSMhJF9fcGVybG5hbWUKCQlvcGVuKG15IFwkZmgsICI+JiIsIDkpIG9yIGRpZSAiRTogb3BlbiBcJCEiOwoJCXN5c3dyaXRlKFwkZmgsICJGb3dsXFxuIiwgNSkgb3IgZGllICJFOiB3cml0ZSBcJCEiOwoJRU9GCgljaG1vZCAreCBjbGQKCXRlc3QgLW4gIiRQT1NIX1ZFUlNJT04iIHx8IHNldCAtbyBwb3NpeAoJZXhlYyA5PiYxCgkuL2NsZApleHBlY3RlZC1zdGRvdXQ6CglGb3dsCi0tLQpuYW1lOiBmZC1jbG9leGVjLTMKZGVzY3JpcHRpb246CglBbm90aGVyIGNoZWNrIGZvciBjbG9zZS1vbi1leGVjCnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSIgPnRzCgljYXQgPj50cyA8PCdFT0YnCglzPUVSUgoJcmVhZCAtck4tMSAtdSQxIHMgMj4vZGV2L251bGw7IGU9JD8KCXByaW50IC1yIC0tICIoJDEsICQoKCFlKSksICRzKSIKCUVPRgoJY2htb2QgK3ggdHMKCXByaW50IGZvbyA+dHgKCXJ1bnRlc3QoKSB7CgkJcz0kMTsgc2hpZnQKCQlwcmludCAtciAtLSAkKCIkX19wcm9nbmFtZSIgIiRAIiAtYyAiJHMiKSAiJEAiIC4KCX0KCXJ1bnRlc3QgJ2V4ZWMgMzx0eDsgLi90cyAzIDM8JjM7IC4vdHMgMycKCXJ1bnRlc3QgJ2V4ZWMgMzx0eDsgLi90cyAzIDM8JjM7IC4vdHMgMycgLW8gcG9zaXgKCXJ1bnRlc3QgJ2V4ZWMgMzx0eDsgLi90cyAzIDM8JjM7IC4vdHMgMycgLW8gc2gKCXJ1bnRlc3QgJ2V4ZWMgMzx0eDsgLi90cyA0IDQ8JjM7IC4vdHMgNCA0PCYzJwoJcnVudGVzdCAnZXhlYyAzPHR4OyAuL3RzIDMgMzwmMzsgLi90cyAzIDM8JjMnCmV4cGVjdGVkLXN0ZG91dDoKCSgzLCAxLCBmb28pICgzLCAwLCBFUlIpIC4KCSgzLCAxLCBmb28pICgzLCAxLCApIC1vIHBvc2l4IC4KCSgzLCAxLCBmb28pICgzLCAxLCApIC1vIHNoIC4KCSg0LCAxLCBmb28pICg0LCAxLCApIC4KCSgzLCAxLCBmb28pICgzLCAxLCApIC4KLS0tCm5hbWU6IGNvbXN1Yi0xYQpkZXNjcmlwdGlvbjoKCUNPTVNVQiBhcmUgbm93IHBhcnNlZCByZWN1cnNpdmVseSwgc28gdGhpcyB3b3JrcwoJc2VlIGFsc28gcmVncmVzc2lvbi02OiBtYXRjaGluZyBwYXJlbnRoZXPEk3MgYnVnCglGYWlscyBvbjogcGRrc2ggYmFzaDIgYmFzaDMgenNoCglQYXNzZXMgb246IGJhc2g0IGtzaDkzIG1rc2goMjAxMTAzMTMrKQpzdGRpbjoKCWVjaG8gMSAkKGNhc2UgMSBpbiAoMSkgZWNobyB5ZXM7OyAoMikgZWNobyBubzs7IGVzYWMpIC4KCWVjaG8gMiAkKGNhc2UgMSBpbiAxKSBlY2hvIHllczs7IDIpIGVjaG8gbm87OyBlc2FjKSAuCglURVNUPTEyMzQ7IGVjaG8gMyAke1RFU1Q6ICQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYyl9IC4KCVRFU1Q9NTY3ODsgZWNobyA0ICR7VEVTVDogJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYyl9IC4KCWE9KCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykpOyBlY2hvIDUgJHthWzBdfSAuCglhPSgkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSk7IGVjaG8gNiAke2FbMF19IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSB5ZXMgLgoJMiB5ZXMgLgoJMyAyMzQgLgoJNCA2NzggLgoJNSAxIC4KCTYgMSAuCi0tLQpuYW1lOiBjb21zdWItMWIKZGVzY3JpcHRpb246CglDT01TVUIgYXJlIG5vdyBwYXJzZWQgcmVjdXJzaXZlbHksIHNvIHRoaXMgd29ya3MKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoMyBiYXNoNCB6c2gKCVBhc3NlcyBvbjoga3NoOTMgbWtzaCgyMDExMDMxMyspCnN0ZGluOgoJZWNobyAxICQoKCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykrMTApKSAuCgllY2hvIDIgJCgoJChjYXNlIDEgaW4gMSkgZWNobyAxOzsgKikgZWNobyAyOzsgZXNhYykrMjApKSAuCgkoKCBhID0gJChjYXNlIDEgaW4gKDEpIGVjaG8gMTs7ICgqKSBlY2hvIDI7OyBlc2FjKSApKTsgZWNobyAzICRhIC4KCSgoIGEgPSAkKGNhc2UgMSBpbiAxKSBlY2hvIDE7OyAqKSBlY2hvIDI7OyBlc2FjKSApKTsgZWNobyA0ICRhIC4KCWE9KCQoKCQoY2FzZSAxIGluICgxKSBlY2hvIDE7OyAoKikgZWNobyAyOzsgZXNhYykrMTApKSk7IGVjaG8gNSAke2FbMF19IC4KCWE9KCQoKCQoY2FzZSAxIGluIDEpIGVjaG8gMTs7ICopIGVjaG8gMjs7IGVzYWMpKzIwKSkpOyBlY2hvIDYgJHthWzBdfSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgMTEgLgoJMiAyMSAuCgkzIDEgLgoJNCAxIC4KCTUgMTEgLgoJNiAyMSAuCi0tLQpuYW1lOiBjb21zdWItMgpkZXNjcmlwdGlvbjoKCVJlZEhhdCBCWiM0OTY3OTEg4oCTIGFub3RoZXIgY2FzZSBvZiBtaXNzaW5nIHJlY3Vyc2lvbgoJaW4gcGFyc2luZyBDT01TVUIgZXhwcmVzc2lvbnMKCUZhaWxzIG9uOiBwZGtzaCBiYXNoMiBiYXNoM8K5IGJhc2g0wrkgenNoCglQYXNzZXMgb246IGtzaDkzIG1rc2goMjAxMTAzMDUrKQoJ4pGgIGJhc2hbMzRdIHNlZW0gdG8gY2hva2Ugb24gY29tbWVudCBlbmRpbmcgd2l0aCBiYWNrc2xhc2gtbmV3bGluZQpzdGRpbjoKCSMgYSBjb21tZW50IHdpdGggIiAnIFwKCXg9JCgKCWVjaG8geWVzCgkjIGEgY29tbWVudCB3aXRoICIgJyBcCgkpCgllY2hvICR4CmV4cGVjdGVkLXN0ZG91dDoKCXllcwotLS0KbmFtZTogY29tc3ViLTMKZGVzY3JpcHRpb246CglFeHRlbmRlZCB0ZXN0IGZvciBDT01TVUIgZXhwbGFpbmluZyB3aHkgYSByZWN1cnNpdmUgcGFyc2VyCglpcyBhIG11c3QgKGEgbm9uLXJlY3Vyc2l2ZSBwYXJzZXIgY2Fubm90IHBhc3MgYWxsIHRocmVlIG9mCgl0aGVzZSB0ZXN0IGNhc2VzLCBlc3BlY2lhbGx5IHRoZSDigJgj4oCZIGlzIGRpZmZpY3VsdCkKc3RkaW46CglwcmludCAnIyEnIiRfX3Byb2duYW1lIidcbmVjaG8gMTIzNCcgPmlkOyBjaG1vZCAreCBpZDsgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZWNobyAkKHR5cGVzZXQgLWkxMCB4PTE2IzIwOyBlY2hvICR4KQoJZWNobyAkKHR5cGVzZXQgLVV1aTE2IHg9MTYjJChpZCAtdSkKCSkgLgoJZWNobyAkKGM9MTsgZD0xCgl0eXBlc2V0IC1VdWkxNiBhPTM2I2ZvbzsgYz0yCgl0eXBlc2V0IC1VdWkxNiBiPTM2ICNmb287IGQ9MgoJZWNobyAkYSAkYiAkYyAkZCkKZXhwZWN0ZWQtc3Rkb3V0OgoJMzIKCS4KCTE2IzRGNjggMTYjMjQgMiAxCi0tLQpuYW1lOiBjb21zdWItNApkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSB0cmVlIGR1bXAgZnVuY3Rpb25zIGZvciAhTUtTSF9TTUFMTCBmdW5jdGlvbmFsaXR5CmNhdGVnb3J5OiAhc21rc2gKc3RkaW46Cgl4KCkgeyBjYXNlICQxIGluIHUpIGVjaG8geCA7OyYgKikgZWNobyAkMSA7OyBlc2FjOyB9Cgl0eXBlc2V0IC1mIHgKZXhwZWN0ZWQtc3Rkb3V0OgoJeCgpIHsKCQljYXNlICQxIGluCgkJKHUpCgkJCVxlY2hvIHggCgkJCTt8CgkJKCopCgkJCVxlY2hvICQxIAoJCQk7OwoJCWVzYWMgCgl9IAotLS0KbmFtZTogY29tc3ViLTUKZGVzY3JpcHRpb246CglDaGVjayBDT01TVUIgd29ya3Mgd2l0aCBhbGlhc2VzIChkb2VzIG5vdCBleHBhbmQgdGhlbSB0d2ljZSkKCWFuZCByZWVudHJhbmN5IHNhZmV0eQpzdGRpbjoKCXByaW50ICcjISciJF9fcHJvZ25hbWUiJ1xuZm9yIHggaW4gIiRAIjsgZG8gcHJpbnQgLXIgLS0gIiR4IjsgZG9uZScgPnBmbgoJY2htb2QgK3ggcGZuCglhbGlhcyBlY2hvPSdlY2hvIGEnCglmb28oKSB7CgkJZWNobyBtb28KCQkuL3BmbiAiJChlY2hvIGZvbykiCgl9CgkuL3BmbiAiJChlY2hvIGIpIgoJdHlwZXNldCAtZiBmb28gPngKCWNhdCB4Cglmb28KCS4gLi94Cgl0eXBlc2V0IC1mIGZvbwoJZm9vCmV4cGVjdGVkLXN0ZG91dDoKCWEgYgoJZm9vKCkgewoJCVxlY2hvIGEgbW9vIAoJCS4vcGZuICIkKFxlY2hvIGEgZm9vICkiIAoJfSAKCWEgbW9vCglhIGZvbwoJZm9vKCkgewoJCVxlY2hvIGEgbW9vIAoJCS4vcGZuICIkKFxlY2hvIGEgZm9vICkiIAoJfSAKCWEgbW9vCglhIGZvbwotLS0KbmFtZTogY29tc3ViLXRvcnR1cmUKZGVzY3JpcHRpb246CglDaGVjayB0aGUgdHJlZSBkdW1wIGZ1bmN0aW9ucyB3b3JrIGNvcnJlY3RseQpzdGRpbjoKCWlmIFtbIC16ICRfX3Byb2duYW1lIF1dOyB0aGVuIGVjaG8gPiYyIGNhbGwgbWUgd2l0aCBfX3Byb2duYW1lOyBleGl0IDE7IGZpCgl3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KCQlpZiBbWyAkbGluZSA9ICcjMScgXV07IHRoZW4KCQkJbGFzdGY9MAoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgPSBFT0ZOKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuJyRsaW5lCgkJCWNvbnRpbnVlCgkJZWxpZiBbWyAkbGluZSAhPSAnIycqIF1dOyB0aGVuCgkJCWZib2R5PSRmYm9keSQnXG5cdCckbGluZQoJCQljb250aW51ZQoJCWZpCgkJaWYgKCggbGFzdGYgKSk7IHRoZW4KCQkJeD0iaW5saW5lXyR7bmV4dGZ9KCkgeyIkZmJvZHkkJ1xufVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgaW5saW5lXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJCXg9ImZ1bmN0aW9uIGNvbXN1Yl8kbmV4dGYgeyB4PVwkKCIkZmJvZHkkJ1xuKTsgfVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgY29tc3ViXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJCXg9ImZ1bmN0aW9uIHJlcmVhZF8kbmV4dGYgeyB4PVwkKCgiJGZib2R5JCdcbil8dHIgdSB4KTsgfVxuJwoJCQlwcmludCAtbnIgLS0gIiR4IgoJCQlwcmludCAtciAtLSAiJHt4fXR5cGVzZXQgLWYgcmVyZWFkXyRuZXh0ZiIgfCAiJF9fcHJvZ25hbWUiCgkJZmkKCQlsYXN0Zj0xCgkJZmJvZHk9CgkJbmV4dGY9JHtsaW5lIz99Cglkb25lIDw8J0VPRCcKCSMxCgkjVENPTQoJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IgoJI1RQQVJFTl9UUElQRV9UTElTVAoJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCSNUQU5EX1RPUgoJY21kICAmJiAgZWNobyBqYSAgfHwgIGVjaG8gbmVpbgoJI1RTRUxFQ1QKCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCSNURk9SX1RUSU1FCgl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJI1RDQVNFCgljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCSNUSUZfVEJBTkdfVERCUkFDS0VUX1RFTElGCglpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJI1RXSElMRQoJaT0xOyB3aGlsZSAoKCBpIDwgMTAgKSk7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUKCSNUVU5USUwKCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJI1RDT1BST0MKCWNhdCAgKiAgfCYgIGxzCgkjVEZVTkNUX1RCUkFDRV9UQVNZTkMKCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9Cglib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJI0lPUkVBRF9JT0NBVAoJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJI0lPV1JJVEVfSU9DTE9CX0lPSEVSRV9ub0lPU0tJUAoJY2F0ICA+fGJhciAgPDwnRU9GTicKCWZvbwoJRU9GTgoJI0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUAoJY2F0ICAxPmJhciAgPDwtRU9GSQoJZm9vCglFT0ZJCgkjSU9SRFdSX0lPRFVQCglzaCAgMTw+L2Rldi9jb25zb2xlICAwPCYxICAyPiYxCgkjQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQgoJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCSNRQ0hBUl9PUVVPVEVfQ1FVT1RFCgllY2hvIGZvXG9iXCJhXGByXCdiXCRhegoJZWNobyAiZm9cb2JcImFcYHJcJ2JcJGF6IgoJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkjT1NVQlNUX0NTVUJTVF9PUEFUX1NQQVRfQ1BBVAoJW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXQoJI2hlcmVkb2NfY2xvc2VkCgl4PSQoY2F0IDw8RU9GTgoJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTik7IGVjaG8gJHgKCSNoZXJlZG9jX3NwYWNlCgl4PSQoY2F0IDw8RU9GTlwgCglub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gKTsgZWNobyAkeAoJI3BhdGNoX21vdGQKCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJICAgIGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRgoJCTEsL15cJC9kCgkJMGEKCQkJJHgKCQoJCS4KCQl3cQoJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQlpbnN0YWxsIC1jIC1vIHJvb3QgLWcgd2hlZWwgLW0gNjY0IC9kZXYvbnVsbCAvZXRjL21vdGQKCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJZmkKCSN3ZGFycmFzc2lnbgoJY2FzZSB4IGluCgl4KSBhKz1iOyBjKz0oZCBlKQoJZXNhYwoJIzAKCUVPRApleHBlY3RlZC1zdGRvdXQ6CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiCgl9CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgdmFyYj0iMiAgMyIgXGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDT00geyB4PSQoCgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT00gewoJCXg9JCh2YXJhPTEgdmFyYj0iMiAgMyIgXGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVENPTSB7IHg9JCgoCgkJdmFyYT0xICB2YXJiPScyICAzJyAgY21kICBhcmcxICAkYXJnMiAgIiRhcmczICA0IgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPTSB7CgkJeD0kKCAoIHZhcmE9MSB2YXJiPSIyICAzIiBcY21kIGFyZzEgJGFyZzIgIiRhcmczICA0IiApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UUEFSRU5fVFBJUEVfVExJU1QoKSB7CgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCX0KCWlubGluZV9UUEFSRU5fVFBJUEVfVExJU1QoKSB7CgkJKCBcZWNobyAkZm9vIHwgXHRyIC1kYyAwLTkgCgkJICBcZWNobyApIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UUEFSRU5fVFBJUEVfVExJU1QgeyB4PSQoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UUEFSRU5fVFBJUEVfVExJU1QgewoJCXg9JCggKCBcZWNobyAkZm9vIHwgXHRyIC1kYyAwLTkgOyBcZWNobyApICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOTsgZWNobykKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCAoICggXGVjaG8gJGZvbyB8IFx0ciAtZGMgMC05IDsgXGVjaG8gKSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UQU5EX1RPUigpIHsKCQljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgl9CglpbmxpbmVfVEFORF9UT1IoKSB7CgkJXGNtZCAmJiBcZWNobyBqYSB8fCBcZWNobyBuZWluIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQU5EX1RPUiB7IHg9JCgKCQljbWQgICYmICBlY2hvIGphICB8fCAgZWNobyBuZWluCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgewoJCXg9JChcY21kICYmIFxlY2hvIGphIHx8IFxlY2hvIG5laW4gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEFORF9UT1IgeyB4PSQoKAoJCWNtZCAgJiYgIGVjaG8gamEgIHx8ICBlY2hvIG5laW4KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsKCQl4PSQoICggXGNtZCAmJiBcZWNobyBqYSB8fCBcZWNobyBuZWluICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RTRUxFQ1QoKSB7CgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJfQoJaW5saW5lX1RTRUxFQ1QoKSB7CgkJc2VsZWN0IGZpbGUgaW4gKiAKCQlkbwoJCQlcZWNobyAiPCRmaWxlPiIgCgkJCVxicmVhayAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsgeD0kKAoJCXNlbGVjdCAgZmlsZSAgaW4gICo7ICBkbyAgZWNobyAgIjwkZmlsZT4iIDsgIGJyZWFrIDsgIGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsKCQl4PSQoc2VsZWN0IGZpbGUgaW4gKiA7IGRvIFxlY2hvICI8JGZpbGU+IiA7IFxicmVhayA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7IHg9JCgoCgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgOyAgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFNFTEVDVCB7CgkJeD0kKCAoIHNlbGVjdCBmaWxlIGluICogOyBkbyBcZWNobyAiPCRmaWxlPiIgOyBcYnJlYWsgOyBkb25lICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJdGltZSAgZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIGVjaG8gICRpIDsgIGRvbmUKCX0KCWlubGluZV9URk9SX1RUSU1FKCkgewoJCXRpbWUgZm9yIGkgaW4gezEsMiwzfSAKCQlkbwoJCQlcZWNobyAkaSAKCQlkb25lIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9URk9SX1RUSU1FIHsgeD0kKAoJCXRpbWUgIGZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICBlY2hvICAkaSA7ICBkb25lCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEZPUl9UVElNRSB7CgkJeD0kKHRpbWUgZm9yIGkgaW4gezEsMiwzfSA7IGRvIFxlY2hvICRpIDsgZG9uZSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URk9SX1RUSU1FIHsgeD0kKCgKCQl0aW1lICBmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgZWNobyAgJGkgOyAgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVEZPUl9UVElNRSB7CgkJeD0kKCAoIHRpbWUgZm9yIGkgaW4gezEsMiwzfSA7IGRvIFxlY2hvICRpIDsgZG9uZSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ0FTRSgpIHsKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCX0KCWlubGluZV9UQ0FTRSgpIHsKCQljYXNlICRmb28gaW4KCQkoMSkKCQkJXGVjaG8gZWlucyAKCQkJOyYKCQkoMikKCQkJXGVjaG8gendlaSAKCQkJO3wKCQkoKikKCQkJXGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiAKCQkJOzsKCQllc2FjIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7IHg9JCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7CgkJeD0kKGNhc2UgJGZvbyBpbiAoMSkgXGVjaG8gZWlucyAgOyYgKDIpIFxlY2hvIHp3ZWkgIDt8ICgqKSBcZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuICA7OyBlc2FjICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsgeD0kKCgKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWluczsmIDIpIGVjaG8gendlaSAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuOzsgIGVzYWMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDQVNFIHsKCQl4PSQoICggY2FzZSAkZm9vIGluICgxKSBcZWNobyBlaW5zICA7JiAoMikgXGVjaG8gendlaSAgO3wgKCopIFxlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gIDs7IGVzYWMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaQoJfQoJaW5saW5lX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYoKSB7CgkJaWYgISBbWyAxID0gMSBdXSAKCQl0aGVuCgkJCVxlY2hvIGVpbnMgCgkJZWxpZiBbWyAxID0gMiBdXSAKCQl0aGVuCgkJCVxlY2hvIHp3ZWkgCgkJZWxzZQoJCQlcZWNobyBkcmVpIAoJCWZpIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKAoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV07IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKGlmICEgW1sgMSA9IDEgXV0gOyB0aGVuIFxlY2hvIGVpbnMgOyBlbGlmIFtbIDEgPSAyIF1dIDsgdGhlbiBcZWNobyB6d2VpIDsgZWxzZSBcZWNobyBkcmVpIDsgZmkgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7IHg9JCgoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXTsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgewoJCXg9JCggKCBpZiAhIFtbIDEgPSAxIF1dIDsgdGhlbiBcZWNobyBlaW5zIDsgZWxpZiBbWyAxID0gMiBdXSA7IHRoZW4gXGVjaG8gendlaSA7IGVsc2UgXGVjaG8gZHJlaSA7IGZpICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJfQoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTEgCgkJd2hpbGUgewoJCQkgICAgICBcXGJ1aWx0aW4gbGV0ICIgaSA8IDEwICIgCgkJICAgICAgfSAKCQlkbwoJCQlcZWNobyAkaSAKCQkJXGxldCArK2kgCgkJZG9uZSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFdISUxFIHsgeD0kKAoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpOyBkbyBlY2hvICRpOyBsZXQgKytpOyBkb25lCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFdISUxFIHsKCQl4PSQoaT0xIDsgd2hpbGUgeyBcXGJ1aWx0aW4gbGV0ICIgaSA8IDEwICIgOyB9IDsgZG8gXGVjaG8gJGkgOyBcbGV0ICsraSA7IGRvbmUgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVFdISUxFIHsgeD0kKCgKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKTsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFdISUxFIHsKCQl4PSQoICggaT0xIDsgd2hpbGUgeyBcXGJ1aWx0aW4gbGV0ICIgaSA8IDEwICIgOyB9IDsgZG8gXGVjaG8gJGkgOyBcbGV0ICsraSA7IGRvbmUgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJfQoJaW5saW5lX1RVTlRJTCgpIHsKCQlpPTEwIAoJCXVudGlsIHsKCQkJICAgICAgXFxidWlsdGluIGxldCAiICEtLWkgIiAKCQkgICAgICB9IAoJCWRvCgkJCVxlY2hvICRpIAoJCWRvbmUgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RVTlRJTCB7IHg9JCgKCQlpPTEwOyB1bnRpbCAgKCggIS0taSApKSA7IGRvIGVjaG8gJGk7IGRvbmUKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgewoJCXg9JChpPTEwIDsgdW50aWwgeyBcXGJ1aWx0aW4gbGV0ICIgIS0taSAiIDsgfSA7IGRvIFxlY2hvICRpIDsgZG9uZSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UVU5USUwgeyB4PSQoKAoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpIDsgZG8gZWNobyAkaTsgZG9uZQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVFVOVElMIHsKCQl4PSQoICggaT0xMCA7IHVudGlsIHsgXFxidWlsdGluIGxldCAiICEtLWkgIiA7IH0gOyBkbyBcZWNobyAkaSA7IGRvbmUgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVENPUFJPQygpIHsKCQljYXQgICogIHwmICBscwoJfQoJaW5saW5lX1RDT1BST0MoKSB7CgkJXGNhdCAqIHwmIAoJCVxscyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPUFJPQyB7IHg9JCgKCQljYXQgICogIHwmICBscwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgewoJCXg9JChcY2F0ICogfCYgIFxscyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ09QUk9DIHsgeD0kKCgKCQljYXQgICogIHwmICBscwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENPUFJPQyB7CgkJeD0kKCAoIFxjYXQgKiB8JiAgXGxzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCX0KCWlubGluZV9URlVOQ1RfVEJSQUNFX1RBU1lOQygpIHsKCQlmdW5jdGlvbiBrb3JuIHsKCQkJXGVjaG8gZWlucyAKCQkJXGVjaG8gendlaSAKCQl9IAoJCWJvdXJuZSgpIHsKCQkJXGxvZ2dlciAqICYgCgkJfSAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyB6d2VpIDsgIH0KCQlib3VybmUgICgpICB7ICBsb2dnZXIgKiAgJiAgfQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoZnVuY3Rpb24ga29ybiB7IFxlY2hvIGVpbnMgOyBcZWNobyB6d2VpIDsgfSA7IGJvdXJuZSgpIHsgXGxvZ2dlciAqICYgIH0gKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEZVTkNUX1RCUkFDRV9UQVNZTkMgeyB4PSQoKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogICYgIH0KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoICggZnVuY3Rpb24ga29ybiB7IFxlY2hvIGVpbnMgOyBcZWNobyB6d2VpIDsgfSA7IGJvdXJuZSgpIHsgXGxvZ2dlciAqICYgIH0gKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfSU9SRUFEX0lPQ0FUKCkgewoJCXRyICB4ICB1ICAwPGZvbyAgPj5iYXIKCX0KCWlubGluZV9JT1JFQURfSU9DQVQoKSB7CgkJXHRyIHggdSA8Zm9vID4+YmFyIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1JFQURfSU9DQVQgeyB4PSQoCgkJdHIgIHggIHUgIDA8Zm9vICA+PmJhcgoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0lPUkVBRF9JT0NBVCB7CgkJeD0kKFx0ciB4IHUgPGZvbyA+PmJhciApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9JT1JFQURfSU9DQVQgeyB4PSQoKAoJCXRyICB4ICB1ICAwPGZvbyAgPj5iYXIKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX0lPUkVBRF9JT0NBVCB7CgkJeD0kKCAoIFx0ciB4IHUgPGZvbyA+PmJhciApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAoKSB7CgkJY2F0ICA+fGJhciAgPDwnRU9GTicKCQlmb28KCUVPRk4KCX0KCWlubGluZV9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAoKSB7CgkJXGNhdCA+fGJhciA8PCJFT0ZOIiAKCQlmb28KCUVPRk4KCQoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAgeyB4PSQoCgkJY2F0ICA+fGJhciAgPDwnRU9GTicKCQlmb28KCUVPRk4KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1dSSVRFX0lPQ0xPQl9JT0hFUkVfbm9JT1NLSVAgewoJCXg9JChcY2F0ID58YmFyIDw8IkVPRk4iIAoJCWZvbwoJRU9GTgoJKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsgeD0kKCgKCQljYXQgID58YmFyICA8PCdFT0ZOJwoJCWZvbwoJRU9GTgoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9XUklURV9JT0NMT0JfSU9IRVJFX25vSU9TS0lQIHsKCQl4PSQoICggXGNhdCA+fGJhciA8PCJFT0ZOIiAKCQlmb28KCUVPRk4KCSkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCgpIHsKCQljYXQgIDE+YmFyICA8PC1FT0ZJCgkJZm9vCgkJRU9GSQoJfQoJaW5saW5lX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCgpIHsKCQlcY2F0ID5iYXIgPDwtRU9GSSAKCWZvbwoJRU9GSQoJCgl9IAoJZnVuY3Rpb24gY29tc3ViX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCB7IHg9JCgKCQljYXQgIDE+YmFyICA8PC1FT0ZJCgkJZm9vCgkJRU9GSQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX0lPV1JJVEVfbm9JT0NMT0JfSU9IRVJFX0lPU0tJUCB7CgkJeD0kKFxjYXQgPmJhciA8PC1FT0ZJIAoJZm9vCglFT0ZJCgkpIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAgeyB4PSQoKAoJCWNhdCAgMT5iYXIgIDw8LUVPRkkKCQlmb28KCQlFT0ZJCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9JT1dSSVRFX25vSU9DTE9CX0lPSEVSRV9JT1NLSVAgewoJCXg9JCggKCBcY2F0ID5iYXIgPDwtRU9GSSAKCWZvbwoJRU9GSQoJKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfSU9SRFdSX0lPRFVQKCkgewoJCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCX0KCWlubGluZV9JT1JEV1JfSU9EVVAoKSB7CgkJXHNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSAKCX0gCglmdW5jdGlvbiBjb21zdWJfSU9SRFdSX0lPRFVQIHsgeD0kKAoJCXNoICAxPD4vZGV2L2NvbnNvbGUgIDA8JjEgIDI+JjEKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9JT1JEV1JfSU9EVVAgewoJCXg9JChcc2ggMTw+L2Rldi9jb25zb2xlIDwmMSAyPiYxICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0lPUkRXUl9JT0RVUCB7IHg9JCgoCgkJc2ggIDE8Pi9kZXYvY29uc29sZSAgMDwmMSAgMj4mMQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfSU9SRFdSX0lPRFVQIHsKCQl4PSQoICggXHNoIDE8Pi9kZXYvY29uc29sZSA8JjEgMj4mMSApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCKCkgewoJCWVjaG8gJCh0cnVlKSAkKCgxKyAyKSkgJHsgIDo7fSAke3wgUkVQTFk9eDt9Cgl9CglpbmxpbmVfQ09NU1VCX0VYUFJTVUJfRlVOU1VCX1ZBTFNVQigpIHsKCQlcZWNobyAkKFx0cnVlICkgJCgoMSsgMikpICR7IFw6IDt9ICR7fFJFUExZPXggO30gCgl9IAoJZnVuY3Rpb24gY29tc3ViX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIgeyB4PSQoCgkJZWNobyAkKHRydWUpICQoKDErIDIpKSAkeyAgOjt9ICR7fCBSRVBMWT14O30KCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCIHsKCQl4PSQoXGVjaG8gJChcdHJ1ZSApICQoKDErIDIpKSAkeyBcOiA7fSAke3xSRVBMWT14IDt9ICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCX0ZVTlNVQl9WQUxTVUIgeyB4PSQoKAoJCWVjaG8gJCh0cnVlKSAkKCgxKyAyKSkgJHsgIDo7fSAke3wgUkVQTFk9eDt9CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9DT01TVUJfRVhQUlNVQl9GVU5TVUJfVkFMU1VCIHsKCQl4PSQoICggXGVjaG8gJChcdHJ1ZSApICQoKDErIDIpKSAkeyBcOiA7fSAke3xSRVBMWT14IDt9ICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1FDSEFSX09RVU9URV9DUVVPVEUoKSB7CgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgl9CglpbmxpbmVfUUNIQVJfT1FVT1RFX0NRVU9URSgpIHsKCQlcZWNobyBmb1xvYlwiYVxgclwnYlwkYXogCgkJXGVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIgCgkJXGVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1FDSEFSX09RVU9URV9DUVVPVEUgeyB4PSQoCgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfUUNIQVJfT1FVT1RFX0NRVU9URSB7CgkJeD0kKFxlY2hvIGZvXG9iXCJhXGByXCdiXCRheiA7IFxlY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiIDsgXGVjaG8gImZvXFxvYlxcXCJhXFxcYHIiXCciYlxcXCRheiIgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfUUNIQVJfT1FVT1RFX0NRVU9URSB7IHg9JCgoCgkJZWNobyBmb1xvYlwiYVxgclwnYlwkYXoKCQllY2hvICJmb1xvYlwiYVxgclwnYlwkYXoiCgkJZWNobyAnZm9cb2JcImFcYHInXCcnYlwkYXonCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9RQ0hBUl9PUVVPVEVfQ1FVT1RFIHsKCQl4PSQoICggXGVjaG8gZm9cb2JcImFcYHJcJ2JcJGF6IDsgXGVjaG8gImZvXG9iXCJhXGByXCdiXCRheiIgOyBcZWNobyAiZm9cXG9iXFxcImFcXFxgciJcJyJiXFxcJGF6IiApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUKCkgewoJCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0KCX0KCWlubGluZV9PU1VCU1RfQ1NVQlNUX09QQVRfU1BBVF9DUEFUKCkgewoJCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0gCgl9IAoJZnVuY3Rpb24gY29tc3ViX09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQgeyB4PSQoCgkJW1sgJHtmb28jYmxcKHVcKWJ9ID0gQChiYXJ8YmF6KSBdXQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQgewoJCXg9JChbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQgeyB4PSQoKAoJCVtbICR7Zm9vI2JsXCh1XClifSA9IEAoYmFyfGJheikgXV0KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX09TVUJTVF9DU1VCU1RfT1BBVF9TUEFUX0NQQVQgewoJCXg9JCggKCBbWyAke2ZvbyNibFwodVwpYn0gPSBAKGJhcnxiYXopIF1dICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX2hlcmVkb2NfY2xvc2VkKCkgewoJCXg9JChjYXQgPDxFT0ZOCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTik7IGVjaG8gJHgKCX0KCWlubGluZV9oZXJlZG9jX2Nsb3NlZCgpIHsKCQl4PSQoXGNhdCA8PEVPRk4gCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTgoJKSAKCQlcZWNobyAkeCAKCX0gCglmdW5jdGlvbiBjb21zdWJfaGVyZWRvY19jbG9zZWQgeyB4PSQoCgkJeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX2hlcmVkb2NfY2xvc2VkIHsKCQl4PSQoeD0kKFxjYXQgPDxFT0ZOIAoJCW5vdGUgdGhlcmUgbXVzdCBiZSBubyBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkKCUVPRk4KCSkgOyBcZWNobyAkeCApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX2Nsb3NlZCB7IHg9JCgoCgkJeD0kKGNhdCA8PEVPRk4KCQlub3RlIHRoZXJlIG11c3QgYmUgbm8gc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApCglFT0ZOKTsgZWNobyAkeAoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfaGVyZWRvY19jbG9zZWQgewoJCXg9JCggKCB4PSQoXGNhdCA8PEVPRk4gCgkJbm90ZSB0aGVyZSBtdXN0IGJlIG5vIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKQoJRU9GTgoJKSA7IFxlY2hvICR4ICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX2hlcmVkb2Nfc3BhY2UoKSB7CgkJeD0kKGNhdCA8PEVPRk5cIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4Cgl9CglpbmxpbmVfaGVyZWRvY19zcGFjZSgpIHsKCQl4PSQoXGNhdCA8PEVPRk5cICAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gCgkpIAoJCVxlY2hvICR4IAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9oZXJlZG9jX3NwYWNlIHsgeD0kKAoJCXg9JChjYXQgPDxFT0ZOXCAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gKTsgZWNobyAkeAoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX2hlcmVkb2Nfc3BhY2UgewoJCXg9JCh4PSQoXGNhdCA8PEVPRk5cICAKCQlub3RlIHRoZSBzcGFjZSBiZXR3ZWVuIEVPRk4gYW5kICkgaXMgYWN0dWFsbHkgcGFydCBvZiB0aGUgaGVyZSBkb2N1bWVudCBtYXJrZXIKCUVPRk4gCgkpIDsgXGVjaG8gJHggKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfaGVyZWRvY19zcGFjZSB7IHg9JCgoCgkJeD0kKGNhdCA8PEVPRk5cIAoJCW5vdGUgdGhlIHNwYWNlIGJldHdlZW4gRU9GTiBhbmQgKSBpcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBoZXJlIGRvY3VtZW50IG1hcmtlcgoJRU9GTiApOyBlY2hvICR4CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9oZXJlZG9jX3NwYWNlIHsKCQl4PSQoICggeD0kKFxjYXQgPDxFT0ZOXCAgCgkJbm90ZSB0aGUgc3BhY2UgYmV0d2VlbiBFT0ZOIGFuZCApIGlzIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGhlcmUgZG9jdW1lbnQgbWFya2VyCglFT0ZOIAoJKSA7IFxlY2hvICR4ICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX3BhdGNoX21vdGQoKSB7CgkJeD0kKHN5c2N0bCAtbiBrZXJuLnZlcnNpb24gfCBzZWQgMXEpCgkJW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKGhlYWQgLTEgL2V0Yy9tb3RkKSIgIT0gJHggXV0gJiYgXAoJCSAgICBlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YKCQkJMSwvXlwkL2QKCQkJMGEKCQkJCSR4CgkJCgkJCS4KCQkJd3EKCQlFT0YpIiA9IEAoPykgXV0gJiYgcm0gLWYgL2V0Yy9tb3RkCgkJaWYgW1sgISAtcyAvZXRjL21vdGQgXV07IHRoZW4KCQkJaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkCgkJCXByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkCgkJZmkKCX0KCWlubGluZV9wYXRjaF9tb3RkKCkgewoJCXg9JChcc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IFxzZWQgMXEgKSAKCQlbWyAtcyAvZXRjL21vdGQgJiYgIiQoW1sgIiQoXGhlYWQgLTEgL2V0Yy9tb3RkICkiICE9ICR4IF1dICYmIFxlZCAtcyAvZXRjL21vdGQgMj4mMSA8PC1FT0YgCgkxLC9eXCQvZAoJMGEKCSR4CgkKCS4KCXdxCglFT0YKCSkiID0gQCg/KSBdXSAmJiBccm0gLWYgL2V0Yy9tb3RkIAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dIAoJCXRoZW4KCQkJXGluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCAKCQkJXHByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIAoJCWZpIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9wYXRjaF9tb3RkIHsgeD0kKAoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfcGF0Y2hfbW90ZCB7CgkJeD0kKHg9JChcc3lzY3RsIC1uIGtlcm4udmVyc2lvbiB8IFxzZWQgMXEgKSA7IFtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChcaGVhZCAtMSAvZXRjL21vdGQgKSIgIT0gJHggXV0gJiYgXGVkIC1zIC9ldGMvbW90ZCAyPiYxIDw8LUVPRiAKCTEsL15cJC9kCgkwYQoJJHgKCQoJLgoJd3EKCUVPRgoJKSIgPSBAKD8pIF1dICYmIFxybSAtZiAvZXRjL21vdGQgOyBpZiBbWyAhIC1zIC9ldGMvbW90ZCBdXSA7IHRoZW4gXGluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZCA7IFxwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZCA7IGZpICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX3BhdGNoX21vdGQgeyB4PSQoKAoJCXg9JChzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgc2VkIDFxKQoJCVtbIC1zIC9ldGMvbW90ZCAmJiAiJChbWyAiJChoZWFkIC0xIC9ldGMvbW90ZCkiICE9ICR4IF1dICYmIFwKCQkgICAgZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GCgkJCTEsL15cJC9kCgkJCTBhCgkJCQkkeAoJCQoJCQkuCgkJCXdxCgkJRU9GKSIgPSBAKD8pIF1dICYmIHJtIC1mIC9ldGMvbW90ZAoJCWlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dOyB0aGVuCgkJCWluc3RhbGwgLWMgLW8gcm9vdCAtZyB3aGVlbCAtbSA2NjQgL2Rldi9udWxsIC9ldGMvbW90ZAoJCQlwcmludCAtLSAiJHhcbiIgPi9ldGMvbW90ZAoJCWZpCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9wYXRjaF9tb3RkIHsKCQl4PSQoICggeD0kKFxzeXNjdGwgLW4ga2Vybi52ZXJzaW9uIHwgXHNlZCAxcSApIDsgW1sgLXMgL2V0Yy9tb3RkICYmICIkKFtbICIkKFxoZWFkIC0xIC9ldGMvbW90ZCApIiAhPSAkeCBdXSAmJiBcZWQgLXMgL2V0Yy9tb3RkIDI+JjEgPDwtRU9GIAoJMSwvXlwkL2QKCTBhCgkkeAoJCgkuCgl3cQoJRU9GCgkpIiA9IEAoPykgXV0gJiYgXHJtIC1mIC9ldGMvbW90ZCA7IGlmIFtbICEgLXMgL2V0Yy9tb3RkIF1dIDsgdGhlbiBcaW5zdGFsbCAtYyAtbyByb290IC1nIHdoZWVsIC1tIDY2NCAvZGV2L251bGwgL2V0Yy9tb3RkIDsgXHByaW50IC0tICIkeFxuIiA+L2V0Yy9tb3RkIDsgZmkgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfd2RhcnJhc3NpZ24oKSB7CgkJY2FzZSB4IGluCgkJeCkgYSs9YjsgYys9KGQgZSkKCQllc2FjCgl9CglpbmxpbmVfd2RhcnJhc3NpZ24oKSB7CgkJY2FzZSB4IGluCgkJKHgpCgkJCWErPWIgCgkJCVxcYnVpbHRpbiBzZXQgLUEgYysgLS0gZCBlIAoJCQk7OwoJCWVzYWMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX3dkYXJyYXNzaWduIHsgeD0kKAoJCWNhc2UgeCBpbgoJCXgpIGErPWI7IGMrPShkIGUpCgkJZXNhYwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX3dkYXJyYXNzaWduIHsKCQl4PSQoY2FzZSB4IGluICh4KSBhKz1iIDsgXFxidWlsdGluIHNldCAtQSBjKyAtLSBkIGUgIDs7IGVzYWMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfd2RhcnJhc3NpZ24geyB4PSQoKAoJCWNhc2UgeCBpbgoJCXgpIGErPWI7IGMrPShkIGUpCgkJZXNhYwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfd2RhcnJhc3NpZ24gewoJCXg9JCggKCBjYXNlIHggaW4gKHgpIGErPWIgOyBcXGJ1aWx0aW4gc2V0IC1BIGMrIC0tIGQgZSAgOzsgZXNhYyApIHwgXHRyIHUgeCApIAoJfSAKLS0tCm5hbWU6IGNvbXN1Yi10b3J0dXJlLWlvCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhlIHRyZWUgZHVtcCBmdW5jdGlvbnMgd29yayBjb3JyZWN0bHkgd2l0aCBJL08gcmVkaXJlY3Rpb24Kc3RkaW46CglpZiBbWyAteiAkX19wcm9nbmFtZSBdXTsgdGhlbiBlY2hvID4mMiBjYWxsIG1lIHdpdGggX19wcm9nbmFtZTsgZXhpdCAxOyBmaQoJd2hpbGUgSUZTPSByZWFkIC1yIGxpbmU7IGRvCgkJaWYgW1sgJGxpbmUgPSAnIzEnIF1dOyB0aGVuCgkJCWxhc3RmPTAKCQkJY29udGludWUKCQllbGlmIFtbICRsaW5lID0gRU9GTiogXV07IHRoZW4KCQkJZmJvZHk9JGZib2R5JCdcbickbGluZQoJCQljb250aW51ZQoJCWVsaWYgW1sgJGxpbmUgIT0gJyMnKiBdXTsgdGhlbgoJCQlmYm9keT0kZmJvZHkkJ1xuXHQnJGxpbmUKCQkJY29udGludWUKCQlmaQoJCWlmICgoIGxhc3RmICkpOyB0aGVuCgkJCXg9ImlubGluZV8ke25leHRmfSgpIHsiJGZib2R5JCdcbn1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGlubGluZV8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiBjb21zdWJfJG5leHRmIHsgeD1cJCgiJGZib2R5JCdcbik7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIGNvbXN1Yl8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCQl4PSJmdW5jdGlvbiByZXJlYWRfJG5leHRmIHsgeD1cJCgoIiRmYm9keSQnXG4pfHRyIHUgeCk7IH1cbicKCQkJcHJpbnQgLW5yIC0tICIkeCIKCQkJcHJpbnQgLXIgLS0gIiR7eH10eXBlc2V0IC1mIHJlcmVhZF8kbmV4dGYiIHwgIiRfX3Byb2duYW1lIgoJCWZpCgkJbGFzdGY9MQoJCWZib2R5PQoJCW5leHRmPSR7bGluZSM/fQoJZG9uZSA8PCdFT0QnCgkjMQoJI1RDT00KCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkjVFBBUkVOX1RQSVBFX1RMSVNUCgkoZWNobyAkZm9vICB8ICB0ciAtZGMgMC05ID4mMzsgZWNobyA+JjMpID4mMwoJI1RBTkRfVE9SCgljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkjVFNFTEVDVAoJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgkjVEZPUl9UVElNRQoJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJI1RDQVNFCgljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgkjVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRgoJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSNUV0hJTEUKCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSNUVU5USUwKCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgkjVENPUFJPQwoJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJI1RGVU5DVF9UQlJBQ0VfVEFTWU5DCglmdW5jdGlvbiAga29ybiAgeyAgZWNobyBlaW5zOyBlY2hvID4mMyB6d2VpIDsgIH0KCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJI0NPTVNVQl9FWFBSU1VCCgllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJIzAKCUVPRApleHBlY3RlZC1zdGRvdXQ6CglpbmxpbmVfVENPTSgpIHsKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJfQoJaW5saW5lX1RDT00oKSB7CgkJdmFyYT0xIHZhcmI9IjIgIDMiIFxjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVENPTSB7IHg9JCgKCQl2YXJhPTEgIHZhcmI9JzIgIDMnICBjbWQgIGFyZzEgICRhcmcyICAiJGFyZzMgIDQiID4mMwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT00gewoJCXg9JCh2YXJhPTEgdmFyYj0iMiAgMyIgXGNtZCBhcmcxICRhcmcyICIkYXJnMyAgNCIgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDT00geyB4PSQoKAoJCXZhcmE9MSAgdmFyYj0nMiAgMycgIGNtZCAgYXJnMSAgJGFyZzIgICIkYXJnMyAgNCIgPiYzCgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9UQ09NIHsKCQl4PSQoICggdmFyYT0xIHZhcmI9IjIgIDMiIFxjbWQgYXJnMSAkYXJnMiAiJGFyZzMgIDQiID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UUEFSRU5fVFBJUEVfVExJU1QoKSB7CgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOSA+JjM7IGVjaG8gPiYzKSA+JjMKCX0KCWlubGluZV9UUEFSRU5fVFBJUEVfVExJU1QoKSB7CgkJKCBcZWNobyAkZm9vIHwgXHRyIC1kYyAwLTkgPiYzIAoJCSAgXGVjaG8gPiYzICkgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UUEFSRU5fVFBJUEVfVExJU1QgeyB4PSQoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOSA+JjM7IGVjaG8gPiYzKSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UUEFSRU5fVFBJUEVfVExJU1QgewoJCXg9JCggKCBcZWNobyAkZm9vIHwgXHRyIC1kYyAwLTkgPiYzIDsgXGVjaG8gPiYzICkgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7IHg9JCgoCgkJKGVjaG8gJGZvbyAgfCAgdHIgLWRjIDAtOSA+JjM7IGVjaG8gPiYzKSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RQQVJFTl9UUElQRV9UTElTVCB7CgkJeD0kKCAoICggXGVjaG8gJGZvbyB8IFx0ciAtZGMgMC05ID4mMyA7IFxlY2hvID4mMyApID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UQU5EX1RPUigpIHsKCQljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgl9CglpbmxpbmVfVEFORF9UT1IoKSB7CgkJXGNtZCA+JjMgJiYgXGVjaG8gamEgPiYzIHx8IFxlY2hvIG5laW4gPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UQU5EX1RPUiB7IHg9JCgKCQljbWQgID4mMyAmJiAgPiYzIGVjaG8gamEgIHx8ICBlY2hvID4mMyBuZWluCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEFORF9UT1IgewoJCXg9JChcY21kID4mMyAmJiBcZWNobyBqYSA+JjMgfHwgXGVjaG8gbmVpbiA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVEFORF9UT1IgeyB4PSQoKAoJCWNtZCAgPiYzICYmICA+JjMgZWNobyBqYSAgfHwgIGVjaG8gPiYzIG5laW4KCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RBTkRfVE9SIHsKCQl4PSQoICggXGNtZCA+JjMgJiYgXGVjaG8gamEgPiYzIHx8IFxlY2hvIG5laW4gPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RTRUxFQ1QoKSB7CgkJc2VsZWN0ICBmaWxlICBpbiAgKjsgIGRvICBlY2hvICAiPCRmaWxlPiIgOyAgYnJlYWsgPiYzIDsgIGRvbmUgPiYzCgl9CglpbmxpbmVfVFNFTEVDVCgpIHsKCQlzZWxlY3QgZmlsZSBpbiAqIAoJCWRvCgkJCVxlY2hvICI8JGZpbGU+IiAKCQkJXGJyZWFrID4mMyAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVFNFTEVDVCB7IHg9JCgKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UU0VMRUNUIHsKCQl4PSQoc2VsZWN0IGZpbGUgaW4gKiA7IGRvIFxlY2hvICI8JGZpbGU+IiA7IFxicmVhayA+JjMgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UU0VMRUNUIHsgeD0kKCgKCQlzZWxlY3QgIGZpbGUgIGluICAqOyAgZG8gIGVjaG8gICI8JGZpbGU+IiA7ICBicmVhayA+JjMgOyAgZG9uZSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RTRUxFQ1QgewoJCXg9JCggKCBzZWxlY3QgZmlsZSBpbiAqIDsgZG8gXGVjaG8gIjwkZmlsZT4iIDsgXGJyZWFrID4mMyA7IGRvbmUgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJZm9yICBpICBpbiAgezEsMiwzfSAgOyAgZG8gIHRpbWUgID4mMyBlY2hvICAkaSA7ICBkb25lID4mMwoJfQoJaW5saW5lX1RGT1JfVFRJTUUoKSB7CgkJZm9yIGkgaW4gezEsMiwzfSAKCQlkbwoJCQl0aW1lIFxlY2hvICRpID4mMyAKCQlkb25lID4mMyAKCX0gCglmdW5jdGlvbiBjb21zdWJfVEZPUl9UVElNRSB7IHg9JCgKCQlmb3IgIGkgIGluICB7MSwyLDN9ICA7ICBkbyAgdGltZSAgPiYzIGVjaG8gICRpIDsgIGRvbmUgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVEZPUl9UVElNRSB7CgkJeD0kKGZvciBpIGluIHsxLDIsM30gOyBkbyB0aW1lIFxlY2hvICRpID4mMyA7IGRvbmUgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RGT1JfVFRJTUUgeyB4PSQoKAoJCWZvciAgaSAgaW4gIHsxLDIsM30gIDsgIGRvICB0aW1lICA+JjMgZWNobyAgJGkgOyAgZG9uZSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RGT1JfVFRJTUUgewoJCXg9JCggKCBmb3IgaSBpbiB7MSwyLDN9IDsgZG8gdGltZSBcZWNobyAkaSA+JjMgOyBkb25lID4mMyApIHwgXHRyIHUgeCApIAoJfSAKCWlubGluZV9UQ0FTRSgpIHsKCQljYXNlICAkZm9vICBpbiAgMSkgIGVjaG8gZWlucyA+JjM7JiAyKSBlY2hvIHp3ZWkgPiYzICA7fCAqKSBlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzOzsgIGVzYWMgPiYzCgl9CglpbmxpbmVfVENBU0UoKSB7CgkJY2FzZSAkZm9vIGluCgkJKDEpCgkJCVxlY2hvIGVpbnMgPiYzIAoJCQk7JgoJCSgyKQoJCQlcZWNobyB6d2VpID4mMyAKCQkJO3wKCQkoKikKCQkJXGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjMgCgkJCTs7CgkJZXNhYyA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDQVNFIHsgeD0kKAoJCWNhc2UgICRmb28gIGluICAxKSAgZWNobyBlaW5zID4mMzsmIDIpIGVjaG8gendlaSA+JjMgIDt8ICopIGVjaG8ga2FubiBuZXQgYmlzIGRyZWkgesOkaGxlbiA+JjM7OyAgZXNhYyA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UQ0FTRSB7CgkJeD0kKGNhc2UgJGZvbyBpbiAoMSkgXGVjaG8gZWlucyA+JjMgIDsmICgyKSBcZWNobyB6d2VpID4mMyAgO3wgKCopIFxlY2hvIGthbm4gbmV0IGJpcyBkcmVpIHrDpGhsZW4gPiYzICA7OyBlc2FjID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UQ0FTRSB7IHg9JCgoCgkJY2FzZSAgJGZvbyAgaW4gIDEpICBlY2hvIGVpbnMgPiYzOyYgMikgZWNobyB6d2VpID4mMyAgO3wgKikgZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMzs7ICBlc2FjID4mMwoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfVENBU0UgewoJCXg9JCggKCBjYXNlICRmb28gaW4gKDEpIFxlY2hvIGVpbnMgPiYzICA7JiAoMikgXGVjaG8gendlaSA+JjMgIDt8ICgqKSBcZWNobyBrYW5uIG5ldCBiaXMgZHJlaSB6w6RobGVuID4mMyAgOzsgZXNhYyA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRigpIHsKCQlpZiAgISAgW1sgIDEgID0gIDEgIF1dICA+JjMgOyAgdGhlbiAgZWNobyBlaW5zOyAgZWxpZiBbWyAxID0gMiBdXSA+JjM7IHRoZW4gZWNobyB6d2VpICA7ZWxzZSBlY2hvIGRyZWk7IGZpID4mMwoJfQoJaW5saW5lX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYoKSB7CgkJaWYgISBbWyAxID0gMSBdXSA+JjMgCgkJdGhlbgoJCQlcZWNobyBlaW5zIAoJCWVsaWYgW1sgMSA9IDIgXV0gPiYzIAoJCXRoZW4KCQkJXGVjaG8gendlaSAKCQllbHNlCgkJCVxlY2hvIGRyZWkgCgkJZmkgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9USUZfVEJBTkdfVERCUkFDS0VUX1RFTElGIHsgeD0kKAoJCWlmICAhICBbWyAgMSAgPSAgMSAgXV0gID4mMyA7ICB0aGVuICBlY2hvIGVpbnM7ICBlbGlmIFtbIDEgPSAyIF1dID4mMzsgdGhlbiBlY2hvIHp3ZWkgIDtlbHNlIGVjaG8gZHJlaTsgZmkgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7CgkJeD0kKGlmICEgW1sgMSA9IDEgXV0gPiYzIDsgdGhlbiBcZWNobyBlaW5zIDsgZWxpZiBbWyAxID0gMiBdXSA+JjMgOyB0aGVuIFxlY2hvIHp3ZWkgOyBlbHNlIFxlY2hvIGRyZWkgOyBmaSA+JjMgKSAKCX0gCglmdW5jdGlvbiByZXJlYWRfVElGX1RCQU5HX1REQlJBQ0tFVF9URUxJRiB7IHg9JCgoCgkJaWYgICEgIFtbICAxICA9ICAxICBdXSAgPiYzIDsgIHRoZW4gIGVjaG8gZWluczsgIGVsaWYgW1sgMSA9IDIgXV0gPiYzOyB0aGVuIGVjaG8gendlaSAgO2Vsc2UgZWNobyBkcmVpOyBmaSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RJRl9UQkFOR19UREJSQUNLRVRfVEVMSUYgewoJCXg9JCggKCBpZiAhIFtbIDEgPSAxIF1dID4mMyA7IHRoZW4gXGVjaG8gZWlucyA7IGVsaWYgW1sgMSA9IDIgXV0gPiYzIDsgdGhlbiBcZWNobyB6d2VpIDsgZWxzZSBcZWNobyBkcmVpIDsgZmkgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RXSElMRSgpIHsKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgl9CglpbmxpbmVfVFdISUxFKCkgewoJCWk9MSAKCQl3aGlsZSB7CgkJCSAgICAgIFxcYnVpbHRpbiBsZXQgIiBpIDwgMTAgIiAKCQkgICAgICB9ID4mMyAKCQlkbwoJCQlcZWNobyAkaSAKCQkJXGxldCArK2kgCgkJZG9uZSA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RXSElMRSB7IHg9JCgKCQlpPTE7IHdoaWxlICgoIGkgPCAxMCApKSA+JjM7IGRvIGVjaG8gJGk7IGxldCArK2k7IGRvbmUgPiYzCgkpOyB9CglmdW5jdGlvbiBjb21zdWJfVFdISUxFIHsKCQl4PSQoaT0xIDsgd2hpbGUgeyBcXGJ1aWx0aW4gbGV0ICIgaSA8IDEwICIgOyB9ID4mMyA7IGRvIFxlY2hvICRpIDsgXGxldCArK2kgOyBkb25lID4mMyApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9UV0hJTEUgeyB4PSQoKAoJCWk9MTsgd2hpbGUgKCggaSA8IDEwICkpID4mMzsgZG8gZWNobyAkaTsgbGV0ICsraTsgZG9uZSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RXSElMRSB7CgkJeD0kKCAoIGk9MSA7IHdoaWxlIHsgXFxidWlsdGluIGxldCAiIGkgPCAxMCAiIDsgfSA+JjMgOyBkbyBcZWNobyAkaSA7IFxsZXQgKytpIDsgZG9uZSA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTA7IHVudGlsICAoKCAhLS1pICkpID4mMyA7IGRvIGVjaG8gJGk7IGRvbmUgPiYzCgl9CglpbmxpbmVfVFVOVElMKCkgewoJCWk9MTAgCgkJdW50aWwgewoJCQkgICAgICBcXGJ1aWx0aW4gbGV0ICIgIS0taSAiIAoJCSAgICAgIH0gPiYzIAoJCWRvCgkJCVxlY2hvICRpIAoJCWRvbmUgPiYzIAoJfSAKCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgeyB4PSQoCgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgPiYzIDsgZG8gZWNobyAkaTsgZG9uZSA+JjMKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9UVU5USUwgewoJCXg9JChpPTEwIDsgdW50aWwgeyBcXGJ1aWx0aW4gbGV0ICIgIS0taSAiIDsgfSA+JjMgOyBkbyBcZWNobyAkaSA7IGRvbmUgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RVTlRJTCB7IHg9JCgoCgkJaT0xMDsgdW50aWwgICgoICEtLWkgKSkgPiYzIDsgZG8gZWNobyAkaTsgZG9uZSA+JjMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RVTlRJTCB7CgkJeD0kKCAoIGk9MTAgOyB1bnRpbCB7IFxcYnVpbHRpbiBsZXQgIiAhLS1pICIgOyB9ID4mMyA7IGRvIFxlY2hvICRpIDsgZG9uZSA+JjMgKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfVENPUFJPQygpIHsKCQljYXQgICogID4mMyB8JiAgPiYzIGxzCgl9CglpbmxpbmVfVENPUFJPQygpIHsKCQlcY2F0ICogPiYzIHwmIAoJCVxscyA+JjMgCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgeyB4PSQoCgkJY2F0ICAqICA+JjMgfCYgID4mMyBscwoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RDT1BST0MgewoJCXg9JChcY2F0ICogPiYzIHwmICBcbHMgPiYzICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX1RDT1BST0MgeyB4PSQoKAoJCWNhdCAgKiAgPiYzIHwmICA+JjMgbHMKCSl8dHIgdSB4KTsgfQoJZnVuY3Rpb24gcmVyZWFkX1RDT1BST0MgewoJCXg9JCggKCBcY2F0ICogPiYzIHwmICBcbHMgPiYzICkgfCBcdHIgdSB4ICkgCgl9IAoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJfQoJaW5saW5lX1RGVU5DVF9UQlJBQ0VfVEFTWU5DKCkgewoJCWZ1bmN0aW9uIGtvcm4gewoJCQlcZWNobyBlaW5zIAoJCQlcZWNobyB6d2VpID4mMyAKCQl9IAoJCWJvdXJuZSgpIHsKCQkJXGxvZ2dlciAqID4mMyAmIAoJCX0gCgl9IAoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsgeD0kKAoJCWZ1bmN0aW9uICBrb3JuICB7ICBlY2hvIGVpbnM7IGVjaG8gPiYzIHp3ZWkgOyAgfQoJCWJvdXJuZSAgKCkgIHsgIGxvZ2dlciAqICA+JjMgJiAgfQoJKTsgfQoJZnVuY3Rpb24gY29tc3ViX1RGVU5DVF9UQlJBQ0VfVEFTWU5DIHsKCQl4PSQoZnVuY3Rpb24ga29ybiB7IFxlY2hvIGVpbnMgOyBcZWNobyB6d2VpID4mMyA7IH0gOyBib3VybmUoKSB7IFxsb2dnZXIgKiA+JjMgJiAgfSApIAoJfSAKCWZ1bmN0aW9uIHJlcmVhZF9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7IHg9JCgoCgkJZnVuY3Rpb24gIGtvcm4gIHsgIGVjaG8gZWluczsgZWNobyA+JjMgendlaSA7ICB9CgkJYm91cm5lICAoKSAgeyAgbG9nZ2VyICogID4mMyAmICB9CgkpfHRyIHUgeCk7IH0KCWZ1bmN0aW9uIHJlcmVhZF9URlVOQ1RfVEJSQUNFX1RBU1lOQyB7CgkJeD0kKCAoIGZ1bmN0aW9uIGtvcm4geyBcZWNobyBlaW5zIDsgXGVjaG8gendlaSA+JjMgOyB9IDsgYm91cm5lKCkgeyBcbG9nZ2VyICogPiYzICYgIH0gKSB8IFx0ciB1IHggKSAKCX0gCglpbmxpbmVfQ09NU1VCX0VYUFJTVUIoKSB7CgkJZWNobyAkKHRydWUgPiYzKSAkKCgxKyAyKSkKCX0KCWlubGluZV9DT01TVUJfRVhQUlNVQigpIHsKCQlcZWNobyAkKFx0cnVlID4mMyApICQoKDErIDIpKSAKCX0gCglmdW5jdGlvbiBjb21zdWJfQ09NU1VCX0VYUFJTVUIgeyB4PSQoCgkJZWNobyAkKHRydWUgPiYzKSAkKCgxKyAyKSkKCSk7IH0KCWZ1bmN0aW9uIGNvbXN1Yl9DT01TVUJfRVhQUlNVQiB7CgkJeD0kKFxlY2hvICQoXHRydWUgPiYzICkgJCgoMSsgMikpICkgCgl9IAoJZnVuY3Rpb24gcmVyZWFkX0NPTVNVQl9FWFBSU1VCIHsgeD0kKCgKCQllY2hvICQodHJ1ZSA+JjMpICQoKDErIDIpKQoJKXx0ciB1IHgpOyB9CglmdW5jdGlvbiByZXJlYWRfQ09NU1VCX0VYUFJTVUIgewoJCXg9JCggKCBcZWNobyAkKFx0cnVlID4mMyApICQoKDErIDIpKSApIHwgXHRyIHUgeCApIAoJfSAKLS0tCm5hbWU6IGZ1bnN1Yi0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCBub24tc3ViZW52aXJvbm1lbnQgY29tbWFuZCBzdWJzdGl0dXRpb24gd29ya3MKc3RkaW46CglzZXQgLWUKCWZvbz1iYXIKCWVjaG8gIm9iICRmb28gLiIKCWVjaG8gIiR7CgkJZWNobyAiaWIgJGZvbyA6IgoJCWZvbz1iYXoKCQllY2hvICJpYSAkZm9vIDoiCgkJZmFsc2UKCX0iIC4KCWVjaG8gIm9hICRmb28gLiIKZXhwZWN0ZWQtc3Rkb3V0OgoJb2IgYmFyIC4KCWliIGJhciA6CglpYSBiYXogOiAuCglvYSBiYXogLgotLS0KbmFtZTogZnVuc3ViLTIKZGVzY3JpcHRpb246CglZb3UgY2FuIG5vdyByZWxpYWJseSB1c2UgbG9jYWwgYW5kIHJldHVybiBpbiBmdW5zdWJzCgkobm90IGV4aXQgdGhvdWdoKQpzdGRpbjoKCXg9cTsgZT0xOyB4PSR7IGVjaG8gYTsgZT0yOyBlY2hvIHgkZTt9OyBlY2hvIDE6eSR4LCRlLCQ/LgoJeD1xOyBlPTE7IHg9JHsgZWNobyBhOyB0eXBlc2V0IGU9MjsgZWNobyB4JGU7fTsgZWNobyAyOnkkeCwkZSwkPy4KCXg9cTsgZT0xOyB4PSR7IGVjaG8gYTsgdHlwZXNldCBlPTI7IHJldHVybiAzOyBlY2hvIHgkZTt9OyBlY2hvIDM6eSR4LCRlLCQ/LgpleHBlY3RlZC1zdGRvdXQ6CgkxOnlhIHgyLDIsMC4KCTI6eWEgeDIsMSwwLgoJMzp5YSwxLDMuCi0tLQpuYW1lOiB2YWxzdWItMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInZhbHVlIHN1YnN0aXR1dGlvbnMiIHdvcmsgYXMgYWR2ZXJ0aXNlZApzdGRpbjoKCXg9MQoJeT0yCgl6PTMKCVJFUExZPTQKCWVjaG8gImJlZm9yZToJeDwkeD4geTwkeT4gejwkej4gUjwkUkVQTFk+IgoJeD0ke3wKCQlsb2NhbCB5CgkJZWNobyAic3RhcnQ6CXg8JHg+IHk8JHk+IHo8JHo+IFI8JFJFUExZPiIKCQl4PTUKCQl5PTYKCQl6PTcKCQlSRVBMWT04CgkJZWNobyAiZW5kOgl4PCR4PiB5PCR5PiB6PCR6PiBSPCRSRVBMWT4iCgl9CgllY2hvICJhZnRlcjoJeDwkeD4geTwkeT4gejwkej4gUjwkUkVQTFk+IgoJIyBlbnN1cmUgdHJhaWxpbmcgbmV3bGluZXMgYXJlIGtlcHQKCXQ9JHt8UkVQTFk9JCdmb29cblxuJzt9Cgl0eXBlc2V0IC1wIHQKCWVjaG8gLW4gdGhpcyB1c2VkIHRvIHNlZ2ZhdWx0CgllY2hvICR7fHRydWU7fSQodHJ1ZSkuCmV4cGVjdGVkLXN0ZG91dDoKCWJlZm9yZToJeDwxPiB5PDI+IHo8Mz4gUjw0PgoJc3RhcnQ6CXg8MT4geTw+IHo8Mz4gUjw+CgllbmQ6CXg8NT4geTw2PiB6PDc+IFI8OD4KCWFmdGVyOgl4PDg+IHk8Mj4gejw3PiBSPDQ+Cgl0eXBlc2V0IHQ9JCdmb29cblxuJwoJdGhpcyB1c2VkIHRvIHNlZ2ZhdWx0LgotLS0KbmFtZTogZXZlbnQtc3Vic3QtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgJyEnIHN1YnN0aXR1dGlvbiBpbiBub25pbnRlcmFjdGl2ZSBtb2RlIGlzIGlnbm9yZWQKZmlsZS1zZXR1cDogZmlsZSA3NTUgImZhbHNldHRvIgoJIyEgL2Jpbi9zaAoJZWNobyBtb2x0byBiZW5lCglleGl0IDQyCmZpbGUtc2V0dXA6IGZpbGUgNzU1ICIhZmFsc2UiCgkjISAvYmluL3NoCgllY2hvIHNpCnN0ZGluOgoJZXhwb3J0IFBBVEg9LiRQQVRIU0VQJFBBVEgKCWZhbHNldHRvCgllY2hvIHllYXAKCSFmYWxzZQoJZWNobyBtZW93CgkhIGZhbHNlCgllY2hvID0gJD8KCWlmCgkhIGZhbHNlOyB0aGVuIGVjaG8gZm9vOyBlbHNlIGVjaG8gYmFyOyBmaQpleHBlY3RlZC1zdGRvdXQ6Cgltb2x0byBiZW5lCgl5ZWFwCglzaQoJbWVvdwoJPSAwCglmb28KLS0tCm5hbWU6IGV2ZW50LXN1YnN0LTAKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICchJyBzdWJzdGl0dXRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSBpcyBpZ25vcmVkCm5lZWQtY3R0eTogeWVzCmFyZ3VtZW50czogIS1pIQpmaWxlLXNldHVwOiBmaWxlIDc1NSAiZmFsc2V0dG8iCgkjISAvYmluL3NoCgllY2hvIG1vbHRvIGJlbmUKCWV4aXQgNDIKZmlsZS1zZXR1cDogZmlsZSA3NTUgIiFmYWxzZSIKCSMhIC9iaW4vc2gKCWVjaG8gc2kKc3RkaW46CglleHBvcnQgUEFUSD0uJFBBVEhTRVAkUEFUSAoJZmFsc2V0dG8KCWVjaG8geWVhcAoJIWZhbHNlCgllY2hvIG1lb3cKCSEgZmFsc2UKCWVjaG8gPSAkPwoJaWYKCSEgZmFsc2U7IHRoZW4gZWNobyBmb287IGVsc2UgZWNobyBiYXI7IGZpCmV4cGVjdGVkLXN0ZG91dDoKCW1vbHRvIGJlbmUKCXllYXAKCXNpCgltZW93Cgk9IDAKCWZvbwpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKi8KLS0tCm5hbWU6IG5vdW5zZXQtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgInNldCAtdSIgbWF0Y2hlcyAoZnV0dXJlKSBTVVN2NCByZXF1aXJlbWVudApzdGRpbjoKCShzZXQgLXUKCXRyeSgpIHsKCQlsb2NhbCB2CgkJZXZhbCB2PVwkJDEKCQlpZiBbWyAtbiAkdiBdXTsgdGhlbgoJCQllY2hvICQxPW56CgkJZWxzZQoJCQllY2hvICQxPXpmCgkJZmkKCX0KCXg9eQoJKGVjaG8gJHgpCgllY2hvID0xCgkoZWNobyAkeSkKCWVjaG8gPTIKCSh0cnkgeCkKCWVjaG8gPTMKCSh0cnkgeSkKCWVjaG8gPTQKCSh0cnkgMCkKCWVjaG8gPTUKCSh0cnkgMikKCWVjaG8gPTYKCSh0cnkpCgllY2hvID03CgkoZWNobyBhdD0kQCkKCWVjaG8gPTgKCShlY2hvIGFzdGVyaXNrPSQqKQoJZWNobyA9OQoJKGVjaG8gJD8pCgllY2hvID0xMAoJKGVjaG8gJCEpCgllY2hvID0xMQoJKGVjaG8gJC0pCgllY2hvID0xMgoJIyhlY2hvICRfKQoJI2VjaG8gPTEzCgkoZWNobyAkIykKCWVjaG8gPTE0CgkobXlwaWQ9JCQ7IHRyeSBteXBpZCkKCWVjaG8gPTE1CgkpIDI+JjEgfCBzZWQgLWUgJ3MvXltBLVphLXpdOi8vJyAtZSAncy9eW15dXSpdLy8nIC1lICdzL15bXjpdKjogKi8vJwoJZXhpdCAke1BJUEVTVEFUVVNbMF19CmV4cGVjdGVkLXN0ZG91dDoKCXkKCT0xCgl5OiBwYXJhbWV0ZXIgbm90IHNldAoJPTIKCXg9bnoKCT0zCgl5OiBwYXJhbWV0ZXIgbm90IHNldAoJPTQKCTA9bnoKCT01CgkyOiBwYXJhbWV0ZXIgbm90IHNldAoJPTYKCTE6IHBhcmFtZXRlciBub3Qgc2V0Cgk9NwoJYXQ9Cgk9OAoJYXN0ZXJpc2s9Cgk9OQoJMAoJPTEwCgkhOiBwYXJhbWV0ZXIgbm90IHNldAoJPTExCgl1c2gKCT0xMgoJMAoJPTE0CglteXBpZD1uegoJPTE1Ci0tLQpuYW1lOiBuYW1lcmVmLTEKZGVzY3JpcHRpb246CglUZXN0c3VpdGUgZm9yIG5hbWVyZWYgKGJvdW5kIHZhcmlhYmxlcykKc3RkaW46CgliYXI9Z2xvYmFsCgl0eXBlc2V0IC1uIGlyMj1iYXIKCXR5cGVzZXQgLW4gaW5kPWlyMgoJZWNobyAhaW5kOiAkeyFpbmR9CgllY2hvIGluZDogJGluZAoJZWNobyAhaXIyOiAkeyFpcjJ9CgllY2hvIGlyMjogJGlyMgoJdHlwZXNldCArbiBpbmQKCWVjaG8gIWluZDogJHshaW5kfQoJZWNobyBpbmQ6ICRpbmQKCXR5cGVzZXQgLW4gaXIyPWluZAoJZWNobyAhaXIyOiAkeyFpcjJ9CgllY2hvIGlyMjogJGlyMgoJc2V0fGdyZXAgXmlyMnxzZWQgJ3MvXi9zMTogLycKCXR5cGVzZXR8Z3JlcCAnIGlyMid8c2VkIC1lICdzL14vczI6IC8nIC1lICdzL25hbWVyZWYvdHlwZXNldCAtbi8nCglzZXQgLUEgYmx1YiAtLSBlMSBlMiBlMwoJdHlwZXNldCAtbiBpbmQ9Ymx1YgoJdHlwZXNldCAtbiBpcjI9Ymx1YlsyXQoJZWNobyAhaW5kWzFdOiAkeyFpbmRbMV19CgllY2hvICFpcjI6ICQhaXIyCgllY2hvIGluZFsxXTogJHtpbmRbMV19CgllY2hvIGlyMjogJGlyMgpleHBlY3RlZC1zdGRvdXQ6CgkhaW5kOiBiYXIKCWluZDogZ2xvYmFsCgkhaXIyOiBiYXIKCWlyMjogZ2xvYmFsCgkhaW5kOiBpbmQKCWluZDogaXIyCgkhaXIyOiBpbmQKCWlyMjogaXIyCglzMTogaXIyPWluZAoJczI6IHR5cGVzZXQgLW4gaXIyCgkhaW5kWzFdOiBibHViWzFdCgkhaXIyOiBpcjIKCWluZFsxXTogZTIKCWlyMjogZTMKLS0tCm5hbWU6IG5hbWVyZWYtMmRhCmRlc2NyaXB0aW9uOgoJVGVzdHN1aXRlIGZvciBuYW1lcmVmIChib3VuZCB2YXJpYWJsZXMpCglGdW5jdGlvbnMsIGFyZ3VtZW50IGdpdmVuIGRpcmVjdGx5LCBhZnRlciBsb2NhbApzdGRpbjoKCWZ1bmN0aW9uIGZvbyB7CgkJdHlwZXNldCBiYXI9bG9rYWwgYmF6PWF1Y2gKCQl0eXBlc2V0IC1uIHY9YmFyCgkJZWNobyBlbnRlcmluZwoJCWVjaG8gIXY6ICR7IXZ9CgkJZWNobyAhYmFyOiAkeyFiYXJ9CgkJZWNobyAhYmF6OiAkeyFiYXp9CgkJZWNobyBiYXI6ICRiYXIKCQllY2hvIHY6ICR2CgkJdj0xMjMKCQllY2hvIGJhcjogJGJhcgoJCWVjaG8gdjogJHYKCQllY2hvIGV4aXRpbmcKCX0KCWJhcj1nbG9iYWwKCWVjaG8gYmFyOiAkYmFyCglmb28gYmFyCgllY2hvIGJhcjogJGJhcgpleHBlY3RlZC1zdGRvdXQ6CgliYXI6IGdsb2JhbAoJZW50ZXJpbmcKCSF2OiBiYXIKCSFiYXI6IGJhcgoJIWJhejogYmF6CgliYXI6IGxva2FsCgl2OiBsb2thbAoJYmFyOiAxMjMKCXY6IDEyMwoJZXhpdGluZwoJYmFyOiBnbG9iYWwKLS0tCm5hbWU6IG5hbWVyZWYtMwpkZXNjcmlwdGlvbjoKCUFkdmFuY2VkIHRlc3RzdWl0ZSBmb3IgYm91bmQgdmFyaWFibGVzIChrc2g5MyBmYWlscyB0aGlzKQpzdGRpbjoKCXR5cGVzZXQgLW4gZm9vPWJhcltpXQoJc2V0IC1BIGJhciAtLSBiIGMgYQoJZm9yIGkgaW4gMCAxIDIgMzsgZG8KCQlwcmludCAkaSAkZm9vIC4KCWRvbmUKZXhwZWN0ZWQtc3Rkb3V0OgoJMCBiIC4KCTEgYyAuCgkyIGEgLgoJMyAuCi0tLQpuYW1lOiBuYW1lcmVmLTQKZGVzY3JpcHRpb246CglFbnN1cmUgd2UgZG9uJ3QgcnVuIGluIGFuIGluZmluaXRlIGxvb3AKdGltZS1saW1pdDogMwpzdGRpbjoKCWJheigpIHsKCQl0eXBlc2V0IC1uIGZvbz1mbm9yZCBmbm9yZD1mb28KCQlmb29bMF09YmFyCgl9CglzZXQgLUEgZm9vIGJhZAoJZWNobyBzaW5kICRmb28gLgoJYmF6CgllY2hvIGJsYWggJGZvbyAuCmV4cGVjdGVkLXN0ZG91dDoKCXNpbmQgYmFkIC4KCWJsYWggYmFkIC4KZXhwZWN0ZWQtc3RkZXJyLXBhdHRlcm46CgkvZm5vcmQ6IGV4cHJlc3Npb24gcmVjdXJzZXMgb24gcGFyYW1ldGVyLwotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0xYQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoIChlY2hvIGZ1YmFyKXx0ciB1IHgpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTFiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCggKGVjaG8gZnViYXIpfHRyIHUgeCkgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0xYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46Cgl4PSQoIChlY2hvIGZ1YmFyKXx0ciB1IHgpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtMmEKZGVzY3JpcHRpb246CglDaGVjayBzdXBwb3J0IGZvciAoKOKApikpIGFuZCAkKCjigKYpKSB2cyAo4oCmKSBhbmQgJCjigKYpCnN0ZGluOgoJaWYgKChlY2hvIGZ1YmFyKXx0ciB1IHgpOyB0aGVuCgkJZWNobyBqYQoJZWxzZQoJCWVjaG8gbmVpbgoJZmkKZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIKCWphCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTJiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWVjaG8gJCgoZWNobyBmdWJhcil8dHIgdSB4KSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTJjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCgoZWNobyBmdWJhcil8dHIgdSB4KTsgZWNobyAkeCAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTNhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCWlmICggKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgdGhlbgoJCWVjaG8gamEKCWVsc2UKCQllY2hvIG5laW4KCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyCglqYQotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0zYgpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CgllY2hvICQoIChlY2hvIGZ1YmFyKXwodHIgdSB4KSkgJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy0zYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46Cgl4PSQoIChlY2hvIGZ1YmFyKXwodHIgdSB4KSk7IGVjaG8gJHggJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZnhiYXIgMAotLS0KbmFtZTogYmV0dGVyLXBhcmVucy00YQpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CglpZiAoKGVjaG8gZnViYXIpfCh0ciB1IHgpKTsgdGhlbgoJCWVjaG8gamEKCWVsc2UKCQllY2hvIG5laW4KCWZpCmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyCglqYQotLS0KbmFtZTogYmV0dGVyLXBhcmVucy00YgpkZXNjcmlwdGlvbjoKCUNoZWNrIHN1cHBvcnQgZm9yICgo4oCmKSkgYW5kICQoKOKApikpIHZzICjigKYpIGFuZCAkKOKApikKc3RkaW46CgllY2hvICQoKGVjaG8gZnViYXIpfCh0ciB1IHgpKSAkPwpleHBlY3RlZC1zdGRvdXQ6CglmeGJhciAwCi0tLQpuYW1lOiBiZXR0ZXItcGFyZW5zLTRjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc3VwcG9ydCBmb3IgKCjigKYpKSBhbmQgJCgo4oCmKSkgdnMgKOKApikgYW5kICQo4oCmKQpzdGRpbjoKCXg9JCgoZWNobyBmdWJhcil8KHRyIHUgeCkpOyBlY2hvICR4ICQ/CmV4cGVjdGVkLXN0ZG91dDoKCWZ4YmFyIDAKLS0tCm5hbWU6IGJldHRlci1wYXJlbnMtNQpkZXNjcmlwdGlvbjoKCUFub3RoZXIgY29ybmVyIGNhc2UKc3RkaW46CgkoIChlY2hvICdmbwlvJGJhcicgImJhelwkYmxhXCIiIG1cJGVoKSB8IHRyIGEgQSkKCSgoZWNobyAnZm8JbyRiYXInICJiYXpcJGJsYVwiIiBtXCRlaCkgfCB0ciBhIEEpCmV4cGVjdGVkLXN0ZG91dDoKCWZvCW8kYkFyIGJBeiRibEEiIG0kZWgKCWZvCW8kYkFyIGJBeiRibEEiIG0kZWgKLS0tCm5hbWU6IGVjaG8tdGVzdC0xCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcyAobWtzaCkKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJZWNobyAtbiAnZm9vXHg0MGJhcicKCWVjaG8gLWUgJ1x0YmF6JwpleHBlY3RlZC1zdGRvdXQ6Cglmb29AYmFyCWJhegotLS0KbmFtZTogZWNoby10ZXN0LTEtZWJjZGljCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcyAobWtzaCkKY2F0ZWdvcnk6ICFzaGVsbDplYmNkaWMtbm8Kc3RkaW46CgllY2hvIC1uICdmb29ceDdDYmFyJwoJZWNobyAtZSAnXHRiYXonCmV4cGVjdGVkLXN0ZG91dDoKCWZvb0BiYXIJYmF6Ci0tLQpuYW1lOiBlY2hvLXRlc3QtMgpkZXNjcmlwdGlvbjoKCVRlc3Qgd2hhdCB0aGUgZWNobyBidWlsdGluIGRvZXMgKFBPU0lYKQoJTm90ZTogdGhpcyBmb2xsb3dzIERlYmlhbiBQb2xpY3kgMTAuNCB3aGljaCBtYW5kYXRlcwoJdGhhdCAtbiBzaGFsbCBiZSB0cmVhdGVkIGFzIGFuIG9wdGlvbiwgbm90IFhTSSB3aGljaAoJbWFuZGF0ZXMgaXQgc2hhbGwgYmUgdHJlYXRlZCBhcyBzdHJpbmcgYnV0IGVzY2FwZXMKCXNoYWxsIGJlIGV4cGFuZGVkLgpzdGRpbjoKCXRlc3QgLW4gIiRQT1NIX1ZFUlNJT04iIHx8IHNldCAtbyBwb3NpeAoJZWNobyAtbiAnZm9vXHg0MGJhcicKCWVjaG8gLWUgJ1x0YmF6JwpleHBlY3RlZC1zdGRvdXQ6Cglmb29ceDQwYmFyLWUgXHRiYXoKLS0tCm5hbWU6IGVjaG8tdGVzdC0zLW1uYnNkCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcywgYW5kIHRlc3QgYSBjb21wYXRpYmlsaXR5IGZsYWcuCmNhdGVnb3J5OiBtbmJzZGFzaApzdGRpbjoKCSIkX19wcm9nbmFtZSIgLWMgJ2VjaG8gLW4gMT1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCgkiJF9fcHJvZ25hbWUiIC1vIHBvc2l4IC1jICdlY2hvIC1uIDI9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBzaCAtYyAnZWNobyAtbiAzPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKZXhwZWN0ZWQtc3Rkb3V0OgoJMT1AZm9vLgoJMj1ceDQwZm9vLWUgXHgyRQoJMz1ceDQwYmFyLgotLS0KbmFtZTogZWNoby10ZXN0LTMtbm9ybWFsCmRlc2NyaXB0aW9uOgoJVGVzdCB3aGF0IHRoZSBlY2hvIGJ1aWx0aW4gZG9lcywgYW5kIHRlc3QgYSBjb21wYXRpYmlsaXR5IGZsYWcuCmNhdGVnb3J5OiAhbW5ic2Rhc2gsIXNoZWxsOmViY2RpYy15ZXMKc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIC1uIDE9XFx4NDAkMTsgZWNobyAtZSBcXHgyRScgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBwb3NpeCAtYyAnZWNobyAtbiAyPVxceDQwJDE7IGVjaG8gLWUgXFx4MkUnIC0tIGZvbyBiYXIKCSIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gLW4gMz1cXHg0MCQxOyBlY2hvIC1lIFxceDJFJyAtLSBmb28gYmFyCmV4cGVjdGVkLXN0ZG91dDoKCTE9QGZvby4KCTI9XHg0MGZvby1lIFx4MkUKCTM9XHg0MGZvby1lIFx4MkUKLS0tCm5hbWU6IGVjaG8tdGVzdC0zLWViY2RpYwpkZXNjcmlwdGlvbjoKCVRlc3Qgd2hhdCB0aGUgZWNobyBidWlsdGluIGRvZXMsIGFuZCB0ZXN0IGEgY29tcGF0aWJpbGl0eSBmbGFnLgpjYXRlZ29yeTogIW1uYnNkYXNoLCFzaGVsbDplYmNkaWMtbm8Kc3RkaW46CgkiJF9fcHJvZ25hbWUiIC1jICdlY2hvIC1uIDE9XFx4N0MkMTsgZWNobyAtZSBcXHg0QicgLS0gZm9vIGJhcgoJIiRfX3Byb2duYW1lIiAtbyBwb3NpeCAtYyAnZWNobyAtbiAyPVxceDdDJDE7IGVjaG8gLWUgXFx4NEInIC0tIGZvbyBiYXIKCSIkX19wcm9nbmFtZSIgLW8gc2ggLWMgJ2VjaG8gLW4gMz1cXHg3QyQxOyBlY2hvIC1lIFxceDRCJyAtLSBmb28gYmFyCmV4cGVjdGVkLXN0ZG91dDoKCTE9QGZvby4KCTI9XHg3Q2Zvby1lIFx4NEIKCTM9XHg3Q2Zvby1lIFx4NEIKLS0tCm5hbWU6IHV0aWxpdGllcy1nZXRvcHRzLTEKZGVzY3JpcHRpb246CglnZXRvcHRzIHNldHMgT1BUSU5EIGNvcnJlY3RseSBmb3IgdW5wYXJzZWQgb3B0aW9uCnN0ZGluOgoJc2V0IC0tIC1hIC1hIC14Cgl3aGlsZSBnZXRvcHRzIDphIG9wdGM7IGRvCgkgICAgZWNobyAiT1BUQVJHPSRPUFRBUkcsIE9QVElORD0kT1BUSU5ELCBvcHRjPSRvcHRjLiIKCWRvbmUKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglPUFRBUkc9LCBPUFRJTkQ9Miwgb3B0Yz1hLgoJT1BUQVJHPSwgT1BUSU5EPTMsIG9wdGM9YS4KCU9QVEFSRz14LCBPUFRJTkQ9NCwgb3B0Yz0/LgoJZG9uZQotLS0KbmFtZTogdXRpbGl0aWVzLWdldG9wdHMtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIE9QVEFSRwpzdGRpbjoKCXNldCAtLSAtYSBNYXJ5IC14Cgl3aGlsZSBnZXRvcHRzIGE6IG9wdGM7IGRvCgkgICAgZWNobyAiT1BUQVJHPSRPUFRBUkcsIE9QVElORD0kT1BUSU5ELCBvcHRjPSRvcHRjLiIKCWRvbmUKCWVjaG8gZG9uZQpleHBlY3RlZC1zdGRvdXQ6CglPUFRBUkc9TWFyeSwgT1BUSU5EPTMsIG9wdGM9YS4KCU9QVEFSRz0sIE9QVElORD00LCBvcHRjPT8uCglkb25lCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOiAvLioteC4qb3B0aW9uLwotLS0KbmFtZTogdXRpbGl0aWVzLWdldG9wdHMtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHVuc2V0dGluZyBPUFRBUkcKc3RkaW46CglzZXQgLS0gLXggYXJnIC15CglnZXRvcHRzIHg6eSBvcHQgJiYgZWNobyAiJHtPUFRBUkctdW5zZXR9IgoJZ2V0b3B0cyB4Onkgb3B0ICYmIGVjaG8gIiR7T1BUQVJHLXVuc2V0fSIKZXhwZWN0ZWQtc3Rkb3V0OgoJYXJnCgl1bnNldAotLS0KbmFtZTogd2Nzd2lkdGgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoZSBuZXcgd2Nzd2lkdGggZmVhdHVyZQpzdGRpbjoKCXM95L2VCglzZXQgK1UKCXByaW50IG9jdGV0czogJHsjc30gLgoJcHJpbnQgOC1iaXQgd2lkdGg6ICR7JXN9IC4KCXNldCAtVQoJcHJpbnQgY2hhcmFjdGVyczogJHsjc30gLgoJcHJpbnQgY29sdW1uczogJHslc30gLgoJcz3vv70KCXNldCArVQoJcHJpbnQgb2N0ZXRzOiAkeyNzfSAuCglwcmludCA4LWJpdCB3aWR0aDogJHslc30gLgoJc2V0IC1VCglwcmludCBjaGFyYWN0ZXJzOiAkeyNzfSAuCglwcmludCBjb2x1bW5zOiAkeyVzfSAuCmV4cGVjdGVkLXN0ZG91dDoKCW9jdGV0czogMyAuCgk4LWJpdCB3aWR0aDogLTEgLgoJY2hhcmFjdGVyczogMSAuCgljb2x1bW5zOiAyIC4KCW9jdGV0czogMyAuCgk4LWJpdCB3aWR0aDogMyAuCgljaGFyYWN0ZXJzOiAxIC4KCWNvbHVtbnM6IDEgLgotLS0KbmFtZTogd2Nzd2lkdGgtMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJcHJpbnQgJSAkJSAuCglzZXQgLVUKCXg9J2EJYicKCXByaW50IGMgJHsleH0gLgoJc2V0ICtVCgl4PSdhCWInCglwcmludCBkICR7JXh9IC4KZXhwZWN0ZWQtc3Rkb3V0OgoJJSAkJSAuCgljIC0xIC4KCWQgLTEgLgotLS0KbmFtZTogd2Nzd2lkdGgtMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHNvbWUgY29ybmVyIGNhc2VzCnN0ZGluOgoJcHJpbnQgJHslfSAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHdjc3dpZHRoLTRhCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyUqfSAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHdjc3dpZHRoLTRiCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46CglwcmludCAkeyVAfSAuCmV4cGVjdGVkLXN0ZGVyci1wYXR0ZXJuOgoJL2JhZCBzdWJzdGl0dXRpb24vCmV4cGVjdGVkLWV4aXQ6IDEKLS0tCm5hbWU6IHdjc3dpZHRoLTRjCmRlc2NyaXB0aW9uOgoJQ2hlY2sgc29tZSBjb3JuZXIgY2FzZXMKc3RkaW46Cgk6CglwcmludCAkeyU/fSAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgLgotLS0KbmFtZTogcmVhbHBhdGgtMQpkZXNjcmlwdGlvbjoKCUNoZWNrIHByb3BlciByZXR1cm4gdmFsdWVzIGZvciByZWFscGF0aApjYXRlZ29yeTogb3M6bWlyYnNkCnN0ZGluOgoJd2Q9JChyZWFscGF0aCAuKQoJbWtkaXIgZGlyCgk6PmZpbGUKCTo+ZGlyL2ZpbGUKCWxuIC1zIGRpciBsbmRpcgoJbG4gLXMgZmlsZSBsbmZpbGUKCWxuIC1zIG5peCBsbm5peAoJbG4gLXMgLiBsbnNlbGYKCWk9MAoJY2hrKCkgewoJCXR5cGVzZXQgeCB5CgkJeD0kKHJlYWxwYXRoICIkd2QvJDEiIDI+JjEpOyB5PSQ/CgkJcHJpbnQgJCgoKytpKSkgIj8kMSIgPSR7eCMjKiR3ZC99ICEkeQoJfQoJY2hrIGRpcgoJY2hrIGRpci8KCWNoayBkaXIvZmlsZQoJY2hrIGRpci9uaXgKCWNoayBmaWxlCgljaGsgZmlsZS8KCWNoayBmaWxlL2ZpbGUKCWNoayBmaWxlL25peAoJY2hrIG5peAoJY2hrIG5peC8KCWNoayBuaXgvZmlsZQoJY2hrIG5peC9uaXgKCWNoayBsbmRpcgoJY2hrIGxuZGlyLwoJY2hrIGxuZGlyL2ZpbGUKCWNoayBsbmRpci9uaXgKCWNoayBsbmZpbGUKCWNoayBsbmZpbGUvCgljaGsgbG5maWxlL2ZpbGUKCWNoayBsbmZpbGUvbml4CgljaGsgbG5uaXgKCWNoayBsbm5peC8KCWNoayBsbm5peC9maWxlCgljaGsgbG5uaXgvbml4CgljaGsgbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmCglybSBsbnNlbGYKZXhwZWN0ZWQtc3Rkb3V0OgoJMSA/ZGlyID1kaXIgITAKCTIgP2Rpci8gPWRpciAhMAoJMyA/ZGlyL2ZpbGUgPWRpci9maWxlICEwCgk0ID9kaXIvbml4ID1kaXIvbml4ICEwCgk1ID9maWxlID1maWxlICEwCgk2ID9maWxlLyA9ZmlsZS86IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTcgP2ZpbGUvZmlsZSA9ZmlsZS9maWxlOiBOb3QgYSBkaXJlY3RvcnkgITIwCgk4ID9maWxlL25peCA9ZmlsZS9uaXg6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTkgP25peCA9bml4ICEwCgkxMCA/bml4LyA9bml4ICEwCgkxMSA/bml4L2ZpbGUgPW5peC9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkxMiA/bml4L25peCA9bml4L25peDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSAhMgoJMTMgP2xuZGlyID1kaXIgITAKCTE0ID9sbmRpci8gPWRpciAhMAoJMTUgP2xuZGlyL2ZpbGUgPWRpci9maWxlICEwCgkxNiA/bG5kaXIvbml4ID1kaXIvbml4ICEwCgkxNyA/bG5maWxlID1maWxlICEwCgkxOCA/bG5maWxlLyA9bG5maWxlLzogTm90IGEgZGlyZWN0b3J5ICEyMAoJMTkgP2xuZmlsZS9maWxlID1sbmZpbGUvZmlsZTogTm90IGEgZGlyZWN0b3J5ICEyMAoJMjAgP2xuZmlsZS9uaXggPWxuZmlsZS9uaXg6IE5vdCBhIGRpcmVjdG9yeSAhMjAKCTIxID9sbm5peCA9bml4ICEwCgkyMiA/bG5uaXgvID1uaXggITAKCTIzID9sbm5peC9maWxlID1sbm5peC9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5ICEyCgkyNCA/bG5uaXgvbml4ID1sbm5peC9uaXg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgITIKCTI1ID9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYgPWxuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZi9sbnNlbGYvbG5zZWxmL2xuc2VsZjogVG9vIG1hbnkgbGV2ZWxzIG9mIHN5bWJvbGljIGxpbmtzICE2MgotLS0KbmFtZTogcmVhbHBhdGgtMgpkZXNjcmlwdGlvbjoKCUVuc3VyZSB0aGF0IGV4YWN0bHkgdHdvIGxlYWRpbmcgc2xhc2hlcyBhcmUgbm90IGNvbGxhcHNlZAoJUE9TSVggZ3VhcmFudGVlcyB0aGlzIGV4Y2VwdGlvbiwgZS5nLiBmb3IgVU5DIHBhdGhzIG9uIEN5Z3dpbgpjYXRlZ29yeTogb3M6bWlyYnNkCnN0ZGluOgoJbG4gLXMgL2JpbiB0MQoJbG4gLXMgLy9iaW4gdDIKCWxuIC1zIC8vL2JpbiB0MwoJcmVhbHBhdGggL2JpbgoJcmVhbHBhdGggLy9iaW4KCXJlYWxwYXRoIC8vL2JpbgoJcmVhbHBhdGggL3Vzci9iaW4KCXJlYWxwYXRoIC91c3IvL2JpbgoJcmVhbHBhdGggL3Vzci8vL2JpbgoJcmVhbHBhdGggdDEKCXJlYWxwYXRoIHQyCglyZWFscGF0aCB0MwoJcm0gLWYgdDEgdDIgdDMKCWNkIC8vdXNyL2JpbgoJcHdkCgljZCAuLi9saWIKCXB3ZAoJcmVhbHBhdGggLy91c3IvaW5jbHVkZS8uLi9iaW4KZXhwZWN0ZWQtc3Rkb3V0OgoJL2JpbgoJLy9iaW4KCS9iaW4KCS91c3IvYmluCgkvdXNyL2JpbgoJL3Vzci9iaW4KCS9iaW4KCS8vYmluCgkvYmluCgkvL3Vzci9iaW4KCS8vdXNyL2xpYgoJLy91c3IvYmluCi0tLQpuYW1lOiBjcmFzaC0xCmRlc2NyaXB0aW9uOgoJQ3Jhc2hlZCBkdXJpbmcgTWFyY2ggMjAxMSwgZml4ZWQgb24gdmVybmFsIGVxdWluxY14IOKYugpjYXRlZ29yeTogb3M6bWlyYnNkLG9zOm9wZW5ic2QKc3RkaW46CglleHBvcnQgTUFMTE9DX09QVElPTlM9RkdKUlNYCgkiJF9fcHJvZ25hbWUiIC1jICd4PSQodHIgeiByIDw8PGJheik7IGVjaG8gJHgnCmV4cGVjdGVkLXN0ZG91dDoKCWJhcgotLS0KbmFtZTogZGViaWFuLTExNy0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0IFwoICEgLWUgXCkgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTEKLS0tCm5hbWU6IGRlYmlhbi0xMTctMgpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCBcKCAgLWUgXCkgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGRlYmlhbi0xMTctMwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRlc3QgLSBidWcjNDY1MjUwCnN0ZGluOgoJdGVzdCAhIC1lICA7IGVjaG8gJD8KZXhwZWN0ZWQtc3Rkb3V0OgoJMQotLS0KbmFtZTogZGViaWFuLTExNy00CmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGVzdCAtIGJ1ZyM0NjUyNTAKc3RkaW46Cgl0ZXN0ICAtZSAgOyBlY2hvICQ/CmV4cGVjdGVkLXN0ZG91dDoKCTAKLS0tCm5hbWU6IGNhc2UtenNoCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCB6c2ggY2FzZSB2YXJpYW50cyB3b3JrCnN0ZGluOgoJY2FzZSAnYicgaW4KCSAgYSkgZWNobyBhIDs7CgkgIGIpIGVjaG8gYiA7OwoJICBjKSBlY2hvIGMgOzsKCSAgKikgZWNobyB4IDs7Cgllc2FjCgllY2hvID0KCWNhc2UgJ2InIGluCgkgIGEpIGVjaG8gYSA7JgoJICBiKSBlY2hvIGIgOyYKCSAgYykgZWNobyBjIDsmCgkgICopIGVjaG8geCA7JgoJZXNhYwoJZWNobyA9CgljYXNlICdiJyBpbgoJICBhKSBlY2hvIGEgO3wKCSAgYikgZWNobyBiIDt8CgkgIGMpIGVjaG8gYyA7fAoJICAqKSBlY2hvIHggO3wKCWVzYWMKZXhwZWN0ZWQtc3Rkb3V0OgoJYgoJPQoJYgoJYwoJeAoJPQoJYgoJeAotLS0KbmFtZTogY2FzZS1icmFjZXMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGNhc2UgZW5kIHRva2VucyBhcmUgbm90IG1peGVkIHVwIChEZWJpYW4gIzIyMDI3MikKc3RkaW46CglpPTAKCWZvciB2YWx1ZSBpbiAneCcgJ30nICdlc2FjJzsgZG8KCQlwcmludCAtbiAiJCgoKytpKSkoJHZhbHVlKWJvdXJuZSAiCgkJY2FzZSAkdmFsdWUgaW4KCQl9KSBlY2hvIGJyYWNlIDs7CgkJKikgZWNobyBubyA7OwoJCWVzYWMKCQlwcmludCAtbiAiJCgoKytpKSkoJHZhbHVlKWtvcm4gIgoJCWNhc2UgJHZhbHVlIHsKCQllc2FjKSBlY2hvIGVzYWMgOzsKCQkqKSBlY2hvIG5vIDs7CgkJfQoJZG9uZQpleHBlY3RlZC1zdGRvdXQ6CgkxKHgpYm91cm5lIG5vCgkyKHgpa29ybiBubwoJMyh9KWJvdXJuZSBicmFjZQoJNCh9KWtvcm4gbm8KCTUoZXNhYylib3VybmUgbm8KCTYoZXNhYylrb3JuIGVzYWMKLS0tCm5hbWU6IGNvbW1hbmQtc2hpZnQKZGVzY3JpcHRpb246CglDaGVjayB0aGF0ICdjb21tYW5kIHNoaWZ0JyB3b3JrcwpzdGRpbjoKCWZ1bmN0aW9uIHNuYyB7CgkJZWNobyAiYmVmb3JlCTA9JyQwJyAxPSckMScgMj0nJDInIgoJCXNoaWZ0CgkJZWNobyAiYWZ0ZXIJMD0nJDAnIDE9JyQxJyAyPSckMiciCgl9CglmdW5jdGlvbiBzd2MgewoJCWVjaG8gImJlZm9yZQkwPSckMCcgMT0nJDEnIDI9JyQyJyIKCQljb21tYW5kIHNoaWZ0CgkJZWNobyAiYWZ0ZXIJMD0nJDAnIDE9JyQxJyAyPSckMiciCgl9CgllY2hvID0gd2l0aG91dCBjb21tYW5kCglzbmMg5LiAIOS6jAoJZWNobyA9IHdpdGggY29tbWFuZAoJc3djIOS4gCDkuowKCWVjaG8gPSBkb25lCmV4cGVjdGVkLXN0ZG91dDoKCT0gd2l0aG91dCBjb21tYW5kCgliZWZvcmUJMD0nc25jJyAxPSfkuIAnIDI9J+S6jCcKCWFmdGVyCTA9J3NuYycgMT0n5LqMJyAyPScnCgk9IHdpdGggY29tbWFuZAoJYmVmb3JlCTA9J3N3YycgMT0n5LiAJyAyPSfkuownCglhZnRlcgkwPSdzd2MnIDE9J+S6jCcgMj0nJwoJPSBkb25lCi0tLQpuYW1lOiBjb21tYW5kLXNldApkZXNjcmlwdGlvbjoKCVNhbWUgYnV0IHdpdGggc2V0CnN0ZGluOgoJc2hvd2FyZ3MoKSB7IGZvciBzX2FyZyBpbiAiJEAiOyBkbyBlY2hvIC1uICI8JHNfYXJnPiAiOyBkb25lOyBlY2hvIC47IH0KCXNob3dhcmdzIDEgIiRAIgoJc2V0IC0tIGZvbyBiYXIgYmF6CglzaG93YXJncyAyICIkQCIKCWNvbW1hbmQgc2V0IC0tIG1pYXUgJ21lb3cgbnlhbycKCXNob3dhcmdzIDMgIiRAIgpleHBlY3RlZC1zdGRvdXQ6Cgk8MT4gLgoJPDI+IDxmb28+IDxiYXI+IDxiYXo+IC4KCTwzPiA8bWlhdT4gPG1lb3cgbnlhbz4gLgotLS0KbmFtZTogY29tbWFuZC1yZWFkb25seQpkZXNjcmlwdGlvbjoKCVRoZXNlIHNob3VsZCBub3QgZXhpdCBvbiBlcnJvciB3aGVuIHByZWZpeGVkCnN0ZGluOgoJZXhlYyAyPi9kZXYvbnVsbAoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgdjsgZXhwb3J0IHY9Zm9vIHx8IGVjaG8gb2snCgllY2hvIGVmPSQ/CgkiJF9fcHJvZ25hbWUiIC1jICdyZWFkb25seSB2OyBjb21tYW5kIGV4cG9ydCB2PWZvbyB8fCBlY2hvIG9rJwoJZWNobyBlbj0kPwoJIiRfX3Byb2duYW1lIiAtYyAncmVhZG9ubHkgdjsgcmVhZG9ubHkgdj1mb28gfHwgZWNobyBvaycKCWVjaG8gcmY9JD8KCSIkX19wcm9nbmFtZSIgLWMgJ3JlYWRvbmx5IHY7IGNvbW1hbmQgcmVhZG9ubHkgdj1mb28gfHwgZWNobyBvaycKCWVjaG8gcm49JD8KZXhwZWN0ZWQtc3Rkb3V0OgoJZWY9MgoJb2sKCWVuPTAKCXJmPTIKCW9rCglybj0wCi0tLQpuYW1lOiBjb21tYW5kLWRvdC1yZWdyZXNzaW9uCmRlc2NyaXB0aW9uOgoJQ2hlY2sgYSByZWdyZXNzaW9uIGluIGZpeGluZyB0aGUgYWJvdmUgZG9lcyBub3QgYXBwZWFyCnN0ZGluOgoJY2F0ID50ZXN0Lm1rc2ggPDxcRU9GCglzZXQgLS0gb25lIHR3bwoJc2hpZnQKCWZvciBzX2FyZyBpbiAiJCMiICIkQCI7IGRvIGVjaG8gLW4gIjwkc19hcmc+ICI7IGRvbmU7IGVjaG8gLgoJRU9GCgkiJF9fcHJvZ25hbWUiIC1jICcuIC4vdGVzdC5ta3NoJyBkdW1teSBvaCBkZWFyIHRoaXMgaXMgbm90IGdvb2QKCWVjaG8gPQoJIiRfX3Byb2duYW1lIiAtYyAnY29tbWFuZCAuIC4vdGVzdC5ta3NoJyBkdW1teSBvaCBkZWFyIHRoaXMgaXMgbm90IGdvb2QKZXhwZWN0ZWQtc3Rkb3V0OgoJPDE+IDx0d28+IC4KCT0KCTwxPiA8dHdvPiAuCi0tLQpuYW1lOiBjb21tYW5kLXB2Vi1wb3NpeC1wcmlvcml0aWVzCmRlc2NyaXB0aW9uOgoJRm9yIFBPU0lYIGNvbXBhdGliaWxpdHksIGNvbW1hbmQgLXYgc2hvdWxkIGZpbmQgYWxpYXNlcyBhbmQgcmVzZXJ2ZWQKCXdvcmRzLCBhbmQgY29tbWFuZCAtcFt2Vl0gc2hvdWxkIGZpbmQgYWxpYXNlcywgcmVzZXJ2ZWQgd29yZHMsIGFuZAoJYnVpbHRpbnMgb3ZlciBleHRlcm5hbCBjb21tYW5kcy4Kc3RkaW46CglQQVRIPS9iaW46L3Vzci9iaW4KCWFsaWFzIGZvbz0iYmFyIGJheiIKCWFsaWFzICdbYWJdPTonCgliYXIoKSB7IDo7IH0KCWZvciB3b3JkIGluICdpZicgJ2ZvbycgJ2JhcicgJ3NldCcgJ3RydWUnICdbYWJdJzsgZG8KCQljb21tYW5kIC12ICIkd29yZCIKCQljb21tYW5kIC1wdiAiJHdvcmQiCgkJY29tbWFuZCAtViAiJHdvcmQiCgkJY29tbWFuZCAtcFYgIiR3b3JkIgoJZG9uZQoJIyBleHRyYSBjaGVja3MKCWFsaWFzICdbYWJdJwoJd2hlbmNlICdbYWJdJwpleHBlY3RlZC1zdGRvdXQ6CglpZgoJaWYKCWlmIGlzIGEgcmVzZXJ2ZWQgd29yZAoJaWYgaXMgYSByZXNlcnZlZCB3b3JkCglhbGlhcyBmb289J2JhciBiYXonCglhbGlhcyBmb289J2JhciBiYXonCglmb28gaXMgYW4gYWxpYXMgZm9yICdiYXIgYmF6JwoJZm9vIGlzIGFuIGFsaWFzIGZvciAnYmFyIGJheicKCWJhcgoJYmFyCgliYXIgaXMgYSBmdW5jdGlvbgoJYmFyIGlzIGEgZnVuY3Rpb24KCXNldAoJc2V0CglzZXQgaXMgYSBzcGVjaWFsIHNoZWxsIGJ1aWx0aW4KCXNldCBpcyBhIHNwZWNpYWwgc2hlbGwgYnVpbHRpbgoJdHJ1ZQoJdHJ1ZQoJdHJ1ZSBpcyBhIHNoZWxsIGJ1aWx0aW4KCXRydWUgaXMgYSBzaGVsbCBidWlsdGluCglhbGlhcyAnW2FiXSc9OgoJYWxpYXMgJ1thYl0nPToKCSdbYWJdJyBpcyBhbiBhbGlhcyBmb3IgOgoJJ1thYl0nIGlzIGFuIGFsaWFzIGZvciA6CgknW2FiXSc9OgoJOgotLS0KbmFtZTogd2hlbmNlLXByZXNlcnZlLXRyYWRpdGlvbgpkZXNjcmlwdGlvbjoKCVRoaXMgcmVncmVzc2lvbiB0ZXN0IGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBQT1NJWCBjb21wYXRpYmlsaXR5CgljaGFuZ2VzIGZvciAnY29tbWFuZCcgKHNlZSBwcmV2aW91cyB0ZXN0KSBkbyBub3QgYWZmZWN0IHRyYWRpdGlvbmFsCgknd2hlbmNlJyBiZWhhdmlvdXIuCmNhdGVnb3J5OiBvczptaXJic2QKc3RkaW46CglQQVRIPS9iaW46L3Vzci9iaW4KCWFsaWFzIGZvbz0iYmFyIGJheiIKCWJhcigpIHsgOjsgfQoJZm9yIHdvcmQgaW4gJ2lmJyAnZm9vJyAnYmFyJyAnc2V0JyAndHJ1ZSc7IGRvCgkJd2hlbmNlICIkd29yZCIKCQl3aGVuY2UgLXAgIiR3b3JkIgoJCXdoZW5jZSAtdiAiJHdvcmQiCgkJd2hlbmNlIC1wdiAiJHdvcmQiCglkb25lCmV4cGVjdGVkLXN0ZG91dDoKCWlmCglpZiBpcyBhIHJlc2VydmVkIHdvcmQKCWlmIG5vdCBmb3VuZAoJJ2JhciBiYXonCglmb28gaXMgYW4gYWxpYXMgZm9yICdiYXIgYmF6JwoJZm9vIG5vdCBmb3VuZAoJYmFyCgliYXIgaXMgYSBmdW5jdGlvbgoJYmFyIG5vdCBmb3VuZAoJc2V0CglzZXQgaXMgYSBzcGVjaWFsIHNoZWxsIGJ1aWx0aW4KCXNldCBub3QgZm91bmQKCXRydWUKCS9iaW4vdHJ1ZQoJdHJ1ZSBpcyBhIHNoZWxsIGJ1aWx0aW4KCXRydWUgaXMgYSB0cmFja2VkIGFsaWFzIGZvciAvYmluL3RydWUKLS0tCm5hbWU6IGR1ZmZzLWRldmljZQpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIGRpZCBub3Qgb3B0aW1pc2UtYnJlYWsgdGhlbQoJKGxleC5jIGhhcyBnb3QgYSBzaW1pbGFyIG9uZSBpbiBTSEVSRURFTElNKQpjYXRlZ29yeTogIXNoZWxsOmZhdXgtZWJjZGljLCFzaGVsbDplYmNkaWMteWVzCnN0ZGluOgoJc2V0ICtVCglzPQoJdHlwZXNldCAtaTEgaT0wCgl3aGlsZSAoKCArK2kgPCAyNTYgKSk7IGRvCgkJcys9JHtpIzEjfQoJZG9uZQoJcys9JCdceEMyXHhBMFx4RTJceDgyXHhBQ1x4RUZceEJGXHhCRFx4RUZceEJGXHhCRVx4RUZceEJGXHhCRlx4RjBceDkwXHg4MFx4ODAuJwoJdHlwZXNldCAtcCBzCmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgcz0kJ1wwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlxhXGJcdFxuXHZcZlxyXDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlxFXDAzNFwwMzVcMDM2XDAzNyAhIiMkJSZcMDQ3KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flwxNzdcMjAwXDIwMVwyMDJcMjAzXDIwNFwyMDVcMjA2XDIwN1wyMTBcMjExXDIxMlwyMTNcMjE0XDIxNVwyMTZcMjE3XDIyMFwyMjFcMjIyXDIyM1wyMjRcMjI1XDIyNlwyMjdcMjMwXDIzMVwyMzJcMjMzXDIzNFwyMzVcMjM2XDIzN1wyNDBcMjQxXDI0MlwyNDNcMjQ0XDI0NVwyNDZcMjQ3XDI1MFwyNTFcMjUyXDI1M1wyNTRcMjU1XDI1NlwyNTdcMjYwXDI2MVwyNjJcMjYzXDI2NFwyNjVcMjY2XDI2N1wyNzBcMjcxXDI3MlwyNzNcMjc0XDI3NVwyNzZcMjc3XDMwMFwzMDFcMzAyXDMwM1wzMDRcMzA1XDMwNlwzMDdcMzEwXDMxMVwzMTJcMzEzXDMxNFwzMTVcMzE2XDMxN1wzMjBcMzIxXDMyMlwzMjNcMzI0XDMyNVwzMjZcMzI3XDMzMFwzMzFcMzMyXDMzM1wzMzRcMzM1XDMzNlwzMzdcMzQwXDM0MVwzNDJcMzQzXDM0NFwzNDVcMzQ2XDM0N1wzNTBcMzUxXDM1MlwzNTNcMzU0XDM1NVwzNTZcMzU3XDM2MFwzNjFcMzYyXDM2M1wzNjRcMzY1XDM2NlwzNjdcMzcwXDM3MVwzNzJcMzczXDM3NFwzNzVcMzc2XDM3N1x1MDBBMFx1MjBBQ1x1RkZGRFwzNTdcMjc3XDI3NlwzNTdcMjc3XDI3N1wzNjBcMjIwXDIwMFwyMDAuJwotLS0KbmFtZTogZHVmZnMtZGV2aWNlLWViY2RpYwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIGRpZCBub3Qgb3B0aW1pc2UtYnJlYWsgdGhlbQpjYXRlZ29yeTogIXNoZWxsOmViY2RpYy1ubwpzdGRpbjoKCXNldCArVQoJcz0KCXR5cGVzZXQgLWkxIGk9MAoJd2hpbGUgKCggKytpIDwgMjU2ICkpOyBkbwoJCXMrPSR7aSMxI30KCWRvbmUKCSNzKz0kJ1x4QzJceEEwXHhFMlx4ODJceEFDXHhFRlx4QkZceEJEXHhFRlx4QkZceEJFXHhFRlx4QkZceEJGXHhGMFx4OTBceDgwXHg4MC4nICNYWFgKCXR5cGVzZXQgLXAgcwpleHBlY3RlZC1zdGRvdXQ6Cgl0eXBlc2V0IHM9JCdcMDAxXDAwMlwwMDNcMDA0XHRcMDA2XDAwN1wwMTBcMDExXDAxMlx2XGZcclwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcblxiXDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3XDA0MFwwNDFcMDQyXDA0M1wwNDRcMDQ1XDA0NlxFXDA1MFwwNTFcMDUyXDA1M1wwNTRcMDU1XDA1NlxhXDA2MFwwNjFcMDYyXDA2M1wwNjRcMDY1XDA2NlwwNjdcMDcwXDA3MVwwNzJcMDczXDA3NFwwNzVcMDc2XDA3NyCg4uTg4ePl5/GiLjwoK3wm6err6O3u7+zfISQqKTteLS/CxMDBw8XH0aYsJV8+P/jJysvIzc7PzGA6I0BcMTc1PSLYYWJjZGVmZ2hpq7vw/f6xsGprbG1ub3Bxcqq65rjGpLV+c3R1dnd4eXqhv9Bb3q6so6W3qae2vL2+3aivXbTXe0FCQ0RFRkdISa309vLz9X1KS0xNTk9QUVK5+/z5+v9cXPdTVFVWV1hZWrLU1tLT1TAxMjM0NTY3ODmz29zZ2lwzNzcnCi0tLQpuYW1lOiBkdWZmcy1kZXZpY2UtZmF1eC1FQkNESUMKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IHRoZSBjb21waWxlciBkaWQgbm90IG9wdGltaXNlLWJyZWFrIHRoZW0KY2F0ZWdvcnk6IHNoZWxsOmZhdXgtZWJjZGljCnN0ZGluOgoJc2V0ICtVCglzPQoJdHlwZXNldCAtaTEgaT0wCgl3aGlsZSAoKCArK2kgPCAyNTYgKSk7IGRvCgkJcys9JHtpIzEjfQoJZG9uZQoJcys9JCdceEMyXHhBMFx4RTJceDgyXHhBQ1x4RUZceEJGXHhCRFx4RUZceEJGXHhCRVx4RUZceEJGXHhCRlx4RjBceDkwXHg4MFx4ODAuJwoJdHlwZXNldCAtcCBzCmV4cGVjdGVkLXN0ZG91dDoKCXR5cGVzZXQgcz0kJ1wwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlxhXGJcdFxuXHZcZlxyXDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlxFXDAzNFwwMzVcMDM2XDAzNyAhIiMkJSZcMDQ3KCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9flwxNzdcMjAwXDIwMVwyMDJcMjAzXDIwNFwyMDVcMjA2XDIwN1wyMTBcMjExXDIxMlwyMTNcMjE0XDIxNVwyMTZcMjE3XDIyMFwyMjFcMjIyXDIyM1wyMjRcMjI1XDIyNlwyMjdcMjMwXDIzMVwyMzJcMjMzXDIzNFwyMzVcMjM2XDIzN6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/1x1MDBBMFx1MjBBQ1x1RkZGRO+/vu+/v/BcMjIwXDIwMFwyMDAuJwotLS0KbmFtZTogc3RhdGVwdHItdW5kZXJmbG93CmRlc2NyaXB0aW9uOgoJVGhpcyBjaGVjayBvdmVyZmxvd3MgYW4gWHJlc3Rwb3Mgc3RvcmVkIGluIGEgc2hvcnQgaW4gUjQwCmNhdGVnb3J5OiBmYXN0Ym94CnN0ZGluOgoJZnVuY3Rpb24gTGI2NGRlY29kZSB7CgkJW1sgLW8gdXRmOC1tb2RlIF1dOyBsb2NhbCB1PSQ/CgkJc2V0ICtVCgkJbG9jYWwgYyBzPSIkKiIgdD0KCQlbWyAtbiAkcyBdXSB8fCB7IHM9JChjYXQ7cHJpbnQgeCk7IHM9JHtzJXh9OyB9CgkJbG9jYWwgLWkgaT0wIG49JHsjc30gcD0wIHYgeAoJCWxvY2FsIC1pMTYgbwoJCgkJd2hpbGUgKCggaSA8IG4gKSk7IGRvCgkJCWM9JHtzOihpKyspOjF9CgkJCWNhc2UgJGMgewoJCQkoPSkJYnJlYWsgOzsKCQkJKFtBLVpdKQkoKCB2ID0gMSMkYyAtIDY1ICkpIDs7CgkJCShbYS16XSkJKCggdiA9IDEjJGMgLSA3MSApKSA7OwoJCQkoWzAtOV0pCSgoIHYgPSAxIyRjICsgNCApKSA7OwoJCQkoKykJdj02MiA7OwoJCQkoLykJdj02MyA7OwoJCQkoKikJY29udGludWUgOzsKCQkJfQoJCQkoKCB4ID0gKHggPDwgNikgfCB2ICkpCgkJCWNhc2UgJCgocCsrKSkgewoJCQkoMCkJY29udGludWUgOzsKCQkJKDEpCSgoIG8gPSAoeCA+PiA0KSAmIDI1NSApKSA7OwoJCQkoMikJKCggbyA9ICh4ID4+IDIpICYgMjU1ICkpIDs7CgkJCSgzKQkoKCBvID0geCAmIDI1NSApKQoJCQkJcD0wCgkJCQk7OwoJCQl9CgkJCXQ9JHRcXHgke28jMTYjfQoJCWRvbmUKCQlwcmludCAtbiAkdAoJCSgoIHUgKSkgfHwgc2V0IC1VCgl9CgkKCWk9LTEKCXM9Cgl3aGlsZSAoKCArK2kgPCAxMjEyMCApKTsgZG8KCQlzKz1hCglkb25lCglMYjY0ZGVjb2RlICRzID4vZGV2L251bGwKLS0tCm5hbWU6IHh0cmFjZS0xCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC14IiBkb2Vzbid0IHJlZGlyZWN0IHRvbyBxdWlja2x5CnN0ZGluOgoJcHJpbnQgJyMhJyIkX19wcm9nbmFtZSIgPmJhc2gKCWNhdCA+PmJhc2ggPDwnRU9GJwoJZWNobyAnR05VIGJhc2gsIHZlcnNpb24gMi4wNWIuMCgxKS1yZWxlYXNlIChpMzg2LWVjY2UtbWlyYnNkMTApCglDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuJwoJRU9GCgljaG1vZCAreCBiYXNoCgkiJF9fcHJvZ25hbWUiIC14YyAnZm9vPSQoLi9iYXNoIC0tdmVyc2lvbiAyPiYxIHwgc2VkIHEpOyBlY2hvICI9JGZvbz0iJwpleHBlY3RlZC1zdGRvdXQ6Cgk9R05VIGJhc2gsIHZlcnNpb24gMi4wNWIuMCgxKS1yZWxlYXNlIChpMzg2LWVjY2UtbWlyYnNkMTApPQpleHBlY3RlZC1zdGRlcnItcGF0dGVybjoKCS8uKi8KLS0tCm5hbWU6IHh0cmFjZS0yCmRlc2NyaXB0aW9uOgoJQ2hlY2sgdGhhdCAic2V0IC14IiBpcyBvZmYgZHVyaW5nIFBTNCBleHBhbnNpb24Kc3RkaW46CglmKCkgewoJCXByaW50IC1uICIoZjE6JC0pIgoJCXNldCAteAoJCXByaW50IC1uICIoZjI6JC0pIgoJfQoJUFM0PSdbKHA6JC0pJChmKV0gJwoJcHJpbnQgIihvMDokLSkiCglzZXQgLXggLW8gaW5oZXJpdC14dHJhY2UKCXByaW50ICIobzE6JC0pIgoJc2V0ICt4CglwcmludCAiKG8yOiQtKSIKZXhwZWN0ZWQtc3Rkb3V0OgoJKG8wOnNoKQoJKG8xOnNoeCkKCShvMjpzaCkKZXhwZWN0ZWQtc3RkZXJyOgoJWyhwOnNoKShmMTpzaCkoZjI6c2gpXSBwcmludCAnKG8xOnNoeCknCglbKHA6c2gpKGYxOnNoKShmMjpzaCldIHNldCAreAotLS0KbmFtZTogZmtzaC1mbGFncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgRktTSCBmdW5jdGlvbnMgaGF2ZSB0aGVpciBvd24gc2hlbGwgZmxhZ3MKY2F0ZWdvcnk6IHNoZWxsOmxlZ2FjeS1ubwpzdGRpbjoKCVtbICRLU0hfVkVSU0lPTiA9IFZlcnNpb24qIF1dICYmIHNldCArQgoJZnVuY3Rpb24gZm9vIHsKCQlzZXQgK2YKCQlzZXQgLWUKCQllY2hvIDIgIiR7LS9zfSIgLgoJfQoJc2V0IC1maAoJZWNobyAxICIkey0vc30iIC4KCWZvbwoJZWNobyAzICIkey0vc30iIC4KZXhwZWN0ZWQtc3Rkb3V0OgoJMSBmaCAuCgkyIGVoIC4KCTMgZmggLgotLS0KbmFtZTogZmtzaC1mbGFncy1sZWdhY3kKZGVzY3JpcHRpb246CglDaGVjayB0aGF0IGV2ZW4gRktTSCBmdW5jdGlvbnMgc2hhcmUgdGhlIHNoZWxsIGZsYWdzCmNhdGVnb3J5OiBzaGVsbDpsZWdhY3kteWVzCnN0ZGluOgoJW1sgJEtTSF9WRVJTSU9OID0gVmVyc2lvbiogXV0gJiYgc2V0ICtCCglmb28oKSB7CgkJc2V0ICtmCgkJc2V0IC1lCgkJZWNobyAyICIkey0vc30iIC4KCX0KCXNldCAtZmgKCWVjaG8gMSAiJHstL3N9IiAuCglmb28KCWVjaG8gMyAiJHstL3N9IiAuCmV4cGVjdGVkLXN0ZG91dDoKCTEgZmggLgoJMiBlaCAuCgkzIGVoIC4KLS0tCm5hbWU6IGZzaC1mbGFncwpkZXNjcmlwdGlvbjoKCUNoZWNrIHRoYXQgIUZLU0ggZnVuY3Rpb25zIHNoYXJlIHRoZSBzaGVsbCBmbGFncwpzdGRpbjoKCVtbICRLU0hfVkVSU0lPTiA9IFZlcnNpb24qIF1dICYmIHNldCArQgoJZm9vKCkgewoJCXNldCArZgoJCXNldCAtZQoJCWVjaG8gMiAiJHstL3N9IiAuCgl9CglzZXQgLWZoCgllY2hvIDEgIiR7LS9zfSIgLgoJZm9vCgllY2hvIDMgIiR7LS9zfSIgLgpleHBlY3RlZC1zdGRvdXQ6CgkxIGZoIC4KCTIgZWggLgoJMyBlaCAuCi0tLQo=