To join WebAsOne
More
Our Logo
WebAsOne
Home
How To
Join US
Design
Design Block
Design Patterns
Animation
Themes
Fonts
Marketing
Hero
About
BIO
Contact
CTA
FAQ
Footer
Portfolio
Price
Service
Team
Testimonials
Pages
Apps
Vue3
OpenSource
Mini-Apps
Lessons
Google
Map
Contact Form
Email
One
Mini-Apps
->
Google
->
Map
Contact Form
Questions or comments
Submit
oneColumn/id13-33,Click to clipboard
ezE6IHsnZW4nOiB7J05vdGVzJzogJycsCiAgICAgICAgICAgICdTbGlkZVR5cGUnOiAnVGlueU1DRScsCiAgICAgICAgICAgICdhSW1hZ2UnOiAnJywKICAgICAgICAgICAgJ2FMYWJlbCc6ICdodG1sIGZvcm0nLAogICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAnY29kZSc6ICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ3NldF9lcnJvcl9oYW5kbGVyKGZ1bmN0aW9uKCRfZXJybm8sICRlcnJzdHIpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIC8vIENvbnZlcnQgbm90aWNlLCB3YXJuaW5nLCBldGMuIHRvIGVycm9yLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgdGhyb3cgbmV3IEVycm9yKCRlcnJzdHIpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ30pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyRmaWxlbmFtZSA9ICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAiJy9waHAvZ29vZ2xlL3JlY2FwdGNoYS1tYXN0ZXIvc3JjL2F1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnaWYgKCFmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICBlY2hvICJUaGUgZmlsZSAkZmlsZW5hbWUgZG9lcyBub3QgZXhpc3QuIDxiciAvPiBVc2UgJwogICAgICAgICAgICAgICAgICAgICdJbnNlcnRNZW51IHRvIGFkZCBwaHAgbGlicmFyaWVzOiAsdG9wQyxwaHBfZ3AxIjtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ31cclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICd0cnkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAnICByZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAiJy9waHAvZ29vZ2xlL3JlY2FwdGNoYS1tYXN0ZXIvc3JjL2F1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAiICByZXF1aXJlICdfQXJlYV8vcGhwL215Zm9ybS5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgLy8gUmVnaXN0ZXIgQVBJIGtleXMgYXQgJwogICAgICAgICAgICAgICAgICAgICdodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hZG1pblxyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgJHNpdGVLZXkgPSAnCiAgICAgICAgICAgICAgICAgICAgIic2TGZMR2hrcUFBQUFBSThGNmZhQ1Q0R1BYc1RxRnJVamlmbDMyZmNuJztcclxuIgogICAgICAgICAgICAgICAgICAgICcgICRzZWNyZXQgPSAnCiAgICAgICAgICAgICAgICAgICAgIic2TGZMR2hrcUFBQUFBQWRkbzBkOGhDOXNPd0NORkFkRy1KdWstZGhQJztcclxuIgogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICIgIGlmIChpc3NldCgkX1BPU1RbJ2ctcmVjYXB0Y2hhLXJlc3BvbnNlJ10pKSB7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIFRoZSBQT1NUIGRhdGEgaGVyZSBpcyB1bmZpbHRlcmVkIGJlY2F1c2UgdGhpcyBpcyAnCiAgICAgICAgICAgICAgICAgICAgJ2FuIGV4YW1wbGUuXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIEluIHByb2R1Y3Rpb24sICphbHdheXMqIHNhbml0aXNlIGFuZCB2YWxpZGF0ZSB5b3VyICcKICAgICAgICAgICAgICAgICAgICAiaW5wdXQnXHJcbiIKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIHZhcl9leHBvcnQoJF9QT1NUKTtcclxuJwogICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzw/cGhwXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIElmIHRoZSBmb3JtIHN1Ym1pc3Npb24gaW5jbHVkZXMgdGhlICcKICAgICAgICAgICAgICAgICAgICAnImctY2FwdGNoYS1yZXNwb25zZSIgZmllbGRcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlIHVzaW5nIHlvdXIgJwogICAgICAgICAgICAgICAgICAgICdzZWNyZXRcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgJHJlY2FwdGNoYSA9IG5ldyBcXFJlQ2FwdGNoYVxcUmVDYXB0Y2hhKCRzZWNyZXQpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBJZiBmaWxlX2dldF9jb250ZW50cygpIGlzIGxvY2tlZCBkb3duIG9uIHlvdXIgUEhQICcKICAgICAgICAgICAgICAgICAgICAnaW5zdGFsbGF0aW9uIHRvIGRpc2FsbG93XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIGl0cyB1c2Ugd2l0aCBVUkxzLCB0aGVuIHlvdSBjYW4gdXNlIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgJ2FsdGVybmF0aXZlIHJlcXVlc3QgbWV0aG9kIGluc3RlYWQuXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIFRoaXMgbWFrZXMgdXNlIG9mIGZzb2Nrb3BlbigpIGluc3RlYWQuXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vICAkcmVjYXB0Y2hhID0gbmV3IFxcUmVDYXB0Y2hhXFxSZUNhcHRjaGEoJHNlY3JldCwgJwogICAgICAgICAgICAgICAgICAgICduZXcgXFxSZUNhcHRjaGFcXFJlcXVlc3RNZXRob2RcXFNvY2tldFBvc3QoKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIC8vIE1ha2UgdGhlIGNhbGwgdG8gdmVyaWZ5IHRoZSByZXNwb25zZSBhbmQgYWxzbyBwYXNzICcKICAgICAgICAgICAgICAgICAgICAidGhlIHVzZXIncyBJUCBhZGRyZXNzXHJcbiIKICAgICAgICAgICAgICAgICAgICAnICAgICRyZXNwID0gJwogICAgICAgICAgICAgICAgICAgICIkcmVjYXB0Y2hhLT5zZXRFeHBlY3RlZEhvc3RuYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKVxyXG4iCiAgICAgICAgICAgICAgICAgICAgIiAgICAgIC0+dmVyaWZ5KCRfUE9TVFsnZy1yZWNhcHRjaGEtcmVzcG9uc2UnXSwgIgogICAgICAgICAgICAgICAgICAgICIkX1NFUlZFUlsnUkVNT1RFX0FERFInXSk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAnICAgIGlmICgkcmVzcC0+aXNTdWNjZXNzKCkpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgYSBzdWNjZXNzLCBwcm9jZXNzIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgJ2Zvcm1cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgICBwcm9jX2Zvcm0oJHJlbF9yb290KTtcclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgICAvL3Zhcl9leHBvcnQoJHJlc3ApO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPGgxPiBUaGFua3MgZm9yIHlvdXIgc3VibWl0ISBXZSB3aWxsIGNvbnRhY3QgeW91ICcKICAgICAgICAgICAgICAgICAgICAnc2hvcnRseSEgPC9oMT5cclxuJwogICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICB9IGVsc2Uge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgIiAgICAgIC8vIElmIGl0J3Mgbm90IHN1Y2Nlc3NmdWwsIHRoZW4gb25lIG9yIG1vcmUgZXJyb3IgIgogICAgICAgICAgICAgICAgICAgICdjb2RlcyB3aWxsIGJlIHJldHVybmVkLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicKICAgICAgICAgICAgICAgICAgICAnPGgyPlNvbWV0aGluZyB3ZW50IHdyb25nPC9oMj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8a2JkPjxwcmU+PD9waHAgdmFyX2V4cG9ydCgkcmVzcCk7Pz48L3ByZT48L2tiZD5cclxuJwogICAgICAgICAgICAgICAgICAgICc8cD5DaGVjayB0aGUgZXJyb3IgY29kZSByZWZlcmVuY2UgYXQgPGtiZD48YSAnCiAgICAgICAgICAgICAgICAgICAgJ2hyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3JlY2FwdGNoYS9kb2NzL3ZlcmlmeSNlcnJvci1jb2RlLXJlZmVyZW5jZSI+aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcmVjYXB0Y2hhL2RvY3MvdmVyaWZ5I2Vycm9yLWNvZGUtcmVmZXJlbmNlPC9hPjwva2JkPi5cclxuJwogICAgICAgICAgICAgICAgICAgICc8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEVycm9yIGNvZGUgJwogICAgICAgICAgICAgICAgICAgICc8a2JkPm1pc3NpbmctaW5wdXQtcmVzcG9uc2U8L2tiZD4gbWF5IG1lYW4gdGhlIHVzZXIganVzdCAnCiAgICAgICAgICAgICAgICAgICAgImRpZG4ndCBjb21wbGV0ZSB0aGUgcmVDQVBUQ0hBLjwvcD5cclxuIgogICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICB9IFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgaWQ9Il9NSURYX2xvYWRlciIgY2xhc3M9Im14LWF1dG8gcC00Ij48L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICc8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImRlbW8tZm9ybSI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJlbWFpbCIgJwogICAgICAgICAgICAgICAgICAgICdwbGFjZWhvbGRlcj0iWW91ciBlbWFpbCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICA8aW5wdXQgdHlwZT0iZW1haWwiIGNsYXNzPSJmb3JtLWNvbnRyb2wiICcKICAgICAgICAgICAgICAgICAgICAnbmFtZT0icmVxdXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJZb3VyIG5hbWUiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICcgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiICcKICAgICAgICAgICAgICAgICAgICAnbmFtZT0ic3ViamVjdCIgcGxhY2Vob2xkZXI9IlN1YmplY3QiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgICA8bGFiZWwgZm9yPSJleGFtcGxlRm9ybUNvbnRyb2xUZXh0YXJlYTEiID5RdWVzdGlvbnMgJwogICAgICAgICAgICAgICAgICAgICdvciBjb21tZW50czwvbGFiZWw+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIDx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJtZXNzYWdlIiAnCiAgICAgICAgICAgICAgICAgICAgJ3Jvd3M9IjMiPjwvdGV4dGFyZWE+XHJcbicKICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICcgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iZy1yZWNhcHRjaGEgYnRuICcKICAgICAgICAgICAgICAgICAgICAnYnRuLXByaW1hcnkgYnRuLWJsb2NrIiBkYXRhLXNpdGVrZXk9Ijw/cGhwIGVjaG8gJHNpdGVLZXk7ICcKICAgICAgICAgICAgICAgICAgICAnPz4iIGRhdGEtY2FsbGJhY2s9XCdvblN1Ym1pdFwnPlN1Ym1pdDwvYnV0dG9uPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzwvZm9ybT5cclxuJwogICAgICAgICAgICAgICAgICAgICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgJwogICAgICAgICAgICAgICAgICAgICdzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcz9obD08P3BocCAnCiAgICAgICAgICAgICAgICAgICAgJ2VjaG8gJENNU19sYzsgPz4iIGFzeW5jIGRlZmVyPjwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICcgIGZ1bmN0aW9uIG9uU3VibWl0KHRva2VuKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZW1vLWZvcm0iKS5zdHlsZS5kaXNwbGF5ID0gJwogICAgICAgICAgICAgICAgICAgICcibm9uZSI7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgICcKICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9NSURYX2xvYWRlciIpLmNsYXNzTGlzdC5hZGQoXCdsb2FkZXJcJyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAnICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZW1vLWZvcm0iKS5zdWJtaXQoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgJyAgfSBcclxuJwogICAgICAgICAgICAgICAgICAgICd9IGNhdGNoIChUaHJvd2FibGUgJGUpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIG15bG9nKCRlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICcgIGVjaG8gJGU7XHJcbicKICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicsCiAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnI19JRF8gLmxvYWRlciB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBib3JkZXI6IDE2cHggc29saWQgI2YzZjNmMzsgLyogTGlnaHQgZ3JleSAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgYm9yZGVyLXRvcDogMTZweCBzb2xpZCAjMzQ5OGRiOyAvKiBCbHVlICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICB3aWR0aDogMTIwcHg7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBoZWlnaHQ6IDEyMHB4O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnQGtleWZyYW1lcyBzcGluIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc2NyaXB0SW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgYm9keSB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc2NyaXB0SW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnIyBFbmRcclxuJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2UnOiAnJywKICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJycsCiAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgJ3BocEZpbGUnOiAnPD9waHAgLyogX0FyZWFfL3BocC9teWZvcm0ucGhwICovICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcvLyBmb3IgZGVidWdnaW5nXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24gbXlsb2coJG1zZykge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgJGggPSBmb3BlbignL2hvbWUvY21zbm93L2FjY2Vzc19sb2cnLCAnYScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgZndyaXRlKCRoLCB0aW1lKCkpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgZndyaXRlKCRoLCAkbXNnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGZjbG9zZSgkaCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIHByb2NfZm9ybSgkcmVsX3Jvb3QpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIHRyeSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vcmVxdWlyZSAkcmVsX3Jvb3QgLiAnCiAgICAgICAgICAgICAgICAgICAgICAgIicvLi4vLi4vcGhwL0FzT25lL21pc2MucGhwJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgcmVxdWlyZSAkcmVsX3Jvb3QgLiAnCiAgICAgICAgICAgICAgICAgICAgICAgIicvcGhwL1BIUE1haWxlci9QSFBNYWlsZXJBdXRvbG9hZC5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyB0byBkaXNhYmxlIGJ5IGFzc2lnbiBhbiBlbXB0eSBzdHJpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgJGJ1Z3ppbGxhU2VydmVyID0gJ2J1Zy53ZWJjbXMtYS5jb20nO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkZW1haWxTTVRQID0gJ3NtdHAuYml6bWFpbC55YWhvby5jb20nO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkZW1haWxVc2VyID0gJ25vLXJlcGx5QGFzb25lbGlzdC5jb20nO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkZW1haWxQYXNzd2QgPSAndXlxdmN2bGNrbmVwZHNpcic7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRub3RpZnlFbWFpbCA9ICdpbmZvQHdlYmFzb25lLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vbXlsb2coImNhbGwgcHJvY19mb3JtIik7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgIC8vJGFzb25lRmlsZSA9IG5ldyBBc09uZUZpbGUoJ19JRFhfJywgIgogICAgICAgICAgICAgICAgICAgICAgICdBc29uZVBhdGgpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbCA9IG5ldyBQSFBNYWlsZXI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vVGVsbCBQSFBNYWlsZXIgdG8gdXNlIFNNVFBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9UZWxsIFBIUE1haWxlciB0byB1c2UgU01UUFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+aXNTTVRQKCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vRW5hYmxlIFNNVFAgZGVidWdnaW5nXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIDAgPSBvZmYgKGZvciBwcm9kdWN0aW9uIHVzZSlcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gMSA9IGNsaWVudCBtZXNzYWdlc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyAyID0gY2xpZW50IGFuZCBzZXJ2ZXIgbWVzc2FnZXNcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlNNVFBEZWJ1ZyA9IDA7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vQXNrIGZvciBIVE1MLWZyaWVuZGx5IGRlYnVnIG91dHB1dFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+RGVidWdvdXRwdXQgPSAnaHRtbCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBob3N0bmFtZSBvZiB0aGUgbWFpbCBzZXJ2ZXJcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPkhvc3QgPSAkZW1haWxTTVRQO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1NldCB0aGUgU01UUCBwb3J0IG51bWJlciAtIGxpa2VseSB0byBiZSAyNSwgNDY1ICcKICAgICAgICAgICAgICAgICAgICAgICAnb3IgNTg3XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsLT5Qb3J0ID0gNDY1O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+U01UUFNlY3VyZSA9ICdzc2wnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1doZXRoZXIgdG8gdXNlIFNNVFAgYXV0aGVudGljYXRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlNNVFBBdXRoID0gdHJ1ZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9Vc2VybmFtZSB0byB1c2UgZm9yIFNNVFAgYXV0aGVudGljYXRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlVzZXJuYW1lID0gJGVtYWlsVXNlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9QYXNzd29yZCB0byB1c2UgZm9yIFNNVFAgYXV0aGVudGljYXRpb25cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlBhc3N3b3JkID0gJGVtYWlsUGFzc3dkO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1NldCB3aG8gdGhlIG1lc3NhZ2UgaXMgdG8gYmUgc2VudCBmcm9tXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5zZXRGcm9tKCRlbWFpbFVzZXIsICRfU0VSVkVSWydIVFRQX0hPU1QnXS4nICIKICAgICAgICAgICAgICAgICAgICAgICAiU3VibWl0Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IGFuIGFsdGVybmF0aXZlIHJlcGx5LXRvIGFkZHJlc3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1haWwtPmFkZFJlcGx5VG8oJ0RvIG5vdCByZXBseScsICdEbyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICJyZXBseScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1NldCB3aG8gdGhlIG1lc3NhZ2UgaXMgdG8gYmUgc2VudCB0b1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+YWRkQWRkcmVzcygkbm90aWZ5RW1haWwsICdEbyBub3QgIgogICAgICAgICAgICAgICAgICAgICAgICJSZXBseScpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1NldCB0aGUgc3ViamVjdCBsaW5lXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vc2VuZCBlbWFpbFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+U3ViamVjdCA9ICcoRG8gbm90IHJlcGx5KSBmcm9tICIKICAgICAgICAgICAgICAgICAgICAgICAiJy5nZXRob3N0bmFtZSgpO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAvLyRtc2cgPSAnPHA+V2Vic2l0ZTogJXM8L3A+JztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1zZyA9ICcnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydyZXF1c2VybmFtZSddKSkgJG1zZyAuPSAiCiAgICAgICAgICAgICAgICAgICAgICAgJ1wnRnJvbTogIFwnLiRfUkVRVUVTVFtcJ3JlcXVzZXJuYW1lXCddLiJcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydlbWFpbCddKSkgJG1zZyAuPSAnRW1haWw6ICIKICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnZW1haWxcJ10uIlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ3N1YmplY3QnXSkpICRtc2cgLj0gJ1N1YmplY3Q6ICIKICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnc3ViamVjdFwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgLy9pZiAoaXNzZXQoJF9SRVFVRVNUWydjaHVyY2h3ZWJzaXRlJ10pKSAkbXNnIC49ICIKICAgICAgICAgICAgICAgICAgICAgICAiJ2NodXJjaHdlYnNpdGU6ICIKICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnY2h1cmNod2Vic2l0ZVwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1zZyAuPSAiTWVzc2FnZTpcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydtZXNzYWdlJ10pKSAkbXNnIC49ICIKICAgICAgICAgICAgICAgICAgICAgICAnJF9SRVFVRVNUW1wnbWVzc2FnZVwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1haWwtPm1zZ0hUTUwoJzxwcmU+Jy4kbXNnLic8L3ByZT4nKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgaWYgKCRtYWlsLT5zZW5kKCkpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBlY2hvICI8aDM+IFN5c3RlbSBFcnJvci4gPC9oMz4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICRibXNnID0gXCdGcm9tOiBidWdAd2ViYXNvbmUuY29tXCcuICJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICdTdWJqZWN0OiBVc2VyIFN1Ym1pdCBmcm9tICIKICAgICAgICAgICAgICAgICAgICAgICAnXCcuZ2V0aG9zdG5hbWUoKS4iXFxuXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0Bwcm9kdWN0ID0gV2ViQXNPbmVcJy4iXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0Bjb21wb25lbnQgPSBVc2VyUmVwb3J0XCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAb3Bfc3lzIExpbnV4XCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAcmVwX3BsYXRmb3JtIEFsbFwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQHZlcnNpb24gPSAxLjAuMFwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQFNldmVyaXR5ID0gbm9ybWFsXCcuIlxcblxcblxcbiIuICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICRtc2c7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICcKICAgICAgICAgICAgICAgICAgICAgICAnZmlsZV9wdXRfY29udGVudHMoIi9ob21lL2Ntc25vdy9mb3JtX21zZy50eHQiLCRibXNnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgaWYgKCRidWd6aWxsYVNlcnZlcikge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgMCA9PiBhcnJheSgicGlwZSIsICJyIiksICAvLyBzdGRpbiBpcyBhIHBpcGUgJwogICAgICAgICAgICAgICAgICAgICAgICd0aGF0IHRoZSBjaGlsZCB3aWxsIHJlYWQgZnJvbVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgMSA9PiBhcnJheSgicGlwZSIsICJ3IiksICAvLyBzdGRvdXQgaXMgYSBwaXBlICcKICAgICAgICAgICAgICAgICAgICAgICAndGhhdCB0aGUgY2hpbGQgd2lsbCB3cml0ZSB0b1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgMiA9PiBhcnJheSgiZmlsZSIsICcKICAgICAgICAgICAgICAgICAgICAgICAnIi9ob21lL2Ntc25vdy8vZXJyb3Itb3V0cHV0LnR4dCIsICJ3KyIpIC8vIHN0ZGVyciBpcyBhICcKICAgICAgICAgICAgICAgICAgICAgICAnZmlsZSB0byB3cml0ZSB0b1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgJGNtZCA9ICdzc2ggJy4kYnVnemlsbGFTZXJ2ZXIuJyAiCiAgICAgICAgICAgICAgICAgICAgICAgJyIvaG9tZS9jbXNub3cvd3d3L2hvc3RzL1wnLiRidWd6aWxsYVNlcnZlci5cJy9kb2NzL2VtYWlsX2luLnBsIlwnO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRjbWQsICRkZXNjcmlwdG9yc3BlYywgJwogICAgICAgICAgICAgICAgICAgICAgICckcGlwZXMpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vICRwaXBlcyBub3cgbG9va3MgbGlrZSB0aGlzOlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gMCA9PiB3cml0ZWFibGUgaGFuZGxlIGNvbm5lY3RlZCB0byBjaGlsZCAnCiAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvLyAxID0+IHJlYWRhYmxlIGhhbmRsZSBjb25uZWN0ZWQgdG8gY2hpbGQgJwogICAgICAgICAgICAgICAgICAgICAgICdzdGRvdXRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGZ3cml0ZSgkcGlwZXNbMF0sICRibXNnKTsgLy8gJwogICAgICAgICAgICAgICAgICAgICAgICJmaWxlX2dldF9jb250ZW50cygncGhwOi8vc3RkaW4nKVxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZmNsb3NlKCRwaXBlc1swXSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkb3V0cHV0ID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgI2VjaG8gJG91dHB1dDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGZjbG9zZSgkcGlwZXNbMV0pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gSXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IGNsb3NlIGFueSBwaXBlcyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSBjYWxsaW5nXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvLyBwcm9jX2Nsb3NlIGluIG9yZGVyIHRvIGF2b2lkIGEgZGVhZGxvY2tcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICRyZXR1cm5fdmFsdWUgPSBwcm9jX2Nsb3NlKCRwcm9jZXNzKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICNlY2hvICRyZXR1cm5fdmFsdWU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9ICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIG15bG9nKCRlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgZWNobyAkZTsgLy8gRXJyb3I6IFVuZGVmaW5lZCB2YXJpYWJsZTogdHcuLi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPz5cclxuJywKICAgICAgICAgICAgJ3BocEZpbGVBJzogJycsCiAgICAgICAgICAgICdwaHBGaWxlQic6ICcnLAogICAgICAgICAgICAndGNvZGUnOiAnJywKICAgICAgICAgICAgJ3Zjb2RlJzogJyd9LAogICAgICdlbi1VUyc6IHsnTXlNb2R1bGUnOiAnb25lQ29sdW1uJywKICAgICAgICAgICAgICAgJ05vdGVzJzogJycsCiAgICAgICAgICAgICAgICdTbGlkZVR5cGUnOiAnVGlueU1DRScsCiAgICAgICAgICAgICAgICdhSW1hZ2UnOiAnJywKICAgICAgICAgICAgICAgJ2FMYWJlbCc6ICdodG1sIGZvcm0nLAogICAgICAgICAgICAgICAnYXN2Z2ZpbGUnOiAnPHN2Zz48L3N2Zz4nLAogICAgICAgICAgICAgICAnY29kZSc6ICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3NldF9lcnJvcl9oYW5kbGVyKGZ1bmN0aW9uKCRfZXJybm8sICRlcnJzdHIpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIC8vIENvbnZlcnQgbm90aWNlLCB3YXJuaW5nLCBldGMuIHRvIGVycm9yLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgdGhyb3cgbmV3IEVycm9yKCRlcnJzdHIpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ30pO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyRmaWxlbmFtZSA9ICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvZ29vZ2xlL3JlY2FwdGNoYS1tYXN0ZXIvc3JjL2F1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnaWYgKCFmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICBlY2hvICJUaGUgZmlsZSAkZmlsZW5hbWUgZG9lcyBub3QgZXhpc3QuIDxiciAvPiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ1VzZSBJbnNlcnRNZW51IHRvIGFkZCBwaHAgbGlicmFyaWVzOiAnCiAgICAgICAgICAgICAgICAgICAgICAgJyx0b3BDLHBocF9ncDEiO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIHJlcXVpcmUgJHJlbF9yb290IC4gJwogICAgICAgICAgICAgICAgICAgICAgICInL3BocC9nb29nbGUvcmVjYXB0Y2hhLW1hc3Rlci9zcmMvYXV0b2xvYWQucGhwJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICIgIHJlcXVpcmUgJ19BcmVhXy9waHAvbXlmb3JtLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAvLyBSZWdpc3RlciBBUEkga2V5cyBhdCAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FkbWluXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAkc2l0ZUtleSA9ICcKICAgICAgICAgICAgICAgICAgICAgICAiJzZMZkxHaGtxQUFBQUFJOEY2ZmFDVDRHUFhzVHFGclVqaWZsMzJmY24nO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJyAgJHNlY3JldCA9ICcKICAgICAgICAgICAgICAgICAgICAgICAiJzZMZkxHaGtxQUFBQUFBZGRvMGQ4aEM5c093Q05GQWRHLUp1ay1kaFAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgaWYgKGlzc2V0KCRfUE9TVFsnZy1yZWNhcHRjaGEtcmVzcG9uc2UnXSkpIHtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gVGhlIFBPU1QgZGF0YSBoZXJlIGlzIHVuZmlsdGVyZWQgYmVjYXVzZSB0aGlzICcKICAgICAgICAgICAgICAgICAgICAgICAnaXMgYW4gZXhhbXBsZS5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gSW4gcHJvZHVjdGlvbiwgKmFsd2F5cyogc2FuaXRpc2UgYW5kIHZhbGlkYXRlICcKICAgICAgICAgICAgICAgICAgICAgICAieW91ciBpbnB1dCdcclxuIgogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gdmFyX2V4cG9ydCgkX1BPU1QpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPD9waHBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gSWYgdGhlIGZvcm0gc3VibWlzc2lvbiBpbmNsdWRlcyB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICciZy1jYXB0Y2hhLXJlc3BvbnNlIiBmaWVsZFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIHNlcnZpY2UgdXNpbmcgeW91ciAnCiAgICAgICAgICAgICAgICAgICAgICAgJ3NlY3JldFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkcmVjYXB0Y2hhID0gbmV3ICcKICAgICAgICAgICAgICAgICAgICAgICAnXFxSZUNhcHRjaGFcXFJlQ2FwdGNoYSgkc2VjcmV0KTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gSWYgZmlsZV9nZXRfY29udGVudHMoKSBpcyBsb2NrZWQgZG93biBvbiB5b3VyICcKICAgICAgICAgICAgICAgICAgICAgICAnUEhQIGluc3RhbGxhdGlvbiB0byBkaXNhbGxvd1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBpdHMgdXNlIHdpdGggVVJMcywgdGhlbiB5b3UgY2FuIHVzZSB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGl2ZSByZXF1ZXN0IG1ldGhvZCBpbnN0ZWFkLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyBUaGlzIG1ha2VzIHVzZSBvZiBmc29ja29wZW4oKSBpbnN0ZWFkLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyAgJHJlY2FwdGNoYSA9IG5ldyAnCiAgICAgICAgICAgICAgICAgICAgICAgJ1xcUmVDYXB0Y2hhXFxSZUNhcHRjaGEoJHNlY3JldCwgbmV3ICcKICAgICAgICAgICAgICAgICAgICAgICAnXFxSZUNhcHRjaGFcXFJlcXVlc3RNZXRob2RcXFNvY2tldFBvc3QoKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIE1ha2UgdGhlIGNhbGwgdG8gdmVyaWZ5IHRoZSByZXNwb25zZSBhbmQgYWxzbyAnCiAgICAgICAgICAgICAgICAgICAgICAgInBhc3MgdGhlIHVzZXIncyBJUCBhZGRyZXNzXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgICRyZXNwID0gJwogICAgICAgICAgICAgICAgICAgICAgICIkcmVjYXB0Y2hhLT5zZXRFeHBlY3RlZEhvc3RuYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKVxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIC0+dmVyaWZ5KCRfUE9TVFsnZy1yZWNhcHRjaGEtcmVzcG9uc2UnXSwgIgogICAgICAgICAgICAgICAgICAgICAgICIkX1NFUlZFUlsnUkVNT1RFX0FERFInXSk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAnICAgIGlmICgkcmVzcC0+aXNTdWNjZXNzKCkpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgYSBzdWNjZXNzLCBwcm9jZXNzIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICBwcm9jX2Zvcm0oJHJlbF9yb290KTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgICAvL3Zhcl9leHBvcnQoJHJlc3ApO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgPGgxPiBUaGFua3MgZm9yIHlvdXIgc3VibWl0ISBXZSB3aWxsIGNvbnRhY3QgeW91ICcKICAgICAgICAgICAgICAgICAgICAgICAnc2hvcnRseSEgPC9oMT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9IGVsc2Uge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgIC8vIElmIGl0J3Mgbm90IHN1Y2Nlc3NmdWwsIHRoZW4gb25lIG9yIG1vcmUgIgogICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBjb2RlcyB3aWxsIGJlIHJldHVybmVkLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnPGgyPlNvbWV0aGluZyB3ZW50IHdyb25nPC9oMj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8a2JkPjxwcmU+PD9waHAgdmFyX2V4cG9ydCgkcmVzcCk7Pz48L3ByZT48L2tiZD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8cD5DaGVjayB0aGUgZXJyb3IgY29kZSByZWZlcmVuY2UgYXQgPGtiZD48YSAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2hyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3JlY2FwdGNoYS9kb2NzL3ZlcmlmeSNlcnJvci1jb2RlLXJlZmVyZW5jZSI+aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcmVjYXB0Y2hhL2RvY3MvdmVyaWZ5I2Vycm9yLWNvZGUtcmVmZXJlbmNlPC9hPjwva2JkPi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEVycm9yIGNvZGUgJwogICAgICAgICAgICAgICAgICAgICAgICc8a2JkPm1pc3NpbmctaW5wdXQtcmVzcG9uc2U8L2tiZD4gbWF5IG1lYW4gdGhlIHVzZXIgJwogICAgICAgICAgICAgICAgICAgICAgICJqdXN0IGRpZG4ndCBjb21wbGV0ZSB0aGUgcmVDQVBUQ0hBLjwvcD5cclxuIgogICAgICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9IFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICc/PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgaWQ9Il9NSURYX2xvYWRlciIgY2xhc3M9Im14LWF1dG8gcC00Ij48L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8Zm9ybSBhY3Rpb249IiMiIG1ldGhvZD0icG9zdCIgaWQ9ImRlbW8tZm9ybSI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBjbGFzcz0iZm9ybS1jb250cm9sIiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ25hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iWW91ciBlbWFpbCI+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8aW5wdXQgdHlwZT0iZW1haWwiIGNsYXNzPSJmb3JtLWNvbnRyb2wiICcKICAgICAgICAgICAgICAgICAgICAgICAnbmFtZT0icmVxdXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJZb3VyIG5hbWUiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiICcKICAgICAgICAgICAgICAgICAgICAgICAnbmFtZT0ic3ViamVjdCIgcGxhY2Vob2xkZXI9IlN1YmplY3QiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgPC9kaXY+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgICA8bGFiZWwgZm9yPSJleGFtcGxlRm9ybUNvbnRyb2xUZXh0YXJlYTEiICcKICAgICAgICAgICAgICAgICAgICAgICAnPlF1ZXN0aW9ucyBvciBjb21tZW50czwvbGFiZWw+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIDx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJtZXNzYWdlIiAnCiAgICAgICAgICAgICAgICAgICAgICAgJ3Jvd3M9IjMiPjwvdGV4dGFyZWE+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICA8L2Rpdj5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iZy1yZWNhcHRjaGEgYnRuICcKICAgICAgICAgICAgICAgICAgICAgICAnYnRuLXByaW1hcnkgYnRuLWJsb2NrIiBkYXRhLXNpdGVrZXk9Ijw/cGhwIGVjaG8gJwogICAgICAgICAgICAgICAgICAgICAgICckc2l0ZUtleTsgPz4iICcKICAgICAgICAgICAgICAgICAgICAgICAiZGF0YS1jYWxsYmFjaz0nb25TdWJtaXQnPlN1Ym1pdDwvYnV0dG9uPlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgJzwvZm9ybT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgJwogICAgICAgICAgICAgICAgICAgICAgICdzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcz9obD08P3BocCAnCiAgICAgICAgICAgICAgICAgICAgICAgJ2VjaG8gJENNU19sYzsgPz4iIGFzeW5jIGRlZmVyPjwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGZ1bmN0aW9uIG9uU3VibWl0KHRva2VuKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZW1vLWZvcm0iKS5zdHlsZS5kaXNwbGF5ICcKICAgICAgICAgICAgICAgICAgICAgICAnPSAibm9uZSI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgICcKICAgICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9NSURYX2xvYWRlciIpLmNsYXNzTGlzdC5hZGQoXCdsb2FkZXJcJyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZW1vLWZvcm0iKS5zdWJtaXQoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8L3NjcmlwdD5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICc8P3BocFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJyAgfSBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICd9IGNhdGNoIChUaHJvd2FibGUgJGUpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIG15bG9nKCRlKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICcgIGVjaG8gJGU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicsCiAgICAgICAgICAgICAgICdjb2RlSW5jJzogJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc3R5bGVJbmMgdGFnIHdpbGwgYmUgYWRkIHRvIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGUgY2xvc2luZyBoZWFkIHRhZ3NcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZUluYz5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8IS0tIHN0eWxlSW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnI19JRF8gLmxvYWRlciB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBib3JkZXI6IDE2cHggc29saWQgI2YzZjNmMzsgLyogTGlnaHQgZ3JleSAqL1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgYm9yZGVyLXRvcDogMTZweCBzb2xpZCAjMzQ5OGRiOyAvKiBCbHVlICovXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICB3aWR0aDogMTIwcHg7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBoZWlnaHQ6IDEyMHB4O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnQGtleWZyYW1lcyBzcGluIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3R5bGU+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8L3N0eWxlSW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBjb250ZW50IGJldHdlZW4gc2NyaXB0SW5jIHRhZyB3aWxsIGJlIGFkZCB0byB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgdGhlIGNsb3NpbmcgYm9keSB0YWdzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0SW5jPlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhLS0gc2NyaXB0SW5jIEluY2x1ZGVkIGZyb20gX0lEXyAtLT5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICc8c2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc2NyaXB0PlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHRJbmM+XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnIyBFbmRcclxuJywKICAgICAgICAgICAgICAgJ2NvbEJHSW1hZ2UnOiAnJywKICAgICAgICAgICAgICAgJ2NvbEJHSW1hZ2VXcmFwJzogJycsCiAgICAgICAgICAgICAgICdjb21wb3NlckpTT04nOiAnJywKICAgICAgICAgICAgICAgJ2R5bmFtaWNCbG9jayc6ICcnLAogICAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKICAgICAgICAgICAgICAgJ21vZFZhcic6IHsnVmFyTGlzdCc6IHsnQWNjb3JkaW9uQ2FyZEJvZHlDbGFzcyc6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY2NvcmRpb25DYXJkQ2xhc3MnOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjb3JkaW9uQ2FyZEhlYWRlckNsYXNzJzogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FjY29yZGlvbk9wZW5GaXJzdCc6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0R5bmFtaWNCbG9jayc6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpLUNTU1Zhcic6ICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgY29tbWVudCBmcm9tICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uZUNvbHVtblxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmlnU2NlZW5Ub3BQYWRkaW5nPTUwXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNaWRTY3JlZW5Ub3BQYWRkaW5nPTIwXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTbWFsbFNjcmVlblRvcFBhZGRpbmc9MTBcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JpZ1NjZWVuQm90dG9tUGFkZGluZz01MFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTWlkU2NyZWVuQm90dG9tUGFkZGluZz0yMFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU21hbGxTY3JlZW5Cb3R0b21QYWRkaW5nPTEwXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JpZ1NjZWVuTGVmdFJpZ2h0UGFkZGluZz0yMFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTWlkU2NyZWVuTGVmdFJpZ2h0UGFkZGluZz0xNVxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU21hbGxTY3JlZW5MZWZ0UmlnaHRQYWRkaW5nPTEwXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JpZ1NjZWVuVG9wTWFyZ2luPTBcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01pZFNjcmVlblRvcE1hcmdpbj0wXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTbWFsbFNjcmVlblRvcE1hcmdpbj0wXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCaWdTY2VlbkJvdHRvbU1hcmdpbj0wXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNaWRTY3JlZW5Cb3R0b21NYXJnaW49MFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU21hbGxTY3JlZW5Cb3R0b21NYXJnaW49MFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgaWQgZm9udCBjb2xvclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRm9udENvbG9yPV9Db2xvckFfXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgbW9kdWxlIGJhY2tncm91bmRcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01CYWNrZ3JvdW5kPVxuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGktQ292ZXJCYWNrZ3JvdW5kJzogJyA8c3R5bGU+ICNfSURfICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3sgYmFja2dyb3VuZDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX1RpbnRCR18gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXJsKF9DSU1BR0VfKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduby1yZXBlYXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyIGNlbnRlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaXhlZDsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvdmVyOyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbW96LWJhY2tncm91bmQtc2l6ZTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY292ZXI7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1vLWJhY2tncm91bmQtc2l6ZTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY292ZXI7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtc2l6ZTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY292ZXI7IH0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT4gJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGktQ292ZXJCYWNrZ3JvdW5kU1ZHJzogJyA8c3R5bGU+IC8qICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Njcm9sbCB3aWxsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXkgd2l0aCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50ICAqLyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjX0lEXyB7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQ6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19UaW50QkdfICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybChfQ0lNQUdFXykgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8tcmVwZWF0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbnRlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXI7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtc2l6ZTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY292ZXI7IH1cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8qIHNjcm9sbCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWxsIGZpeGVkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKi8gXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvKiAjX0lEXyB7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQ6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19UaW50QkdfICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybChfQ0lNQUdFXykgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8tcmVwZWF0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NlbnRlciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZW50ZXIgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZml4ZWQ7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtc2l6ZTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY292ZXI7IH0gKi8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpLUVuZFRhZ0NvZGUnOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGktR1Bvc3RJbmMnOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGktSGVscCc6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aS1Qb3N0SW5jJzogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpLVByZUluYyc6ICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzdHlsZT5cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNfSURfICB7IF9Gb250Q29sb3JfICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19NQmFja2dyb3VuZF8gfVxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI19JRF8ge3Bvc2l0aW9uOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxhdGl2ZTt9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5fSURYXyB7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctYm90dG9tOiAxNXB4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI19JRF8gLmhjb250ZW50IHtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgcG9zaXRpb246IGFic29sdXRlO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICB0b3A6IDUwJTtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgbGVmdDogNTAlO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICB0cmFuc2Zvcm06ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNfSURfIC5jdGNvbnRlbnQge1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBwb3NpdGlvbjogYWJzb2x1dGU7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIHRvcDogNTAlO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBsZWZ0OiA1MCU7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIHRyYW5zZm9ybTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNsYXRlKC01MCUsIC01MCUpO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBiYWNrZ3JvdW5kLWNvbG9yOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZ2JhKDAsIDAsIDAsIC4yNSk7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICBjb2xvcjogd2hpdGU7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIHBhZGRpbmc6IDIwcHg7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNfSURfIC52Y29udGFpbmVyIHtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgaGVpZ2h0OiA1MHZoO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBwb3NpdGlvbjogcmVsYXRpdmU7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIG92ZXJmbG93OiBoaWRkZW47XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAbWVkaWEobWluLXdpZHRoOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc2MDBweCkge1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgI19JRF8gLnZjb250YWluZXIgeyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQ6IDEwMHZoOyB9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8qICNfSURfIC5yb3cgPiBkaXZ7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmc6IDEwcHg7IH0gKi9cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8qIFNtYWxsIERldmljZXMsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RhYmxldHMgZnJvbSBvbmVDb2x1bW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKi9cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKG1heC13aWR0aCA6IDU3NnB4KSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7I19JRF8gLnJvdyB7IHBhZGRpbmc6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX1NtYWxsU2NyZWVuTGVmdFJpZ2h0UGFkZGluZ19weDsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSAjX0lEXyB7IHBhZGRpbmctdG9wOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfU21hbGxTY3JlZW5Ub3BQYWRkaW5nX3B4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nLWJvdHRvbTogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX1NtYWxsU2NyZWVuQm90dG9tUGFkZGluZ19weDsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFyZ2luLXRvcDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX1NtYWxsU2NyZWVuVG9wTWFyZ2luX3B4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJnaW4tYm90dG9tOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfU21hbGxTY3JlZW5Cb3R0b21NYXJnaW5fcHg7fSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvKiBNZWRpdW0gRGV2aWNlcywgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVza3RvcHMgKi8gQG1lZGlhIG9ubHkgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuIGFuZCAobWluLXdpZHRoIDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNzY4cHgpIHsjX0lEXyAucm93IHsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZzowICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfTWlkU2NyZWVuTGVmdFJpZ2h0UGFkZGluZ19weDsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSAjX0lEXyB7IHBhZGRpbmctdG9wOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfTWlkU2NyZWVuVG9wUGFkZGluZ19weDsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZy1ib3R0b206ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19NaWRTY3JlZW5Cb3R0b21QYWRkaW5nX3B4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJnaW4tdG9wOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfTWlkU2NyZWVuVG9wTWFyZ2luX3B4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJnaW4tYm90dG9tOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfTWlkU2NyZWVuQm90dG9tTWFyZ2luX3B4O319XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvKiBMYXJnZSBEZXZpY2VzLCBXaWRlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NjcmVlbnMgKi8gQG1lZGlhIG9ubHkgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuIGFuZCAobWluLXdpZHRoIDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOTkycHgpIHsjX0lEXyAucm93IHsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZzogMCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfQmlnU2NlZW5MZWZ0UmlnaHRQYWRkaW5nX3B4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9ICNfSURfIHsgcGFkZGluZy10b3A6ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19CaWdTY2VlblRvcFBhZGRpbmdfcHg7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctYm90dG9tOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfQmlnU2NlZW5Cb3R0b21QYWRkaW5nX3B4OyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXJnaW4tdG9wOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfQmlnU2NlZW5Ub3BNYXJnaW5fcHg7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmdpbi1ib3R0b206ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19CaWdTY2VlbkJvdHRvbU1hcmdpbl9weDt9fVxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011bHRpLVByZVRhZ0NvZGUnOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGktVmlkZW9CYWNrZ3JvdW5kJzogJ1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHN0eWxlPlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLmhlYWRlci11bml0X0lEXyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yaWdodDpub25lOyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItbGVmdDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9uZTsgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb246ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGF0aXZlOyB9XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjdmlkZW8tY29udGFpbmVyX0lEXyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIHBvc2l0aW9uOiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhYnNvbHV0ZTtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgaGVpZ2h0OiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxMDAlO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICB3aWR0aDogJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTAwJTtcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgdG9wOiAwO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBsZWZ0OiAwO1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyN2aWRlby1jb250YWluZXJfSURfICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpZGVve1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBvYmplY3QtZml0OiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3ZlcjsgXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9IFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zdHlsZT5cbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dHJhQ2xhc3MnOiAnJ319LAogICAgICAgICAgICAgICAncGhwRmlsZSc6ICc8P3BocCAvKiBfQXJlYV8vcGhwL215Zm9ybS5waHAgKi8gIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy8vIGZvciBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBteWxvZygkbXNnKSB7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAkaCA9IGZvcGVuKCcvaG9tZS9jbXNub3cvYWNjZXNzX2xvZycsICdhJyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmd3JpdGUoJGgsIHRpbWUoKSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmd3JpdGUoJGgsICRtc2cpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZmNsb3NlKCRoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICd9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24gcHJvY19mb3JtKCRyZWxfcm9vdCkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgdHJ5IHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9yZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiJy8uLi8uLi9waHAvQXNPbmUvbWlzYy5waHAnO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICByZXF1aXJlICRyZWxfcm9vdCAuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAiJy9waHAvUEhQTWFpbGVyL1BIUE1haWxlckF1dG9sb2FkLnBocCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIHRvIGRpc2FibGUgYnkgYXNzaWduIGFuIGVtcHR5IHN0cmluZ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkYnVnemlsbGFTZXJ2ZXIgPSAnYnVnLndlYmNtcy1hLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFNNVFAgPSAnc210cC5iaXptYWlsLnlhaG9vLmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFVzZXIgPSAnbm8tcmVwbHlAYXNvbmVsaXN0LmNvbSc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRlbWFpbFBhc3N3ZCA9ICd1eXF2Y3ZsY2tuZXBkc2lyJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJG5vdGlmeUVtYWlsID0gJ2luZm9Ad2ViYXNvbmUuY29tJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9teWxvZygiY2FsbCBwcm9jX2Zvcm0iKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy8kYXNvbmVGaWxlID0gbmV3IEFzT25lRmlsZSgnX0lEWF8nLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Fzb25lUGF0aCk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsID0gbmV3IFBIUE1haWxlcjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9UZWxsIFBIUE1haWxlciB0byB1c2UgU01UUFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1RlbGwgUEhQTWFpbGVyIHRvIHVzZSBTTVRQXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRtYWlsLT5pc1NNVFAoKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9FbmFibGUgU01UUCBkZWJ1Z2dpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy8gMCA9IG9mZiAoZm9yIHByb2R1Y3Rpb24gdXNlKVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvLyAxID0gY2xpZW50IG1lc3NhZ2VzXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vIDIgPSBjbGllbnQgYW5kIHNlcnZlciBtZXNzYWdlc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+U01UUERlYnVnID0gMDtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9Bc2sgZm9yIEhUTUwtZnJpZW5kbHkgZGVidWcgb3V0cHV0XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5EZWJ1Z291dHB1dCA9ICdodG1sJztcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9TZXQgdGhlIGhvc3RuYW1lIG9mIHRoZSBtYWlsIHNlcnZlclxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+SG9zdCA9ICRlbWFpbFNNVFA7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBTTVRQIHBvcnQgbnVtYmVyIC0gbGlrZWx5IHRvIGJlIDI1LCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzQ2NSBvciA1ODdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPlBvcnQgPSA0NjU7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5TTVRQU2VjdXJlID0gJ3NzbCc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vV2hldGhlciB0byB1c2UgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+U01UUEF1dGggPSB0cnVlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1VzZXJuYW1lIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+VXNlcm5hbWUgPSAkZW1haWxVc2VyO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAvL1Bhc3N3b3JkIHRvIHVzZSBmb3IgU01UUCBhdXRoZW50aWNhdGlvblxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAkbWFpbC0+UGFzc3dvcmQgPSAkZW1haWxQYXNzd2Q7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IGZyb21cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1haWwtPnNldEZyb20oJGVtYWlsVXNlciwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICIkX1NFUlZFUlsnSFRUUF9IT1NUJ10uJyBTdWJtaXQnKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9TZXQgYW4gYWx0ZXJuYXRpdmUgcmVwbHktdG8gYWRkcmVzc1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbWFpbC0+YWRkUmVwbHlUbygnRG8gbm90IHJlcGx5JywgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHdobyB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IHRvXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5hZGRBZGRyZXNzKCRub3RpZnlFbWFpbCwgJ0RvIG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcGx5Jyk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIC8vU2V0IHRoZSBzdWJqZWN0IGxpbmVcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgLy9zZW5kIGVtYWlsXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICRtYWlsLT5TdWJqZWN0ID0gJyhEbyBub3QgcmVwbHkpIGZyb20gIgogICAgICAgICAgICAgICAgICAgICAgICAgICInLmdldGhvc3RuYW1lKCk7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIC8vJG1zZyA9ICc8cD5XZWJzaXRlOiAlczwvcD4nO1xyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAkbXNnID0gJyc7XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ3JlcXVzZXJuYW1lJ10pKSAkbXNnIC49ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXCdGcm9tOiAgXCcuJF9SRVFVRVNUW1wncmVxdXNlcm5hbWVcJ10uIlxcbiI7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ2VtYWlsJ10pKSAkbXNnIC49ICdFbWFpbDogIgogICAgICAgICAgICAgICAgICAgICAgICAgICdcJy4kX1JFUVVFU1RbXCdlbWFpbFwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnc3ViamVjdCddKSkgJG1zZyAuPSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wnU3ViamVjdDogXCcuJF9SRVFVRVNUW1wnc3ViamVjdFwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgLy9pZiAoaXNzZXQoJF9SRVFVRVNUWydjaHVyY2h3ZWJzaXRlJ10pKSAkbXNnICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiLj0gJ2NodXJjaHdlYnNpdGU6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXCcuJF9SRVFVRVNUW1wnY2h1cmNod2Vic2l0ZVwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJG1zZyAuPSAiTWVzc2FnZTpcXG4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydtZXNzYWdlJ10pKSAkbXNnIC49ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnJF9SRVFVRVNUW1wnbWVzc2FnZVwnXS4iXFxuIjtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgJG1haWwtPm1zZ0hUTUwoJzxwcmU+Jy4kbXNnLic8L3ByZT4nKTtcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaWYgKCRtYWlsLT5zZW5kKCkpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgfSBlbHNlIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBlY2hvICI8aDM+IFN5c3RlbSBFcnJvci4gPC9oMz4iO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICRibXNnID0gXCdGcm9tOiBidWdAd2ViYXNvbmUuY29tXCcuICJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICdTdWJqZWN0OiBVc2VyIFN1Ym1pdCBmcm9tICIKICAgICAgICAgICAgICAgICAgICAgICAgICAnXCcuZ2V0aG9zdG5hbWUoKS4iXFxuXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0Bwcm9kdWN0ID0gV2ViQXNPbmVcJy4iXFxuIi5cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICBcJ0Bjb21wb25lbnQgPSBVc2VyUmVwb3J0XCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAb3Bfc3lzIExpbnV4XCcuIlxcbiIuXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgXCdAcmVwX3BsYXRmb3JtIEFsbFwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQHZlcnNpb24gPSAxLjAuMFwnLiJcXG4iLlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIFwnQFNldmVyaXR5ID0gbm9ybWFsXCcuIlxcblxcblxcbiIuICAgIFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICRtc2c7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZV9wdXRfY29udGVudHMoIi9ob21lL2Ntc25vdy9mb3JtX21zZy50eHQiLCRibXNnKTtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaWYgKCRidWd6aWxsYVNlcnZlcikge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KFxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgMCA9PiBhcnJheSgicGlwZSIsICJyIiksICAvLyBzdGRpbiBpcyBhICcKICAgICAgICAgICAgICAgICAgICAgICAgICAncGlwZSB0aGF0IHRoZSBjaGlsZCB3aWxsIHJlYWQgZnJvbVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgMSA9PiBhcnJheSgicGlwZSIsICJ3IiksICAvLyBzdGRvdXQgaXMgYSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpcGUgdGhhdCB0aGUgY2hpbGQgd2lsbCB3cml0ZSB0b1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgMiA9PiBhcnJheSgiZmlsZSIsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnIi9ob21lL2Ntc25vdy8vZXJyb3Itb3V0cHV0LnR4dCIsICJ3KyIpIC8vIHN0ZGVyciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIGEgZmlsZSB0byB3cml0ZSB0b1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgJGNtZCA9ICdzc2ggJy4kYnVnemlsbGFTZXJ2ZXIuJyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyIvaG9tZS9jbXNub3cvd3d3L2hvc3RzL1wnLiRidWd6aWxsYVNlcnZlci5cJy9kb2NzL2VtYWlsX2luLnBsIlwnO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRjbWQsICRkZXNjcmlwdG9yc3BlYywgJwogICAgICAgICAgICAgICAgICAgICAgICAgICckcGlwZXMpO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHtcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vICRwaXBlcyBub3cgbG9va3MgbGlrZSB0aGlzOlxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgLy8gMCA9PiB3cml0ZWFibGUgaGFuZGxlIGNvbm5lY3RlZCB0byBjaGlsZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvLyAxID0+IHJlYWRhYmxlIGhhbmRsZSBjb25uZWN0ZWQgdG8gY2hpbGQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRvdXRcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIGZ3cml0ZSgkcGlwZXNbMF0sICRibXNnKTsgLy8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlX2dldF9jb250ZW50cygncGhwOi8vc3RkaW4nKVxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZmNsb3NlKCRwaXBlc1swXSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkb3V0cHV0ID0gJwogICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1sxXSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAjZWNobyAkb3V0cHV0O1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgZmNsb3NlKCRwaXBlc1sxXSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB5b3UgY2xvc2UgYW55IHBpcGVzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIGNhbGxpbmdcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIC8vIHByb2NfY2xvc2UgaW4gb3JkZXIgdG8gYXZvaWQgYSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYWRsb2NrXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAkcmV0dXJuX3ZhbHVlID0gcHJvY19jbG9zZSgkcHJvY2Vzcyk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAjZWNobyAkcmV0dXJuX3ZhbHVlO1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIH1cclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgfSAgICBcclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICcgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkge1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBteWxvZygkZSk7XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGVjaG8gJGU7IC8vIEVycm9yOiBVbmRlZmluZWQgdmFyaWFibGU6IHR3Li4uXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnICB9XHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnXHJcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAnfVxyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJz8+XHJcbicsCiAgICAgICAgICAgICAgICdwaHBGaWxlQSc6ICcnLAogICAgICAgICAgICAgICAncGhwRmlsZUInOiAnJywKICAgICAgICAgICAgICAgJ3Rjb2RlJzogJycsCiAgICAgICAgICAgICAgICd2Y29kZSc6ICcnfX19Cg==