YjBWSU0gNy40AAAAABAAAFP17FTpDnoAZFsAAGFkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABibVRlc3RTdGF0aW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfmFkbWluL09OTGFiVGVzdC9UZXN0T04vdGVzdHMvZmxvd1RQL2Zsb3dUUC5weQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1dGYtOA0AMzIxMAAAAAAjIiEgExJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRwBgB/AAAAAgAAAAAAAABmAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAFQAAAAAAAAAZwAAAAAAAAABAAAAAAAAAAUAAAAAAAAASwAAAAAAAAC7AAAAAAAAAAEAAAAAAAAABAAAAAAAAAAvAAAAAAAAAAYBAAAAAAAAAQAAAAAAAAAHAAAAAAAAAB8AAAAAAAAANgEAAAAAAAABAAAAAAAAAAMAAAAAAAAAMwAAAAAAAABUAQAAAAAAAAEAAAAAAAAA+/////////9TAAAAAAAAAGcAAAAAAAAAAQAAAAAAAAD6/////////0oAAAAAAAAAuwAAAAAAAAABAAAAAAAAAPn/////////TQAAAAAAAAAGAQAAAAAAAAEAAAAAAAAA+P////////80AAAAAAAAAFQBAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhZAAACwAAAL8BAAAAEAAAZgAAAAAAAADjDwAA4Q8AAKoPAACoDwAAlQ8AAJQPAACJDwAAeg8AAHkPAAB4DwAAag8AAGkPAABPDwAANQ8AADQPAADrDgAAnw4AAE4OAABFDgAABA4AAMANAACnDQAAkA0AAI8NAACODQAAaA0AACwNAAD3DAAAwQwAAIgMAABWDAAAIQwAAPQLAAC8CwAAggsAAEQLAAA7CwAA/woAAP4KAADPCgAApQoAAH8KAAA/CgAAPgoAABgKAADWCQAAmQkAAG0JAAA8CQAAOwkAADoJAAAZCQAA7QgAALwIAACoCAAAewgAAFMIAAAaCAAAGQgAAPsHAAD6BwAA3AcAAKgHAAB+BwAAQgcAAAsHAAACBwAAowYAAIYGAABQBgAANwYAACYGAADjBQAAwwUAAHUFAAA/BQAAPgUAACwFAAABBQAA2gQAAJkEAACYBAAAlwQAAGUEAAA6BAAAMQQAAAQEAADNAwAAzAMAAJwDAABVAwAAVAMAAB4DAADlAgAAqAIAAIQCAABNAgAATAIAABoCAADdAQAA3AEAAL8BAAAAAAAAAAAAAAAAAAAAAAAgICAgZGVmIENBU0UyKCBzZWxmLCBtYWluICk6AAAgICAgICAgICNjbGkxID0gbWFpbi5PTk9TMWNsaS5zdGFydE9ub3NDbGkoIG5vZGU9T05PU0lwWzFdICkAICAgICAgICAjbWFpbi5zdGVwKCAiU2V0IGNlbGwgZm9yIE9OT1MgY2xpIGVudiIgKQAAICAgICAgICB2ZXJpZnlDZWxsUmVzdWx0ID0gbWFpbi5PTk9TYmVuY2gudmVyaWZ5Q2VsbCgpACAgICAgICAgbWFpbi5zdGVwKCAidmVyaWZ5IGNlbGxzIiApACAgICAgICAgY2VsbEFwcGx5UmVzdWx0ID0gbWFpbi5PTk9TYmVuY2guc2V0Q2VsbCggY2VsbE5hbWUgKQAgICAgICAgIG1haW4uc3RlcCggIkFwcGx5aW5nIGNlbGwgZmlsZSB0byBlbnZpcm9ubWVudCIgKQAgICAgICAgIGNlbGxOYW1lID0gbWFpbi5wYXJhbXNbICdFTlYnIF1bICdjZWxsTmFtZScgXQAAICAgICAgICAjaW5zdGFsbDFSZXN1bHQgPSBtYWluLk9OT1NiZW5jaC5vbm9zSW5zdGFsbCggbm9kZT1PTk9TSXBbMV0gKQAgICAgICAgICNtYWluLnN0ZXAoICJJbnN0YWxsaW5nIE9OT1MgcGFja2FnZSIgKQAAICAgICAgICBwYWNrYWdlUmVzdWx0ID0gbWFpbi5PTk9TYmVuY2gub25vc1BhY2thZ2UoKSAgACAgICAgICAgbWFpbi5zdGVwKCAiQ3JlYXRpbmcgT05PUyBwYWNrYWdlIiApACAgICAgICAgACAgICAgICAgI21haW4uT05PUzFjbGkuc2V0Q2VsbCggY2VsbE5hbWUgKQAgICAgICAgICNtYWluLnN0ZXAoICJTZXQgY2VsbCBmb3IgT05PUyBjbGkgZW52IiApAAAAICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oICJTa2lwcGVkIGdpdCBjaGVja291dCBhbmQgcHVsbCIgKQAgICAgICAgICAgICAgICAgcHVsbFJlc3VsdCA9IG1haW4uVFJVRQAgICAgICAgICAgICAgICAgY2hlY2tvdXRSZXN1bHQgPSBtYWluLlRSVUUAICAgICAgICAgICAgZWxzZToAACAgICAgICAgICAgICAgICBwdWxsUmVzdWx0ID0gbWFpbi5PTk9TYmVuY2guZ2l0UHVsbCgpACAgICAgICAgICAgICAgICBjaGVja291dFJlc3VsdCA9IG1haW4uT05PU2JlbmNoLmdpdENoZWNrb3V0KCBjaGVja291dEJyYW5jaCApACAgICAgICAgICAgIGlmIGdpdFB1bGwgPT0gJ29uJzoAICAgICAgICAgICAgbWFpbi5zdGVwKCAiR2l0IGNoZWNrb3V0IGFuZCBwdWxsICIgKyBjaGVja291dEJyYW5jaCApACAgICAgICAgICAgICNnaXQAICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgIG12blJlc3VsdCA9IG1haW4uT05PU2JlbmNoLmNsZWFuSW5zdGFsbCgpACAgICAgICAgaWYgc2tpcE12biAhPSAieWVzIjoAICAgICAgICAjbXZuIGNsZWFuIGluc3RhbGwsIGZvciBkZWJ1Z2dpbmcgc2V0IHBhcmFtICdza2lwQ2xlYW5JbnN0YWxsJyB0byB5ZXMgdG8gc3BlZWQgdXAgdGVzdAAgICAgICAgIAAgICAgICAgICMgICAgbWFpbi5PTk9TYmVuY2gub25vc1VuaW5zdGFsbCggT05PU0lwW2ldICkAICAgICAgICAjICAgIG1haW4ubG9nLmluZm8oIiBVbmluc3RhbGxpbmcgT05PUyAiICsgc3RyKGkpICkAICAgICAgICAjZm9yIGkgaW4gcmFuZ2UoMSwgbWF4Tm9kZXMgKyAxKToAICAgICAgICAjbWFpbi5sb2cuc3RlcCggIkNsZWFuaW5nIEVudmlvcm5tZW50Li4uIiApACAgICAgICAgI1VuaW5zdGFsbCBldmVyeXdoZXJlAAAgICAgICAgIG1haW4ubG9nLmluZm8oY2VsbElwKQAAICAgICAgICBhKEJFTkNISXAsY2VsbE5hbWUsTU4xSXAsc3RyKEZlYXR1cmVzKSwgKmNlbGxJcCkAICAgICAgICAgICAgY2VsbElwLmFwcGVuZChPTk9TSXBbbm9kZV0pACAgICAgICAgZm9yIG5vZGUgaW4gcmFuZ2UgKDEsIG1heE5vZGVzICsgMSk6ACAgICAgICAgY2VsbElwID0gW10AICAgICAgICBleGVjICJhID0gbWFpbi5PTk9TYmVuY2guY3JlYXRlQ2VsbEZpbGUiACAgICAgICAgbWFpbi5sb2cuaW5mbygiQ3JlYXRpbmcgY2VsbCBmaWxlIikAICAgICAgICAjY29uc3RydWN0IHRoZSBjZWxsIGZpbGUAAAAgICAgICAgICAgICBtYWluLk9OT1NiZW5jaC5vbm9zRGllKE9OT1NJcFtub2RlXSkAICAgICAgICBmb3Igbm9kZSBpbiByYW5nZSgxLCBtYXhOb2RlcyArIDEpOgAgICAgICAgIG1haW4ubG9nLnN0ZXAoImJlZm9yZSBpbml0aWF0aW5nIGVudmlvcm5tZW50IHNldHVwIikAICAgICAgICBtYWluLmxvZy5zdGVwKCJTYWZldHkgY2hlY2ssIGtpbGxpbmcgYWxsIE9OT1MgcHJvY2Vzc2VzIikAICAgICAgICAja2lsbCBvZmYgYWxsIG9ub3MgcHJvY2Vzc2VzIAAAICAgICAgICAgICAgT05PU0lwLmFwcGVuZChtYWluLnBhcmFtc1sgJ0NUUkwnIF1bIGlwU3RyaW5nIF0pICAgACAgICAgICAgICAgIGlwU3RyaW5nID0gJ2lwJyArIHN0cihpKSAAICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBtYXhOb2RlcyArIDEpOiAAICAgICAgICAjUG9wdWxhdGUgT05PU0lwIHdpdGggaXBzIGZyb20gcGFyYW1zIAAAICAgICAgICBtYWluLk9OT1NiZW5jaC5oYW5kbGUuc2VuZGxpbmUoImV4cG9ydCBURVJNPXZ0MTAwIikAICAgICAgICAAICAgICAgICBza2lwTXZuID0gbWFpbi5wYXJhbXNbICdURVNUJyBdWyAnc2tpcENsZWFuSW5zdGFsbCcgXQAgICAgICAgIEZlYXR1cmVzID0gbWFpbi5wYXJhbXNbICdFTlYnIF1bICdjZWxsRmVhdHVyZXMnIF0AICAgICAgICBtYXhOb2RlcyA9IGludChtYWluLnBhcmFtc1sgJ2F2YWlsYWJsZU5vZGVzJyBdKQAgICAgICAgIE1OMUlwID0gbWFpbi5wYXJhbXNbICdNTicgXVsgJ2lwMScgXQAgICAgICAgIEJFTkNIVXNlciA9IG1haW4ucGFyYW1zWyAnQkVOQ0gnIF1bICd1c2VyJyBdACAgICAgICAgQkVOQ0hJcCA9IG1haW4ucGFyYW1zWyAnQkVOQ0gnIF1bICdpcDEnIF0AICAgICAgICBGZWF0dXJlcz0gbWFpbi5wYXJhbXNbICdFTlYnIF1bICdjZWxsRmVhdHVyZXMnIF0AICAgICAgICBjZWxsTmFtZSA9IG1haW4ucGFyYW1zWyAnRU5WJyBdWyAnY2VsbE5hbWUnIF0AICAgICAgICBnaXRQdWxsID0gbWFpbi5wYXJhbXNbICdHSVQnIF1bICdhdXRvcHVsbCcgXQAgICAgICAgIGNoZWNrb3V0QnJhbmNoID0gbWFpbi5wYXJhbXNbICdHSVQnIF1bICdjaGVja291dCcgXQAgICAgICAgICNMb2FkIHZhbHVlcyBmcm9tIHBhcmFtcyBmaWxlAAAAICAgICAgICBPTk9TSXAgPSBbIDAgXQAgICAgICAgIGNsdXN0ZXJDb3VudCA9IDEAICAgICAgICBnbG9iYWwgT05PU0lwICAgICAgICAgICAgICAgICAgICNsaXN0IG9mIE9OT1MgSVAgYWRkcmVzc2VzIAAgICAgICAgIGdsb2JhbCBjbHVzdGVyQ291bnQgICAgICAgICAgICAgI251bWJlciBvZiBub2RlcyBydW5uaW5nACAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnV0IG9ubHkgbm9kZSAxIGlzIHN0YXJ0ZWQgaW4gdGhpcyBjYXNlACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdGhpcyBjYXNlIHdpbGwgY2xlYW4gdXAgYWxsIG5vZGVzIAAgICAgZGVmIENBU0UxKCBzZWxmLCBtYWluICk6ICAgICAgICAgICAgI1RoaXMgaXMgdGhlIGluaXRpYWxpemF0aW9uIGNhc2UAACAgICAgICAgc2VsZi5kZWZhdWx0ID0gJycAICAgIGRlZiBfX2luaXRfXyggc2VsZiApOgAAY2xhc3MgZmxvd1RQOgAAAGltcG9ydCBvcy5wYXRoAGltcG9ydCBzeXMAACMgY2FtZXJvbkBvbmxhYi51cwAjACMgQ0FTRTEgc3RhcnRzIG51bWJlciBvZiBub2RlcyBzcGVjaWZpZWQgaW4gcGFyYW0gZmlsZQAjACMgU2NhbGVPdXRUZW1wbGF0ZSAtPiBmbG93VFAAYWQAAL4GAACmBwAAABAAADMAAAAAAAAAzw8AAMUPAACLDwAAVA8AAFMPAABCDwAAJA8AAAoPAAC8DgAAog4AAKEOAACBDgAATA4AABQOAAACDgAAzw0AAIYNAABMDQAAFw0AAPEMAADwDAAAugwAAHQMAABEDAAAQwwAACMMAAAiDAAA8wsAAJALAACPCwAAYQsAAAQLAADmCgAA5QoAAH0KAABsCgAAVAoAADMKAADlCQAA5AkAAL4JAAC9CQAAZwkAAAMJAAACCQAAzwgAAEQIAADgBwAAvQcAALsHAACmBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAgICAgICAgICAgICAgICByZXN1bHRzTG9nLmNsb3NlKCkAICAgICAgICAgICAgICAgIHJlc3VsdHNMb2cud3JpdGUoIiwiICtzdHIoc2FtcGxlU2l6ZSkgKyAiLCIgKyBzdHIoYXZnVFApICsgIiwiICsgc3RyKHN0ZFRQKSArICJcbiIpACAgICAgICAgICAgICAgICByZXN1bHRzTG9nLndyaXRlKHN0cihtYWluLnBhcmFtc1sgJ1RFU1QnIF1bICdmbG93cycgXSkgKyAiLCIgKyBuICsgIiwiICsgc3RyKHNlcnZlcnMpICsgc3RyKHN3aXRjaGVzKSArICIsIiArIHN0cih3YXJtVXApKQAgICAgICAgICAgICAgICAgcmVzdWx0c0xvZyA9IG9wZW4obG9nRmlsZU5hbWUsImEiKQAAICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oIlN0YW5kYXJkIGRldmlhdGlvbiBvZiB0aHJvdWdocHV0OiAiICsgc3RyKHN0ZFRQKSArICIgZmxvd3Mvc2Vjb25kIikgACAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJBdmVyYWdlIHRob3VnaHB1dDogICIgKyBzdHIoYXZnVFApICsgIiBmbG93cy9zZWNvbmQiICkAACAgICAgICAgICAgICAgICBzdGRUUCA9IG51bXB5LnN0ZCh0cCkAACAgICAgICAgICAgICAgICAgICAgdHAuYXBwZW5kKGludChtYWluLnBhcmFtc1sgJ1RFU1QnIF1bICdmbG93cycgXSkvKGkqMTAwMCkpACAgICAgICAgICAgICAgICBmb3IgaSBpbiBtYXhlczogACAgICAgICAgICAgICAgICB0cCA9IFtdACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIGF2Z1RQID0gaW50KG1haW4ucGFyYW1zWyAnVEVTVCcgXVsgJ2Zsb3dzJyBdKS8oYXZnT2ZNYXhlcyoxMDAwKSAjcmVzdWx0IGluIGZsb3dzL3NlY29uZAAAICAgICAgICAgICAgICAgIHByaW50KCJcblxuIikAICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oIlN0YW5kYXJkIERldmlhdGlvbiBvZiBtYXggdmFsdWVzOiAiICsgc3RyKHN0ZE9mTWF4ZXMpKSAgICAgICAAICAgICAgICAgICAgICAgIHN0ZE9mTWF4ZXMgPSBudW1weS5zdGQobWF4ZXMpAAAgICAgICAgICAgICAgICAgbWFpbi5sb2cuaW5mbygiQXZlcmFnZSBvZiBtYXggdmFsdWUgZnJvbSBlYWNoIHRlc3QgaXRlcmF0aW9uOiAiICsgc3RyKGF2Z09mTWF4ZXMpKQAgICAgICAgICAgICAgICAgYXZnT2ZNYXhlcyA9IG51bXB5Lm1lYW4obWF4ZXMpAAAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcbiIpAAAgICAgICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8ocmVzdWx0U3RyaW5nKQAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gKCJcdCIgKyBzdHIoZGF0YVt0ZXN0XVtpXSkgKSAAICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBpbnQoc2VydmVycykgKToAACAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gIiIAICAgICAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKG5vZGVTdHJpbmcpICAgICAgIAAgICAgICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oIlx0LS0tLS0tLS0tLS0tLS0tLS0tIikAICAgICAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJcdCBUZXN0IGl0ZXJhdGlvbiAiICsgc3RyKHRlc3QgKyAxKSApACAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiByYW5nZSgwLCBzYW1wbGVTaXplICk6ACAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgbm9kZVN0cmluZyArPSAoIlx0Tm9kZSAiICsgc3RyKGkpKSAAICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGludChzZXJ2ZXJzKSArIDEpOgAgICAgICAgICAgICAgICAgbm9kZVN0cmluZyA9ICIiAAAgICAgICAgICAgICAgICAgcHJpbnQoIiIpACAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJcdCBSZXN1bHRzIChtZWFzdXJtZW50cyBhcmUgaW4gbWlsbGlzZWNvbmRzKSIpACAgICAgICAgICAgICAgICBwcmludCgiIikAICAgICAgICAgICAgICAgICMgcmVwb3J0IGRhdGEAICAgICAgICAgICAgICAgIAAAICAgICAgICAgICAgICAgIGlmIGRlYnVnOiBwcmludCgibWF4ZXM6IiArIHN0cihtYXhlcykpACAgICAgICAgICAgICAgICBpZiBkZWJ1ZzogcHJpbnQoInJhdyBkYXRhOiAiICsgc3RyKGRhdGEpKQAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRGbG93cyA9IFRydWUgAGFkAAArBgAAAwcAAAAQAAAvAAAAAAAAAN8PAADeDwAAsQ8AAJIPAACRDwAATw8AACwPAAD5DgAAug4AAKkOAABuDgAAQQ4AAEAOAAACDgAAtQ0AAGQNAAAdDQAA6QwAALAMAAB4DAAAPAwAABwMAADnCwAAvAsAAKcLAAByCwAANwsAAOUKAADkCgAAoQoAAFIKAABRCgAAHAoAAMQJAACnCQAAewkAAEIJAABBCQAAAwkAALUIAACYCAAAXQgAAEgIAAAhCAAA6AcAAHMHAAADBwAAogYAAOMGAACwBgAArwYAAIUGAABcBgAAOgYAAAkGAACtBQAAhwUAAE0FAAAPBQAA3gQAAJ8EAABnBAAAPgQAAA8EAADbAwAApwMAAIEDAABYAwAAGwMAAOcCAACvAgAAbQIAACoCAAD/AQAAwQEAAMABAACDAQAAVAEAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICBpZiB6ZXJvRmxvdyBpbiBiZWZvcmU6ACAgICAgICAgICAgICAgICAgICAgICAgIHplcm9GbG93ID0gImZsb3dzPTAiICAgICAgICAgICAgICAgIAAAICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwAgICAgICAgICAgICAgICAgICAgICAgICBwcmludChjdXJyZW50ZmxvdykAICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGZsb3cgPSBjdXJyZW50Zmxvdy5yZXBsYWNlKCJcbiIsIiIpACAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRmbG93ID0gY3VycmVudGZsb3cucmVwbGFjZSgiLCIsIiIpACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGZsb3cgPSBzdHIod29yZCkAICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICJmbG93IiBpbiBzdHIod29yZCk6ACAgICAgICAgICAgICAgICAgICAgICAgIGZvciB3b3JkIGluIGZsb3dzdW1tYXJ5LnNwbGl0KCIgIik6IAAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ZmxvdyA9ICIiACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG93c3VtbWFyeSA9IGxpbmUgACAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAiZmxvdyIgaW4gc3RyKGxpbmUpOgAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBwYXJzZVRlc3Q6ACAgICAgICAgICAgICAgICAgICAgICAgIGZsb3dzdW1tYXJ5ID0gIiIAICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VUZXN0ID0gYmVmb3JlLnNwbGl0bGluZXMoKQAgICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwAgICAgICAgICAgICAgICAgICAgICAgICAjaWYgZGVidWc6IHByaW50KGJlZm9yZSkAICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlID0gbWFpbi5PTk9TYmVuY2guaGFuZGxlLmJlZm9yZQAgICAgICAgICAgICAgICAgICAgICAgICBtYWluLk9OT1NiZW5jaC5oYW5kbGUuZXhwZWN0KCJ+IikAICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg0KQAgICAgICAgICAgICAgICAgICAgICAgICBtYWluLk9OT1NiZW5jaC5oYW5kbGUuc2VuZGxpbmUoIm9ub3MgJE9DMSBzdW1tYXJ5fCBjdXQgLWQgJyAnIC1mNiIpACAgICAgICAgICAgICAgICAgICAgd2hpbGUgcmVtb3ZlZEZsb3dzID09IEZhbHNlOgAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMikAICAgICAgICAgICAgICAgICAgICByZW1vdmVkRmxvd3MgPSBGYWxzZQAgICAgICAgICAgICAgICAgICAgICMgd2FpdCBmbyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnOiBwcmludCgiVGhyb3VnaHB1dCB0aW1lOiAiICsgc3RyKG1heGVzW3Rlc3Qtd2FybVVwXSkgKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZzogcHJpbnQoIlRocm91Z2hwdXQgdGltZTogIiArIHN0cihtYXhlc1t0ZXN0LXdhcm1VcF0pICsgIihtcykiKSAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWc6IHByaW50KCJEYXRhIGNvbGxlY3Rpb24gaXRlcmF0aW9uOiAiICsgc3RyKHRlc3Qtd2FybVVwKSArICIgb2YgIiArIHN0cihzYW1wbGVTaXplKSkAICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZXNbdGVzdC13YXJtVXBdID0gbWF4KHJlc3VsdCkAICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ID49IHdhcm1VcDoAICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W3NlcnZlckluZGV4IC0gMV0gPSBteXJlc3VsdAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnOiBwcmludCgic2VydmVyIGluZGV4ID0gIiArIHN0cihzZXJ2ZXJJbmRleCkpACAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlckluZGV4ID0gaW50KE9OT1NJcC5pbmRleChteUlwKSkAACAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnOiBwcmludCgibXlJcDogIiArIG15SXApACAgICAgICAgICAgICAgICAgICAgICAgIG15SXAgPSByYXdSZXN1bHRbMF0AICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZzogcHJpbnQoIlJlc3VsdDogIiArIHN0cihteXJlc3VsdCkpICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgbXlyZXN1bHQgPSBpbnQocmF3UmVzdWx0WzJdKQAAICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWc6IHByaW50KCJEZWJ1ZzogcmF3UmVzdWx0OiAiICsgc3RyKHJhd1Jlc3VsdCkpACAgICAgICAgICAgICAgICAgICAgICAgIHJhd1Jlc3VsdCA9ICgocmF3UmVzdWx0LnBvcCgpKS5zcGxpdCgiICIpKQAAICAgICAgICAgICAgICAgICAgICAgICAgcmF3UmVzdWx0ID0gKChtYWluLk9OT1NiZW5jaC5oYW5kbGUuYmVmb3JlKS5zcGxpdGxpbmVzKCkpACAgICAgICAgICAgICAgICAgICAgICAgIG1haW4uT05PU2JlbmNoLmhhbmRsZS5leHBlY3QoIm1zIikAICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiByYW5nZSgwLCBpbnQoc2VydmVycykpOgAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJxIikAICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiByYW5nZSgwLCBpbnQoc2VydmVycykpOgAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdACAgICAgICAgICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2guaGFuZGxlLnNlbmRsaW5lKGZsb3dDTUQpACAgICAgICAgICAgICAgICAgICAgbWFpbi5sb2cuaW5mbygiRXhlY3V0aW5nIGNvbW1hbmQiKSAAICAgICAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJDT01NQU5EOiAiICsgZmxvd0NNRCkAICAgICAgICAgICAgICAgICAgICBwcmludCgiXG4iKSAgICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgZmxvd0NNRCArPSAiICIgKyBzdHIobikgKyAiICIgKyBzdHIoc2VydmVyRW52VmFycykAICAgICAgICAgICAgICAgICAgICBmbG93Q01EICs9IHRlc3RDTURbMF0gKyAiICIgKyBzdHIoZmxvd3MpICsgIiAiICsgdGVzdENNRFsxXSAAICAgICAgICAgICAgICAgICAgICBmbG93Q01EID0gInB5dGhvbjMgIiArIGhvbWVEaXIgKyAiL29ub3MvdG9vbHMvdGVzdC9iaW4vIgAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gcmFuZ2UoMCwgKHdhcm1VcCArIHNhbXBsZVNpemUpKTogAAAgICAgICAgICAgICAgICAgbWF4ZXMgPSBbIiJdKmludChzYW1wbGVTaXplKQAgICAgICAgICAgICAgICAgZGF0YSA9IFtbIiJdKmludChzZXJ2ZXJzKV0qaW50KHNhbXBsZVNpemUpACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJFbnZWYXJzICs9ICgiLXMgJE9DIiArIHN0cihpKSArICIgIikAICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlICgxLGludChzZXJ2ZXJzKSsxKToAICAgICAgICAgICAgICAgIHNlcnZlckVudlZhcnMgPSAiIgAgICAgICAgICAgICAgICAgI2J1aWxkIGxpc3Qgb2Ygc2VydmVycyBpbiAiJE9DMSwgJE9DMi4uLi4iIGZvcm1hdAAAICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMzApACAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJzbGVlcGluZyAzMCIpAAAgICAgICAgICAgICAgICAgICAgIGEoT05PU0lwW3NdKQBhZAAAHgAAAGYBAAAAEAAASwAAAAAAAADEDwAAjQ8AADYPAADfDgAArQ4AAJIOAABbDgAALw4AAPANAADGDQAAog0AAJENAAAgDQAA5QwAAKwMAAByDAAAMQwAAA4MAAANDAAACgwAAN0LAABoCwAAJwsAABoLAADbCgAA2goAAIMKAAArCgAA8QkAAMIJAACSCQAAPwkAACoJAAAGCQAA1QgAAH4IAABNCAAAFwgAABYIAADQBwAAhAcAAF4HAABdBwAATAcAAC4HAADwBgAAsgYAALEGAABOBgAATQYAAAsGAADDBQAAwgUAALEFAACEBQAAOgUAAAEFAADHBAAAtAQAAI4EAABTBAAAHQQAANoDAACcAwAAmwMAAIIDAAAvAwAAAgMAAPECAADFAgAAjgIAACECAADtAQAAqQEAAGYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICBleGVjICJhID0gbWFpbi5PTk9TJXNjbGkuc3RhcnRPbm9zQ2xpIiAlc3RyKHMpACAgICAgICAgICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2gub25vc0luc3RhbGwoIG5vZGU9T05PU0lwW3NdKSAgICAAICAgICAgICAgICAgICAgIGZvciBzIGluIHJhbmdlKDEsIHN0YXJ0Tm9kZXMgKyAxKTogACAgICAgICAgICAgICAgICBtYWluLmxvZy5zdGVwKCAiUmVpbnN0YWxsaW5nIE9OT1Mgb24gcmVsZXZhbnQgbm9kZXMgKDEtIiArIHN0cihzdGFydE5vZGVzKSArICIpIiApICAgICAgICAgIAAgICAgICAgICAgICAgICAgc3RhcnROb2RlcyA9IG1heChpbnQobiksIHNlcnZlcnNUb1J1bikAICAgICAgICAgICAgICAgICMgaW5zdGFsbCBvbiByZWxldmFudCBub2RlcwAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICBtYWluLk9OT1NiZW5jaC5vbm9zUGFja2FnZSgpACAgICAgICAgICAgICAgICBtYWluLmxvZy5zdGVwKCAiUmVwYWNrYWdpbmcgb25vcyB0byByZWZsZWN0IGNvbmZpZyBmaWxlIGNoYW5nZXMiICkAICAgICAgICAgICAgICAgICNwYWNrYWdlAAAgICAgICAgICAgICAgICAgICAgIG1haW4uT05PU2JlbmNoLm9ub3NVbmluc3RhbGwoIE9OT1NJcFtpXSApACAgICAgICAgICAgICAgICAgICAgbWFpbi5sb2cuaW5mbygiIFVuaW5zdGFsbGluZyBPTk9TICIgKyBzdHIoaSkgKQAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgaW50KG1heE5vZGVzKSArIDEpOgAgICAgICAgICAgICAgICAgbWFpbi5sb2cuc3RlcCggIkNsZWFuaW5nIEVudmlvcm5tZW50Li4uIiApACAgICAgICAgICAgICAgICAjVW5pbnN0YWxsIGV2ZXJ5d2hlcmUAICAgICAgICAgICAgICAgICAgACAgICAgICAgICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2gub25vc0RpZShPTk9TSXBbbm9kZV0pIAAgICAgICAgICAgICAgICAgZm9yIG5vZGUgaW4gcmFuZ2UoMSwgaW50KG1heE5vZGVzKSArIDEpOgAgICAgICAgICAgICAgICAgbWFpbi5sb2cuc3RlcCgiU2FmZXR5IGNoZWNrLCBraWxsaW5nIGFsbCBPTk9TIHByb2Nlc3NlcyIpACAgICAgICAgICAgICAgICAja2lsbCBvZmYgYWxsIG9ub3MgcHJvY2Vzc2VzACAgICAgICAgICAgICAgICAAACAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJUb3RhbCBmbG93cyA9ICIgKyBzdHIoc3dpdGNoZXMgKiBmbG93cykpACAgICAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJGbG93cyBwZXIgc3dpdGNoID0gIiArIHN0cihmbG93cykpAAAgICAgICAgICAgICAgICAgZmxvd3MgPSAoZmxvd3MgKm1heChpbnQobikrMSxpbnQoc2VydmVycykpKS8oKGludChuKSArIDEpKmludChzZXJ2ZXJzKSooc3dpdGNoZXMpKQAAICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oIkZsb3cgVGFyZ2V0ICA9ICIgKyBzdHIoZmxvd3MpKQAgICAgICAgICAgICAgICAgZmxvd3MgPSBpbnQobWFpbi5wYXJhbXNbICdURVNUJyBdWyAnZmxvd3MnIF0pACAgICAgICAgICAgICAgICAjZGV2aWRlIGZsb3dzACAgICAgICAgICAgICAgICAAACAgICAgICAgICAgICAgICBkZXZpY2VDb25maWcuY2xvc2UoKSAAICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oIiBOdWxsRGV2aWNlUHJvdmlkZXIuY2ZnOiAiICsgZGV2aWNlU2V0dGluZ3MpACAgICAgICAgICAgICAgICBkZXZpY2VDb25maWcud3JpdGUoImRldkNvbmZpZ3MgPSAiICArIGRldmljZVNldHRpbmdzKQAAICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2V0dGluZ3MgKz0iLCIgICAgICAgICAAICAgICAgICAgICAgICAgICAgICBpZiBpIDwgaW50KHNlcnZlcnNUb1J1biktMTogACAgICAgICAgICAgICAgICAgICAgZGV2aWNlU2V0dGluZ3MgKz0gKE9OT1NJcFtpKzFdICsgIjoiICsgc3RyKHN3aXRjaERpc3RyaWJ1dGlvbltpXSkpACAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBzZXJ2ZXJzVG9SdW4pOgAgICAgICAgICAgICAgICAgZGV2aWNlU2V0dGluZ3MgPSAiIgAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgaWYgZGVidWc6IHByaW50KCJTd2l0Y2ggZGlzdHJpYnV0aW9uOiAiICsgc3RyKHN3aXRjaERpc3RyaWJ1dGlvbikpACAgICAgICAgICAgICAgICAgICAgc3dpdGNoRGlzdHJpYnV0aW9uW3JdICs9IDEgACAgICAgICAgICAgICAgICBmb3IgciBpbiByYW5nZSgwLCByZW1haW5kZXIpOiAAICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHN3aXRjaGVzICUgaW50KHNlcnZlcnNUb1J1bikgACAgICAgICAgICAgICAgICBpZiBkZWJ1ZzogcHJpbnQoIlN3aXRjaCBkaXN0cmlidXRpb24gaW5pdDogIiArIHN0cihzd2l0Y2hEaXN0cmlidXRpb24pKQAgICAgICAgICAgICAgICAgc3dpdGNoRGlzdHJpYnV0aW9uID0gWyhzd2l0Y2hlcy9pbnQoc2VydmVyc1RvUnVuKSldKmludChzZXJ2ZXJzVG9SdW4pIAAAICAgICAgICAgICAgICAgIHNlcnZlcnNUb1J1biA9IG1heChpbnQoc2VydmVycyksIChpbnQobikgKyAxKSkAICAgICAgICAgICAgACAgICAgICAgICAgICAgICBkZXZpY2VDb25maWcgPSBvcGVuKGhvbWVEaXIgKyBmaWxlbmFtZSwndysnKSAgICAAICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIi9vbm9zL3Rvb2xzL3BhY2thZ2UvZXRjL29yZy5vbm9zcHJvamVjdC5wcm92aWRlci5uaWwuZGV2aWNlLmltcGwuTnVsbERldmljZVByb3ZpZGVyLmNmZyIAICAgICAgICAgICAgICAgICN3cml0ZSBmaWxlIGZvciBudWxsIGRldmljZSAAICAAACAgICAgICAgICAgICAgICBsaW5rQ29uZmlnLmNsb3NlKCkAICAgICAgICAgICAgICAgIG1haW4ubG9nLmluZm8oIiBOdWxsTGlua1Byb3ZpZGVyLmNmZzogIiArIGlwQ1NWKQAgICAgICAgICAgICAgICAgbGlua0NvbmZpZy53cml0ZSgibmVpZ2hib3JzID0gIiAgKyBpcENTVikAICAgICAgICAgICAgICAgIGxpbmtDb25maWcud3JpdGUoIiMgZXZlbnRSYXRlID0gMjAwMFxuIikAICAgICAgICAgICAgICAgIGxpbmtDb25maWcgPSBvcGVuKGhvbWVEaXIgKyBmaWxlbmFtZSwndysnKQAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAiL29ub3MvdG9vbHMvcGFja2FnZS9ldGMvb3JnLm9ub3Nwcm9qZWN0LnByb3ZpZGVyLm5pbC5saW5rLmltcGwuTnVsbExpbmtQcm92aWRlci5jZmciACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgaXBDU1YgKz0iLCIAICAgICAgICAgICAgICAgICAgICBpZiBpIDwgaW50KG1heE5vZGVzKToAICAgICAgICAgICAgICAgICAgICBpcENTViArPSBtYWluLnBhcmFtc1sgJ0NUUkwnIF1bIHRlbXBzdHIgXSAAICAgICAgICAgICAgICAgICAgICB0ZW1wc3RyID0gImlwIiArIHN0cihpKQAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UgKDEsIGludChtYXhOb2RlcykgKyAxKToAICAgICAgICAgICAgICAgIGlwQ1NWID0gIiIAICAgICAgICAgICAgICAgICN3cml0ZSBmaWxlIHRvIGNvbmZpZ3VyZSBuaWwgbGluawAgICAgICAgICAgICAgICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQAgICAgICAgICAgICAgICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQAgICAgICAgICAgICAgICAgbWFpbi5sb2cuc3RlcCgiXHRORUlHSEJPUlM6XHQiICsgbiApICAAICAgICAgICAgICAgICAgIG1haW4ubG9nLnN0ZXAoIlx0U0VSVkVSUzogIFx0IiArIHNlcnZlcnMgKSAAYWQAAA0AAAB5AQAAABAAAFQAAAAAAAAAvA8AAIwPAABGDwAA/g4AAKsOAAB/DgAAfg4AADoOAAAGDgAA+w0AAOcNAADLDQAAyg0AAJwNAAB+DQAAfQ0AAC4NAADlDAAAtAwAAJkMAABBDAAABgwAAMgLAACsCwAApwsAAKILAACFCwAAewsAAFcLAABNCwAANAsAABgLAAAECwAA7woAANcKAADWCgAAuAoAAIAKAABACgAABAoAAMgJAACQCQAAWAkAAB8JAADmCAAAswgAAIAIAABLCAAASggAACAIAAAbCAAA8AcAALYHAACGBwAARwcAAEYHAAAtBwAA3gYAAKMGAACiBgAAawYAADgGAAAdBgAAHAYAANcFAAC1BQAAdwUAADwFAAAKBQAAvAQAAHEEAAAjBAAAugMAAF0DAAA5AwAA/gIAANoCAAB2AgAAEwIAAPEBAADwAQAA0QEAAKoBAAB5AQAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgbWFpbi5sb2cuc3RlcCgiXHRTVEFSVElORyBURVNUIikAICAgICAgICAgICAgZm9yIHNlcnZlcnMgaW4gc2VydmVyTGlzdDoAICAgICAgICBmb3IgbiBpbiBuZWlnaGJvckxpc3Q6AAAgICAgICAgICAgICBzZXJ2aWNlQ29uZmlnLmNsb3NlKCkAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIiIke09OT1NfSE9NRX0vYXBhY2hlLWthcmFmLSRLQVJBRl9WRVJTSU9OL2Jpbi9rYXJhZiAiJEAiIFxuICIiIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiWyAtZCAkT05PU19IT01FIF0gJiYgY2QgJE9OT1NfSE9NRSB8fCBPTk9TX0hPTUU9JChkaXJuYW1lICQwKS8uLiIpACAgICAgICAgICAgIHNlcnZpY2VDb25maWcud3JpdGUoIiIpACAgICAgICAgICAgIHNlcnZpY2VDb25maWcud3JpdGUoIk9OT1NfSE9NRT0vb3B0L29ub3MgXG4gIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIiJleHBvcnQgSkFWQV9PUFRTPSIke0pBVkFfT1BUUzotLVhtczI1Nm0gLVhteDMyZ30iIFxuICIiIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiI2V4cG9ydCBKQVZBX0hPTUU9JHtKQVZBX0hPTUU6LS91c3IvbGliL2p2bS9qYXZhLTctb3Blbmpkay1hbWQ2NC99XG4gIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG4gIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIyBTdGFydHMgT05PUyBBcGFjaGUgS2FyYWYgY29udGFpbmVyXG4gIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG4gIikAICAgICAgICAgICAgc2VydmljZUNvbmZpZy53cml0ZSgiIyEvYmluL2Jhc2hcbiAiKQAgICAgICAgICAgICBzZXJ2aWNlQ29uZmlnID0gb3Blbihob21lRGlyICsgZmlsZW5hbWUsICd3KycpACAgICAgICAgICAgIGZpbGVuYW1lID0gIi9vbm9zL3Rvb2xzL3BhY2thZ2UvYmluL29ub3Mtc2VydmljZSIAICAgICAgICBpZiBvbkJhcmVtZXRhbCA9PSAidHJ1ZSI6ACAgICAgICAgI3dyaXRlIGZpbGUgdG8gY2hhbmdlIG1lbSBsaW1pdCB0byAzMiBnaWdzIChCQVJFTUVUQUwgT05MWSEpAAAgICAgICAgIHJlc3VsdHNMb2cuY2xvc2UoKQAgICAgICAgIHJlc3VsdHNMb2cgPSBvcGVuKCJmbG93VFBSZXN1bHRzTG9nIiwidysiKQAgICAgICAgICNpbml0aWFsaXplIGxvZyBmaWxlLCByZW1vdmUgYW55IHByZXZpb3VzIGRhdGEAACAgICAgICAgbG9nRmlsZU5hbWUgPSAiLi4vbG9ncy9mbG93VFBSZXN1bHRzTG9nIiArIHN0cihzdCkAICAgICAgICBzdCA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAodHMpLnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTTolUycpACAgICAgICAgdHMgPSB0aW1lLnRpbWUoKQAAICAgICAgICBpZiBkZWJ1ZzogcHJpbnQoIm5laWdodGJvcmxpc3Q6ICIgKyBzdHIobmVpZ2hib3JMaXN0KSkAICAgICAgICBuZWlnaGJvckxpc3QgPSBuZWlnaGJvckxpc3Quc3BsaXQoIiwiKSAAICAgICAgICBpZiBkZWJ1ZzogcHJpbnQoInNlcnZlcmxpc3Q6ICIgKyBzdHIoc2VydmVyTGlzdCkpACAgICAgICAgc2VydmVyTGlzdCA9IHNlcnZlckxpc3Quc3BsaXQoIiwiKQAgICAgACAgICAgICAgaG9tZURpciA9IG9zLnBhdGguZXhwYW5kdXNlcignficpAAAgICAgICAgIGRlYnVnID0gbWFpbi5wYXJhbXNbICdURVNUJyBdWyAnZGVidWdNb2RlJyBdACAgICAgICAgb25CYXJlbWV0YWwgPSBtYWluLnBhcmFtc1snaXNPbkJhcmVtZXRhbCddACAgICAgICAgbWF4Tm9kZXMgPSBtYWluLnBhcmFtc1sgJ2F2YWlsYWJsZU5vZGVzJyBdACAgICAgICAgdGVzdENNRFsxXSA9IG1haW4ucGFyYW1zWyAnVEVTVCcgXVsgJ3Rlc3RDTUQxJyBdACAgICAgICAgdGVzdENNRFswXSA9IG1haW4ucGFyYW1zWyAnVEVTVCcgXVsgJ3Rlc3RDTUQwJyBdACAgICAgICAgI2Zsb3dzID0gaW50KG1haW4ucGFyYW1zWyAnVEVTVCcgXVsgJ2Zsb3dzJyBdKSAAICAgICAgICBzZXJ2ZXJMaXN0ID0gbWFpbi5wYXJhbXNbICdURVNUJyBdWyAnc2VydmVycycgXQAgICAgICAgIG5laWdoYm9yTGlzdCA9IG1haW4ucGFyYW1zWyAnVEVTVCcgXVsgJ25laWdoYm9ycycgXQAgICAgICAgIHN3aXRjaGVzID0gaW50KG1haW4ucGFyYW1zWyAnVEVTVCcgXVsgJ3N3aXRjaGVzJyBdKQAgICAgICAgIHNhbXBsZVNpemUgPSBpbnQobWFpbi5wYXJhbXNbICdURVNUJyBdWyAnc2FtcGxlU2l6ZScgXSkAICAgICAgICB3YXJtVXAgPSBpbnQobWFpbi5wYXJhbXNbICdURVNUJyBdWyAnd2FybVVwJyBdKQAgICAgICAgIHRlc3RDTUQgPSBbIDAsMCwwLDAgXQAAICAgICAgICBpbXBvcnQgZGF0ZXRpbWUAICAgICAgICBpbXBvcnQgdGltZSAAICAgICAgICBpbXBvcnQgbWF0aAAgICAgICAgIGltcG9ydCBudW1weSAgICAgICAAICAgICAgICBpbXBvcnQgb3MucGF0aCAgACAgICAgICAgIwAgICAgICAgICMgVGhpcyBpcyB0aGUgZmxvdyBUUCB0ZXN0IAAgICAgICAgICMAICAgIGRlZiBDQVNFMyggc2VsZiwgbWFpbiApOgAgICAgACAgICAAICAgICAgICAgICAgYShPTk9TSXBbbm9kZV0pACAgICAgICAgICAgIGV4ZWMgImEgPSBtYWluLk9OT1Mlc2NsaS5zdGFydE9ub3NDbGkiICVzdHIobm9kZSkAICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2gub25vc0luc3RhbGwoIG5vZGU9T05PU0lwW25vZGVdKQAgICAgICAgICAgICBtYWluLmxvZy5pbmZvKCJTdGFydGluZyBPTk9TICIgKyBzdHIobm9kZSkgKyAiIGF0IElQOiAiICsgT05PU0lwW25vZGVdKSAgICAAICAgICAgICAgICAgdGltZS5zbGVlcCgxMCkAICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2gub25vc0RpZShPTk9TSXBbbm9kZV0pACAgICAgICAgZm9yIG5vZGUgaW4gcmFuZ2UoKGNsdXN0ZXJDb3VudCAtIHNjYWxlKSArIDEsIGNsdXN0ZXJDb3VudCArIDEpOgAgICAgICAgIG1haW4ubG9nLnJlcG9ydCggIkluY3JlYXNpbmcgY2x1c3RlciBzaXplIHRvICIgKyBzdHIoIGNsdXN0ZXJDb3VudCApICkAACAgICAgICAgY2x1c3RlckNvdW50ICs9IHNjYWxlACAgICAgICAgc2NhbGUgPSBpbnQoIG1haW4ucGFyYW1zWyAnU0NBTEUnIF0gKQAAICAgICAgICBnbG9iYWwgY2x1c3RlckNvdW50ACAgICAgICAgaW1wb3J0IHRpbWUAICAgICAgICAnJwAgICAgICAgICdJbmNyZWFzZSBudW1iZXIgb2Ygbm9kZXMgYW5kIGluaXRpYXRlIENMSScAICAgICAgICAnJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAICAgICAgICAjIHlvdSB3YW50IHRvIGluY3JlYXNlIGNsdXN0ZXIgc2l6ZQAgICAgICAgICMgY2x1c3RlciBzaXplLiBJZiBzY2FsaW5nIGlzIGEgcGFydCBvZiB5b3UgdGVzdCBjYWxsIHRoaXMgY2FzZSBlYWNoIHRpbWUgACAgICAgICAgIyBvbmNlIGFmdGVyIENBU0UxIHRvIHNldCB1cCB5b3VyIGVudmlvcm5tZW50IGZvciB5b3VyIGRlc2lyZWQgACAgICAgICAgIyBpZiBzY2FsaW5nIGlzIG5vdCBhIHBhcnQgb2YgeW91ciB0ZXN0LCBzaW1wbHkgcnVuIHRoaXMgY2FzZQAgICAgICAgICMgTm90ZTogJ3NjYWxlJyBpcyB0aGUgc2l6ZSBvZiB0aGUgc3RlcAAgICAgICAgICMgVGhpcyBjYXNlIGluY3JlYXNlcyB0aGUgY2x1c3RlciBzaXplIGJ5IHdoYXRldmVyIHNjYWxlIGlzAGFkAACxCQAASQoAAAAQAAAfAAAAAAAAAP8PAADYDwAApQ8AAKQPAAB6DwAAUQ8AAC8PAAD+DgAAog4AAHwOAABCDgAABA4AANMNAACUDQAAXA0AADMNAAAEDQAA0AwAAJwMAAB2DAAATQwAABAMAADcCwAApAsAAGILAAAfCwAA9AoAALYKAAC1CgAAeAoAAEkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgaWYgemVyb0Zsb3cgaW4gYmVmb3JlOgAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvRmxvdyA9ICJmbG93cz0wIiAgICAgICAgICAgICAgICAAACAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMAICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoY3VycmVudGZsb3cpACAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRmbG93ID0gY3VycmVudGZsb3cucmVwbGFjZSgiXG4iLCIiKQAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ZmxvdyA9IGN1cnJlbnRmbG93LnJlcGxhY2UoIiwiLCIiKQAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRmbG93ID0gc3RyKHdvcmQpACAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAiZmxvdyIgaW4gc3RyKHdvcmQpOgAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igd29yZCBpbiBmbG93c3VtbWFyeS5zcGxpdCgiICIpOiAAICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGZsb3cgPSAiIgAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvd3N1bW1hcnkgPSBsaW5lIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgImZsb3ciIGluIHN0cihsaW5lKToAICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gcGFyc2VUZXN0OgAgICAgICAgICAgICAgICAgICAgICAgICBmbG93c3VtbWFyeSA9ICIiACAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlVGVzdCA9IGJlZm9yZS5zcGxpdGxpbmVzKCkAICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMAICAgICAgICAgICAgICAgICAgICAgICAgI2lmIGRlYnVnOiBwcmludChiZWZvcmUpACAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSA9IG1haW4uT05PU2JlbmNoLmhhbmRsZS5iZWZvcmUAICAgICAgICAgICAgICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2guaGFuZGxlLmV4cGVjdCgifiIpACAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoNikAICAgICAgICAgICAgICAgICAgICAgICAgbWFpbi5PTk9TYmVuY2guaGFuZGxlLnNlbmRsaW5lKCJvbm9zICRPQzEgc3VtbWFyeXwgY3V0IC1kICcgJyAtZjYiKQAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHJlbW92ZWRGbG93cyA9PSBGYWxzZToAICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDMpACAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZEZsb3dzID0gRmFsc2UAICAgICAgICAgICAgICAgICAgICAjIHdhaXQgZm9yIGZsb3dzID0gMCAAACAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbdGVzdC13YXJtVXBdID0gcmVzdWx0ACAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCA+PSB3YXJtVXA6AAA=