REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 250.92 KB
Close
//proc/self/root/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-35.pyc
Text
Base64
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YnJhcnkgb2YgY2xhc3NlcyB0aGF0IHlvdSB1c2UgdG8gY29uc3RydWN0IHRoZQpncmFtbWFyIGRpcmVjdGx5IGluIFB5dGhvbi4KCkhlcmUgaXMgYSBwcm9ncmFtIHRvIHBhcnNlICJIZWxsbywgV29ybGQhIiAob3IgYW55IGdyZWV0aW5nIG9mIHRoZSBmb3JtCmBgIjxzYWx1dGF0aW9uPiwgPGFkZHJlc3NlZT4hImBgKSwgYnVpbHQgdXAgdXNpbmcgOmNsYXNzOmBXb3JkYCwKOmNsYXNzOmBMaXRlcmFsYCwgYW5kIDpjbGFzczpgQW5kYCBlbGVtZW50cwoodGhlIDpjbGFzczpgJysnPFBhcnNlckVsZW1lbnQuX19hZGRfXz5gIG9wZXJhdG9ycyBjcmVhdGUgOmNsYXNzOmBBbmRgIGV4cHJlc3Npb25zLAphbmQgdGhlIHN0cmluZ3MgYXJlIGF1dG8tY29udmVydGVkIHRvIDpjbGFzczpgTGl0ZXJhbGAgZXhwcmVzc2lvbnMpOjoKCiAgICBmcm9tIHBpcC5fdmVuZG9yLnB5cGFyc2luZyBpbXBvcnQgV29yZCwgYWxwaGFzCgogICAgIyBkZWZpbmUgZ3JhbW1hciBvZiBhIGdyZWV0aW5nCiAgICBncmVldCA9IFdvcmQoYWxwaGFzKSArICIsIiArIFdvcmQoYWxwaGFzKSArICIhIgoKICAgIGhlbGxvID0gIkhlbGxvLCBXb3JsZCEiCiAgICBwcmludCAoaGVsbG8sICItPiIsIGdyZWV0LnBhcnNlU3RyaW5nKGhlbGxvKSkKClRoZSBwcm9ncmFtIG91dHB1dHMgdGhlIGZvbGxvd2luZzo6CgogICAgSGVsbG8sIFdvcmxkISAtPiBbJ0hlbGxvJywgJywnLCAnV29ybGQnLCAnISddCgpUaGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmFtbWFyIGlzIHF1aXRlIHJlYWRhYmxlLCBvd2luZyB0byB0aGUKc2VsZi1leHBsYW5hdG9yeSBjbGFzcyBuYW1lcywgYW5kIHRoZSB1c2Ugb2YgJysnLCAnfCcgYW5kICdeJyBvcGVyYXRvcnMuCgpUaGUgOmNsYXNzOmBQYXJzZVJlc3VsdHNgIG9iamVjdCByZXR1cm5lZCBmcm9tCjpjbGFzczpgUGFyc2VyRWxlbWVudC5wYXJzZVN0cmluZ2AgY2FuIGJlCmFjY2Vzc2VkIGFzIGEgbmVzdGVkIGxpc3QsIGEgZGljdGlvbmFyeSwgb3IgYW4gb2JqZWN0IHdpdGggbmFtZWQKYXR0cmlidXRlcy4KClRoZSBweXBhcnNpbmcgbW9kdWxlIGhhbmRsZXMgc29tZSBvZiB0aGUgcHJvYmxlbXMgdGhhdCBhcmUgdHlwaWNhbGx5CnZleGluZyB3aGVuIHdyaXRpbmcgdGV4dCBwYXJzZXJzOgoKICAtIGV4dHJhIG9yIG1pc3Npbmcgd2hpdGVzcGFjZSAodGhlIGFib3ZlIHByb2dyYW0gd2lsbCBhbHNvIGhhbmRsZQogICAgIkhlbGxvLFdvcmxkISIsICJIZWxsbyAgLCAgV29ybGQgICEiLCBldGMuKQogIC0gcXVvdGVkIHN0cmluZ3MKICAtIGVtYmVkZGVkIGNvbW1lbnRzCgoKR2V0dGluZyBTdGFydGVkIC0KLS0tLS0tLS0tLS0tLS0tLS0KVmlzaXQgdGhlIGNsYXNzZXMgOmNsYXNzOmBQYXJzZXJFbGVtZW50YCBhbmQgOmNsYXNzOmBQYXJzZVJlc3VsdHNgIHRvCnNlZSB0aGUgYmFzZSBjbGFzc2VzIHRoYXQgbW9zdCBvdGhlciBweXBhcnNpbmcKY2xhc3NlcyBpbmhlcml0IGZyb20uIFVzZSB0aGUgZG9jc3RyaW5ncyBmb3IgZXhhbXBsZXMgb2YgaG93IHRvOgoKIC0gY29uc3RydWN0IGxpdGVyYWwgbWF0Y2ggZXhwcmVzc2lvbnMgZnJvbSA6Y2xhc3M6YExpdGVyYWxgIGFuZAogICA6Y2xhc3M6YENhc2VsZXNzTGl0ZXJhbGAgY2xhc3NlcwogLSBjb25zdHJ1Y3QgY2hhcmFjdGVyIHdvcmQtZ3JvdXAgZXhwcmVzc2lvbnMgdXNpbmcgdGhlIDpjbGFzczpgV29yZGAKICAgY2xhc3MKIC0gc2VlIGhvdyB0byBjcmVhdGUgcmVwZXRpdGl2ZSBleHByZXNzaW9ucyB1c2luZyA6Y2xhc3M6YFplcm9Pck1vcmVgCiAgIGFuZCA6Y2xhc3M6YE9uZU9yTW9yZWAgY2xhc3NlcwogLSB1c2UgOmNsYXNzOmAnKyc8QW5kPmAsIDpjbGFzczpgJ3wnPE1hdGNoRmlyc3Q+YCwgOmNsYXNzOmAnXic8T3I+YCwKICAgYW5kIDpjbGFzczpgJyYnPEVhY2g+YCBvcGVyYXRvcnMgdG8gY29tYmluZSBzaW1wbGUgZXhwcmVzc2lvbnMgaW50bwogICBtb3JlIGNvbXBsZXggb25lcwogLSBhc3NvY2lhdGUgbmFtZXMgd2l0aCB5b3VyIHBhcnNlZCByZXN1bHRzIHVzaW5nCiAgIDpjbGFzczpgUGFyc2VyRWxlbWVudC5zZXRSZXN1bHRzTmFtZWAKIC0gYWNjZXNzIHRoZSBwYXJzZWQgZGF0YSwgd2hpY2ggaXMgcmV0dXJuZWQgYXMgYSA6Y2xhc3M6YFBhcnNlUmVzdWx0c2AKICAgb2JqZWN0CiAtIGZpbmQgc29tZSBoZWxwZnVsIGV4cHJlc3Npb24gc2hvcnQtY3V0cyBsaWtlIDpjbGFzczpgZGVsaW1pdGVkTGlzdGAKICAgYW5kIDpjbGFzczpgb25lT2ZgCiAtIGZpbmQgbW9yZSB1c2VmdWwgY29tbW9uIGV4cHJlc3Npb25zIGluIHRoZSA6Y2xhc3M6YHB5cGFyc2luZ19jb21tb25gCiAgIG5hbWVzcGFjZSBjbGFzcwp6BTIuNC43ehUzMCBNYXIgMjAyMCAwMDo0MyBVVEN6KlBhdWwgTWNHdWlyZSA8cHRtY2dAdXNlcnMuc291cmNlZm9yZ2UubmV0PukAAAAATikB2gNyZWYpAdoIZGF0ZXRpbWUpAdoKaXRlbWdldHRlcikB2gV3cmFwcykB2g5jb250ZXh0bWFuYWdlcikB2gtmaWx0ZXJmYWxzZSkB2gxpZmlsdGVyZmFsc2UpAdoFUkxvY2spAdoISXRlcmFibGUpAtoOTXV0YWJsZU1hcHBpbmfaB01hcHBpbmcpAdoLT3JkZXJlZERpY3QpAdoPU2ltcGxlTmFtZXNwYWNlYwAAAAAAAAAAAAAAAAEAAABAAAAAcxAAAABlAABaAQBkAABaAgBkAQBTKQJyDgAAAE4pA9oIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX6kAchIAAAByEgAAAPqEL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMzUtcGlwLTIwLjIuNC01LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24zNS9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMvcGlwL192ZW5kb3IvcHlwYXJzaW5nLnB5cg4AAACWAAAAcwIAAAAMAHIOAAAAYUECAAAKICAgIEEgY3Jvc3MtdmVyc2lvbiBjb21wYXRpYmlsaXR5IGNvbmZpZ3VyYXRpb24gZm9yIHB5cGFyc2luZyBmZWF0dXJlcyB0aGF0IHdpbGwgYmUKICAgIHJlbGVhc2VkIGluIGEgZnV0dXJlIHZlcnNpb24uIEJ5IHNldHRpbmcgdmFsdWVzIGluIHRoaXMgY29uZmlndXJhdGlvbiB0byBUcnVlLAogICAgdGhvc2UgZmVhdHVyZXMgY2FuIGJlIGVuYWJsZWQgaW4gcHJpb3IgdmVyc2lvbnMgZm9yIGNvbXBhdGliaWxpdHkgZGV2ZWxvcG1lbnQKICAgIGFuZCB0ZXN0aW5nLgoKICAgICAtIGNvbGxlY3RfYWxsX0FuZF90b2tlbnMgLSBmbGFnIHRvIGVuYWJsZSBmaXggZm9yIElzc3VlICM2MyB0aGF0IGZpeGVzIGVycm9uZW91cyBncm91cGluZwogICAgICAgb2YgcmVzdWx0cyBuYW1lcyB3aGVuIGFuIEFuZCBleHByZXNzaW9uIGlzIG5lc3RlZCB3aXRoaW4gYW4gT3Igb3IgTWF0Y2hGaXJzdDsgc2V0IHRvCiAgICAgICBUcnVlIHRvIGVuYWJsZSBidWdmaXggcmVsZWFzZWQgaW4gcHlwYXJzaW5nIDIuMy4wLCBvciBGYWxzZSB0byBwcmVzZXJ2ZQogICAgICAgcHJlLTIuMy4wIGhhbmRsaW5nIG9mIG5hbWVkIHJlc3VsdHMKVGGTAwAACkRpYWdub3N0aWMgY29uZmlndXJhdGlvbiAoYWxsIGRlZmF1bHQgdG8gRmFsc2UpCiAgICAgLSB3YXJuX211bHRpcGxlX3Rva2Vuc19pbl9uYW1lZF9hbHRlcm5hdGlvbiAtIGZsYWcgdG8gZW5hYmxlIHdhcm5pbmdzIHdoZW4gYSByZXN1bHRzCiAgICAgICBuYW1lIGlzIGRlZmluZWQgb24gYSBNYXRjaEZpcnN0IG9yIE9yIGV4cHJlc3Npb24gd2l0aCBvbmUgb3IgbW9yZSBBbmQgc3ViZXhwcmVzc2lvbnMKICAgICAgIChvbmx5IHdhcm5zIGlmIF9fY29tcGF0X18uY29sbGVjdF9hbGxfQW5kX3Rva2VucyBpcyBGYWxzZSkKICAgICAtIHdhcm5fdW5ncm91cGVkX25hbWVkX3Rva2Vuc19pbl9jb2xsZWN0aW9uIC0gZmxhZyB0byBlbmFibGUgd2FybmluZ3Mgd2hlbiBhIHJlc3VsdHMKICAgICAgIG5hbWUgaXMgZGVmaW5lZCBvbiBhIGNvbnRhaW5pbmcgZXhwcmVzc2lvbiB3aXRoIHVuZ3JvdXBlZCBzdWJleHByZXNzaW9ucyB0aGF0IGFsc28KICAgICAgIGhhdmUgcmVzdWx0cyBuYW1lcwogICAgIC0gd2Fybl9uYW1lX3NldF9vbl9lbXB0eV9Gb3J3YXJkIC0gZmxhZyB0byBlbmFibGUgd2FybmluZ3Mgd2hhbiBhIEZvcndhcmQgaXMgZGVmaW5lZAogICAgICAgd2l0aCBhIHJlc3VsdHMgbmFtZSwgYnV0IGhhcyBubyBjb250ZW50cyBkZWZpbmVkCiAgICAgLSB3YXJuX29uX211bHRpcGxlX3N0cmluZ19hcmdzX3RvX29uZW9mIC0gZmxhZyB0byBlbmFibGUgd2FybmluZ3Mgd2hhbiBvbmVPZiBpcwogICAgICAgaW5jb3JyZWN0bHkgY2FsbGVkIHdpdGggbXVsdGlwbGUgc3RyIGFyZ3VtZW50cwogICAgIC0gZW5hYmxlX2RlYnVnX29uX25hbWVkX2V4cHJlc3Npb25zIC0gZmxhZyB0byBhdXRvLWVuYWJsZSBkZWJ1ZyBvbiBhbGwgc3Vic2VxdWVudAogICAgICAgY2FsbHMgdG8gUGFyc2VyRWxlbWVudC5zZXROYW1lKCkKRmMBAAAAAAAAAAIAAAAEAAAAQwAAAHM0AAAAZwAAfAAAXSoAfQEAfAEAagAAZAAAgwEAcyoAfAEAagAAZAEAgwEAcgYAfAEAkQIAcQYAUykCWgdlbmFibGVfWgV3YXJuXykB2gpzdGFydHN3aXRoKQLaAi4w2gJubXISAAAAchIAAAByEwAAAPoKPGxpc3Rjb21wPrwAAABzAgAAAAkAchcAAABjAAAAAAAAAAAAAAAAAgAAAEMAAABzKAAAAGQBAHQAAF8BAGQBAHQAAF8CAGQBAHQAAF8DAGQBAHQAAF8EAGQAAFMpAk5UKQXaCF9fZGlhZ19f2il3YXJuX211bHRpcGxlX3Rva2Vuc19pbl9uYW1lZF9hbHRlcm5hdGlvbtopd2Fybl91bmdyb3VwZWRfbmFtZWRfdG9rZW5zX2luX2NvbGxlY3Rpb27aHndhcm5fbmFtZV9zZXRfb25fZW1wdHlfRm9yd2FyZNold2Fybl9vbl9tdWx0aXBsZV9zdHJpbmdfYXJnc190b19vbmVvZnISAAAAchIAAAByEgAAAHITAAAA2hRfZW5hYmxlX2FsbF93YXJuaW5nc74AAABzCAAAAAABCQEJAQkBch0AAADaC19fdmVyc2lvbl9f2g9fX3ZlcnNpb25UaW1lX1/aCl9fYXV0aG9yX1/aCl9fY29tcGF0X19yGAAAANoDQW5k2g9DYXNlbGVzc0tleXdvcmTaD0Nhc2VsZXNzTGl0ZXJhbNoKQ2hhcnNOb3RJbtoHQ29tYmluZdoERGljdNoERWFjaNoFRW1wdHnaCkZvbGxvd2VkQnnaB0ZvcndhcmTaCkdvVG9Db2x1bW7aBUdyb3Vw2gdLZXl3b3Jk2gdMaW5lRW5k2glMaW5lU3RhcnTaB0xpdGVyYWzaClByZWNlZGVkQnnaCk1hdGNoRmlyc3TaB05vTWF0Y2jaBk5vdEFuedoJT25lT3JNb3Jl2ghPbmx5T25jZdoIT3B0aW9uYWzaAk9y2hJQYXJzZUJhc2VFeGNlcHRpb27aE1BhcnNlRWxlbWVudEVuaGFuY2XaDlBhcnNlRXhjZXB0aW9u2g9QYXJzZUV4cHJlc3Npb27aE1BhcnNlRmF0YWxFeGNlcHRpb27aDFBhcnNlUmVzdWx0c9oUUGFyc2VTeW50YXhFeGNlcHRpb27aDVBhcnNlckVsZW1lbnTaDFF1b3RlZFN0cmluZ9oZUmVjdXJzaXZlR3JhbW1hckV4Y2VwdGlvbtoFUmVnZXjaBlNraXBUb9oJU3RyaW5nRW5k2gtTdHJpbmdTdGFydNoIU3VwcHJlc3PaBVRva2Vu2g5Ub2tlbkNvbnZlcnRlctoFV2hpdGXaBFdvcmTaB1dvcmRFbmTaCVdvcmRTdGFydNoKWmVyb09yTW9yZdoEQ2hhctoJYWxwaGFudW1z2gZhbHBoYXPaCmFscGhhczhiaXTaC2FueUNsb3NlVGFn2gphbnlPcGVuVGFn2g1jU3R5bGVDb21tZW502gNjb2zaEmNvbW1hU2VwYXJhdGVkTGlzdNoQY29tbW9uSFRNTEVudGl0edoMY291bnRlZEFycmF52g9jcHBTdHlsZUNvbW1lbnTaD2RibFF1b3RlZFN0cmluZ9oPZGJsU2xhc2hDb21tZW502g1kZWxpbWl0ZWRMaXN02gZkaWN0T2baDmRvd25jYXNlVG9rZW5z2gVlbXB0edoHaGV4bnVtc9oLaHRtbENvbW1lbnTaEGphdmFTdHlsZUNvbW1lbnTaBGxpbmXaB2xpbmVFbmTaCWxpbmVTdGFydNoGbGluZW5v2gxtYWtlSFRNTFRhZ3PaC21ha2VYTUxUYWdz2g5tYXRjaE9ubHlBdENvbNoRbWF0Y2hQcmV2aW91c0V4cHLaFG1hdGNoUHJldmlvdXNMaXRlcmFs2gpuZXN0ZWRFeHBy2g9udWxsRGVidWdBY3Rpb27aBG51bXPaBW9uZU9m2gdvcEFzc29j2hJvcGVyYXRvclByZWNlZGVuY2XaCnByaW50YWJsZXPaCHB1bmM4Yml02hJweXRob25TdHlsZUNvbW1lbnTaDHF1b3RlZFN0cmluZ9oMcmVtb3ZlUXVvdGVz2hFyZXBsYWNlSFRNTEVudGl0edoLcmVwbGFjZVdpdGjaCnJlc3RPZkxpbmXaD3NnbFF1b3RlZFN0cmluZ9oGc3Jhbmdl2glzdHJpbmdFbmTaC3N0cmluZ1N0YXJ02hB0cmFjZVBhcnNlQWN0aW9u2g11bmljb2RlU3RyaW5n2gx1cGNhc2VUb2tlbnPaDXdpdGhBdHRyaWJ1dGXaDWluZGVudGVkQmxvY2vaD29yaWdpbmFsVGV4dEZvctoHdW5ncm91cNoNaW5maXhOb3RhdGlvbtoLbG9jYXRlZEV4cHLaCXdpdGhDbGFzc9oKQ2xvc2VNYXRjaNoIdG9rZW5NYXDaEHB5cGFyc2luZ19jb21tb27aEXB5cGFyc2luZ191bmljb2Rl2gt1bmljb2RlX3NldNoWY29uZGl0aW9uQXNQYXJzZUFjdGlvbtoCcmXpAwAAAGMBAAAAAAAAAAMAAAALAAAAQwAAAHOEAAAAdAAAfAAAdAEAgwIA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ZAQAGBRkBQAXgwEAAXwDAGoFAGQGAGoIAHQJAHwAAIMBAGoKAHwAAIMCAIMBAAF8AQBkAQBrBABy6wF8AgBqCwB8AABqDABkBwB8AQCDAQF9BAB0DQCDAAB9BQB4NAF0DgB8BAB8AQALZAIAhQIAGYMBAERdGwFcAgB9BgB9BwB8BwBkAQAZfQgAfAgAag8AahAAZAgAZAIAgwIAfQkAdAMAfAkAdBEAgwIAcmgBfAgAahIAahMAZBEAawcAchsBccwAfAkAfAUAawYAcioBccwAfAUAahQAfAkAgwEAAXQJAHwJAIMBAH0KAHwDAGoFAGQLAGoIAHwKAGoVAHwKAGoKAHwJAIMDAIMBAAFubgB8CQBkAgBrCQByogF0CQB8CQCDAQB9CgB8AwBqBQBkDABqCAB8CgBqFQB8CgBqCgCDAgCDAQABbjQAfAgAahIAfQsAfAsAahMAZBIAawYAcr0BccwAfAMAagUAZA8AaggAfAsAahMAgwEAgwEAAXwBAGQEADh9AQB8AQBzzABQccwAV2QQAGoWAHwDAIMBAFMpE2FwBAAACiAgICAgICAgTWV0aG9kIHRvIHRha2UgYW4gZXhjZXB0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIFB5dGhvbiBpbnRlcm5hbCB0cmFjZWJhY2sgaW50byBhIGxpc3QKICAgICAgICBvZiB0aGUgcHlwYXJzaW5nIGV4cHJlc3Npb25zIHRoYXQgY2F1c2VkIHRoZSBleGNlcHRpb24gdG8gYmUgcmFpc2VkLgoKICAgICAgICBQYXJhbWV0ZXJzOgoKICAgICAgICAgLSBleGMgLSBleGNlcHRpb24gcmFpc2VkIGR1cmluZyBwYXJzaW5nIChuZWVkIG5vdCBiZSBhIFBhcnNlRXhjZXB0aW9uLCBpbiBzdXBwb3J0CiAgICAgICAgICAgb2YgUHl0aG9uIGV4Y2VwdGlvbnMgdGhhdCBtaWdodCBiZSByYWlzZWQgaW4gYSBwYXJzZSBhY3Rpb24pCiAgICAgICAgIC0gZGVwdGggKGRlZmF1bHQ9MTYpIC0gbnVtYmVyIG9mIGxldmVscyBiYWNrIGluIHRoZSBzdGFjayB0cmFjZSB0byBsaXN0IGV4cHJlc3Npb24KICAgICAgICAgICBhbmQgZnVuY3Rpb24gbmFtZXM7IGlmIE5vbmUsIHRoZSBmdWxsIHN0YWNrIHRyYWNlIG5hbWVzIHdpbGwgYmUgbGlzdGVkOyBpZiAwLCBvbmx5CiAgICAgICAgICAgdGhlIGZhaWxpbmcgaW5wdXQgbGluZSwgbWFya2VyLCBhbmQgZXhjZXB0aW9uIHN0cmluZyB3aWxsIGJlIHNob3duCgogICAgICAgIFJldHVybnMgYSBtdWx0aS1saW5lIHN0cmluZyBsaXN0aW5nIHRoZSBQYXJzZXJFbGVtZW50cyBhbmQvb3IgZnVuY3Rpb24gbmFtZXMgaW4gdGhlCiAgICAgICAgZXhjZXB0aW9uJ3Mgc3RhY2sgdHJhY2UuCgogICAgICAgIE5vdGU6IHRoZSBkaWFnbm9zdGljIG91dHB1dCB3aWxsIGluY2x1ZGUgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgZXhwcmVzc2lvbnMKICAgICAgICB0aGF0IGZhaWxlZCB0byBwYXJzZS4gVGhlc2UgcmVwcmVzZW50YXRpb25zIHdpbGwgYmUgbW9yZSBoZWxwZnVsIGlmIHlvdSB1c2UgYHNldE5hbWVgIHRvCiAgICAgICAgZ2l2ZSBpZGVudGlmaWFibGUgbmFtZXMgdG8geW91ciBleHByZXNzaW9ucy4gT3RoZXJ3aXNlIHRoZXkgd2lsbCB1c2UgdGhlIGRlZmF1bHQgc3RyaW5nCiAgICAgICAgZm9ybXMsIHdoaWNoIG1heSBiZSBjcnlwdGljIHRvIHJlYWQuCgogICAgICAgIGV4cGxhaW4oKSBpcyBvbmx5IHN1cHBvcnRlZCB1bmRlciBQeXRob24gMy4KICAgICAgICByAQAAAE76ASBylAAAAPoBXnoIezB9OiB7MX3aB2NvbnRleHRyxwAAANoJcGFyc2VJbXBs2g1fcGFyc2VOb0NhY2hleg17MH0uezF9IC0gezJ9egd7MH0uezF92gd3cmFwcGVy+gg8bW9kdWxlPnoDezB92gEKKQJy5QAAAHLmAAAAKQJy5wAAAHLoAAAAKRfaB2luc3BlY3RynwAAANoRZ2V0cmVjdXJzaW9ubGltaXRymgAAAHI6AAAA2gZhcHBlbmRyZQAAAHJXAAAA2gZmb3JtYXRy3QAAAHIPAAAA2g5nZXRpbm5lcmZyYW1lc9oN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U3RyaW5nIHJldHVybnMgYSBQYXJzZVJlc3VsdHMgb2JqZWN0CiAgICAgICAgcmVzdWx0ID0gZGF0ZV9zdHIucGFyc2VTdHJpbmcoIjE5OTkvMTIvMzEiKQoKICAgICAgICBkZWYgdGVzdChzLCBmbj1yZXByKToKICAgICAgICAgICAgcHJpbnQoIiVzIC0+ICVzIiAlIChzLCBmbihldmFsKHMpKSkpCiAgICAgICAgdGVzdCgibGlzdChyZXN1bHQpIikKICAgICAgICB0ZXN0KCJyZXN1bHRbMF0iKQogICAgICAgIHRlc3QoInJlc3VsdFsnbW9udGgnXSIpCiAgICAgICAgdGVzdCgicmVzdWx0LmRheSIpCiAgICAgICAgdGVzdCgiJ21vbnRoJyBpbiByZXN1bHQiKQogICAgICAgIHRlc3QoIidtaW51dGVzJyBpbiByZXN1bHQiKQogICAgICAgIHRlc3QoInJlc3VsdC5kdW1wKCkiLCBzdHIpCgogICAgcHJpbnRzOjoKCiAgICAgICAgbGlzdChyZXN1bHQpIC0+IFsnMTk5OScsICcvJywgJzEyJywgJy8nLCAnMzEnXQogICAgICAgIHJlc3VsdFswXSAtPiAnMTk5OScKICAgICAgICByZXN1bHRbJ21vbnRoJ10gLT4gJzEyJwogICAgICAgIHJlc3VsdC5kYXkgLT4gJzMxJwogICAgICAgICdtb250aCcgaW4gcmVzdWx0IC0+IFRydWUKICAgICAgICAnbWludXRlcycgaW4gcmVzdWx0IC0+IEZhbHNlCiAgICAgICAgcmVzdWx0LmR1bXAoKSAtPiBbJzE5OTknLCAnLycsICcxMicsICcvJywgJzMxJ10KICAgICAgICAtIGRheTogMzEKICAgICAgICAtIG1vbnRoOiAxMgogICAgICAgIC0geWVhcjogMTk5OQogICAgTlRjBQAAAAAAAAAGAAAAAwAAAEMAAABzLwAAAHQAAHwBAHwAAIMCAHITAHwBAFN0AQBqAgB8AACDAQB9BQBkAQB8BQBfAwB8BQBTKQJOVCkEcpoAAADaBm9iamVjdNoHX19uZXdfX9oVX1BhcnNlUmVzdWx0c19fZG9pbml0KQZyygAAANoHdG9rbGlzdNoEbmFtZdoGYXNMaXN02gVtb2RhbNoG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YXMgaW4KICAgICAgICBgYGRpY3QucG9wKClgYC4KCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICBkZWYgcmVtb3ZlX2ZpcnN0KHRva2Vucyk6CiAgICAgICAgICAgICAgICB0b2tlbnMucG9wKDApCiAgICAgICAgICAgIHByaW50KE9uZU9yTW9yZShXb3JkKG51bXMpKS5wYXJzZVN0cmluZygiMCAxMjMgMzIxIikpICMgLT4gWycwJywgJzEyMycsICczMjEnXQogICAgICAgICAgICBwcmludChPbmVPck1vcmUoV29yZChudW1zKSkuYWRkUGFyc2VBY3Rpb24ocmVtb3ZlX2ZpcnN0KS5wYXJzZVN0cmluZygiMCAxMjMgMzIxIikpICMgLT4gWycxMjMnLCAnMzIxJ10KCiAgICAgICAgICAgIGxhYmVsID0gV29yZChhbHBoYXMpCiAgICAgICAgICAgIHBhdHQgPSBsYWJlbCgiTEFCRUwiKSArIE9uZU9yTW9yZShXb3JkKG51bXMpKQogICAgICAgICAgICBwcmludChwYXR0LnBhcnNlU3RyaW5nKCJBQUIgMTIzIDMyMSIpLmR1bXAoKSkKCiAgICAgICAgICAgICMgVXNlIHBvcCgpIGluIGEgcGFyc2UgYWN0aW9uIHRvIHJlbW92ZSBuYW1lZCByZXN1bHQgKG5vdGUgdGhhdCBjb3JyZXNwb25kaW5nIHZhbHVlIGlzIG5vdAogICAgICAgICAgICAjIHJlbW92ZWQgZnJvbSBsaXN0IGZvcm0gb2YgcmVzdWx0cykKICAgICAgICAgICAgZGVmIHJlbW92ZV9MQUJFTCh0b2tlbnMpOgogICAgICAgICAgICAgICAgdG9rZW5zLnBvcCgiTEFCRUwiKQogICAgICAgICAgICAgICAgcmV0dXJuIHRva2VucwogICAgICAgICAgICBwYXR0LmFkZFBhcnNlQWN0aW9uKHJlbW92ZV9MQUJFTCkKICAgICAgICAgICAgcHJpbnQocGF0dC5wYXJzZVN0cmluZygiQUFCIDEyMyAzMjEiKS5kdW1wKCkpCgogICAgICAgIHByaW50czo6CgogICAgICAgICAgICBbJ0FBQicsICcxMjMnLCAnMzIxJ10KICAgICAgICAgICAg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ACkBcscAAAByEgAAAHISAAAAchMAAAByEQEAAH0DAABzAgAAAAAPehNQYXJzZVJlc3VsdHMuYXNMaXN0YwEAAAAAAAAAAgAAAAQAAAADAAAAc00AAAB0AAByEgB8AABqAQB9AQBuCQB8AABqAgB9AQCHAABmAQBkAQBkAgCGAACJAAB0AwCHAABmAQBkAwBkBACGAAB8AQCDAABEgwEAgwEAUykFYawDAAAKICAgICAgICBSZXR1cm5zIHRoZSBuYW1lZCBwYXJzZSByZXN1bHRzIGFzIGEgbmVzdGVkIGRpY3Rpb25hcnkuCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykKICAgICAgICAgICAgZGF0ZV9zdHIgPSBpbnRlZ2VyKCJ5ZWFyIikgKyAnLycgKyBpbnRlZ2VyKCJtb250aCIpICsgJy8nICsgaW50ZWdlcigiZGF5IikKCiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGVfc3RyLnBhcnNlU3RyaW5nKCcxMi8zMS8xOTk5JykKICAgICAgICAgICAgcHJpbnQodHlwZShyZXN1bHQpLCByZXByKHJlc3VsdCkpICMgLT4gPGNsYXNzICdweXBhcnNpbmcuUGFyc2VSZXN1bHRzJz4gKFsnMTInLCAnLycsICczMScsICcvJywgJzE5OTknXSwgeydkYXknOiBbKCcxOTk5JywgNCldLCAneWVhcic6IFsoJzEyJywgMCldLCAnbW9udGgnOiBbKCczMScsIDIpXX0pCgogICAgICAgICAgICByZXN1bHRfZGljdCA9IHJlc3VsdC5hc0RpY3QoKQogICAgICAgICAgICBwcmludCh0eXBlKHJlc3VsdF9kaWN0KSwgcmVwcihyZXN1bHRfZGljdCkpICMgLT4gPGNsYXNzICdkaWN0Jz4geydkYXknOiAnMTk5OScsICd5ZWFyJzogJzEyJywgJ21vbnRoJzogJzMxJ30KCiAgICAgICAgICAgICMgZXZlbiB0aG91Z2ggYSBQYXJzZVJlc3VsdHMgc3VwcG9ydHMgZGljdC1saWtlIGFjY2Vzcywgc29tZXRpbWUgeW91IGp1c3QgbmVlZCB0byBoYXZlIGEgZGljdAogICAgICAgICAgICBpbXBvcnQganNvbgogICAgICAgICAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCkpICMgLT4gRXhjZXB0aW9uOiBUeXBlRXJyb3I6IC4uLiBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUKICAgICAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQuYXNEaWN0KCkpKSAjIC0+IHsibW9udGgiOiAiMzEiLCAiZGF5IjogIjE5OTkiLCAieWVhciI6ICIxMiJ9CiAgICAgICAgYwEAAAAAAAAAAQAAAAMAAAATAAAAc0cAAAB0AAB8AAB0AQCDAgByPwB8AABqAgCDAAByJQB8AABqAwCDAABThwAAZgEAZAEAZAIAhgAAfAAARIMBAFNuBAB8AABTZAAAUykDTmMBAAAAAAAAAAIAAAAEAAAAEwAAAHMcAAAAZwAAfAAAXRIAfQEAiAAAfAEAgwEAkQIAcQYAU3ISAAAAchIAAAApAnIVAAAAciIBAAApAdoGdG9JdGVtchIAAAByEwAAAHIXAAAArAMAAHMCAAAACQB6N1BhcnNlUmVzdWx0cy5hc0RpY3QuPGxvY2Fscz4udG9JdGVtLjxsb2NhbHM+LjxsaXN0Y29tcD4pBHKaAAAAcj8AAAByQgEAANoGYXNEaWN0KQFyowAAACkBcmIBAAByEgAAAHITAAAAcmIBAACnAwAAcwoAAAAAAQ8BDAEKAhoCeiNQYXJzZVJlc3VsdHMuYXNEaWN0Ljxsb2NhbHM+LnRvSXRlbWMBAAAAAAAAAAMAAAAEAAAAMwAAAHMnAAAAfAAAXR0AXAIAfQEAfQIAfAEAiAAAfAIAgwEAZgIAVgFxAwBkAABTKQFOchIAAAApA3IVAAAAciUBAAByIgEAACkBcmIBAAByEgAAAHITAAAAcqcAAACwAwAAcwIAAAAGAHomUGFyc2VSZXN1bHRzLmFzRGljdC48bG9jYWxzPi48Z2VuZXhwcj4pBNoEUFlfM3IrAQAAckEBAAByHAEAACkCcscAAADaB2l0ZW1fZm5yEgAAACkBcmIBAAByEwAAAHJjAQAAjgMAAHMKAAAAABQGAQwCCQISCXoTUGFyc2VSZXN1bHRzLmFzRGljdGMBAAAAAAAAAAIAAAACAAAAQwAAAHNWAAAAdAAAfAAAagEAgwEAfQEAdAIAfAAAagMAagQAgwAAgwEAfAEAXwMAfAAAagUAfAEAXwUAfAEAagYAagcAfAAAagYAgwEAAXwAAGoIAHwBAF8IAHwBAFMpAXpHCiAgICAgICAgUmV0dXJucyBhIG5ldyBjb3B5IG9mIGEgOmNsYXNzOmBQYXJzZVJlc3VsdHNgIG9iamVjdC4KICAgICAgICApCXI/AAAAchoBAAByHAEAAHIdAQAAcisBAAByFQEAAHIWAQAAclgBAAByFAEAACkCcscAAABypAAAAHISAAAAchIAAAByEwAAAHJRAQAAsgMAAHMMAAAAAAQPARgBDAETAQwBehFQYXJzZVJlc3VsdHMuY29weUZjBQAAAAAAAAAOAAAACwAAAEMAAABz2AEAAGQBAH0FAGcAAH0GAHQAAGQCAGQDAIQAAHwAAGoBAGoCAIMAAESDAQCDAQB9BwB8AwBkBAAXfQgAfAQAc1AAZAUAfQMAZAUAfQgAZAUAfQUAZAYAfQkAfAEAZAYAawkAcmsAfAEAfQkAbhIAfAAAagMAcn0AfAAAagMAfQkAfAkAc5MAfAIAco0AZAUAU2QHAH0JAHwGAHwFAHwDAGQIAHwJAGQJAGcFADd9BgB4AwF0BAB8AABqBQCDAQBEXfIAXAIAfQoAfQsAdAYAfAsAdAcAgwIAckMBfAoAfAcAawYAchUBfAYAfAsAaggAfAcAfAoAGXwCAG8CAXwBAGQGAGsIAHwIAHwEAIMEAGcBADd9BgBxrgF8BgB8CwBqCABkBgB8AgBvMAF8AQBkBgBrCAB8CAB8BACDBABnAQA3fQYAcbwAZAYAfQwAfAoAfAcAawYAcl8BfAcAfAoAGX0MAHwMAHN3AXwCAHJxAXG8AG4GAGQHAH0MAHQJAHQKAHwLAIMBAIMBAH0NAHwGAHwFAHwIAGQIAHwMAGQJAHwNAGQKAHwMAGQJAGcJADd9BgBxvABXfAYAfAUAfAMAZAoAfAkAZAkAZwUAN30GAGQFAGoLAHwGAIMBAFMpC3qHCiAgICAgICAgKERlcHJlY2F0ZWQpIFJldHVybnMgdGhlIHBhcnNlIHJlc3VsdHMgYXMgWE1MLiBUYWdzIGFyZSBjcmVhdGVkIGZvciB0b2tlbnMgYW5kIGxpc3RzIHRoYXQgaGF2ZSBkZWZpbmVkIHJlc3VsdHMgbmFtZXMuCiAgICAgICAgcukAAABjAQAAAAAAAAAEAAAABAAAAHMAAABzMgAAAHwAAF0oAFwCAH0BAH0CAHwCAERdFQB9AwB8AwBkAAAZfAEAZgIAVgFxEwBxAwBkAQBTKQJylAAAAE5yEgAAACkEchUAAAByJQEAAHJWAQAAciIBAAByEgAAAHISAAAAchMAAABypwAAAMMDAABzBAAAAAYACQF6JVBhcnNlUmVzdWx0cy5hc1hNTC48bG9jYWxzPi48Z2VuZXhwcj56AiAgcrYAAABO2gRJVEVN+gE8+gE+egI8LykMchwBAAByHQEAAHIrAQAAchQBAABy8QAAAHIaAQAAcpoAAAByPwAAANoFYXNYTUxyswAAAHKlAAAActYAAAApDnLHAAAA2gZkb2N0YWfaDm5hbWVkSXRlbXNPbmx52gZpbmRlbnTaCWZvcm1hdHRlZNoCbmxyYAEAANoKbmFtZWRJdGVtc9oPbmV4dExldmVsSW5kZW502gdzZWxmVGFncvsAAAByYQEAANoGcmVzVGFn2gt4bWxCb2R5VGV4dHISAAAAchIAAAByEwAAAHJpAQAAvQMAAHNUAAAAAAQGAQYBIgIKAwYBBgEGAQYCBgEMAQkCCQEJAgYBBgEEAgYCGQIcAQ8BDAEQAQ8BAwEQAgwBDwEDARADBgEMAQoBBgEGAQYCBgESARIBAwEUAhkBehJQYXJzZVJlc3VsdHMuYXNYTUxjAgAAAAAAAAAGAAAABAAAAEMAAABzSwAAAHhEAHwAAGoAAGoBAIMAAERdMwBcAgB9AgB9AwB4JAB8AwBEXRwAXAIAfQQAfQUAfAEAfAQAawgAciMAfAIAU3EjAFdxEABXZAAAUykBTikCch0BAAByKwEAACkGcscAAAByJgEAAHIlAQAAclYBAAByIgEAAHLDAAAAchIAAAByEgAAAHITAAAA2ghfX2xvb2t1cPoDAABzCgAAAAABHAETAQwBDAF6FVBhcnNlUmVzdWx0cy5fX2xvb2t1cGMBAAAAAAAAAAIAAAADAAAAQwAAAHOwAAAAfAAAagAAchAAfAAAagAAU3wAAGoBAHI/AHwAAGoBAIMAAH0BAHwBAHI4AHwBAGoCAHwAAIMBAFNkAQBTbm0AdAMAfAAAgwEAZAIAawIAcqgAdAMAfAAAagQAgwEAZAIAawIAcqgAdAUAdAYAfAAAagQAagcAgwAAgwEAgwEAZAMAGWQCABlkBQBrBgByqAB0BQB0BgB8AABqBABqCACDAACDAQCDAQBTZAEAU2QBAFMpBmEdAwAACiAgICAgICAgUmV0dXJucyB0aGUgcmVzdWx0cyBuYW1lIGZvciB0aGlzIHRva2VuIGV4cHJlc3Npb24uIFVzZWZ1bCB3aGVuIHNldmVyYWwKICAgICAgICBkaWZmZXJlbnQgZXhwcmVzc2lvbnMgbWlnaHQgbWF0Y2ggYXQgYSBwYXJ0aWN1bGFyIGxvY2F0aW9uLgoKICAgICAgICBFeGFtcGxlOjoKCiAgICAgICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpCiAgICAgICAgICAgIHNzbl9leHByID0gUmVnZXgociJcZFxkXGQtXGRcZC1cZFxkXGRcZCIpCiAgICAgICAgICAgIGhvdXNlX251bWJlcl9leHByID0gU3VwcHJlc3MoJyMnKSArIFdvcmQobnVtcywgYWxwaGFudW1zKQogICAgICAgICAgICB1c2VyX2RhdGEgPSAoR3JvdXAoaG91c2VfbnVtYmVyX2V4cHIpKCJob3VzZV9udW1iZXIiKQogICAgICAgICAgICAgICAgICAgICAgICB8IEdyb3VwKHNzbl9leHByKSgic3NuIikKICAgICAgICAgICAgICAgICAgICAgICAgfCBHcm91cChpbnRlZ2VyKSgiYWdlIikpCiAgICAgICAgICAgIHVzZXJfaW5mbyA9IE9uZU9yTW9yZSh1c2VyX2RhdGEpCgogICAgICAgICAgICByZXN1bHQgPSB1c2VyX2luZm8ucGFyc2VTdHJpbmcoIjIyIDExMS0yMi0zMzMzICMyMjFCIikKICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcmVzdWx0OgogICAgICAgICAgICAgICAgcHJpbnQoaXRlbS5nZXROYW1lKCksICc6JywgaXRlbVswXSkKCiAgICAgICAgcHJpbnRzOjoKCiAgICAgICAgICAgIGFnZSA6IDIyCiAgICAgICAgICAgIHNzbiA6IDExMS0yMi0zMzMzCiAgICAgICAgICAgIGhvdXNlX251bWJlciA6IDIyMUIKICAgICAgICBOcpQAAAByAQAAAHKVAAAAKQJyAQAAAHKVAAAAKQlyFAEAAHIVAQAA2hVfUGFyc2VSZXN1bHRzX19sb29rdXBy0gAAAHIdAQAA2gRuZXh0cjYBAAByQAEAAHI+AQAAKQJyxwAAANoDcGFychIAAAByEgAAAHITAAAA2gdnZXROYW1lAQQAAHMYAAAAABkJAQcBCQEMAQYBDQIHARIBFQEpARkCehRQYXJzZVJlc3VsdHMuZ2V0TmFtZXIBAAAAYwUAAAAAAAAADAAAABIAAABDAAAAcwwCAABnAAB9BQBkAQB9BgB8AwByMgB8BQBqAAB8AQB0AQB8AABqAgCDAACDAQAXgwEAAW4NAHwFAGoAAGQCAIMBAAF8AgBy/wF8AABqAwCDAAByKwF0BABkAwBkBACEAAB8AABqBQCDAABEgwEAgwEAfQcAeIwBfAcARF2tAFwCAH0IAH0JAHwFAHKWAHwFAGoAAHwGAIMBAAF8BQBqAABkBQB8AQBkBgB8BAAUfAgAZgMAFoMBAAF0BgB8CQB0BwCDAgByEQF8CQBy+wB8BQBqAAB8CQBqCABkBwB8AQBkCAB8AgBkCQB8AwBkCgB8BABkCwAXgwAEgwEAAXEkAXwFAGoAAHQBAHwJAIMBAIMBAAFxdwB8BQBqAAB0CQB8CQCDAQCDAQABcXcAV27UAHQKAGQMAGQEAIQAAHwAAESDAQCDAQBy/wF8AAB9CQB4sgB0CwB8CQCDAQBEXaQAXAIAfQoAfQsAdAYAfAsAdAcAgwIAcsYBfAUAagAAZA0AfAEAZAYAfAQAFHwKAHwBAGQGAHwEAGQLABcUfAsAaggAZAcAfAEAZAgAfAIAZAkAfAMAZAoAfAQAZAsAF4MABGYGABaDAQABcVcBfAUAagAAZA0AfAEAZAYAfAQAFHwKAHwBAGQGAHwEAGQLABcUdAEAfAsAgwEAZgYAFoMBAAFxVwFXZAIAagwAfAUAgwEAUykOYUYCAAAKICAgICAgICBEaWFnbm9zdGljIG1ldGhvZCBmb3IgbGlzdGluZyBvdXQgdGhlIGNvbnRlbnRzIG9mCiAgICAgICAgYSA6Y2xhc3M6YFBhcnNlUmVzdWx0c2AuIEFjY2VwdHMgYW4gb3B0aW9uYWwgYGBpbmRlbnRgYCBhcmd1bWVudCBzbwogICAgICAgIHRoYXQgdGhpcyBzdHJpbmcgY2FuIGJlIGVtYmVkZGVkIGluIGEgbmVzdGVkIGRpc3BsYXkgb2Ygb3RoZXIgZGF0YS4KCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgICAgICBkYXRlX3N0ciA9IGludGVnZXIoInllYXIiKSArICcvJyArIGludGVnZXIoIm1vbnRoIikgKyAnLycgKyBpbnRlZ2VyKCJkYXkiKQoKICAgICAgICAgICAgcmVzdWx0ID0gZGF0ZV9zdHIucGFyc2VTdHJpbmcoJzEyLzMxLzE5OTknKQogICAgICAgICAgICBwcmludChyZXN1bHQuZHVtcCgpKQoKICAgICAgICBwcmludHM6OgoKICAgICAgICAgICAgWycxMicsICcvJywgJzMxJywgJy8nLCAnMTk5OSddCiAgICAgICAgICAgIC0gZGF5OiAxOTk5CiAgICAgICAgICAgIC0gbW9udGg6IDMxCiAgICAgICAgICAgIC0geWVhcjogMTIKICAgICAgICBy6QAAAHK2AAAAYwEAAAAAAAAAAwAAAAMAAABzAAAAcycAAAB8AABdHQBcAgB9AQB9AgB0AAB8AQCDAQB8AgBmAgBWAXEDAGQAAFMpAU4pAXKcAAAAKQNyFQAAAHIlAQAAciIBAAByEgAAAHISAAAAchMAAABypwAAAEcEAABzAgAAAAYAeiRQYXJzZVJlc3VsdHMuZHVtcC48bG9jYWxzPi48Z2VuZXhwcj56CiVzJXMtICVzOiB6AiAgcmwBAADaBGZ1bGzaDGluY2x1ZGVfbGlzdNoGX2RlcHRocpQAAABjAQAAAAAAAAACAAAABAAAAHMAAABzHgAAAHwAAF0UAH0BAHQAAHwBAHQBAIMCAFYBcQMAZAAAUykBTikCcpoAAAByPwAAACkCchUAAADaAnZ2chIAAAByEgAAAHITAAAAcqcAAABTBAAAcwIAAAAGAHoRCiVzJXNbJWRdOgolcyVzJXMpDXLsAAAAcqUAAAByEQEAAHJCAQAA2gZzb3J0ZWRyKwEAAHKaAAAAcj8AAADaBGR1bXByCgEAANoDYW55cvEAAABy1gAAACkMcscAAABybAEAAHJ5AQAAcnoBAAByewEAAHJgAQAA2gJOTHIrAQAAciUBAAByIgEAAHL7AAAAcnwBAAByEgAAAHISAAAAchMAAAByfgEAACkEAABzSgAAAAAVBgEGAQYBIAINAgYBDAEfARMBBgENAR4BDwEGATICFgIaARkBBgEZAQ8BDAEHAQMBAwELAQ8BBgEGARUCDAEHAQMBAwELARUCehFQYXJzZVJlc3VsdHMuZHVtcGMBAAAAAAAAAAMAAAAEAAAATwAAAHMdAAAAdAAAagAAfAAAagEAgwAAfAEAfAIAjgEAAWQBAFMpAmEjAwAACiAgICAgICAgUHJldHR5LXByaW50ZXIgZm9yIHBhcnNlZCByZXN1bHRzIGFzIGEgbGlzdCwgdXNpbmcgdGhlCiAgICAgICAgYHBwcmludCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3BwcmludC5odG1sPmBfIG1vZHVsZS4KICAgICAgICBBY2NlcHRzIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3MgYXMgZGVmaW5lZCBmb3IKICAgICAgICBgcHByaW50LnBwcmludCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3BwcmludC5odG1sI3BwcmludC5wcHJpbnQ+YF8gLgoKICAgICAgICBFeGFtcGxlOjoKCiAgICAgICAgICAgIGlkZW50ID0gV29yZChhbHBoYXMsIGFscGhhbnVtcykKICAgICAgICAgICAgbnVtID0gV29yZChudW1zKQogICAgICAgICAgICBmdW5jID0gRm9yd2FyZCgpCiAgICAgICAgICAgIHRlcm0gPSBpZGVudCB8IG51bSB8IEdyb3VwKCcoJyArIGZ1bmMgKyAnKScpCiAgICAgICAgICAgIGZ1bmMgPDw9IGlkZW50ICsgR3JvdXAoT3B0aW9uYWwoZGVsaW1pdGVkTGlzdCh0ZXJtKSkpCiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMucGFyc2VTdHJpbmcoImZuYSBhLGIsKGZuYiBjLGQsMjAwKSwxMDAiKQogICAgICAgICAgICByZXN1bHQucHByaW50KHdpZHRoPTQwKQoKICAgICAgICBwcmludHM6OgoKICAgICAgICAgICAgWydmbmEnLAogICAgICAgICAgICAgWydhJywKICAgICAgICAgICAgICAnYicsCiAgICAgICAgICAgICAgWycoJywg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aGFyc2MBAAAAAAAAAAEAAAACAAAAQwAAAHMNAAAAfAAAdAAAXwEAZAEAUykCYWgCAAAKICAgICAgICBTZXQgY2xhc3MgdG8gYmUgdXNlZCBmb3IgaW5jbHVzaW9uIG9mIHN0cmluZyBsaXRlcmFscyBpbnRvIGEgcGFyc2VyLgoKICAgICAgICBFeGFtcGxlOjoKCiAgICAgICAgICAgICMgZGVmYXVsdCBsaXRlcmFsIGNsYXNzIHVzZWQgaXMgTGl0ZXJhbAogICAgICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgICAgICBkYXRlX3N0ciA9IGludGVnZXIoInllYXIiKSArICcvJyArIGludGVnZXIoIm1vbnRoIikgKyAnLycgKyBpbnRlZ2VyKCJkYXkiKQoKICAgICAgICAgICAgZGF0ZV9zdHIucGFyc2VTdHJpbmcoIjE5OTkvMTIvMzEiKSAgIyAtPiBbJzE5OTknLCAnLycsICcxMicsICcvJywgJzMxJ10KCgogICAgICAgICAgICAjIGNoYW5nZSB0byBTdXBwcmVzcwogICAgICAgICAgICBQYXJzZXJFbGVtZW50LmlubGluZUxpdGVyYWxzVXNpbmcoU3VwcHJlc3MpCiAgICAgICAgICAgIGRhdGVfc3RyID0gaW50ZWdlcigieWVhciIpICsgJy8nICsgaW50ZWdlcigibW9udGgiKSArICcvJyArIGludGVnZXIoImRheSIpCgogICAgICAgICAgICBkYXRlX3N0ci5wYXJzZVN0cmluZygiMTk5OS8xMi8zMSIpICAjIC0+IFsnMTk5OScsICcxMicsICczMSddCiAgICAgICAgTikCckEAAADaE19saXRlcmFsU3RyaW5nQ2xhc3MpAXLKAAAAchIAAAByEgAAAHITAAAA2hNpbmxpbmVMaXRlcmFsc1VzaW5nXAUAAHMCAAAAABR6IVBhcnNlckVsZW1lbnQuaW5saW5lTGl0ZXJhbHNVc2luZ2MCAAAAAAAAAAIAAAABAAAAQwAAAHMdAAAAeBYAfAEAagAAchgAfAEAagAAfQEAcQMAV3wBAFMpAU4pAdoHdGJfbmV4dCkCcsoAAABypQEAAHISAAAAchIAAAByEwAAANoPX3RyaW1fdHJhY2ViYWNrcgUA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ICBEZWZpbmUgbmFtZSBmb3IgdGhpcyBleHByZXNzaW9uLCBtYWtlcyBkZWJ1Z2dpbmcgYW5kIGV4Y2VwdGlvbiBtZXNzYWdlcyBjbGVhcmVyLgoKICAgICAgICBFeGFtcGxlOjoKCiAgICAgICAgICAgIFdvcmQobnVtcykucGFyc2VTdHJpbmcoIkFCQyIpICAjIC0+IEV4Y2VwdGlvbjogRXhwZWN0ZWQgVzooMDEyMy4uLikgKGF0IGNoYXIgMCksIChsaW5lOjEsIGNvbDoxKQogICAgICAgICAgICBXb3JkKG51bXMpLnNldE5hbWUoImludGVnZXIiKS5wYXJzZVN0cmluZygiQUJDIikgICMgLT4gRXhjZXB0aW9uOiBFeHBlY3RlZCBpbnRlZ2VyIChhdCBjaGFyIDApLCAobGluZToxLCBjb2w6MSkKICAgICAgICB6CUV4cGVjdGVkICkFchABAAByyAEAAHIYAAAA2iFlbmFibGVfZGVidWdfb25fbmFtZWRfZXhwcmVzc2lvbnPaCHNldERlYnVnKQJyxwAAAHIQAQAAchIAAAByEgAAAHITAAAA2gdzZXROYW1lrAUAAHMKAAAAAAkJARABCQEKAXoVUGFyc2VyRWxlbWVudC5zZXROYW1lYwMAAAAAAAAAAwAAAAMAAABDAAAAcxAAAAB8AABqAAB8AQB8AgCDAgBTKQFhTwMAAAogICAgICAgIERlZmluZSBuYW1lIGZvciByZWZlcmVuY2luZyBtYXRjaGluZyB0b2tlbnMgYXMgYSBuZXN0ZWQgYXR0cmlidXRlCiAgICAgICAgb2YgdGhlIHJldHVybmVkIHBhcnNlIHJlc3VsdHMuCiAgICAgICAgTk9URTogdGhpcyByZXR1cm5zIGEgKmNvcHkqIG9mIHRoZSBvcmlnaW5hbCA6Y2xhc3M6YFBhcnNlckVsZW1lbnRgIG9iamVjdDsKICAgICAgICB0aGlzIGlzIHNvIHRoYXQgdGhlIGNsaWVudCBjYW4gZGVmaW5lIGEgYmFzaWMgZWxlbWVudCwgc3VjaCBhcyBhbgogICAgICAgIGludGVnZXIsIGFuZCByZWZlcmVuY2UgaXQgaW4gbXVsdGlwbGUgcGxhY2VzIHdpdGggZGlmZmVyZW50IG5hbWVzLgoKICAgICAgICBZ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YSBjYWxsYWJsZSBtZXRob2Qgd2l0aCAwLTMgYXJndW1lbnRzLCBjYWxsZWQgYXMgYGBmbihzLCBsb2MsIHRva3MpYGAgLAogICAgICAgIGBgZm4obG9jLCB0b2tzKWBgICwgYGBmbih0b2tzKWBgICwgb3IganVzdCBgYGZuKClgYCAsIHdoZXJlOgoKICAgICAgICAtIHMgICA9IHRoZSBvcmlnaW5hbCBzdHJpbmcgYmVpbmcgcGFyc2VkIChzZWUgbm90ZSBiZWxvdykKICAgICAgICAtIGxvYyA9IHRoZSBsb2NhdGlvbiBvZiB0aGUgbWF0Y2hpbmcgc3Vic3RyaW5nCiAgICAgICAgLSB0b2tzID0gYSBsaXN0IG9mIHRoZSBtYXRjaGVkIHRva2VucywgcGFja2FnZWQgYXMgYSA6Y2xhc3M6YFBhcnNlUmVzdWx0c2Agb2JqZWN0CgogICAgICAgIElmIHRoZSBmdW5jdGlvbnMgaW4gZm5zIG1vZGlmeSB0aGUgdG9rZW5zLCB0aGV5IGNhbiByZXR1cm4gdGhlbSBhcyB0aGUgcmV0dXJuCiAgICAgICAgdmFsdWUgZnJvbSBmbiwgYW5kIHRoZSBtb2RpZmllZCBsaXN0IG9mIHRva2VucyB3aWxsIHJlcGxhY2UgdGhlIG9yaWdpbmFsLgogICAgICAgIE90aGVyd2lzZSwgZm4gZG9lcyBub3QgbmVlZCB0byByZXR1cm4gYW55IHZhbHVlLgoKICAgICAgICBJZiBOb25lIGlzIHBhc3NlZCBhcyB0aGUgcGFyc2UgYWN0aW9uLCBhbGwgcHJldmlvdXNseSBhZGRlZCBwYXJzZSBhY3Rpb25zIGZvciB0aGlzCiAgICAgICAgZXhwcmVzc2lvbiBhcmUgY2xlYXJlZC4KCiAgICAgICAgT3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHM6CiAgICAgICAgLSBjYWxsRHVyaW5nVHJ5ID0gKGRlZmF1bHQ9IGBgRmFsc2VgYCkgaW5kaWNhdGUgaWYgcGFyc2UgYWN0aW9uIHNob3VsZCBiZSBydW4gZHVyaW5nIGxvb2thaGVhZHMgYW5kIGFsdGVybmF0ZSB0ZXN0aW5nCgogICAgICAgIE5vdGU6IHRoZSBkZWZhdWx0IHBhcnNpbmcgYmVoYXZpb3IgaXMgdG8gZXhwYW5kIHRhYnMgaW4gdGhlIGlucHV0IHN0cmluZwogICAgICAgIGJlZm9yZSBzdGFydGluZyB0aGUgcGFyc2luZyBwcm9jZXNzLiAgU2VlIDpjbGFzczpgcGFyc2VTdHJpbmcgZm9yIG1vcmUKICAgICAgICBpbmZvcm1hdGlvbiBvbiBwYXJzaW5nIHN0cmluZ3MgY29udGFpbmluZyBgYDxUQUI+YGAgcywgYW5kIHN1Z2dlc3RlZAogICAgICAgIG1ldGhvZHMgdG8gbWFpbnRhaW4gYSBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIHBhcnNlZCBzdHJpbmcsIHRoZSBwYXJzZQogICAgICAgIGxvY2F0aW9uLCBhbmQgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyB3aXRoaW4gdGhlIHBhcnNlZCBzdHJpbmcuCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykKICAgICAgICAgICAgZGF0ZV9zdHIgPSBpbnRlZ2VyICsgJy8nICsgaW50ZWdlciArICcvJyArIGludGVnZXIKCiAgICAgICAgICAgIGRhdGVfc3RyLnBhcnNlU3RyaW5nKCIxOTk5LzEyLzMxIikgICMgLT4gWycxOTk5JywgJy8nLCAnMTInLCAnLycsICczMSddCgogICAgICAgICAgICAjIHVzZSBwYXJzZSBhY3Rpb24gdG8gY29udmVydCB0byBpbnRzIGF0IHBhcnNlIHRpbWUKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykuc2V0UGFyc2VBY3Rpb24obGFtYmRhIHRva3M6IGludCh0b2tzWzBdKSkKICAgICAgICAgICAgZGF0ZV9zdHIgPSBpbnRlZ2VyICsgJy8nICsgaW50ZWdlciArICcvJyArIGludGVnZXIKCiAgICAgICAgICAgICMgbm90ZSB0aGF0IGludGVnZXIgZmllbGRzIGFyZSBub3cgaW50cywgbm90IHN0cmluZ3MKICAgICAgICAgICAgZGF0ZV9zdHIucGFyc2VTdHJpbmcoIjE5OTkvMTIvMzEiKSAgIyAtPiBbMTk5OSwgJy8nLCAxMiwgJy8nLCAzMV0KICAgICAgICBOYwEAAAAAAAAAAgAAAAMAAABzAAAAcxsAAAB8AABdEQB9AQB0AAB8AQCDAQBWAXEDAGQAAFMpAU4pAdoIY2FsbGFibGUpAnIVAAAAcr0AAAByEgAAAHISAAAAchMAAABypwAAABkGAABzAgAAAAYAei9QYXJzZXJFbGVtZW50LnNldFBhcnNlQWN0aW9uLjxsb2NhbHM+LjxnZW5leHByPnoecGFyc2UgYWN0aW9ucyBtdXN0IGJlIGNhbGxhYmxlcswBAABGKQhyGQEAAHK6AQAA2gNhbGxyIAEAANoDbWFwcsAAAABy8wAAAHLMAQAAKQNyxwAAANoDZm5zckQBAAByEgAAAHISAAAAchMAAAByoQAAAO4FAABzDgAAAAAoFQEMAhkBDAEeARUBehxQYXJzZXJFbGVtZW50LnNldFBhcnNlQWN0aW9uYwEAAAAAAAAAAwAAAAcAAABPAAAAc0YAAAB8AAAEagAAdAEAdAIAdAMAdAEAfAEAgwEAgwIAgwEANwJfAAB8AABqBABwPAB8AgBqBQBkAQBkAgCDAgB8AABfBAB8AABTKQN6mwogICAgICAgIEFkZCBvbmUgb3IgbW9yZSBwYXJzZSBhY3Rpb25zIHRvIGV4cHJlc3Npb24ncyBsaXN0IG9mIHBhcnNlIGFjdGlvbnMuIFNlZSA6Y2xhc3M6YHNldFBhcnNlQWN0aW9uYC4KCiAgICAgICAgU2VlIGV4YW1wbGVzIGluIDpjbGFzczpgY29weWAuCiAgICAgICAgcswBAABGKQZyugEAAHIZAQAAcuQBAABywAAAAHLMAQAAcvMAAAApA3LHAAAAcuUBAAByRAEAAHISAAAAchIAAAByEwAAANoOYWRkUGFyc2VBY3Rpb24fBgAAcwYAAAAABiQBHgF6HFBhcnNlckVsZW1lbnQuYWRkUGFyc2VBY3Rpb25jAQAAAAAAAAAEAAAACgAAAE8AAABzagAAAHhFAHwBAERdPQB9AwB8AABqAABqAQB0AgB8AwBkAQB8AgBqAwBkAQCDAQBkAgB8AgBqAwBkAgBkAwCDAgCDAQKDAQABcQcAV3wAAGoEAHBgAHwCAGoDAGQEAGQDAIMCAHwAAF8EAHwAAFMpBWG8AwAAQWRkIGEgYm9vbGVhbiBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gZXhwcmVzc2lvbidzIGxpc3Qgb2YgcGFyc2UgYWN0aW9ucy4gU2VlCiAgICAgICAgOmNsYXNzOmBzZXRQYXJzZUFjdGlvbmAgZm9yIGZ1bmN0aW9uIGNhbGwgc2lnbmF0dXJlcy4gVW5saWtlIGBgc2V0UGFyc2VBY3Rpb25gYCwKICAgICAgICBmdW5jdGlvbnMgcGFzc2VkIHRvIGBgYWRkQ29uZGl0aW9uYGAgbmVlZCB0byByZXR1cm4gYm9vbGVhbiBzdWNjZXNzL2ZhaWwgb2YgdGhlIGNvbmRpdGlvbi4KCiAgICAgICAgT3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHM6CiAgICAgICAgLSBtZXNzYWdlID0gZGVmaW5lIGEgY3VzdG9tIG1lc3NhZ2UgdG8gYmUgdXNlZCBpbiB0aGUgcmFpc2VkIGV4Y2VwdGlvbgogICAgICAgIC0gZmF0YWwgICA9IGlmIFRydWUsIHdpbGwgcmFpc2UgUGFyc2VGYXRhbEV4Y2VwdGlvbiB0byBzdG9wIHBhcnNpbmcgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSB3aWxsIHJhaXNlIFBhcnNlRXhjZXB0aW9uCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykuc2V0UGFyc2VBY3Rpb24obGFtYmRhIHRva3M6IGludCh0b2tzWzBdKSkKICAgICAgICAgICAgeWVhcl9pbnQgPSBpbnRlZ2VyLmNvcHkoKQogICAgICAgICAgICB5ZWFyX2ludC5hZGRDb25kaXRpb24obGFtYmRhIHRva3M6IHRva3NbMF0gPj0gMjAwMCwgbWVzc2FnZT0iT25seSBzdXBwb3J0IHllYXJzIDIwMDAgYW5kIGxhdGVyIikKICAgICAgICAgICAgZGF0ZV9zdHIgPSB5ZWFyX2ludCArICcvJyArIGludGVnZXIgKyAnLycgKyBpbnRlZ2VyCgogICAgICAgICAgICByZXN1bHQgPSBkYXRlX3N0ci5wYXJzZVN0cmluZygiMTk5OS8xMi8zMSIpICAjIC0+IEV4Y2VwdGlvbjogT25seSBzdXBwb3J0IHllYXJzIDIwMDAgYW5kIGxhdGVyIChhdCBjaGFyIDApLCAo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YmUgdW5ib3VuZGVkOyBpZiAwIGlzIHBhc3NlZCwgdGhlIGNhY2hlIHdpbGwKICAgICAgICAgICAgIGJlIGVmZmVjdGl2ZWx5IGRpc2FibGVkLgoKICAgICAgICAgICBUaGlzIHNwZWVkdXAgbWF5IGJyZWFrIGV4aXN0aW5nIHByb2dyYW1zIHRoYXQgdXNlIHBhcnNlIGFjdGlvbnMgdGhhdAogICAgICAgICAgIGhhdmUgc2lkZS1lZmZlY3RzLiAgRm9yIHRoaXMgcmVhc29uLCBwYWNrcmF0IHBhcnNpbmcgaXMgZGlzYWJsZWQgd2hlbgogICAgICAgICAgIHlvdSBmaXJzdCBpbXBvcnQgcHlwYXJzaW5nLiAgVG8gYWN0aXZhdGUgdGhlIHBhY2tyYXQgZmVhdHVyZSwgeW91cgogICAgICAgICAgIHByb2dyYW0gbXVzdCBjYWxsIHRoZSBjbGFzcyBtZXRob2QgOmNsYXNzOmBQYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXRgLgogICAgICAgICAgIEZvciBiZXN0IHJlc3VsdHMsIGNhbGwgYGBlbmFibGVQYWNrcmF0KClgYCBpbW1lZGlhdGVseSBhZnRlcgogICAgICAgICAgIGltcG9ydGluZyBweXBhcnNpbmcuCgogICAgICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgICAgZnJvbSBwaXAuX3ZlbmRvciBpbXBvcnQgcHlwYXJzaW5nCiAgICAgICAgICAgICAgIHB5cGFyc2luZy5QYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXQoKQogICAgICAgIFROKQdyQQAAANoPX3BhY2tyYXRFbmFibGVkcgQCAAByDgIAAHIIAgAAchMCAABy3wEAACkB2hBjYWNoZV9zaXplX2xpbWl0chIAAAByEgAAAHITAAAA2g1lbmFibGVQYWNrcmF0SgcAAHMMAAAAABsJAQkBDAESAhIBehtQYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXRjAwAAAAAAAAAIAAAAEAAAAEMAAABzFgEAAHQAAGoBAIMAAAF8AABqAgBzHQB8AABqAwCDAAABeBsAfAAAagQARF0QAH0DAHwDAGoDAIMAAAFxJwBXfAAAagUAc1AAfAEAagYAgwAAfQEAeVQAfAAAagcAfAEAZAEAgwIAXAIAfQQAfQUAfAIAcqMAfAAAaggAfAEAfAQAgwIAfQQAdAkAgwAAdAoAgwAAF30GAHwGAGoHAHwBAHwEAIMCAAFXbmcABHQLAGsKAHINAQF9BwABekcAdAAAagwAcsgAggAAbjMAdA0AfAcAZAIAZAMAgwMAZAMAawkAcvUAfAAAag4AfAcAag8AgwEAfAcAXw8AfAcAggEAV1lkAwBkAwB9BwB+BwBYbgUAWHwFAFNkAwBTKQRh+wUAAAogICAgICAgIEV4ZWN1dGUgdGhlIHBhcnNlIGV4cHJlc3Npb24gd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICAgIFRoaXMgaXMgdGhlIG1haW4gaW50ZXJmYWNlIHRvIHRoZSBjbGllbnQgY29kZSwgb25jZSB0aGUgY29tcGxldGUKICAgICAgICBleHByZXNzaW9uIGhhcyBiZWVuIGJ1aWx0LgoKICAgICAgICBSZXR1cm5zIHRoZSBwYXJzZWQgZGF0YSBhcyBhIDpjbGFzczpgUGFyc2VSZXN1bHRzYCBvYmplY3QsIHdoaWNoIG1heSBiZQogICAgICAgIGFjY2Vzc2VkIGFzIGEgbGlzdCwgb3IgYXMgYSBkaWN0IG9yIG9iamVjdCB3aXRoIGF0dHJpYnV0ZXMgaWYgdGhlIGdpdmVuIHBhcnNlcgogICAgICAgIGluY2x1ZGVzIHJlc3VsdHMgbmFtZXMuCgogICAgICAgIElmIHlvdSB3YW50IHRoZSBncmFtbWFyIHRvIHJlcXVpcmUgdGhhdCB0aGUgZW50aXJlIGlucHV0IHN0cmluZyBiZQogICAgICAgIHN1Y2Nlc3NmdWxseSBwYXJzZWQsIHRoZW4gc2V0IGBgcGFyc2VBbGxgYCB0byBUcnVlIChlcXVpdmFsZW50IHRvIGVuZGluZwogICAgICAgIHRoZSBncmFtbWFyIHdpdGggYGBTdHJpbmdFbmQoKWBgKS4KCiAgICAgICAgTm90ZTogYGBwYXJzZVN0cmluZ2BgIGltcGxpY2l0bHkgY2FsbHMgYGBleHBhbmR0YWJzKClgYCBvbiB0aGUgaW5wdXQgc3RyaW5nLAogICAgICAgIGluIG9yZGVyIHRvIHJlcG9ydCBwcm9wZXIgY29sdW1uIG51bWJlcnMgaW4gcGFyc2UgYWN0aW9ucy4KICAgICAgICBJZiB0aGUgaW5wdXQgc3RyaW5nIGNvbnRhaW5zIHRhYnMgYW5kCiAgICAgICAgdGhlIGdyYW1tYXIgdXNlcyBwYXJzZSBhY3Rpb25zIHRoYXQgdXNlIHRoZSBgYGxvY2BgIGFyZ3VtZW50IHRvIGluZGV4IGludG8gdGhlCiAgICAgICAgc3RyaW5nIGJlaW5nIHBhcnNlZCwgeW91IGNhbiBlbnN1cmUgeW91IGhhdmUgYSBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGlucHV0CiAgICAgICAgc3RyaW5nIGJ5OgoKICAgICAgICAtIGNhbGxpbmcgYGBwYXJzZVdpdGhUYWJzYGAgb24geW91ciBncmFtbWFyIGJlZm9yZSBjYWxsaW5nIGBgcGFyc2VTdHJpbmdgYAogICAgICAgICAgKHNlZSA6Y2xhc3M6YHBhcnNlV2l0aFRhYnNgKQogICAgICAgIC0gZGVmaW5lIHlvdXIgcGFyc2UgYWN0aW9uIHVzaW5nIHRoZSBmdWxsIGBgKHMsIGxvYywgdG9rcylgYCBzaWduYXR1cmUsIGFuZAogICAgICAgICAgcmVmZXJlbmNlIHRoZSBpbnB1dCBzdHJpbmcgdXNpbmcgdGhlIHBhcnNlIGFjdGlvbidzIGBgc2BgIGFyZ3VtZW50CiAgICAgICAgLSBleHBsaWN0bHkgZXhwYW5kIHRoZSB0YWJzIGluIHlvdXIgaW5wdXQgc3RyaW5nIGJlZm9yZSBjYWxsaW5nCiAgICAgICAgICBgYHBhcnNlU3RyaW5nYGAKCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICBXb3JkKCdhJykucGFyc2VTdHJpbmcoJ2FhYWFhYmFhYScpICAjIC0+IFsnYWFhYWEnXQogICAgICAgICAgICBXb3JkKCdhJykucGFyc2VTdHJpbmcoJ2FhYWFhYmFhYScsIHBhcnNlQWxsPVRydWUpICAjIC0+IEV4Y2VwdGlvbjogRXhwZWN0ZWQgZW5kIG9mIHRleHQKICAgICAgICByAQAAAHLvAAAATikQckEAAAByFAIAAHLGAQAA2gpzdHJlYW1saW5lcsQBAABywwEAANoKZXhwYW5kdGFic3LfAQAAcu8BAAByKQAAAHJGAAAAcjoAAADaEnZlcmJvc2Vfc3RhY2t0cmFjZXKvAQAAcrkBAABy7wAAACkIcscAAABykwEAANoIcGFyc2VBbGxy6gEAAHLDAAAAcvkBAADaAnNlcvcAAAByEgAAAHISAAAAchMAAADaC3BhcnNlU3RyaW5nbQcAAHMoAAAAACEKAQkBCgIQAQ4BCQEMAQMBGAEGARIBEAEUARIBCQEGAxgBFQEZAnoZUGFyc2VyRWxlbWVudC5wYXJzZVN0cmluZ2MEAAAAAAAAAA8AAAARAAAAYwAAAHPMAQAAfAAAagAAcxMAfAAAagEAgwAAAXgbAHwAAGoCAERdEAB9BAB8BABqAQCDAAABcR0AV3wAAGoDAHNMAHQEAHwBAIMBAGoFAIMAAH0BAHQGAHwBAIMBAH0FAGQBAH0GAHwAAGoHAH0HAHwAAGoIAH0IAHQJAGoKAIMAAAFkAQB9CQB53gB41wB8BgB8BQBrAQByXAF8CQB8AgBrAAByXAF5LgB8BwB8AQB8BgCDAgB9CgB8CAB8AQB8CgBkAgBkAwCDAgFcAgB9CwB9DABXbhwABHQLAGsKAHLqAAEBAXwKAGQEABd9BgBZcYYAWHwLAHwGAGsEAHJPAXwJAGQEADd9CQB8DAB8CgB8CwBmAwBWAXwDAHJGAXwHAHwBAHwGAIMCAH0NAHwNAHwGAGsEAHI5AXwLAH0GAHFMAXwGAGQEADd9BgBxWQF8CwB9BgBxhgB8CgBkBAAXfQYAcYYAV1duZwAEdAwAawoAcscBAX0OAAF6RwB0CQBqDQByggGCAABuMwB0DgB8DgBkBQBkBgCDAwBkBgBrCQByrwF8AABqDwB8DgBqEACDAQB8DgBfEAB8DgCCAQBXWWQGAGQGAH0OAH4OAFhuAQBYZAYAUykHYXEEAAAKICAgICAgICBTY2FuIHRoZSBpbnB1dCBzdHJpbmcgZm9yIGV4cHJlc3Npb24gbWF0Y2hlcy4gIEVhY2ggbWF0Y2ggd2lsbCByZXR1cm4gdGhlCiAgICAgICAgbWF0Y2hpbmcgdG9rZW5zLCBzdGFydCBsb2NhdGlvbiwgYW5kIGVuZCBsb2NhdGlvbi4gIE1heSBiZSBjYWxsZWQgd2l0aCBvcHRpb25hbAogICAgICAgIGBgbWF4TWF0Y2hlc2BgIGFyZ3VtZW50LCB0byBjbGlwIHNjYW5uaW5nIGFmdGVyICduJyBtYXRjaGVzIGFyZSBmb3VuZC4gIElmCiAgICAgICAgYGBvdmVybGFwYGAgaXMgc3BlY2lmaWVkLCB0aGVuIG92ZXJsYXBwaW5nIG1hdGNoZXMgd2lsbCBiZSByZXBvcnRlZC4KCiAgICAgICAgTm90ZSB0aGF0IHRoZSBzdGFydCBhbmQgZW5kIGxvY2F0aW9ucyBhcmUgcmVwb3J0ZWQgcmVsYXRpdmUgdG8gdGhlIHN0cmluZwogICAgICAgIGJlaW5nIHBhcnNlZC4gIFNlZSA6Y2xhc3M6YHBhcnNlU3RyaW5nYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwYXJzaW5nCiAgICAgICAgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHRhYnMuCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgc291cmNlID0gInNsZGpmMTIzbHNkamprZjM0NXNsZGtqZjg3OWxranNmZDk4NyIKICAgICAgICAgICAgcHJpbnQoc291cmNlKQogICAgICAgICAgICBmb3IgdG9rZW5zLCBzdGFydCwgZW5kIGluIFdvcmQoYWxwaGFzKS5zY2FuU3RyaW5nKHNvdXJjZSk6CiAgICAgICAgICAgICAgICBwcmludCgnICcqc3RhcnQgKyAnXicqKGVuZC1zdGFydCkpCiAgICAgICAgICAgICAgICBwcmludCgnICcqc3RhcnQgKyB0b2tlbnNbMF0pCgogICAgICAgIHByaW50czo6CgogICAgICAgICAgICBzbGRqZjEyM2xzZGpqa2YzNDVzbGRramY4Nzlsa2pzZmQ5ODcKICAgICAgICAgICAgXl5eXl4KICAgICAgICAgICAgc2xkamYKICAgICAgICAgICAgICAgICAgICBeXl5eXl5eCiAgICAgICAgICAgICAgICAgICAgbHNkamprZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xka2pmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsa2pzZmQKICAgICAgICByAQAAAHLbAQAARnKUAAAAcu8AAABOKRFyxgEAAHIZAgAAcsQBAABywwEAAHKlAAAAchoCAABy0gAAAHLvAQAAct8BAAByQQAAAHIUAgAAcjwAAAByOgAAAHIbAgAAcq8BAAByuQEAAHLvAAAAKQ9yxwAAAHKTAQAA2gptYXhNYXRjaGVz2gdvdmVybGFwcuoBAABy7gEAAHLDAAAA2gpwcmVwYXJzZUZu2gdwYXJzZUZu2gdtYXRjaGVzcvcBAADaB25leHRMb2Ny+QEAANoHbmV4dGxvY3L3AAAAchIAAAByEgAAAHITAAAA2gpzY2FuU3RyaW5npwcAAHNGAAAAAB8JAQoBEAEOAgkBEgEMAQYBCQEJAQoBBgEDARsBAwEPAR8BDQEPAgwBCgEOAQYBDwEMAQkCDQIJAhIBEgEJAQYDGAEVAXoYUGFyc2VyRWxlbWVudC5zY2FuU3RyaW5nYwIAAAAAAAAACAAAABAAAABDAAAAc14BAABnAAB9AgBkAQB9AwBkAgB8AABfAAB52wB4jgB8AABqAQB8AQCDAQBEXX0AXAMAfQQAfQUAfQYAfAIAagIAfAEAfAMAfAUAhQIAGYMBAAF8BABynwB0AwB8BAB0BACDAgBydgB8AgB8BABqBQCDAAA3fQIAbikAdAMAfAQAdAYAgwIAcpIAfAIAfAQAN30CAG4NAHwCAGoCAHwEAIMBAAF8BgB9AwBxKABXfAIAagIAfAEAfAMAZAMAhQIAGYMBAAFkBABkBQCEAAB8AgBEgwEAfQIAZAYAagcAdAgAdAkAdAoAfAIAgwEAgwIAgwEAU1duZwAEdAsAawoAclkBAX0HAAF6RwB0DABqDQByFAGCAABuMwB0DgB8BwBkBwBkAwCDAwBkAwBrCQByQQF8AABqDwB8BwBqEACDAQB8BwBfEAB8BwCCAQBXWWQDAGQDAH0HAH4HAFhuAQBYZAMAUykIYVsDAAAKICAgICAgICBFeHRlbnNpb24gdG8gOmNsYXNzOmBzY2FuU3RyaW5nYCwgdG8gbW9kaWZ5IG1hdGNoaW5nIHRleHQgd2l0aCBtb2RpZmllZCB0b2tlbnMgdGhhdCBtYXkKICAgICAgICBiZSByZXR1cm5lZCBmcm9tIGEgcGFyc2UgYWN0aW9uLiAgVG8gdXNlIGBgdHJhbnNmb3JtU3RyaW5nYGAsIGRlZmluZSBhIGdyYW1tYXIgYW5kCiAgICAgICAgYXR0YWNoIGEgcGFyc2UgYWN0aW9uIHRvIGl0IHRoYXQgbW9kaWZpZXMgdGhlIHJldHVybmVkIHRva2VuIGxpc3QuCiAgICAgICAgSW52b2tpbmcgYGB0cmFuc2Zvcm1TdHJpbmcoKWBgIG9uIGEgdGFyZ2V0IHN0cmluZyB3aWxsIHRoZW4gc2NhbiBmb3IgbWF0Y2hlcywKICAgICAgICBhbmQgcmVwbGFjZSB0aGUgbWF0Y2hlZCB0ZXh0IHBhdHRlcm5zIGFjY29yZGluZyB0byB0aGUgbG9naWMgaW4gdGhlIHBhcnNlCiAgICAgICAgYWN0aW9uLiAgYGB0cmFuc2Zvcm1TdHJpbmcoKWBgIHJldHVybnMgdGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBzdHJpbmcuCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgd2QgPSBXb3JkKGFscGhhcykKICAgICAgICAgICAgd2Quc2V0UGFyc2VBY3Rpb24obGFtYmRhIHRva3M6IHRva3NbMF0udGl0bGUoKSkKCiAgICAgICAgICAgIHByaW50KHdkLnRyYW5zZm9ybVN0cmluZygibm93IGlzIHRoZSB3aW50ZXIgb2Ygb3VyIGRpc2NvbnRlbnQgbWFkZSBnbG9yaW91cyBzdW1tZXIgYnkgdGhpcyBzdW4gb2YgeW9yay4iKSkKCiAgICAgICAgcHJpbnRzOjoKCiAgICAgICAgICAgIE5vdyBJcyBUaGUgV2ludGVyIE9mIE91ciBEaXNjb250ZW50IE1hZGUgR2xvcmlvdXMgU3VtbWVyIEJ5IFRoaXMgU3VuIE9mIFlvcmsuCiAgICAgICAgcgEAAABUTmMBAAAAAAAAAAIAAAADAAAAUwAAAHMcAAAAZwAAfAAAXRIAfQEAfAEAcgYAfAEAkQIAcQYAU3ISAAAAchIAAAApAnIVAAAA2gFvchIAAAByEgAAAHITAAAAchcAAAAWCAAAcwIAAAAJAHoxUGFyc2VyRWxlbWVudC50cmFuc2Zvcm1TdHJpbmcuPGxvY2Fscz4uPGxpc3Rjb21wPnK2AAAAcu8AAAApEXLDAQAAciYCAABy7AAAAHKaAAAAcj8AAAByEQEAAHIZAQAActYAAABy5AEAAHKlAAAA2ghfZmxhdHRlbnI6AAAAckEAAAByGwIAAHKvAQAAcrkBAABy7wAAACkIcscAAABykwEAAHJgAQAA2gVsYXN0RXKYAAAAcqoAAABy6gEAAHL3AAAAchIAAAByEgAAAHITAAAAcqIAAADxBwAAcywAAAAAFAYBBgMJAQMBHwEXAQYBDwETAQ8BDQINAQoBFwETASABEgEJAQYDGAEVAXodUGFyc2VyRWxlbWVudC50cmFuc2Zvcm1TdHJpbmdjAwAAAAAAAAAEAAAAEAAAAEMAAABzlQAAAHknAHQAAGQBAGQCAIQAAHwAAGoBAHwBAHwCAIMCAESDAQCDAQBTV25nAAR0AgBrCgBykAABfQMAAXpHAHQDAGoEAHJLAIIAAG4zAHQFAHwDAGQDAGQEAIMDAGQEAGsJAHJ4AHwAAGoGAHwDAGoHAIMBAHwDAF8HAHwDAIIBAFdZZAQAZAQAfQMAfgMAWG4BAFhkBABTKQVhoAMAAAogICAgICAgIEFub3RoZXIgZXh0ZW5zaW9uIHRvIDpjbGFzczpgc2NhblN0cmluZ2AsIHNpbXBsaWZ5aW5nIHRoZSBhY2Nlc3MgdG8gdGhlIHRva2VucyBmb3VuZAogICAgICAgIHRvIG1hdGNoIHRoZSBnaXZlbiBwYXJzZSBleHByZXNzaW9uLiAgTWF5IGJlIGNhbGxlZCB3aXRoIG9wdGlvbmFsCiAgICAgICAgYGBtYXhNYXRjaGVzYGAgYXJndW1lbnQsIHRvIGNsaXAgc2VhcmNoaW5nIGFmdGVyICduJyBtYXRjaGVzIGFyZSBmb3VuZC4KCiAgICAgICAgRXhhbXBsZTo6CgogICAgICAgICAgICAjIGEgY2FwaXRhbGl6ZWQgd29yZCBzdGFydHMgd2l0aCBhbiB1cHBlcmNhc2UgbGV0dGVyLCBmb2xsb3dlZCBieSB6ZXJvIG9yIG1vcmUgbG93ZXJjYXNlIGxldHRlcnMKICAgICAgICAgICAgY2FwX3dvcmQgPSBXb3JkKGFscGhhcy51cHBlcigpLCBhbHBoYXMubG93ZXIoKSkKCiAgICAgICAgICAgIHByaW50KGNhcF93b3JkLnNlYXJjaFN0cmluZygiTW9yZSB0aGFuIElyb24sIG1vcmUgdGhhbiBMZWFkLCBtb3JlIHRoYW4gR29sZCBJIG5lZWQgRWxlY3RyaWNpdHkiKSkKCiAgICAgICAgICAgICMgdGhlIHN1bSgpIGJ1aWx0aW4gY2FuIGJlIHVzZWQgdG8gbWVyZ2UgcmVzdWx0cyBpbnRvIGEgc2luZ2xlIFBhcnNlUmVzdWx0cyBvYmplY3QKICAgICAgICAgICAgcHJpbnQoc3VtKGNhcF93b3JkLnNlYXJjaFN0cmluZygiTW9yZSB0aGFuIElyb24sIG1vcmUgdGhhbiBMZWFkLCBtb3JlIHRoYW4gR29sZCBJIG5lZWQgRWxlY3RyaWNpdHkiKSkpCgogICAgICAgIHByaW50czo6CgogICAgICAgICAgICBbWydNb3JlJ10sIFsnSXJvbiddLCBbJ0xlYWQnXSwgWydHb2xkJ10sIFsnSSddLCBbJ0VsZWN0cmljaXR5J11dCiAgICAgICAgICAgIFsnTW9yZScsICdJcm9uJywgJ0xlYWQnLCAnR29sZCcsICdJJywgJ0VsZWN0cmljaXR5J10KICAgICAgICBjAQAAAAAAAAAEAAAABQAAAFMAAABzHwAAAGcAAHwAAF0VAFwDAH0BAH0CAH0DAHwBAJECAHEGAFNyEgAAAHISAAAAKQRyFQAAAHKYAAAAcqoAAABy6gEAAHISAAAAchIAAAByEwAAAHIXAAAANwgAAHMCAAAACQB6LlBhcnNlckVsZW1lbnQuc2VhcmNoU3RyaW5nLjxsb2NhbHM+LjxsaXN0Y29tcD5y7wAAAE4pCHI/AAAAciYCAAByOgAAAHJBAAAAchsCAAByrwEAAHK5AQAAcu8AAAApBHLHAAAAcpMBAAByHwIAAHL3AAAAchIAAAByEgAAAHITAAAA2gxzZWFyY2hTdHJpbmchCAAAcxAAAAAAFQMBJwESAQkBBgMYARUBehpQYXJzZXJFbGVtZW50LnNlYXJjaFN0cmluZ2MEAAAAAAAAAAkAAAAEAAAAYwAAAHNsAAAAZAEAfQQAZAEAfQUAeEoAfAAAagAAfAEAZAIAfAIAgwEBRF0zAFwDAH0GAH0HAH0IAHwBAHwFAHwHAIUCABlWAXwDAHJPAHwGAGQBABlWAXwIAH0FAHEiAFd8AQB8BQBkAwCFAgAZVgFkAwBTKQRhUgIAAAogICAgICAgIEdlbmVyYXRvciBtZXRob2QgdG8gc3BsaXQgYSBzdHJpbmcgdXNpbmcgdGhlIGdpdmVuIGV4cHJlc3Npb24gYXMgYSBzZXBhcmF0b3IuCiAgICAgICAgTWF5IGJlIGNhbGxlZCB3aXRoIG9wdGlvbmFsIGBgbWF4c3BsaXRgYCBhcmd1bWVudCwgdG8gbGltaXQgdGhlIG51bWJlciBvZiBzcGxpdHM7CiAgICAgICAgYW5kIHRoZSBvcHRpb25hbCBgYGluY2x1ZGVTZXBhcmF0b3JzYGAgYXJndW1lbnQgKGRlZmF1bHQ9IGBgRmFsc2VgYCksIGlmIHRoZSBzZXBhcmF0aW5nCiAgICAgICAgbWF0Y2hpbmcgdGV4dCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHNwbGl0IHJlc3VsdHMuCgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgcHVuYyA9IG9uZU9mKGxpc3QoIi4sOzovLSE/IikpCiAgICAgICAgICAgIHByaW50KGxpc3QocHVuYy5zcGxpdCgiVGhpcywgdGhpcz8sIHRoaXMgc2VudGVuY2UsIGlzIGJhZGx5IHB1bmN0dWF0ZWQhIikpKQoKICAgICAgICBwcmludHM6OgoKICAgICAgICAgICAgWydUaGlzJywgJyB0aGlzJywgJycsICcgdGhpcyBzZW50ZW5jZScsICcgaXMgYmFkbHkgcHVuY3R1YXRlZCcsICcnXQogICAgICAgIHIBAAAAch8CAABOKQFyJgIAACkJcscAAABykwEAANoIbWF4c3BsaXTaEWluY2x1ZGVTZXBhcmF0b3Jz2gZzcGxpdHPaBGxhc3RymAAAAHKqAAAAcuoBAAByEgAAAHISAAAAchMAAAByqwAAAEEIAABzEAAAAAAQBgEGASUBDwEGAQkBCgF6E1BhcnNlckVsZW1lbnQuc3BsaXRjAgAAAAAAAAACAAAABQAAAEMAAABzdwAAAHwBAHQAAGsIAHIWAHQBAHwAAIMBAFN0AgB8AQB0AwCDAgByNAB8AABqBAB8AQCDAQB9AQB0AgB8AQB0BQCDAgBzZwB0BgBqBwBkAQB0CAB8AQCDAQAWdAkAZAIAZAMAgwIBAWQEAFN0CgB8AAB8AQBnAgCDAQBTKQVhWwMAAAogICAgICAgIEltcGxlbWVudGF0aW9uIG9mICsgb3BlcmF0b3IgLSByZXR1cm5zIDpjbGFzczpgQW5kYC4gQWRkaW5nIHN0cmluZ3MgdG8gYSBQYXJzZXJFbGVtZW50CiAgICAgICAgY29udmVydHMgdGhlbSB0byA6Y2xhc3M6YExpdGVyYWxgcyBieSBkZWZhdWx0LgoKICAgICAgICBFeGFtcGxlOjoKCiAgICAgICAgICAgIGdyZWV0ID0gV29yZChhbHBoYXMpICsgIiwiICsgV29yZChhbHBoYXMpICsgIiEiCiAgICAgICAgICAgIGhlbGxvID0gIkhlbGxvLCBXb3JsZCEiCiAgICAgICAgICAgIHByaW50IChoZWxsbywgIi0+IiwgZ3JlZXQucGFyc2VTdHJpbmcoaGVsbG8pKQoKICAgICAgICBwcmludHM6OgoKICAgICAgICAgICAgSGVsbG8sIFdvcmxkISAtPiBbJ0hlbGxvJywgJywnLCAnV29ybGQnLCAnISddCgogICAgICAgIGBgLi4uYGAgbWF5IGJlIHVzZWQgYXMgYSBwYXJzZSBleHByZXNzaW9uIGFzIGEgc2hvcnQgZm9ybSBvZiA6Y2xhc3M6YFNraXBUb2AuCgogICAgICAgICAgICBMaXRlcmFsKCdzdGFydCcpICsgLi4uICsgTGl0ZXJhbCgnZW5kJykKCiAgICAgICAgaXMgZXF1aXZhbGVudCB0bzoKCiAgICAgICAgICAgIExpdGVyYWwoJ3N0YXJ0JykgKyBTa2lwVG8oJ2VuZCcpKCJfc2tpcHBlZCoiKSArIExpdGVyYWwoJ2VuZCcpCgogICAgICAgIE5vdGUgdGhhdCB0aGUgc2tpcHBlZCB0ZXh0IGlzIHJldHVybmVkIHdpdGggJ19za2lwcGVkJyBhcyBhIHJlc3VsdHMgbmFtZSwKICAgICAgICBhbmQgdG8gc3VwcG9ydCBoYXZpbmcgbXVsdGlwbGUgc2tpcHMgaW4gdGhlIHNhbWUgcGFyc2VyLCB0aGUgdmFsdWUgcmV0dXJuZWQgaXMKICAgICAgICBhIGxpc3Qgb2YgYWxsIHNraXBwZWQgdGV4dC4KICAgICAgICB6NENhbm5vdCBjb21iaW5lIGVsZW1l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ZSgibnVtd29yZCIpCiAgICAgICAgICAgIHRlcm0gPSB3ZCB8IGludGVnZXIKCiAgICAgICAgICAgICMgdHVybiBvbiBkZWJ1Z2dpbmcgZm9yIHdkCiAgICAgICAgICAgIHdkLnNldERlYnVnKCkKCiAgICAgICAgICAgIE9uZU9yTW9yZSh0ZXJtKS5wYXJzZVN0cmluZygiYWJjIDEyMyB4eXogODkwIikKCiAgICAgICAgcHJpbnRzOjoKCiAgICAgICAgICAgIE1hdGNoIGFscGhhd29yZCBhdCBsb2MgMCgxLDEpCiAgICAgICAgICAgIE1hdGNoZWQgYWxwaGF3b3JkIC0+IFsnYWJjJ10KICAgICAgICAgICAgTWF0Y2ggYWxwaGF3b3JkIGF0IGxvYyAzKDEsNCkKICAgICAgICAgICAgRXhjZXB0aW9uIHJhaXNlZDpFeHBlY3RlZCBhbHBoYXdvcmQgKGF0IGNoYXIgNCksIChsaW5lOjEsIGNvbDo1KQogICAgICAgICAgICBNYXRjaCBhbHBoYXdvcmQgYXQgbG9jIDcoMSw4KQogICAgICAgICAgICBNYXRjaGVkIGFscGhhd29yZCAtPiBbJ3h5eiddCiAgICAgICAgICAgIE1hdGNoIGFscGhhd29yZCBhdCBsb2MgMTEoMSwxMikKICAgICAgICAgICAgRXhjZXB0aW9uIHJhaXNlZDpFeHBlY3RlZCBhbHBoYXdvcmQgKGF0IGNoYXIgMTIpLCAobGluZToxLCBjb2w6MTMpCiAgICAgICAgICAgIE1hdGNoIGFscGhhd29yZCBhdCBsb2MgMTUoMSwxNikKICAgICAgICAgICAgRXhjZXB0aW9uIHJhaXNlZDpFeHBlY3RlZCBhbHBoYXdvcmQgKGF0IGNoYXIgMTUpLCAobGluZToxLCBjb2w6MTYpCgogICAgICAgIFRoZSBvdXRwdXQgc2hvd24gaXMgdGhhdCBwcm9kdWNlZCBieSB0aGUgZGVmYXVsdCBkZWJ1ZyBhY3Rpb25zIC0gY3VzdG9tIGRlYnVnIGFjdGlvbnMgY2FuIGJlCiAgICAgICAgc3BlY2lmaWVkIHVzaW5nIDpjbGFzczpgc2V0RGVidWdBY3Rpb25zYC4gUHJpb3IgdG8gYXR0ZW1wdGluZwogICAgICAg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YXkgdG8KICAgICAgICBydW4gYSBwYXJzZSBleHByZXNzaW9uIGFnYWluc3QgYSBsaXN0IG9mIHNhbXBsZSBzdHJpbmdzLgoKICAgICAgICBQYXJhbWV0ZXJzOgogICAgICAgICAtIHRlc3RzIC0gYSBsaXN0IG9mIHNlcGFyYXRlIHRlc3Qgc3RyaW5ncywgb3IgYSBtdWx0aWxpbmUgc3RyaW5nIG9mIHRlc3Qgc3RyaW5ncwogICAgICAgICAtIHBhcnNlQWxsIC0gKGRlZmF1bHQ9IGBgVHJ1ZWBgKSAtIGZsYWcgdG8gcGFzcyB0byA6Y2xhc3M6YHBhcnNlU3RyaW5nYCB3aGVuIHJ1bm5pbmcgdGVzdHMKICAgICAgICAgLSBjb21tZW50IC0gKGRlZmF1bHQ9IGBgJyMnYGApIC0gZXhwcmVzc2lvbiBmb3IgaW5kaWNhdGluZyBlbWJlZGRlZCBjb21tZW50cyBpbiB0aGUgdGVzdAogICAgICAgICAgICAgIHN0cmluZzsgcGFzcyBOb25lIHRvIGRpc2FibGUgY29tbWVudCBmaWx0ZXJpbmcKICAgICAgICAgLSBmdWxsRHVtcCAtIChkZWZhdWx0PSBgYFRydWVgYCkgLSBkdW1wIHJlc3VsdHMgYXMgbGlzdCBmb2xsb3dlZCBieSByZXN1bHRzIG5hbWVzIGluIG5lc3RlZCBvdXRsaW5lOwogICAgICAgICAgICAgIGlmIEZhbHNlLCBvbmx5IGR1bXAgbmVzdGVkIGxpc3QKICAgICAgICAgLSBwcmludFJlc3VsdHMgLSAoZGVmYXVsdD0gYGBUcnVlYGApIHByaW50cyB0ZXN0IG91dHB1dCB0byBzdGRvdXQKICAgICAgICAgLSBmYWlsdXJlVGVzdHMgLSAoZGVmYXVsdD0gYGBGYWxzZWBgKSBpbmRpY2F0ZXMgaWYgdGhlc2UgdGVzdHMgYXJlIGV4cGVjdGVkIHRvIGZhaWwgcGFyc2luZwogICAgICAgICAtIHBvc3RQYXJzZSAtIChkZWZhdWx0PSBgYE5vbmVgYCkgb3B0aW9uYWwgY2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgcGFyc2UgcmVzdWx0czsgY2FsbGVkIGFzCiAgICAgICAgICAgICAgYGZuKHRlc3Rfc3RyaW5nLCBwYXJzZV9yZXN1bHRzKWAgYW5kIHJldHVybnMgYSBzdHJpbmcgdG8gYmUgYWRkZWQgdG8gdGhlIHRlc3Qgb3V0cHV0CiAgICAgICAgIC0gZmlsZSAtIChkZWZhdWx0PWBgTm9uZWBgKSBvcHRpb25hbCBmaWxlLWxpa2Ugb2JqZWN0IHRvIHdoaWNoIHRlc3Qgb3V0cHV0IHdpbGwgYmUgd3JpdHRlbjsKICAgICAgICAgICAgICBpZiBOb25lLCB3aWxsIGRlZmF1bHQgdG8gYGBzeXMuc3Rkb3V0YGAKCiAgICAgICAgUmV0dXJuczogYSAoc3VjY2VzcywgcmVzdWx0cykgdHVwbGUsIHdoZXJlIHN1Y2Nlc3MgaW5kaWNhdGVzIHRoYXQgYWxsIHRlc3RzIHN1Y2NlZWRlZAogICAgICAgIChvciBmYWlsZWQgaWYgYGBmYWlsdXJlVGVzdHNgYCBpcyBUcnVlKSwgYW5kIHRoZSByZXN1bHRzIGNvbnRhaW4gYSBsaXN0IG9mIGxpbmVzIG9mIGVhY2gKICAgICAgICB0ZXN0J3Mgb3V0cHV0CgogICAgICAgIEV4YW1wbGU6OgoKICAgICAgICAgICAgbnVtYmVyX2V4cHIgPSBweXBhcnNpbmdfY29tbW9uLm51bWJlci5jb3B5KCkKCiAgICAgICAgICAgIHJlc3VsdCA9IG51bWJlcl9leHByLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAgICAgIyB1bnNpZ25lZCBpbnRlZ2VyCiAgICAgICAgICAgICAgICAxMDAKICAgICAgICAgICAgICAgICMgbmVnYXRpdmUgaW50ZWdlcgogICAgICAgICAgICAgICAgLTEwMAogICAgICAgICAgICAgICAgIyBmbG9hdCB3aXRoIHNjaWVudGlmaWMgbm90YXRpb24KICAgICAgICAgICAgICAgIDYuMDJlMjMKICAgICAgICAgICAgICAgICMgaW50ZWdlciB3aXRoIHNjaWVudGlmaWMgbm90YXRpb24KICAgICAgICAgICAgICAgIDFlLTEyCiAgICAgICAgICAgICAgICAnJycpCiAgICAgICAgICAgIHByaW50KCJTdWNjZXNzIiBpZiByZXN1bHRbMF0gZWxzZSAiRmFpbGVkISIpCgogICAgICAgICAgICByZXN1bHQgPSBudW1iZXJfZXhwci5ydW5UZXN0cygnJycKICAgICAgICAgICAgICAgICMgc3RyYXkgY2hhcmFjdGVyCiAgICAgICAgICAgICAgICAxMDBaCiAgICAgICAgICAgICAgICAjIG1pc3NpbmcgbGVhZGluZyBkaWdpdCBiZWZvcmUgJy4nCiAgICAgICAgICAgICAgICAtLjEwMAogICAgICAgICAgICAgICAgIyB0b28gbWFueSAnLicKICAgICAgICAgICAgICAgIDMuMTQuMTU5CiAgICAgICAgICAgICAgICAnJycsIGZhaWx1cmVUZXN0cz1UcnVlKQogICAgICAgICAgICBwcmludCgiU3VjY2VzcyIgaWYgcmVzdWx0WzBdIGVsc2UgIkZhaWxlZCEiKQoKICAgICAgICBwcmludHM6OgoKICAgICAgICAgICAgIyB1bnNpZ25lZCBpbnRlZ2VyCiAgICAgICAgICAgIDEwMAogICAgICAgICAgICBbMTAwXQoKICAgICAgICAgICAgIyBuZWdhdGl2ZSBpbnRlZ2VyCiAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgWy0xMDBdCgogICAgICAgICAgICAjIGZsb2F0IHdpdGggc2NpZW50aWZpYyBub3RhdGlvbgogICAgICAgICAgICA2LjAyZTIzCiAgICAgICAgICAgIFs2LjAyZSsyM10KCiAgICAgICAgICAgICMgaW50ZWdlciB3aXRoIHNjaWVudGlmaWMgbm90YXRpb24KICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgWzFlLTEyXQoKICAgICAgICAgICAgU3VjY2VzcwoKICAgICAgICAgICAgIyBzdHJheSBjaGFyYWN0ZXIKICAgICAgICAgICAgMTAwWgogICAgICAgICAgICAgICBeCiAgICAgICAgICAgIEZBSUw6IEV4cGVjdGVkIGVuZCBvZiB0ZXh0IChhdCBjaGFyIDMpLCAobGluZToxLCBjb2w6NCkKCiAgICAgICAgICAgICMgbWlzc2luZyBsZWFkaW5nIGRpZ2l0IGJlZm9yZSAnLicKICAgICAgICAgICAgLS4xMDAKICAgICAgICAgICAgXgogICAgICAgICAg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Y3RlcnMuCiAgICA6Y2xhc3M6YENsb3NlTWF0Y2hgIHRha2VzIHBhcmFtZXRlcnM6CgogICAgIC0gYGBtYXRjaF9zdHJpbmdgYCAtIHN0cmluZyB0byBiZSBtYXRjaGVkCiAgICAgLSBgYG1heE1pc21hdGNoZXNgYCAtIChgYGRlZmF1bHQ9MWBgKSBtYXhpbXVtIG51bWJlciBvZgogICAgICAgbWlzbWF0Y2hlcyBhbGxvd2VkIHRvIGNvdW50IGFzIGEgbWF0Y2gKCiAgICBUaGUgcmVzdWx0cyBmcm9tIGEgc3VjY2Vzc2Z1bCBwYXJzZSB3aWxsIGNvbnRhaW4gdGhlIG1hdGNoZWQgdGV4dAogICAgZnJvbSB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUgZm9sbG93aW5nIG5hbWVkIHJlc3VsdHM6CgogICAgIC0gYGBtaXNtYXRjaGVzYGAgLSBhIGxpc3Qgb2YgdGhlIHBvc2l0aW9ucyB3aXRoaW4gdGhlCiAgICAgICBtYXRjaF9zdHJpbmcgd2hlcmUgbWlzbWF0Y2hlcyB3ZXJlIGZvdW5kCiAgICAgLSBgYG9yaWdpbmFsYGAgLSB0aGUgb3JpZ2luYWwgbWF0Y2hfc3RyaW5nIHVzZWQgdG8gY29tcGFyZQogICAgICAgYWdhaW5zdCB0aGUgaW5wdXQgc3RyaW5nCgogICAgSWYgYGBtaXNtYXRjaGVzYGAgaXMgYW4gZW1wdHkgbGlzdCwgdGhlbiB0aGUgbWF0Y2ggd2FzIGFuIGV4YWN0CiAgICBtYXRjaC4KCiAgICBFeGFtcGxlOjoKCiAgICAgICAgcGF0dCA9IENsb3NlTWF0Y2goIkFUQ0FUQ0dBQVRHR0EiKQogICAgICAgIHBhdHQucGFyc2VTdHJpbmcoIkFUQ0FUQ0dBQVhHR0EiKSAjIC0+IChbJ0FUQ0FUQ0dBQVhHR0EnXSwgeydtaXNtYXRjaGVzJzogW1s5XV0sICdvcmlnaW5hbCc6IFsnQVRDQVRDR0FBVEdHQSddfSkKICAgICAgICBwYXR0LnBhcnNlU3RyaW5nKCJBVENBWENHQUFYR0dBIikgIyAtPiBFeGNlcHRpb246IEV4cGVjdGVkICdBVENBVENHQUFUR0dBJyAod2l0aCB1cCB0byAxIG1pc21h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ZXhhY3QgbGVuZ3RoLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGBgbWluYGAgaXMKICAgIDEgKGEgbWluaW11bSB2YWx1ZSA8IDEgaXMgbm90IHZhbGlkKTsgdGhlIGRlZmF1bHQgdmFsdWVzIGZvcgogICAgYGBtYXhgYCBhbmQgYGBleGFjdGBgIGFyZSAwLCBtZWFuaW5nIG5vIG1heGltdW0gb3IgZXhhY3QKICAgIGxlbmd0aCByZXN0cmljdGlvbi4gQW4gb3B0aW9uYWwgYGBleGNsdWRlQ2hhcnNgYCBwYXJhbWV0ZXIgY2FuCiAgICBsaXN0IGNoYXJhY3RlcnMgdGhhdCBtaWdodCBiZSBmb3VuZCBpbiB0aGUgaW5wdXQgYGBib2R5Q2hhcnNgYAogICAgc3RyaW5nOyB1c2VmdWwgdG8gZGVmaW5lIGEgd29yZCBvZiBhbGwgcHJpbnRhYmxlcyBleGNlcHQgZm9yIG9uZSBvcgogICAgdHdvIGNoYXJhY3RlcnMsIGZvciBpbnN0YW5jZS4KCiAgICA6Y2xhc3M6YHNyYW5nZWAgaXMgdXNlZnVsIGZvciBkZWZpbmluZyBjdXN0b20gY2hhcmFjdGVyIHNldCBzdHJpbmdzCiAgICBmb3IgZGVmaW5pbmcgYGBXb3JkYGAgZXhwcmVzc2lvbnMsIHVzaW5nIHJhbmdlIG5vdGF0aW9uIGZyb20KICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiBjaGFyYWN0ZXIgc2V0cy4KCiAgICBBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHVzZSA6Y2xhc3M6YFdvcmRgIHRvIG1hdGNoIGEgc3BlY2lmaWMgbGl0ZXJhbAogICAgc3RyaW5nLCBhcyBpbiBgYFdvcmQoIkFkZHJlc3MiKWBgLiBSZW1lbWJlciB0aGF0IDpjbGFzczpgV29yZGAKICAgIHVzZXMgdGhlIHN0cmluZyBhcmd1bWVudCB0byBkZWZpbmUgKnNldHMqIG9mIG1hdGNoYWJsZSBjaGFyYWN0ZXJzLgogICAgVGhpcyBleHByZXNzaW9uIHdvdWxkIG1hdGNoICJBZGQiLCAiQUFBIiwgImRBcmVkIiwgb3IgYW55IG90aGVyIHdvcmQKICAgIG1hZGUgdXAgb2YgdGhlIGNoYXJhY3RlcnMgJ0EnLCAnZCcsICdyJywgJ2UnLCBhbmQgJ3MnLiBUbyBtYXRjaCBhbgogICAgZXhhY3QgbGl0ZXJhbCBzdHJpbmcsIHVzZSA6Y2xhc3M6YExpdGVyYWxgIG9yIDpjbGFzczpgS2V5d29yZGAuCgogICAgcHlwYXJzaW5nIGluY2x1ZGVzIGhlbHBlciBzdHJpbmdzIGZvciBidWlsZGluZyBXb3JkczoKCiAgICAgLSA6Y2xhc3M6YGFscGhhc2AKICAgICAtIDpjbGFzczpgbnVtc2AKICAgICAtIDpjbGFzczpgYWxwaGFudW1zYAogICAgIC0gOmNsYXNzOmBoZXhudW1zYAogICAgIC0gOmNsYXNzOmBhbHBoYXM4Yml0YCAoYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGluIEFTQ0lJIHJhbmdlIDEyOC0yNTUKICAgICAgIC0gYWNjZW50ZWQsIHRpbGRlZCwgdW1sYXV0ZWQsIGV0Yy4pCiAgICAgLSA6Y2xhc3M6YHB1bmM4Yml0YCAobm9uLWFscGhhYmV0aWMgY2hhcmFjdGVycyBpbiBBU0NJSSByYW5nZQogICAgICAgMTI4LTI1NSAtIGN1cnJlbmN5LCBzeW1ib2xzLCBzdXBlcnNjcmlwdHMsIGRpYWNyaXRpY2FscywgZXRjLikKICAgICAtIDpjbGFzczpgcHJpbnRhYmxlc2AgKGFueSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIpCgogICAgRXhhbXBsZTo6CgogICAgICAgICMgYSB3b3JkIGNvbXBvc2VkIG9mIGRpZ2l0cwogICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpICMgZXF1aXZhbGVudCB0byBXb3JkKCIwMTIzNDU2Nzg5Iikgb3IgV29yZChzcmFuZ2UoIjAtOSIpKQoKICAgICAgICAjIGEgd29yZCB3aXRoIGEgbGVhZGluZyBjYXBpdGFsLCBhbmQgemVybyBvciBtb3JlIGxvd2VyY2FzZQogICAgICAgIGNhcGl0YWxfd29yZCA9IFdvcmQoYWxwaGFzLnVwcGVyKCksIGFscGhhcy5sb3dlcigpKQoKICAgICAgICAjIGhvc3RuYW1lcyBhcmUgYWxwaGFudW1lcmljLCB3aXRoIGxlYWRpbmcg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cGFyYW1ldGVyczoKCiAgICAgICAgLSBxdW90ZUNoYXIgLSBzdHJpbmcgb2Ygb25lIG9yIG1vcmUgY2hhcmFjdGVycyBkZWZpbmluZyB0aGUKICAgICAgICAgIHF1b3RlIGRlbGltaXRpbmcgc3RyaW5nCiAgICAgICAgLSBlc2NDaGFyIC0gY2hhcmFjdGVyIHRvIGVzY2FwZSBxdW90ZXMsIHR5cGljYWxseSBiYWNrc2xhc2gKICAgICAgICAgIChkZWZhdWx0PSBgYE5vbmVgYCkKICAgICAgICAtIGVzY1F1b3RlIC0gc3BlY2lhbCBxdW90ZSBzZXF1ZW5jZSB0byBlc2NhcGUgYW4gZW1iZWRkZWQgcXVvdGUKICAgICAgICAgIHN0cmluZyAoc3VjaCBhcyBTUUwncyBgYCIiYGAgdG8gZXNjYXBlIGFuIGVtYmVkZGVkIGBgImBgKQogICAgICAgICAgKGRlZmF1bHQ9IGBgTm9uZWBgKQogICAgICAgIC0gbXVsdGlsaW5lIC0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgcXVvdGVzIGNhbiBzcGFuCiAgICAgICAgICBtdWx0aXBsZSBsaW5lcyAoZGVmYXVsdD0gYGBGYWxzZWBgKQogICAgICAgIC0gdW5xdW90ZVJlc3VsdHMgLSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWF0Y2hlZCB0ZXh0CiAgICAgICAgICBzaG91bGQgYmUgdW5xdW90ZWQgKGRlZmF1bHQ9IGBgVHJ1ZWBgKQogICAgICAgIC0gZW5kUXVvdGVDaGFyIC0gc3RyaW5nIG9mIG9uZSBvciBtb3JlIGNoYXJhY3RlcnMgZGVmaW5pbmcgdGhlCiAgICAgICAgICBlbmQgb2YgdGhlIHF1b3RlIGRlbGltaXRlZCBzdHJpbmcgKGRlZmF1bHQ9IGBgTm9uZWBgICA9PiBzYW1lIGFzCiAgICAgICAgICBxdW90ZUNoYXIpCiAgICAgICAgLSBjb252ZXJ0V2hpdGVzcGFjZUVzY2FwZXMgLSBjb252ZXJ0IGVzY2FwZWQgd2hpdGVzcGFjZQogICAgICAgICAgKGBgJ1x0J2BgLCBgYCdcbidgYCwgZXRjLikgdG8gYWN0dWFsIHdoaXRlc3Bh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ICAjIHVzZSBFYWNoICh1c2luZyBvcGVyYXRvciAnJicpIHRvIGFjY2VwdCBhdHRyaWJ1dGVzIGluIGFueSBvcmRlcgogICAgICAgICMgKHNoYXBlIGFuZCBwb3NuIGFyZSByZXF1aXJlZCwgY29sb3IgYW5kIHNpemUgYXJlIG9wdGlvbmFsKQogICAgICAgIHNoYXBlX3NwZWMgPSBzaGFwZV9hdHRyICYgcG9zbl9hdHRyICYgT3B0aW9uYWwoY29sb3JfYXR0cikgJiBPcHRpb25hbChzaXplX2F0dHIpCgogICAgICAgIHNoYXBlX3NwZWMucnVuVGVzdHMoJycnCiAgICAgICAgICAgIHNoYXBlOiBTUVVBUkUgY29sb3I6IEJMQUNLIHBvc246IDEwMCwgMTIwCiAgICAgICAgICAgIHNoYXBlOiBDSVJDTEUgc2l6ZTogNTAgY29sb3I6IEJMVUUgcG9zbjogNTAsODAKICAgICAgICAgICAgY29sb3I6R1JFRU4gc2l6ZToyMCBzaGFwZTpUUklBTkdMRSBwb3NuOjIwLDQwCiAgICAgICAgICAgICcnJwogICAgICAgICAgICApCgogICAgcHJpbnRzOjoKCiAgICAgICAgc2hhcGU6IFNRVUFSRSBjb2xvcjogQkxBQ0sgcG9zbjogMTAwLCAxMjAKICAgICAgICBbJ3NoYXBlOicsICdTUVVBUkUnLCAnY29sb3I6JywgJ0JMQUNLJywgJ3Bvc246JywgWycxMDAnLCAnLCcsICcxMjAnXV0KICAgICAgICAtIGNvbG9yOiBCTEFDSwogICAgICAgIC0gcG9zbjogWycxMDAnLCAnLCcsICcxMjAnXQogICAgICAgICAgLSB4OiAxMDAKICAgICAgICAgIC0geTogMTIwCiAgICAgICAgLSBzaGFwZTogU1FVQVJFCgoKICAgICAgICBzaGFwZTogQ0lSQ0xFIHNpemU6IDUwIGNvbG9yOiBCTFVFIHBvc246IDUwLDgwCiAgICAgICAgWydzaGFwZTonLCAnQ0lSQ0xFJywgJ3NpemU6JywgJzUwJywgJ2NvbG9yOicsICdCTFVFJywgJ3Bvc246JywgWyc1MCcsICcsJywgJzgwJ11dCiAgICAgICAgLSBjb2xvcjogQkxVRQogICAgICAg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cmVjZWRlZEJ5YGAgZG9lcyBub3QgYWR2YW5jZSB0aGUgcGFyc2luZyBwb3NpdGlvbiB3aXRoaW4gdGhlCiAgICBpbnB1dCBzdHJpbmcsIGl0IG9ubHkgdmVyaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWVkIHBhcnNlIGV4cHJlc3Npb24KICAgIG1hdGNoZXMgcHJpb3IgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24uICBgYFByZWNlZGVkQnlgYCBhbHdheXMKICAgIHJldHVybnMgYSBudWxsIHRva2VuIGxpc3QsIGJ1dCBpZiBhIHJlc3VsdHMgbmFtZSBpcyBkZWZpbmVkIG9uIHRoZQogICAgZ2l2ZW4gZXhwcmVzc2lvbiwgaXQgaXMgcmV0dXJuZWQuCgogICAgUGFyYW1ldGVyczoKCiAgICAgLSBleHByIC0gZXhwcmVzc2lvbiB0aGF0IG11c3QgbWF0Y2ggcHJpb3IgdG8gdGhlIGN1cnJlbnQgcGFyc2UKICAgICAgIGxvY2F0aW9uCiAgICAgLSByZXRyZWF0IC0gKGRlZmF1bHQ9IGBgTm9uZWBgKSAtIChpbnQpIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAgICAgIHRvIGxvb2tiZWhpbmQgcHJpb3IgdG8gdGhlIGN1cnJlbnQgcGFyc2UgbG9jYXRpb24KCiAgICBJZiB0aGUgbG9va2JlaGluZCBleHByZXNzaW9uIGlzIGEgc3RyaW5nLCBMaXRlcmFsLCBLZXl3b3JkLCBvcgogICAgYSBXb3JkIG9yIENoYXJzTm90SW4gd2l0aCBhIHNwZWNpZmllZCBleGFjdCBvciBtYXhpbXVtIGxlbmd0aCwgdGhlbgogICAgdGhlIHJldHJlYXQgcGFyYW1ldGVyIGlzIG5vdCByZXF1aXJlZC4gT3RoZXJ3aXNlLCByZXRyZWF0IG11c3QgYmUKICAgIHNwZWNpZmllZCB0byBnaXZlIGEgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBsb29rIGJhY2sgZnJvbQogICAgdGhlIGN1cnJlbnQgcGFyc2UgcG9zaXRpb24gZm9yIGEgbG9va2JlaGluZCBtYXRjaC4KCiAgICBFeGFtcGxlOjoKCiAgICAgICAg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aW4gdGhlCiAgICBpbnB1dCBzdHJpbmcsIGl0IG9ubHkgdmVyaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWVkIHBhcnNlIGV4cHJlc3Npb24KICAgIGRvZXMgKm5vdCogbWF0Y2ggYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uICBBbHNvLCBgYE5vdEFueWBgIGRvZXMKICAgICpub3QqIHNraXAgb3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UuIGBgTm90QW55YGAgYWx3YXlzIHJldHVybnMKICAgIGEgbnVsbCB0b2tlbiBsaXN0LiAgTWF5IGJlIGNvbnN0cnVjdGVkIHVzaW5nIHRoZSAnficgb3BlcmF0b3IuCgogICAgRXhhbXBsZTo6CgogICAgICAgIEFORCwgT1IsIE5PVCA9IG1hcChDYXNlbGVzc0tleXdvcmQsICJBTkQgT1IgTk9UIi5zcGxpdCgpKQoKICAgICAgICAjIHRha2UgY2FyZSBub3QgdG8gbWlzdGFrZSBrZXl3b3JkcyBmb3IgaWRlbnRpZmllcnMKICAgICAgICBpZGVudCA9IH4oQU5EIHwgT1IgfCBOT1QpICsgV29yZChhbHBoYXMpCiAgICAgICAgYm9vbGVhbl90ZXJtID0gT3B0aW9uYWwoTk9UKSArIGlkZW50CgogICAgICAgICMgdmVyeSBjcnVkZSBib29sZWFuIGV4cHJlc3Npb24gLSB0byBzdXBwb3J0IHBhcmVudGhlc2lzIGdyb3VwcyBhbmQKICAgICAgICAjIG9wZXJhdGlvbiBoaWVyYXJjaHksIHVzZSBpbmZpeE5vdGF0aW9uCiAgICAgICAgYm9vbGVhbl9leHByID0gYm9vbGVhbl90ZXJtICsgWmVyb09yTW9yZSgoQU5EIHwgT1IpICsgYm9vbGVhbl90ZXJtKQoKICAgICAgICAjIGludGVnZXJzIHRoYXQgYXJlIGZvbGxvd2VkIGJ5ICIuIiBhcmUgYWN0dWFsbHkgZmxvYXRzCiAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykgKyB+Q2hhcigiLiIpCiAgICBjAgAAAAAAAAACAAAAAwAAAAMAAABzQgAAAHQAAHQBAHwAAIMCAGoCAHwBAIMBAAFkAQB8AABfAwBkAgB8AABfBABkAwB0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c3Npb24pCgogICAgRXhhbXBsZTo6CgogICAgICAgIGRhdGFfd29yZCA9IFdvcmQoYWxwaGFzKQogICAgICAgIGxhYmVsID0gZGF0YV93b3JkICsgRm9sbG93ZWRCeSgnOicpCiAgICAgICAgYXR0cl9leHByID0gR3JvdXAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogQkxBQ0siCiAgICAgICAgT25lT3JNb3JlKGF0dHJfZXhwcikucGFyc2VTdHJpbmcodGV4dCkucHByaW50KCkgICMgRmFpbCEgcmVhZCAnY29sb3InIGFzIGRhdGEgaW5zdGVhZCBvZiBuZXh0IGxhYmVsIC0+IFtbJ3NoYXBlJywgJ1NRVUFSRSBjb2xvciddXQoKICAgICAgICAjIHVzZSBzdG9wT24gYXR0cmlidXRlIGZvciBPbmVPck1vcmUgdG8gYXZvaWQgcmVhZGluZyBsYWJlbCBzdHJpbmcgYXMgcGFydCBvZiB0aGUgZGF0YQogICAgICAgIGF0dHJfZXhwciA9IEdyb3VwKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIE9uZU9yTW9yZShhdHRyX2V4cHIpLnBhcnNlU3RyaW5nKHRleHQpLnBwcmludCgpICMgQmV0dGVyIC0+IFtbJ3NoYXBlJywgJ1NRVUFSRSddLCBbJ3Bvc24nLCAndXBwZXIgbGVmdCddLCBbJ2NvbG9yJywgJ0JMQUNLJ11dCgogICAgICAgICMgY291bGQgYWxzbyBiZSB3cml0dGVuIGFzCiAgICAgICAgKGF0dHJfZXhwciAqICgxLCkpLnBhcnNlU3RyaW5nKHRleHQpLnBwcmludCgpCiAgICBjAQAAAAAAAAABAAAAAwAAAEMAAABzRgAAAHQAAHwAAGQBAIMCAHIWAHwAAGoBAFN8AABqAgBkAABrCAByPwBkAgB0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ZAYAhAEAWgcAZAcAZAgAhAAAWggAhwAAUykJcjgAAABhRwMAAE9wdGlvbmFsIG1hdGNoaW5nIG9mIHRoZSBnaXZlbiBleHByZXNzaW9uLgoKICAgIFBhcmFtZXRlcnM6CiAgICAgLSBleHByIC0gZXhwcmVzc2lvbiB0aGF0IG11c3QgbWF0Y2ggemVybyBvciBtb3JlIHRpbWVzCiAgICAgLSBkZWZhdWx0IChvcHRpb25hbCkgLSB2YWx1ZSB0byBiZSByZXR1cm5lZCBpZiB0aGUgb3B0aW9uYWwgZXhwcmVzc2lvbiBpcyBub3QgZm91bmQuCgogICAgRXhhbXBsZTo6CgogICAgICAgICMgVVMgcG9zdGFsIGNvZGUgY2FuIGJlIGEgNS1kaWdpdCB6aXAsIHBsdXMgb3B0aW9uYWwgNC1kaWdpdCBxdWFsaWZpZXIKICAgICAgICB6aXAgPSBDb21iaW5lKFdvcmQobnVtcywgZXhhY3Q9NSkgKyBPcHRpb25hbCgnLScgKyBXb3JkKG51bXMsIGV4YWN0PTQpKSkKICAgICAgICB6aXAucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgdHJhZGl0aW9uYWwgWklQIGNvZGUKICAgICAgICAgICAgMTIzNDUKCiAgICAgICAgICAgICMgWklQKzQgZm9ybQogICAgICAgICAgICAxMjEwMS0wMDAxCgogICAgICAgICAgICAjIGludmFsaWQgWklQCiAgICAgICAgICAgIDk4NzY1LQogICAgICAgICAgICAnJycpCgogICAgcHJpbnRzOjoKCiAgICAgICAgIyB0cmFkaXRpb25hbCBaSVAgY29kZQogICAgICAgIDEyMzQ1CiAgICAgICAgWycxMjM0NSddCgogICAgICAgICMgWklQKzQgZm9ybQogICAgICAgIDEyMTAxLTAwMDEKICAgICAgICBbJzEyMTAxLTAwMDEnXQoKICAgICAgICAjIGludmFsaWQgWklQCiAgICAgICAgOTg3NjUtCiAgICAgICAgICAgICBeCiAgICAgICAgRkFJTDogRXhwZWN0ZWQgZW5kIG9mIHRleHQgKGF0IGNoYXIgNSksIChsaW5lOjEsIGNvbDo2KQogICAgYwMAAAAAAAAAAwAAAAQAAAADAAAAc0EAAAB0AAB0AQB8AACDAgBqAgB8AQBkAQBkAgCDAQEBfAAAagMAagQAfAAAXwQAfAIAfAAAXwUAZAMAfAAAXwYAZAAAUykETnLNAQAARlQpB3J6AgAAcjgAAAByyQAAAHKUAQAAcr4BAABySQEAAHLCAQAAKQNyxwAAAHKUAQAAckMBAAApAXKtAQAAchIAAAByEwAAAHLJAAAA6RIAAHMIAAAAAAEcAQ8BCQF6EU9wdGlvbmFsLl9faW5pdF9fVGMEAAAAAAAAAAUAAAAMAAAAQwAAAHOoAAAAeSgAfAAAagAAagEAfAEAfAIAfAMAZAEAZAIAgwMBXAIAfQIAfQQAV25zAAR0AgB0AwBmAgBrCgBynQABAQF8AABqBAB8AABqBQBrCQBykwB8AABqAABqBgByhAB0BwB8AABqBABnAQCDAQB9BAB8AABqBAB8BAB8AABqAABqBgA8cZkAfAAAagQAZwEAfQQAbgYAZwAAfQQAWW4BAFh8AgB8BABmAgBTKQNOctsBAABGKQhylAEAAHLfAQAAcjwAAAByIQEAAHJJAQAA2h1fT3B0aW9uYWxfX29wdGlvbmFsTm90TWF0Y2hlZHK9AQAAcj8AAAApBXLHAAAAcpMBAABywwAAAHLaAQAAcvkBAAByEgAAAHISAAAAchMAAABy5QAAAO8SAABzFAAAAAABAwEoARMBEgEMARIBFgIPAgsBehJPcHRpb25hbC5wYXJzZUltcGxjAQAAAAAAAAABAAAAAwAAAEMAAABzRgAAAHQAAHwAAGQBAIMCAHIWAHwAAGoBAFN8AABqAgBkAABrCAByPwBkAgB0AwB8AABqBACDAQAXZAMAF3wAAF8CAHwAAGoCAFMpBE5yEAEAAHJcAQAAcl0BAAApBXI6AQAAchABAAByvAEAAHKlAAAAcpQBAAApAXLHAAAAchIAAAByEgAAAHITAAAActQAAAD9EgAAcwoAAAAAAQ8BBwIPARoCehBPcHRpb25hbC5fX3N0cl9fKQlyDwAAAHIQAAAAchEAAABy3wAAAHIYAwAAchkDAAByyQAAAHLlAAAActQAAAByEgAAAHISAAAAKQFyrQEAAHITAAAAcjgAAADCEgAAcwoAAAAMJAYBCQIVBg8OYwAAAAAAAAAAAAAAAAYAAAAAAAAAc0AAAABlAABaAQBkAABaAgBkAQBaAwBkAgBkAwBkAwCHAABmAQBkBABkBQCGAwBaBABkBgBkBwBkCACEAQBaBQCHAABTKQlyRQAAAGH4CQAAVG9rZW4gZm9yIHNraXBwaW5nIG92ZXIgYWxsIHVuZGVmaW5lZCB0ZXh0IHVudGlsIHRoZSBtYXRjaGVkCiAgICBleHByZXNzaW9uIGlzIGZvdW5kLgoKICAgIFBhcmFtZXRlcnM6CiAgICAgLSBleHByIC0gdGFyZ2V0IGV4cHJlc3Npb24gbWFya2luZyB0aGUgZW5kIG9mIHRoZSBkYXRhIHRvIGJlIHNraXBwZWQKICAgICAtIGluY2x1ZGUgLSAoZGVmYXVsdD0gYGBGYWxzZWBgKSBpZiBUcnVlLCB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gaXMgYWxzbyBwYXJzZWQKICAgICAgICAgICh0aGUgc2tpcHBlZCB0ZXh0IGFuZCB0YXJnZXQgZXhwcmVzc2lvbiBhcmUgcmV0dXJuZWQgYXMgYSAyLWVsZW1lbnQgbGlzdCkuCiAgICAgLSBpZ25vcmUgLSAoZGVmYXVsdD0gYGBOb25lYGApIHVzZWQgdG8gZGVmaW5lIGdyYW1tYXJzICh0eXBpY2FsbHkgcXVvdGVkIHN0cmluZ3MgYW5kCiAgICAgICAgICBjb21tZW50cykgdGhhdCBtaWdodCBjb250YWluIGZhbHNlIG1hdGNoZXMgdG8gdGhlIHRhcmdldCBleHByZXNzaW9uCiAgICAgLSBmYWlsT24gLSAoZGVmYXVsdD0gYGBOb25lYGApIGRlZmluZSBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBiZQogICAgICAgICAgaW5jbHVkZWQgaW4gdGhlIHNraXBwZWQgdGVzdDsgaWYgZm91bmQgYmVmb3JlIHRoZSB0YXJnZXQgZXhwcmVzc2lvbiBpcyBmb3VuZCwKICAgICAgICAgIHRoZSBTa2lwVG8gaXMgbm90IGEgbWF0Y2gKCiAgICBFeGFtcGxlOjoKCiAgICAgICAgcmVwb3J0ID0gJycnCiAgICAgICAgICAgIE91dHN0YW5kaW5nIElzc3VlcyBSZXBvcnQgLSAxIEphbiAyMDAwCgogICAgICAgICAgICAgICAjIHwgU2V2ZXJpdHkgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBEYXlzIE9wZW4KICAgICAgICAgICAgLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiAgICAgICAgICAgICAxMDEgfCBDcml0aWNhbCB8IEludGVybWl0dGVudCBzeXN0ZW0gY3Jhc2ggICAgICAgICAgICAgICAgIHwgICAgICAgICAgNgogICAgICAgICAgICAgIDk0IHwgQ29zbWV0aWMgfCBTcGVsbGluZyBlcnJvciBvbiBMb2dpbiAoJ2xvZ3xuJykgICAgICAgICB8ICAgICAgICAgMTQKICAgICAgICAgICAgICA3OSB8IE1pbm9yICAgIHwgU3lzdGVtIHNsb3cgd2hlbiBydW5uaW5nIHRvbyBtYW55IHJlcG9ydHMgfCAgICAgICAgIDQ3CiAgICAgICAgICAgICcnJwogICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpCiAgICAgICAgU0VQID0gU3VwcHJlc3MoJ3wnKQogICAgICAgICMgdXNlIFNraXBUbyB0byBzaW1wbHkgbWF0Y2ggZXZlcnl0aGluZyB1cCB1bnRpbCB0aGUgbmV4dCBTRVAKICAgICAgICAjIC0gaWdub3JlIHF1b3RlZCBzdHJpbmdzLCBzbyB0aGF0IGEgJ3wnIGNoYXJhY3RlciBpbnNpZGUgYSBxdW90ZWQgc3RyaW5nIGRvZXMgbm90IG1hdGNoCiAgICAgICAgIyAtIHBhcnNlIGFjdGlvbiB3aWxsIGNhbGwgdG9rZW4uc3RyaXAoKSBmb3IgZWFjaCBtYXRjaGVkIHRva2VuLCBpLmUuLCB0aGUgZGVzY3JpcHRpb24gYm9keQogICAgICAgIHN0cmluZ19kYXRhID0gU2tpcFRvKFNFUCwgaWdub3JlPXF1b3RlZFN0cmluZykKICAgICAgICBzdHJpbmdfZGF0YS5zZXRQYXJzZUFjdGlvbih0b2tlbk1hcChzdHIuc3RyaXApKQogICAgICAgIHRpY2tldF9leHByID0gKGludGVnZXIoImlzc3VlX251bSIpICsgU0VQCiAgICAgICAgICAgICAgICAgICAgICArIHN0cmluZ19kYXRhKCJzZXYiKSArIFNFUAogICAgICAgICAgICAgICAgICAgICAgKyBzdHJpbmdfZGF0YSgiZGVzYyIpICsgU0VQCiAgICAgICAgICAgICAgICAgICAgICArIGludGVnZXIoImRheXNfb3BlbiIpKQoKICAgICAgICBmb3IgdGt0IGluIHRpY2tldF9leHByLnNlYXJjaFN0cmluZyhyZXBvcnQpOgogICAgICAgICAgICBwcmludCB0a3QuZHVtcCgpCgogICAgcHJpbnRzOjoKCiAgICAgICAgWycxMDEnLCAnQ3JpdGljYWwnLCAnSW50ZXJtaXR0ZW50IHN5c3RlbSBjcmFzaCcsICc2J10KICAgICAgICAtIGRheXNfb3BlbjogNgogICAgICAgIC0gZGVzYzogSW50ZXJtaXR0ZW50IHN5c3RlbSBjcmFzaAogICAgICAgIC0gaXNzdWVfbnVtOiAxMDEKICAgICAgICAtIHNldjogQ3JpdGljYWwKICAgICAgICBbJzk0JywgJ0Nvc21ldGljJywgIlNwZWxsaW5nIGVycm9yIG9uIExvZ2luICgnbG9nfG4nKSIsICcxNCddCiAgICAgICAgLSBkYXlzX29wZW46IDE0CiAgICAgICAgLSBkZXNjOiBTcGVsbGluZyBlcnJvciBvbiBMb2dpbiAoJ2xvZ3xuJykKICAgICAgICAtIGlzc3VlX251bTogOTQKICAgICAgICAtIHNldjogQ29zbWV0aWMKICAgICAgICBbJzc5JywgJ01pbm9yJywgJ1N5c3RlbSBzbG93IHdoZW4gcnVubmluZyB0b28gbWFueSByZXBvcnRzJywgJzQ3J10KICAgICAgICAtIGRheXNfb3BlbjogNDcKICAgICAgICAtIGRlc2M6IFN5c3RlbSBzbG93IHdoZW4gcnVubmluZyB0b28gbWFueSByZXBvcnRzCiAgICAgICAgLSBpc3N1ZV9udW06IDc5CiAgICAgICAgLSBzZXY6IE1pbm9yCiAgICBGTmMFAAAAAAAAAAUAAAADAAAAAwAAAHOKAAAAdAAAdAEAfAAAgwIAagIAfAEAgwEAAXwDAHwAAF8DAGQBAHwAAF8EAGQCAHwAAF8FAHwCAHwAAF8GAGQCAHwA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AAAAct8AAAByyQAAAHLxAQAAchIAAAByEgAAACkBcq0BAAByEwAAAHItAAAAGxQAAHMGAAAADA4GARIEYwAAAAAAAAAAAAAAAAMAAAAAAAAAczQAAABlAABaAQBkAABaAgBkAQBaAwCHAABmAQBkAgBkAwCGAABaBABkBABkBQCEAABaBQCHAABTKQZyJwAAAGE/BgAAQ29udmVydGVyIHRvIHJldHVybiBhIHJlcGV0aXRpdmUgZXhwcmVzc2lvbiBhcyBhIGxpc3QsIGJ1dCBhbHNvCiAgICBhcyBhIGRpY3Rpb25hcnkuIEVhY2ggZWxlbWVudCBjYW4gYWxzbyBiZSByZWZlcmVuY2VkIHVzaW5nIHRoZSBmaXJzdAogICAgdG9rZW4gaW4gdGhlIGV4cHJlc3Npb24gYXMgaXRzIGtleS4gVXNlZnVsIGZvciB0YWJ1bGFyIHJlcG9ydAogICAgc2NyYXBpbmcgd2hlbiB0aGUgZmlyc3QgY29sdW1uIGNhbiBiZSB1c2VkIGFzIGEgaXRlbSBrZXkuCgogICAgRXhhbXBsZTo6CgogICAgICAgIGRhdGFfd29yZCA9IFdvcmQoYWxwaGFzKQogICAgICAgIGxhYmVsID0gZGF0YV93b3JkICsgRm9sbG93ZWRCeSgnOicpCiAgICAgICAgYXR0cl9leHByID0gR3JvdXAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogbGlnaHQgYmx1ZSB0ZXh0dXJlOiBidXJsYXAiCiAgICAgICAgYXR0cl9leHByID0gKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICAjIHByaW50IGF0dHJpYnV0ZXMgYXMgcGxhaW4gZ3JvdXBzCiAgICAgICAgcHJpbnQoT25lT3JNb3JlKGF0dHJfZXhwcikucGFyc2VTdHJpbmcodGV4dCkuZHVtcCgpKQoKICAgICAgICAjIGluc3RlYWQgb2YgT25lT3JNb3JlKGV4cHIpLCBwYXJzZSB1c2luZyBEaWN0KE9uZU9yTW9yZShHcm91cChleHByKSkpIC0gRGljdCB3aWxsIGF1dG8tYXNzaWduIG5hbWVzCiAgICAgICAgcmVzdWx0ID0gRGljdChPbmVPck1vcmUoR3JvdXAoYXR0cl9leHByKSkpLnBhcnNlU3RyaW5nKHRleHQpCiAgICAgICAgcHJpbnQocmVzdWx0LmR1bXAoKSkKCiAgICAgICAgIyBhY2Nlc3MgbmFtZWQgZmllbGRzIGFzIGRpY3QgZW50cmllcywgb3Igb3V0cHV0IGFzIGRpY3QKICAgICAgICBwcmludChyZXN1bHRbJ3NoYXBlJ10pCiAgICAgICAgcHJpbnQocmVzdWx0LmFzRGljdCgpKQoKICAgIHByaW50czo6CgogICAgICAgIFsnc2hhcGUnLCAnU1FVQVJFJywgJ3Bvc24nLCAndXBwZXIgbGVmdCcsICdjb2xvcicsICdsaWdodCBibHVlJywgJ3RleHR1cmUnLCAnYnVybGFwJ10KICAgICAgICBbWydzaGFwZScsICdTUVVBUkUnXSwgWydwb3NuJywgJ3VwcGVyIGxlZnQnXSwgWydjb2xvcicsICdsaWdodCBibHVlJ10sIFsndGV4dHVyZScsICdidXJsYXAnXV0KICAgICAgICAtIGNvbG9yOiBsaWdodCBibHVlCiAgICAgICAgLSBwb3NuOiB1cHBlciBsZWZ0CiAgICAgICAgLSBzaGFwZTogU1FVQVJFCiAgICAgICAgLSB0ZXh0dXJlOiBidXJsYXAKICAgICAgICBTUVVBUkUKICAgICAgICB7J2NvbG9yJzogJ2xpZ2h0IGJsdWUnLCAncG9zbic6ICd1cHBlciBsZWZ0JywgJ3RleHR1cmUnOiAnYnVybGFwJywgJ3NoYXBlJzogJ1NRVUFSRSd9CgogICAgU2VlIG1vcmUgZXhhbXBsZXMgYXQgOmNsYXNzOmBQYXJzZVJlc3VsdHNgIG9mIGFjY2Vzc2luZyBmaWVsZHMgYnkgcmVzdWx0cyBuYW1lLgogICAgYwIAAAAAAAAAAgAAAAMAAAADAAAAcyMAAAB0AAB0AQB8AACDAgBqAgB8AQCDAQABZAEA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CQENAQYBBwIGAwYBGQEKAScBDwEPAQQBDwEPARABBQIOAhMCAwEhATYCNgENAQkBEgNjAgAAAAAAAAACAAAABQAAAEMAAABzGgAAAHQAAHQBAHQCAHwAAHwBABeDAQCDAQCDAQBTKQFh6QUAAEhlbHBlciB0byBlYXNpbHkgYW5kIGNsZWFybHkgZGVmaW5lIGEgZGljdGlvbmFyeSBieSBzcGVjaWZ5aW5nCiAgICB0aGUgcmVzcGVjdGl2ZSBwYXR0ZXJucyBmb3IgdGhlIGtleSBhbmQgdmFsdWUuICBUYWtlcyBjYXJlIG9mCiAgICBkZWZpbmluZyB0aGUgOmNsYXNzOmBEaWN0YCwgOmNsYXNzOmBaZXJvT3JNb3JlYCwgYW5kCiAgICA6Y2xhc3M6YEdyb3VwYCB0b2tlbnMgaW4gdGhlIHByb3BlciBvcmRlci4gIFRoZSBrZXkgcGF0dGVybgogICAgY2FuIGluY2x1ZGUgZGVsaW1pdGluZyBtYXJrZXJzIG9yIHB1bmN0dWF0aW9uLCBhcyBsb25nIGFzIHRoZXkgYXJlCiAgICBzdXBwcmVzc2VkLCB0aGVyZWJ5IGxlYXZpbmcgdGhlIHNpZ25pZmljYW50IGtleSB0ZXh0LiAgVGhlIHZhbHVlCiAgICBwYXR0ZXJuIGNhbiBpbmNsdWRlIG5hbWVkIHJlc3VsdHMsIHNvIHRoYXQgdGhlIDpjbGFzczpgRGljdGAgcmVzdWx0cwogICAgY2FuIGluY2x1ZGUgbmFtZWQgdG9rZW4gZmllbGRzLgoKICAgIEV4YW1wbGU6OgoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogbGlnaHQgYmx1ZSB0ZXh0dXJlOiBidXJsYXAiCiAgICAgICAgYXR0cl9leHByID0gKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIHByaW50KE9uZU9yTW9yZShhdHRyX2V4cHIpLnBhcnNlU3RyaW5nKHRleHQpLmR1bXAoKSkKCiAgICAgICAgYXR0cl9sYWJlbCA9IGxhYmVsCiAgICAgICAgYXR0cl92YWx1ZSA9IFN1cHByZXNzKCc6JykgKyBPbmVPck1vcmUoZGF0YV93b3JkLCBzdG9wT249bGFiZWwpLnNldFBhcnNlQWN0aW9uKCcgJy5qb2luKQoKICAgICAgICAjIHNpbWlsYXIgdG8gRGljdCwgYnV0IHNpbXBsZXIgY2FsbCBmb3JtYXQKICAgICAgICByZXN1bHQgPSBkaWN0T2YoYXR0cl9sYWJlbCwgYXR0cl92YWx1ZSkucGFyc2VTdHJpbmcodGV4dCkKICAgICAgICBwcmludChyZXN1bHQuZHVtcCgpKQogICAgICAgIHByaW50KHJlc3VsdFsnc2hhcGUnXSkKICAgICAgICBwcmludChyZXN1bHQuc2hhcGUpICAjIG9iamVjdCBhdHRyaWJ1dGUgYWNjZXNzIHdvcmtzIHRvbwogICAgICAgIHByaW50KHJlc3VsdC5hc0RpY3QoKSkKCiAgICBwcmludHM6OgoKICAgICAgICBbWydzaGFwZScsICdTUVVBUkUnXSwgWydwb3NuJywgJ3VwcGVyIGxlZnQnXSwgWydjb2xvcicsICdsaWdodCBibHVlJ10sIFsndGV4dHVyZScsICdidXJsYXAnXV0KICAgICAgICAtIGNvbG9yOiBsaWdodCBibHVlCiAgICAgICAgLSBwb3NuOiB1cHBlciBsZWZ0CiAgICAgICAgLSBzaGFwZTogU1FVQVJFCiAgICAgICAgLSB0ZXh0dXJlOiBidXJsYXAKICAgICAgICBTUVVBUkUKICAgICAgICBTUVVBUkUKICAgICAgICB7J2NvbG9yJzogJ2xpZ2h0IGJsdWUnLCAnc2hhcGUnOiAnU1FVQVJFJywgJ3Bvc24nOiAndXBwZXIgbGVmdCcsICd0ZXh0dXJlJzogJ2J1cmxhcCd9CiAgICApA3InAAAAcjYAAAByLQAAACkCckgBAAByMAEAAHISAAAAchIAAAByEwAAAHJfAAAArRUAAHMCAAAAACVjAgAAAAAAAAAGAAAAAwAAAEMAAABzhQAAAHQAAIMAAGoBAGQBAGQCAIQAAIMBAH0CAHwCAGoCAIMAAH0DAGQDAHwDAF8DAHwCAGQEAIMBAHwAABd8AwBkBQCDAQAXfQQAfAEAclwAZAYAZAIAhAAAfQUAbgwAZAcAZAgAhAAAfQUAfAQAagEAfAUAgwEAAXwAAGoEAHwEAF8EAHwEAFMpCWGXBAAASGVscGVyIHRvIHJldHVybiB0aGUgb3JpZ2luYWwsIHVudG9rZW5pemVkIHRleHQgZm9yIGEgZ2l2ZW4KICAgIGV4cHJlc3Npb24uICBVc2VmdWwgdG8gcmVzdG9yZSB0aGUgcGFyc2VkIGZpZWxkcyBvZiBhbiBIVE1MIHN0YXJ0CiAgICB0YWcgaW50byB0aGUgcmF3IHRhZyB0ZXh0IGl0c2VsZiwgb3IgdG8gcmV2ZXJ0IHNlcGFyYXRlIHRva2VucyB3aXRoCiAgICBpbnRlcnZlbmluZyB3aGl0ZXNwYWNlIGJhY2sgdG8gdGhlIG9yaWdpbmFsIG1hdGNoaW5nIGlucHV0IHRleHQuIEJ5CiAgICBkZWZhdWx0LCByZXR1cm5zIGFzdHJpbmcgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcGFyc2VkIHRleHQuCgogICAgSWYgdGhlIG9wdGlvbmFsIGBgYXNTdHJpbmdgYCBhcmd1bWVudCBpcyBwYXNzZWQgYXMKICAgIGBgRmFsc2VgYCwgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIGlzCiAgICBhIDpjbGFzczpgUGFyc2VSZXN1bHRzYCBjb250YWluaW5nIGFueSByZXN1bHRzIG5hbWVzIHRoYXQKICAgIHdlcmUgb3JpZ2luYWxseSBtYXRjaGVkLCBhbmQgYSBzaW5nbGUgdG9rZW4gY29udGFpbmluZyB0aGUgb3JpZ2luYWwKICAgIG1hdGNoZWQgdGV4dCBmcm9tIHRoZSBpbnB1dCBzdHJpbmcuICBTbyBpZiB0aGUgZXhwcmVzc2lvbiBwYXNzZWQgdG8KICAgIDpjbGFzczpgb3JpZ2luYWxUZXh0Rm9yYCBjb250YWlucyBleHByZXNzaW9ucyB3aXRoIGRlZmluZWQKICAgIHJlc3VsdHMgbmFtZXMsIHlvdSBtdXN0IHNldCBgYGFzU3RyaW5nYGAgdG8gYGBGYWxzZWBgIGlmIHlvdQogICAgd2FudCB0byBwcmVzZXJ2ZSB0aG9zZSByZXN1bHRzIG5hbWUgdmFsdWVzLgoKICAgIEV4YW1wbGU6OgoKICAgICAgICBzcmMgPSAidGhp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AQCDAQB9AwBZbgEAWHwDAHwCAF8BAHwCAFMpBWFMBQAASGVscGVyIHRvIGRlZmluZSBhIHBhcnNlIGFjdGlvbiBieSBtYXBwaW5nIGEgZnVuY3Rpb24gdG8gYWxsCiAgICBlbGVtZW50cyBvZiBhIFBhcnNlUmVzdWx0cyBsaXN0LiBJZiBhbnkgYWRkaXRpb25hbCBhcmdzIGFyZSBwYXNzZWQsCiAgICB0aGV5IGFyZSBmb3J3YXJkZWQgdG8gdGhlIGdpdmVuIGZ1bmN0aW9uIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzCiAgICBhZnRlciB0aGUgdG9rZW4sIGFzIGluCiAgICBgYGhleF9pbnRlZ2VyID0gV29yZChoZXhudW1zKS5zZXRQYXJzZUFjdGlvbih0b2tlbk1hcChpbnQsIDE2KSlgYCwKICAgIHdoaWNoIHdpbGwgY29udmVydCB0aGUgcGFyc2VkIGRhdGEgdG8gYW4gaW50ZWdlciB1c2luZyBiYXNlIDE2LgoKICAgIEV4YW1wbGUgKGNvbXBhcmUgdGhlIGxhc3QgdG8gZXhhbXBsZSBpbiA6Y2xhc3M6YFBhcnNlckVsZW1lbnQudHJhbnNmb3JtU3RyaW5nYDo6CgogICAgICAgIGhleF9pbnRzID0gT25lT3JNb3JlKFdvcmQoaGV4bnVtcykpLnNldFBhcnNlQWN0aW9uKHRva2VuTWFwKGludCwgMTYpKQogICAgICAgIGhleF9pbnRzLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAwMCAxMSAyMiBhYSBGRiAwYSAwZCAxYQogICAgICAgICAgICAnJycpCgogICAgICAgIHVwcGVyd29yZCA9IFdvcmQoYWxwaGFzKS5zZXRQYXJzZUFjdGlvbih0b2tlbk1hcChzdHIudXBwZXIpKQogICAgICAgIE9uZU9yTW9yZSh1cHBlcndvcmQpLnJ1blRlc3RzKCcnJwogICAgICAgICAgICBteSBraW5nZG9tIGZvciBhIGhvcnNlCiAgICAgICAgICAgICcnJykKCiAgICAgICAgd2QgPSBXb3JkKGFscGhhcykuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAoc3RyLnRpdGxlKSkKICAgICAgICBPbmVPck1vcmUod2QpLnNl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aW4gZWl0aGVyIHVwcGVyIG9yIGxvd2VyIGNhc2UsCiAgICBhdHRyaWJ1dGVzIHdpdGggbmFtZXNwYWNlcyBhbmQgd2l0aCBxdW90ZWQgb3IgdW5xdW90ZWQgdmFsdWVzLgoKICAgIEV4YW1wbGU6OgoKICAgICAgICB0ZXh0ID0gJzx0ZD5Nb3JlIGluZm8gYXQgdGhlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9weXBhcnNpbmcvcHlwYXJzaW5nL3dpa2kiPnB5cGFyc2luZzwvYT4gd2lraSBwYWdlPC90ZD4nCiAgICAgICAgIyBtYWtlSFRNTFRhZ3MgcmV0dXJucyBweXBhcnNpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBvcGVuaW5nIGFuZAogICAgICAgICMgY2xvc2luZyB0YWdzIGFzIGEgMi10dXBsZQogICAgICAgIGEsIGFfZW5kID0gbWFrZUhUTUxUYWdzKCJBIikKICAgICAgICBsaW5rX2V4cHIgPSBhICsgU2tpcFRvKGFfZW5kKSgibGlua190ZXh0IikgKyBhX2VuZAoKICAgICAgICBmb3IgbGluayBpbiBsaW5rX2V4cHIuc2VhcmNoU3RyaW5nKHRleHQpOgogICAgICAgICAgICAjIGF0dHJpYnV0ZXMgaW4gdGhlIDxBPiB0YWcgKGxpa2UgImhyZWYiIHNob3duIGhlcmUpIGFyZQogICAgICAgICAgICAjIGFsc28gYWNjZXNzaWJsZSBhcyBuYW1lZCByZXN1bHRzCiAgICAgICAgICAgIHByaW50KGxpbmsubGlua190ZXh0LCAnLT4nLCBsaW5rLmhyZWYpCgogICAgcHJpbnRzOjoKCiAgICAgICAgcHlwYXJzaW5nIC0+IGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhcnNpbmcvcHlwYXJzaW5nL3dpa2kKICAgIEYpAXJ6AwAAKQFycgMAAHISAAAAchIAAAByEwAAAHJpAAAA0xYAAHMCAAAAABZjAQAAAAAAAAABAAAAAwAAAEMAAABzDQAAAHQAAHwAAGQBAIMCAFMpAnq7SGVscGVyIHRvIGNvbnN0cnVjdCBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZyBleHByZXNzaW9ucyBmb3IgWE1MLAogICAgZ2l2ZW4gYSB0YWcgbmFtZS4gTWF0Y2hlcyB0YWdzIG9ubHkgaW4gdGhlIGdpdmVuIHVwcGVyL2xvd2VyIGNhc2UuCgogICAgRXhhbXBsZTogc2ltaWxhciB0byA6Y2xhc3M6YG1ha2VIVE1MVGFnc2AKICAgIFQpAXJ6AwAAKQFycgMAAHISAAAAchIAAAByEwAAAHJqAAAA6xYAAHMCAAAAAAZjAAAAAAAAAAADAAAAAwAAAA8AAABzTgAAAHwAAHIZAHwAAGQBAGQBAIUCABmJAABuDAB8AQBqAACDAACJAABkAgBkAwCEAACIAABEgwEAiQAAhwAAZgEAZAQAZAUAhgAAfQIAfAIAUykGYTcIAABIZWxwZXIgdG8gY3JlYXRlIGEgdmFsaWRhdGluZyBwYXJzZSBhY3Rpb24gdG8gYmUgdXNlZCB3aXRoIHN0YXJ0CiAgICB0YWdzIGNyZWF0ZWQgd2l0aCA6Y2xhc3M6YG1ha2VYTUxUYWdzYCBvcgogICAgOmNsYXNzOmBtYWtlSFRNTFRhZ3NgLiBVc2UgYGB3aXRoQXR0cmlidXRlYGAgdG8gcXVhbGlmeQogICAgYSBzdGFydGluZyB0YWcgd2l0aCBhIHJlcXVpcmVkIGF0dHJpYnV0ZSB2YWx1ZSwgdG8gYXZvaWQgZmFsc2UKICAgIG1hdGNoZXMgb24gY29tbW9uIHRhZ3Mgc3VjaCBhcyBgYDxURD5gYCBvciBgYDxESVY+YGAuCgogICAgQ2FsbCBgYHdpdGhBdHRyaWJ1dGVgYCB3aXRoIGEgc2VyaWVzIG9mIGF0dHJpYnV0ZSBuYW1lcyBhbmQKICAgIHZhbHVlcy4gU3BlY2lmeSB0aGUgbGlzdCBvZiBmaWx0ZXIgYXR0cmlidXRlcyBuYW1lcyBhbmQgdmFsdWVzIGFzOgoKICAgICAtIGtleXdvcmQgYXJndW1lbnRzLCBhcyBpbiBgYChhbGlnbj0icmlnaHQiKWBgLCBvcgogICAgIC0gYXMgYW4gZXhwbGljaXQgZGljdCB3aXRoIGBgKipgYCBvcGVyYXRvciwgd2hlbiBhbiBhdHRyaWJ1dGUKICAgICAgIG5hbWUgaXMgYWxzbyBhIFB5dGhvbiByZXNlcnZlZCB3b3JkLCBhcyBpbiBgYCoqeyJjbGFzcyI6IkN1c3RvbWVyIiwgImFsaWduIjoicmlnaHQifWBgCiAgICAgLSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSB0dXBsZXMsIGFzIGluIGBgKCgibnMxOmNsYXNzIiwgIkN1c3RvbWVyIiksICgibnMyOmFsaWduIiwgInJpZ2h0IikpYGAKCiAgICBGb3IgYXR0cmlidXRlIG5hbWVzIHdpdGggYSBuYW1lc3BhY2UgcHJlZml4LCB5b3UgbXVzdCB1c2UgdGhlIHNlY29uZAogICAgZm9ybS4gIEF0dHJpYnV0ZSBuYW1lcyBhcmUgbWF0Y2hlZCBpbnNlbnNpdGl2ZSB0byB1cHBlci9sb3dlciBjYXNlLgoKICAgIElmIGp1c3QgdGVzdGluZyBmb3IgYGBjbGFzc2BgICh3aXRoIG9yIHdpdGhvdXQgYSBuYW1lc3BhY2UpLCB1c2UKICAgIDpjbGFzczpgd2l0aENsYXNzYC4KCiAgICBUbyB2ZXJpZnkgdGhhdCB0aGUgYXR0cmlidXRlIGV4aXN0cywgYnV0IHdpdGhvdXQgc3BlY2lmeWluZyBhIHZhbHVlLAogICAgcGFzcyBgYHdpdGhBdHRyaWJ1dGUuQU5ZX1ZBTFVFYGAgYXMgdGhlIHZhbHVlLgoKICAgIEV4YW1wbGU6OgoKICAgICAgICBodG1sID0gJycnCiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIFNvbWUgdGV4dAogICAgICAgICAgICA8ZGl2IHR5cGU9ImdyaWQiPjEgNCAwIDEgMDwvZGl2PgogICAgICAgICAgICA8ZGl2IHR5cGU9ImdyYXBoIj4xLDMgMiwzIDEsMTwvZGl2PgogICAgICAgICAgICA8ZGl2PnRoaXMgaGFzIG5vIHR5cGU8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICcnJwogICAgICAgIGRpdixkaXZfZW5kID0gbWFrZUhUTUxUYWdzKCJkaXYiKQoKICAgICAgICAjIG9ubHkgbWF0Y2ggZGl2IHRhZyBoYXZpbmcgYSB0eXBlIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJncmlkIgogICAgICAgIGRpdl9ncmlkID0gZGl2KCkuc2V0UGFyc2VBY3Rpb24od2l0aEF0dHJpYnV0ZSh0eXBl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Tm90ZTogaWYgeW91IGRlZmluZSBhIGRlZXAgb3BlcmF0b3IgbGlzdCwgeW91IG1heSBzZWUgcGVyZm9ybWFuY2UKICAgIGlzc3VlcyB3aGVuIHVzaW5nIGluZml4Tm90YXRpb24uIFNlZQogICAgOmNsYXNzOmBQYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXRgIGZvciBhIG1lY2hhbmlzbSB0byBwb3RlbnRpYWxseQogICAgaW1wcm92ZSB5b3VyIHBhcnNlciBwZXJmb3JtYW5jZS4KCiAgICBQYXJhbWV0ZXJzOgogICAgIC0gYmFzZUV4cHIgLSBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgbW9zdCBiYXNpYyBlbGVtZW50IGZvciB0aGUKICAgICAgIG5lc3RlZAogICAgIC0gb3BMaXN0IC0gbGlzdCBvZiB0dXBsZXMsIG9uZSBmb3IgZWFjaCBvcGVyYXRvciBwcmVjZWRlbmNlIGxldmVsCiAgICAgICBpbiB0aGUgZXhwcmVzc2lvbiBncmFtbWFyOyBlYWNoIHR1cGxlIGlzIG9mIHRoZSBmb3JtIGBgKG9wRXhwciwKICAgICAgIG51bVRlcm1zLCByaWdodExlZnRBc3NvYywgcGFyc2VBY3Rpb24pYGAsIHdoZXJlOgoKICAgICAgIC0gb3BFeHByIGlzIHRoZSBweXBhcnNpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIG9wZXJhdG9yOyBtYXkgYWxzbwogICAgICAgICBiZSBhIHN0cmluZywgd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBMaXRlcmFsOyBpZiBudW1UZXJtcwogICAgICAgICBpcyAzLCBvcEV4cHIgaXMgYSB0dXBsZSBvZiB0d28gZXhwcmVzc2lvbnMsIGZvciB0aGUgdHdvCiAgICAgICAgIG9wZXJhdG9ycyBzZXBhcmF0aW5nIHRoZSAzIHRlcm1zCiAgICAgICAtIG51bVRlcm1zIGlzIHRoZSBudW1iZXIgb2YgdGVybXMgZm9yIHRoaXMgb3BlcmF0b3IgKG11c3QgYmUgMSwKICAgICAgICAgMiwgb3IgMykKICAgICAgIC0gcmlnaHRMZWZ0QXNzb2MgaXMgdGhlIGluZGljYXRvciB3aGV0aGVyIHRoZSBvcGVyYXRvciBpcyByaWdodAogICAgICAgICBvciBsZWZ0IGFzc29jaWF0aXZlLCB1c2luZyB0aGUgcHlwYXJzaW5nLWRlZmluZWQgY29uc3RhbnRzCiAgICAgICAgIGBgb3BBc3NvYy5SSUdIVGBgIGFuZCBgYG9wQXNzb2MuTEVGVGBgLgogICAgICAgLSBwYXJzZUFjdGlvbiBpcyB0aGUgcGFyc2UgYWN0aW9uIHRvIGJlIGFzc29jaWF0ZWQgd2l0aAogICAgICAgICBleHByZXNzaW9ucyBtYXRjaGluZyB0aGlzIG9wZXJhdG9yIGV4cHJlc3Npb24gKHRoZSBwYXJzZSBhY3Rpb24KICAgICAgICAgdHVwbGUgbWVtYmVyIG1heSBiZSBvbWl0dGVkKTsgaWYgdGhlIHBhcnNlIGFjdGlvbiBpcyBwYXNzZWQKICAgICAgICAgYSB0dXBsZSBvciBsaXN0IG9mIGZ1bmN0aW9ucywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKICAgICAgICAgYGBzZXRQYXJzZUFjdGlvbigqZm4pYGAKICAgICAgICAgKDpjbGFzczpgUGFyc2VyRWxlbWVudC5zZXRQYXJzZUFjdGlvbmApCiAgICAgLSBscGFyIC0gZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgbGVmdC1wYXJlbnRoZXNlcwogICAgICAgKGRlZmF1bHQ9IGBgU3VwcHJlc3MoJygnKWBgKQogICAgIC0gcnBhciAtIGV4cHJlc3Npb24gZm9yIG1hdGNoaW5nIHJpZ2h0LXBhcmVudGhlc2VzCiAgICAgICAoZGVmYXVsdD0gYGBTdXBwcmVzcygnKScpYGApCgogICAgRXhhbXBsZTo6CgogICAgICAgICMgc2ltcGxlIGV4YW1wbGUgb2YgZm91ci1mdW5jdGlvbiBhcml0aG1ldGljIHdpdGggaW50cyBhbmQKICAgICAgICAjIHZhcmlhYmxlIG5hbWVzCiAgICAgICAgaW50ZWdlciA9IHB5cGFyc2luZ19jb21tb24uc2lnbmVkX2ludGVnZXIKICAgICAgICB2YXJuYW1lID0gcHlwYXJzaW5nX2NvbW1vbi5pZGVudGlmaWVyCgogICAgICAgIGFyaXRoX2V4cHIgPSBpbmZpeE5vdGF0aW9uKGludGVnZXIgfCB2YXJuYW1lLAogICAgICAgICAgICBbCiAgICAgICAgICAgICgnLScsIDEsIG9wQXNzb2MuUklHSFQpLAogICAgICAgICAgICAob25lT2YoJyogLycpLCAyLCBvcEFzc29jLkxFRlQpLAogICAgICAgICAgICAob25lT2YoJysgLScpLCAyLCBvcEFzc29jLkxFRlQpLAogICAgICAgICAgICBdKQoKICAgICAgICBhcml0aF9leHByLnJ1blRlc3RzKCcnJwogICAgICAgICAgICA1KzMqNgogICAgICAgICAgICAoNSszKSo2CiAgICAgICAgICAgIC0yLS0xMQogICAgICAgICAgICAnJycsIGZ1bGxEdW1wPUZhbHNlKQoKICAgIHByaW50czo6CgogICAgICAgIDUrMyo2CiAgICAgICAgW1s1LCAnKycsIFszLCAnKicsIDZdXV0KCiAgICAgICAgKDUrMykqNgogICAgICAgIFtbWzUsICcrJywgM10sICcqJywgNl1dCgogICAgICAgIC0yLS0xMQogICAgICAgIFtbWyctJywgMl0sICctJywgWyctJywgMTFdXV0KICAgIGMAAAAAAAAAAAAAAAADAAAAQAAAAHMfAAAAZQAAWgEAZAAAWgIAZAEAZAIAZAMAhAEAWgMAZAQAUykFehppbmZpeE5vdGF0aW9uLjxsb2NhbHM+Ll9GQlRjBAAAAAAAAAAEAAAAAwAAAFMAAABzHQAAAHwAAGoAAGoBAHwBAHwCAIMCAAF8AgBnAABmAgBTKQFOKQJylAEAAHL9AQAAKQRyxwAAAHKTAQAAcsMAAABy2gEAAHISAAAAchIAAAByEwAAAHLlAAAArRcAAHMEAAAAAAETAXokaW5maXhOb3RhdGlvbi48bG9jYWxzPi5fRkIucGFyc2VJbXBsTikEcg8AAAByEAAAAHIRAAAAcuUAAAByEgAAAHISAAAAchIAAAByEwAAANoDX0ZCrBcAAHMCAAAADAFyhQMAAE5yqwIAAHKRAAAAegclcyB0ZXJtegklcyVzIHRlcm1ykwAAAHpAaWYgbnVtdGVybXM9Mywgb3BFeHByIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0IG9mIHR3byBleHBy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IGlnbm9yaW5nIG9wZW5pbmcgYW5kIGNsb3NpbmcKICAgICAgIGRlbGltaXRlcnMgKGRlZmF1bHQ9IDpjbGFzczpgcXVvdGVkU3RyaW5nYCkKCiAgICBJZiBhbiBleHByZXNzaW9uIGlzIG5vdCBwcm92aWRlZCBmb3IgdGhlIGNvbnRlbnQgYXJndW1lbnQsIHRoZQogICAgbmVzdGVkIGV4cHJlc3Npb24gd2lsbCBjYXB0dXJlIGFsbCB3aGl0ZXNwYWNlLWRlbGltaXRlZCBjb250ZW50CiAgICBiZXR3ZWVuIGRlbGltaXRlcnMgYXMgYSBsaXN0IG9mIHNlcGFyYXRlIHZhbHVlcy4KCiAgICBVc2UgdGhlIGBgaWdub3JlRXhwcmBgIGFyZ3VtZW50IHRvIGRlZmluZSBleHByZXNzaW9ucyB0aGF0IG1heQogICAgY29udGFpbiBvcGVuaW5nIG9yIGNsb3NpbmcgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcwogICAgb3BlbmluZyBvciBjbG9zaW5nIGNoYXJhY3RlcnMgZm9yIG5lc3RpbmcsIHN1Y2ggYXMgcXVvdGVkU3RyaW5nIG9yCiAgICBhIGNvbW1lbnQgZXhwcmVzc2lvbi4gIFNwZWNpZnkgbXVsdGlwbGUgZXhwcmVzc2lvbnMgdXNpbmcgYW4KICAgIDpjbGFzczpgT3JgIG9yIDpjbGFzczpgTWF0Y2hGaXJzdGAuIFRoZSBkZWZhdWx0IGlzCiAgICA6Y2xhc3M6YHF1b3RlZFN0cmluZ2AsIGJ1dCBpZiBubyBleHByZXNzaW9ucyBhcmUgdG8gYmUgaWdub3JlZCwgdGhlbgogICAgcGFzcyBgYE5vbmVgYCBmb3IgdGhpcyBhcmd1bWVudC4KCiAgICBFeGFtcGxlOjoKCiAgICAgICAgZGF0YV90eXBlID0gb25lT2YoInZvaWQgaW50IHNob3J0IGxvbmcgY2hhciBmbG9hdCBkb3VibGUiKQogICAgICAgIGRlY2xfZGF0YV90eXBlID0gQ29tYmluZShkYXRhX3R5cGUgKyBPcHRpb25hbChXb3JkKCcqJykpKQogICAgICAgIGlkZW50ID0gV29yZChhbHBoYXMrJ18nLCBhbHBoYW51bXMrJ18nKQogICAgICAgIG51bWJlciA9IHB5cGFyc2luZ19jb21tb24ubnVtYmVyCiAgICAgICAgYXJnID0gR3JvdXAoZGVjbF9kYXRhX3R5cGUgKyBpZGVudCkKICAgICAgICBMUEFSLCBSUEFSID0gbWFwKFN1cHByZXNzLCAiKCkiKQoKICAgICAgICBjb2RlX2JvZHkgPSBuZXN0ZWRFeHByKCd7JywgJ30nLCBpZ25vcmVFeHByPShxdW90ZWRTdHJpbmcgfCBjU3R5bGVDb21tZW50KSkKCiAgICAgICAgY19mdW5jdGlvbiA9IChkZWNsX2RhdGFfdHlwZSgidHlwZSIpCiAgICAgICAgICAgICAgICAgICAgICArIGlkZW50KCJuYW1lIikKICAgICAgICAgICAgICAgICAgICAgICsgTFBBUiArIE9wdGlvbmFsKGRlbGltaXRlZExpc3QoYXJnKSwgW10pKCJhcmdzIikgKyBSUEFSCiAgICAgICAgICAgICAgICAgICAgICArIGNvZGVfYm9keSgiYm9keSIpKQogICAgICAgIGNfZnVuY3Rpb24uaWdub3JlKGNTdHlsZUNvbW1lbnQpCgogICAgICAgIHNvdXJjZV9jb2RlID0gJycnCiAgICAgICAgICAgIGludCBpc19vZGQoaW50IHgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoeCUyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaW50IGRlY190b19oZXgoY2hhciBoY2hhcikgewogICAgICAgICAgICAgICAgaWYgKGhjaGFyID49ICcwJyAmJiBoY2hhciA8PSAnOScpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9yZChoY2hhciktb3JkKCcwJykpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEwK29yZChoY2hhciktb3JkKCdBJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgJycnCiAgICAgICAgZm9yIGZ1bmMgaW4gY19mdW5jdGlvbi5zZWFyY2hTdHJpbmcoc291cmNlX2NvZGUpOgogICAgICAgICAgICBwcmludCgiJShuYW1lKXMgKCUodHlwZSlzKSBhcmdzOiAlKGFyZ3MpcyIgJSBmdW5jKQoKCiAgICBwcmludHM6OgoKICAgICAgICBpc19vZGQgKGludCkgYXJnczogW1snaW50JywgJ3gnXV0KICAgICAgICBkZWNfdG9faGV4IChpbnQpIGFyZ3M6IFtbJ2NoYXInLCAnaGNoYXInXV0KICAgIHoub3BlbmluZyBhbmQgY2xvc2luZyBzdHJpbmdzIGNhbm5vdCBiZSB0aGUgc2FtZU5ylAAAAHKoAgAAYwEAAAAAAAAAAQAAAAIAAABTAAAAcw4AAAB8AABkAQAZagAAgwAAUykCTnIBAAAAKQFy1wAAACkBcpgAAAByEgAAAHISAAAAchMAAABymQAAADsYAABzAAAAAHocbmVzdGVkRXhwci48bG9jYWxzPi48bGFtYmRhPmMBAAAAAAAAAAEAAAACAAAAUwAAAHMOAAAAfAAAZAEAGWoAAIMAAFMpAk5yAQAAACkBctcAAAApAXKYAAAAchIAAAByEgAAAHITAAAAcpkAAABAGAAAcwAAAABjAQAAAAAAAAABAAAAAgAAAFMAAABzDgAAAHwAAGQBABlqAACDAABTKQJOcgEAAAApAXLXAAAAKQFymAAAAHISAAAAchIAAAByEwAAAHKZAAAARxgAAHMAAAAAYwEAAAAAAAAAAQAAAAIAAABTAAAAcw4AAAB8AABkAQAZagAAgwAAUykCTnIBAAAAKQFy1wAAACkBcpgAAAByEgAAAHISAAAAchMAAABymQAAAEwYAABzAAAAAHpPb3BlbmluZyBhbmQgY2xvc2luZyBhcmd1bWVudHMgbXVzdCBiZSBzdHJpbmdzIGlmIG5vIGNvbnRlbnQgZXhwcmVzc2lvbiBpcyBnaXZlbnoWbmVzdGVkICVzJXMgZXhwcmVzc2lvbikScjsCAABymgAAAHIeAQAActIAAAByJgAAAHI2AAAAciUAAAByQQAAAHKzAQAAcqEAAAByYQAAAHJRAQAAcjEAAAByKwAAAHItAAAAckgAAAByTwAAAHLRAQAAKQXaBm9wZW5lctoGY2xvc2Vy2gdjb250ZW50choDAABypAAAAHISAAAAchIAAAByEwAAAHJuAAAA7xcAAHM2AAAAAEEMAQwBDAEeASQBDAEKAQMCIQISAgwCFAETAgwBBgM2ARICBgIxARICDAEJAQwBNQIuARcBYwMAAAAAAAAACwAAAAYAAAADAAAAc5sBAACIAQBkAQBkAQCFAgAZiQAAhwAAhwEAZgIAZAIAZAMAhgAAiQIAhwEAZgEAZAQAZAUAhgAAfQMAhwEAZgEAZAYAZAcAhgAAfQQAhwEAZgEAZAgAZAkAhgAAfQUAdAAAdAEAgwAAagIAZAoAgwEAagMAgwAAZAsAdAQAgwAAgwEBfQYAdAUAgwAAdAUAgwAAagYAfAQAgwEAF2oHAGQMAIMBAH0HAHQFAIMAAGoGAHwDAIMBAGoHAGQNAIMBAH0IAHQFAIMAAGoGAHwFAIMBAGoHAGQOAIMBAH0JAHwCAHIkAXQIAHQJAHwGAIMBAHwHABd0AAB8CAB0CAB8AACDAQAXdAkAfAYAgwEAF2QLAHQEAIMAAIMBARd8CQAXgwEAfQoAbj0AdAgAdAkAfAYAgwEAdAAAfAgAdAgAfAAAgwEAF3QJAHwGAIMBABdkCwB0BACDAACDAQEXfAkAF4MBAH0KAHwKAGoKAIcCAGYBAGQPAGQQAIYAAIMBAAF8AABqCwB0DAB0AQCDAAAXgwEAAXwKAGoHAGQRAIMBAFMpEmHmCAAASGVscGVyIG1ldGhvZCBmb3IgZGVmaW5pbmcgc3BhY2UtZGVsaW1pdGVkIGluZGVudGF0aW9uIGJsb2NrcywKICAgIHN1Y2ggYXMgdGhvc2UgdXNlZCB0byBkZWZpbmUgYmxvY2sgc3RhdGVtZW50cyBpbiBQeXRob24gc291cmNlIGNvZGUuCgogICAgUGFyYW1ldGVyczoKCiAgICAgLSBibG9ja1N0YXRlbWVudEV4cHIgLSBleHByZXNzaW9uIGRlZmluaW5nIHN5bnRheCBvZiBzdGF0ZW1lbnQgdGhhdAogICAgICAgaXMgcmVwZWF0ZWQgd2l0aGluIHRoZSBpbmRlbnRlZCBibG9jawogICAgIC0gaW5kZW50U3RhY2sgLSBsaXN0IGNyZWF0ZWQgYnkgY2FsbGVyIHRvIG1hbmFnZSBpbmRlbnRhdGlvbiBzdGFjawogICAgICAgKG11bHRpcGxlIHN0YXRlbWVudFdpdGhJbmRlbnRlZEJsb2NrIGV4cHJlc3Npb25zIHdpdGhpbiBhIHNpbmdsZQogICAgICAgZ3JhbW1hciBzaG91bGQgc2hhcmUgYSBjb21tb24gaW5kZW50U3RhY2spCiAgICAgLSBpbmRlbnQgLSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBibG9jayBtdXN0IGJlIGluZGVudGVkIGJleW9uZAogICAgICAgdGhlIGN1cnJlbnQgbGV2ZWw7IHNldCB0byBGYWxzZSBmb3IgYmxvY2sgb2YgbGVmdC1tb3N0CiAgICAgICBzdGF0ZW1lbnRzIChkZWZhdWx0PSBgYFRydWVgYCkKCiAgICBBIHZhbGlkIGJsb2NrIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgYGBibG9ja1N0YXRlbWVudGBgLgoKICAgIEV4YW1wbGU6OgoKICAgICAgICBkYXRhID0gJycnCiAgICAgICAgZGVmIEEoeik6CiAgICAgICAgICBBMQogICAgICAgICAgQiA9IDEwMAogICAgICAgICAgRyA9IEEyCiAgICAgICAgICBBMgogICAgICAgICAgQTMKICAgICAgICBCCiAgICAgICAgZGVmIEJCKGEsYixjKToKICAgICAgICAgIEJCMQogICAgICAgICAgZGVmIEJCQSgpOgogICAgICAgICAgICBiYmExCiAgICAgICAgICAgIGJiYTIKICAgICAgICAgICAgYmJhMwogICAgICAgIEMKICAgICAgICBECiAgICAgICAgZGVmIHNwYW0oeCx5KToKICAgICAgICAgICAgIGRlZiBlZ2dzKHopOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAnJycKCgogICAgICAgIGluZGVudFN0YWNrID0gWzFdCiAgICAgICAgc3RtdCA9IEZvcndhcmQoKQoKICAgICAgICBpZGVudGlmaWVyID0gV29yZChhbHBoYXMsIGFscGhhbnVtcykKICAgICAgICBmdW5jRGVjbCA9ICgiZGVmIiArIGlkZW50aWZpZXIgKyBHcm91cCgiKCIgKyBPcHRpb25hbChkZWxpbWl0ZWRMaXN0KGlkZW50aWZpZXIpKSArICIpIikgKyAiOiIpCiAgICAgICAgZnVuY19ib2R5ID0gaW5kZW50ZWRCbG9jayhzdG10LCBpbmRlbnRTdGFjaykKICAgICAgICBmdW5jRGVmID0gR3JvdXAoZnVuY0RlY2wgKyBmdW5jX2JvZHkpCgogICAgICAgIHJ2YWx1ZSA9IEZvcndhcmQoKQogICAgICAgIGZ1bmNDYWxsID0gR3JvdXAoaWRlbnRpZmllciArICIoIiArIE9wdGlvbmFsKGRlbGltaXRlZExpc3QocnZhbHVlKSkgKyAiKSIpCiAgICAgICAgcnZhbHVlIDw8IChmdW5jQ2FsbCB8IGlkZW50aWZpZXIgfCBXb3JkKG51bXMpKQogICAgICAgIGFzc2lnbm1lbnQgPSBHcm91cChpZGVudGlmaWVyICsgIj0iICsgcnZhbHVlKQogICAgICAgIHN0bXQgPDwgKGZ1bmNEZWYgfCBhc3NpZ25tZW50IHwgaWRlbnRpZmllcikKCiAgICAgICAgbW9kdWxlX2JvZHkgPSBPbmVPck1vcmUoc3RtdCkKCiAgICAgICAgcGFyc2VUcmVlID0gbW9kdWxlX2JvZHkucGFyc2VTdHJpbmcoZGF0YSkKICAgICAgICBwYXJzZVRyZWUucHByaW50KCkKCiAgICBwcmludHM6OgoKICAgICAgICBbWydkZWYnLAogICAgICAgICAgJ0EnLAogICAgICAgICAgWycoJywgJ3onLCAnKSddLAogICAgICAgICAgJzonLAogICAgICAgICAgW1snQTEnXSwgW1snQicsICc9JywgJzEwMCddXSwgW1snRycsICc9JywgJ0EyJ11dLCBbJ0EyJ10sIFsnQTMnXV1dLAogICAgICAgICAnQicsCiAgICAgICAgIFsnZGVmJywKICAgICAgICAgICdCQicsCiAgICAgICAgICBbJygnLCAnYScsICdiJywgJ2MnLCAnKSddLAogICAgICAgICAgJzonLAogICAgICAgICAgW1snQkIxJ10sIFtbJ2RlZicsICdCQkEnLCBbJygnLCAnKSddLCAnOicsIFtbJ2JiYTEnXSwgWydiYmEyJ10sIFsnYmJhMyddXV1dXV0sCiAgICAgICAgICdDJywKICAgICAgICAgJ0QnLAogICAgICAgICBbJ2RlZicsCiAgICAgICAgICAnc3BhbScsCiAgICAgICAgICBbJygnLCAneCcsICd5JywgJyknXSwKICAgICAgICAgICc6JywKICAgICAgICAg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CgogICAgUGFyc2UgYWN0aW9uczoKCiAgICAgLSA6Y2xhc3M6YGNvbnZlcnRUb0ludGVnZXJgCiAgICAgLSA6Y2xhc3M6YGNvbnZlcnRUb0Zsb2F0YAogICAgIC0gOmNsYXNzOmBjb252ZXJ0VG9EYXRlYAogICAgIC0gOmNsYXNzOmBjb252ZXJ0VG9EYXRldGltZWAKICAgICAtIDpjbGFzczpgc3RyaXBIVE1MVGFnc2AKICAgICAtIDpjbGFzczpgdXBjYXNlVG9rZW5zYAogICAgIC0gOmNsYXNzOmBkb3duY2FzZVRva2Vuc2AKCiAgICBFeGFtcGxlOjoKCiAgICAgICAgcHlwYXJzaW5nX2NvbW1vbi5udW1iZXIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgYW55IGludCBvciByZWFsIG51bWJlciwgcmV0dXJuZWQgYXMgdGhlIGFwcHJvcHJpYXRlIHR5cGUKICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgKzEwMAogICAgICAgICAgICAzLjE0MTU5CiAgICAgICAgICAgIDYuMDJlMjMKICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgJycnKQoKICAgICAgICBweXBhcnNpbmdfY29tbW9uLmZudW1iZXIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgYW55IGludCBvciByZWFsIG51bWJlciwgcmV0dXJuZWQgYXMgZmxvYXQKICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgKzEwMAogICAgICAgICAgICAzLjE0MTU5CiAgICAgICAgICAgIDYuMDJlMjMKICAgICAgICAgICAgMWUtMTIKICAgICAgICAgICAgJycnKQoKICAgICAgICBweXBhcnNpbmdfY29tbW9uLmhleF9pbnRlZ2VyLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAjIGhleCBudW1iZXJzCiAgICAgICAgICAgIDEwMAogICAgICAgICAgICBGRgogICAgICAgICAgICAnJycpCgogICAgICAgIHB5cGFyc2luZ19jb21tb24uZnJhY3Rpb24ucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgZnJhY3Rpb25zCiAgICAgICAgICAgIDEvMgogICAgICAgICAgICAtMy80CiAgICAgICAgICAgICcnJykKCiAgICAgICAgcHlwYXJzaW5nX2NvbW1vbi5taXhlZF9pbnRlZ2VyLnJ1blRlc3RzKCcnJwogICAgICAgICAgICAjIG1peGVkIGZyYWN0aW9ucwogICAgICAgICAgICAxCiAgICAgICAgICAgIDEvMgogICAgICAgICAgICAtMy80CiAgICAgICAgICAgIDEtMy80CiAgICAgICAgICAgICcnJykKCiAgICAgICAgaW1wb3J0IHV1aWQKICAgICAgICBweXBhcnNpbmdfY29tbW9uLnV1aWQuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAodXVpZC5VVUlEKSkKICAgICAgICBweXBhcnNpbmdfY29tbW9uLnV1aWQucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgdXVpZAogICAgICAgICAgICAxMjM0NTY3OC0xMjM0LTU2NzgtMTIzNC01Njc4MTIzNDU2NzgKICAgICAgICAgICAgJycnKQoKICAgIHByaW50czo6CgogICAgICAgICMgYW55IGludCBvciByZWFsIG51bWJlciwgcmV0dXJuZWQgYXMgdGhlIGFwcHJvcHJpYXRlIHR5cGUKICAgICAgICAxMDAKICAgICAgICBbMTAwXQoKICAgICAgICAtMTAwCiAgICAgICAgWy0xMDBdCgogICAgICAgICsxMDAKICAgICAgICBbMTAwXQoKICAgICAgICAzLjE0MTU5CiAgICAgICAgWzMuMTQxNTldCgogICAgICAgIDYuMDJlMjMKICAgICAgICBbNi4wMmUrMjNdCgogICAgICAgIDFlLTEyCiAgICAgICAgWzFlLTEyXQoKICAgICAgICAjIGFueSBpbnQgb3IgcmVhbCBudW1iZXIsIHJldHVybmVkIGFzIGZsb2F0CiAgICAgICAgMTAwCiAgICAgICAgWzEwMC4wXQoKICAgICAgICAtMTAwCiAgICAgICAgWy0xMDAuMF0KCiAgICAgICAgKzEwMAogICAgICAgIFsxMDAuMF0KCiAgICAgICAgMy4xNDE1OQogICAgICAgIFszLjE0MTU5XQoKICAg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AIMCAFoFAGQGAFMpB9oOcHlwYXJzaW5nX3Rlc3R6QgogICAgbmFtZXNwYWNlIGNsYXNzIGZvciBjbGFzc2VzIHVzZWZ1bCBpbiB3cml0aW5nIHVuaXQgdGVzdHMKICAgIGMAAAAAAAAAAAAAAAACAAAAQAAAAHNSAAAAZQAAWgEAZAAAWgIAZAEAWgMAZAIAZAMAhAAAWgQAZAQAZAUAhAAAWgUAZAYAZAcAhAAAWgYAZAgAZAkAhAAAWgcAZAoAZAsAhAAAWggAZAwAUykNeiZweXBhcnNpbmdfdGVzdC5yZXNldF9weXBhcnNpbmdfY29udGV4dGF4AwAACiAgICAgICAgQ29udGV4dCBtYW5hZ2VyIHRvIGJlIHVzZWQgd2hlbiB3cml0aW5nIHVuaXQgdGVzdHMgdGhhdCBtb2RpZnkgcHlwYXJzaW5nIGNvbmZpZyB2YWx1ZXM6CiAgICAgICAgIC0gcGFja3JhdCBwYXJzaW5nCiAgICAgICAgIC0gZGVmYXVsdCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCiAgICAgICAgIC0gZGVmYXVsdCBrZXl3b3JkIGNoYXJhY3RlcnMKICAgICAgICAgLSBsaXRlcmFsIHN0cmluZyBhdXRvLWNvbnZlcnNpb24gY2xhc3MKICAgICAgICAgLSBfX2RpYWdfXyBzZXR0aW5ncwoKICAgICAgICBFeGFtcGxlOgogICAgICAgICAgICB3aXRoIHJlc2V0X3B5cGFyc2luZ19jb250ZXh0KCk6CiAgICAgICAgICAgICAgICAjIHRlc3QgdGhhdCBsaXRlcmFscyB1c2VkIHRvIGNvbnN0cnVjdCBhIGdyYW1tYXIgYXJlIGF1dG9tYXRpY2FsbHkgc3VwcHJlc3NlZAogICAgICAgICAgICAgICAgUGFyc2VyRWxlbWVudC5pbmxpbmVMaXRlcmFsc1VzaW5nKFN1cHByZXNzKQoKICAgICAgICAgICAgICAgIHRlcm0gPSBXb3JkKGFscGhhcykgfCBXb3JkKG51bXMpCiAgICAgICAgICAgICAgICBncm91cCA9IEdyb3VwKCcoJyArIHRlcm1bLi4uXSArICcpJykKCiAgICAgICAgICAgICAgICAjIGFzc2VydCB0aGF0IHRoZSAnKCknIGNoYXJhY3Rl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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 8
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
appdirs.cpython-35.pyc
22.29 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
contextlib2.cpython-35.pyc
15.82 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
distro.cpython-35.pyc
37.08 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ipaddress.cpython-35.pyc
69.17 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.cpython-35.pyc
250.92 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
retrying.cpython-35.pyc
8.57 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.cpython-35.pyc
28.44 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-35.pyc
3.11 KB
lrw-r--r--
2023-11-13 21:22:19
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).