# HG changeset patch # User tduigou # Date 1748258953 0 # Node ID 16ccb36aa8e313c83f8319505906bed2d88f6d81 # Parent 7d1778f5e164245ad1c9ae79b79d463f249301be planemo upload for repository https://github.com/Edinburgh-Genome-Foundry/DnaCauldron/tree/master commit 6ae809b563b40bcdb6be2e74fe2a84ddad5484ae diff -r 7d1778f5e164 -r 16ccb36aa8e3 cloning_similation.xml --- a/cloning_similation.xml Mon May 26 10:10:46 2025 +0000 +++ b/cloning_similation.xml Mon May 26 11:29:13 2025 +0000 @@ -40,7 +40,7 @@ --output_simulation 'output_zip.zip' --enzyme '$adv.enzyme' --topology '$topology' && - cp 'output_zip.zip' '$output_zip' && echo DEBUG && ls 'outdir_gb' + cp 'output_zip.zip' '$output_zip' ]]> diff -r 7d1778f5e164 -r 16ccb36aa8e3 cloning_simulation.py --- a/cloning_simulation.py Mon May 26 10:10:46 2025 +0000 +++ b/cloning_simulation.py Mon May 26 11:29:13 2025 +0000 @@ -81,7 +81,6 @@ new_csvname = "assambly.csv" os.rename(csv_file, new_csvname) - print (df) assembly_plan = dnacauldron.AssemblyPlan.from_spreadsheet( name="auto_from_filename", diff -r 7d1778f5e164 -r 16ccb36aa8e3 output.html --- a/output.html Mon May 26 10:10:46 2025 +0000 +++ b/output.html Mon May 26 11:29:13 2025 +0000 @@ -285,7 +285,7 @@ var md = window.markdownit({ html: true, }); - target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDg1LjcxNDI4NTcxNDI4NTcxJSIgYXJpYS12YWx1ZW5vdz0iNiIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iNyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSI2IFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjciIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAxNC4yODU3MTQyODU3MTQyODUlIiBhcmlhLXZhbHVlbm93PSIxIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSI3IiB0aXRsZT0iMSBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDcgfAp8IFBhc3NlZCAgICAgfCA2IHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDEgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyBvcGVuPjxzdW1tYXJ5PkZhaWxlZCBUZXN0czwvc3VtbWFyeT4KCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LXJlZCI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LXJlZCI+JiMxMDA2MDsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgMSk8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKlByb2JsZW1zKio6CiAgICAqIGBgYAogICAgICBKb2IgaW4gZXJyb3Igc3RhdGUuLiB0b29sX2lkOiBjbG9uaW5nX3NpbXVsYXRpb24sIGV4aXRfY29kZTogMSwgc3RkZXJyOiAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC81IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weSIsIGxpbmUgMTcxLCBpbiA8bW9kdWxlPgogICAgICAgICAgY2xvbmluZ19zaW11bGF0aW9uKAogICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+XgogICAgICAgICAgICAgIGFyZ3MucGFydHNfZmlsZXMsIGFyZ3MuZG9tZXN0aWNhdGVkX3NlcSwKICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgICAgICAgICAuLi48MyBsaW5lcz4uLi4KICAgICAgICAgICAgICBhcmdzLm91dHB1dF9zaW11bGF0aW9uLCBhcmdzLmVuenltZSwgYXJncy5vdXRkaXJfZ2IKICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICAgICAgICAgICkKICAgICAgICAgIF4KICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHkiLCBsaW5lIDk3LCBpbiBjbG9uaW5nX3NpbXVsYXRpb24KICAgICAgICAgIHNpbXVsYXRpb24gPSBhc3NlbWJseV9wbGFuLnNpbXVsYXRlKHNlcXVlbmNlX3JlcG9zaXRvcnk9cmVwb3NpdG9yeSkKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL21pbmljb25kYTMvZW52cy9tdWxsZWQtdjEtNmMyYjllYmI0NzVhMzdiZDBkOWNhNzg1NzQ3NGU4NTc0NzE5ZTU0NmRlODgyODEwZjc4MjhmZTU5OTNhOGFkZi9saWIvcHl0aG9uMy4xMy9zaXRlLXBhY2thZ2VzL2RuYWNhdWxkcm9uL0Fzc2VtYmx5UGxhbi9Bc3NlbWJseVBsYW4ucHkiLCBsaW5lIDI1MSwgaW4gc2ltdWxhdGUKICAgICAgICAgIHNpbXVsYXRpb25fcmVzdWx0ID0gYXNzZW1ibHkuc2ltdWxhdGUoc2VxdWVuY2VfcmVwb3NpdG9yeSkKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL21pbmljb25kYTMvZW52cy9tdWxsZWQtdjEtNmMyYjllYmI0NzVhMzdiZDBkOWNhNzg1NzQ3NGU4NTc0NzE5ZTU0NmRlODgyODEwZjc4MjhmZTU5OTNhOGFkZi9saWIvcHl0aG9uMy4xMy9zaXRlLXBhY2thZ2VzL2RuYWNhdWxkcm9uL0Fzc2VtYmx5L2J1aWx0aW5fYXNzZW1ibHlfY2xhc3Nlcy9UeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5LnB5IiwgbGluZSAxODEsIGluIHNpbXVsYXRlCiAgICAgICAgICByZWNvcmRzID0gc2VxdWVuY2VfcmVwb3NpdG9yeS5nZXRfcmVjb3JkcyhzZWxmLnBhcnRzKQogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvbWluaWNvbmRhMy9lbnZzL211bGxlZC12MS02YzJiOWViYjQ3NWEzN2JkMGQ5Y2E3ODU3NDc0ZTg1NzQ3MTllNTQ2ZGU4ODI4MTBmNzgyOGZlNTk5M2E4YWRmL2xpYi9weXRob24zLjEzL3NpdGUtcGFja2FnZXMvZG5hY2F1bGRyb24vU2VxdWVuY2VSZXBvc2l0b3J5LnB5IiwgbGluZSAxMjAsIGluIGdldF9yZWNvcmRzCiAgICAgICAgICByYWlzZSBOb3RJblJlcG9zaXRvcnlFcnJvcihub3RfaW5fcmVwb3NpdG9yeSwgcmVwb3NpdG9yeT1zZWxmKQogICAgICBkbmFjYXVsZHJvbi5TZXF1ZW5jZVJlcG9zaXRvcnkuTm90SW5SZXBvc2l0b3J5RXJyb3I6IFBhcnRzIG5vdCBmb3VuZCBpbiByZXBvOiBwYXJ0MSwgcGFydDIsIHBhcnQzLCBwYXJ0NCwgcGFydDUsIHBhcnQ2CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgLgogICAgICBgYGAKICAgICogYGBgCiAgICAgIEpvYiBpbiBlcnJvciBzdGF0ZS4uIHRvb2xfaWQ6IGNsb25pbmdfc2ltdWxhdGlvbiwgZXhpdF9jb2RlOiAxLCBzdGRlcnI6IAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzUgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5IiwgbGluZSAxNzEsIGluIDxtb2R1bGU+CiAgICAgICAgICBjbG9uaW5nX3NpbXVsYXRpb24oCiAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5eCiAgICAgICAgICAgICAgYXJncy5wYXJ0c19maWxlcywgYXJncy5kb21lc3RpY2F0ZWRfc2VxLAogICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICAgICAgICAgIC4uLjwzIGxpbmVzPi4uLgogICAgICAgICAgICAgIGFyZ3Mub3V0cHV0X3NpbXVsYXRpb24sIGFyZ3MuZW56eW1lLCBhcmdzLm91dGRpcl9nYgogICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogICAgICAgICAgKQogICAgICAgICAgXgogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weSIsIGxpbmUgOTcsIGluIGNsb25pbmdfc2ltdWxhdGlvbgogICAgICAgICAgc2ltdWxhdGlvbiA9IGFzc2VtYmx5X3BsYW4uc2ltdWxhdGUoc2VxdWVuY2VfcmVwb3NpdG9yeT1yZXBvc2l0b3J5KQogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvbWluaWNvbmRhMy9lbnZzL211bGxlZC12MS02YzJiOWViYjQ3NWEzN2JkMGQ5Y2E3ODU3NDc0ZTg1NzQ3MTllNTQ2ZGU4ODI4MTBmNzgyOGZlNTk5M2E4YWRmL2xpYi9weXRob24zLjEzL3NpdGUtcGFja2FnZXMvZG5hY2F1bGRyb24vQXNzZW1ibHlQbGFuL0Fzc2VtYmx5UGxhbi5weSIsIGxpbmUgMjUxLCBpbiBzaW11bGF0ZQogICAgICAgICAgc2ltdWxhdGlvbl9yZXN1bHQgPSBhc3NlbWJseS5zaW11bGF0ZShzZXF1ZW5jZV9yZXBvc2l0b3J5KQogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvbWluaWNvbmRhMy9lbnZzL211bGxlZC12MS02YzJiOWViYjQ3NWEzN2JkMGQ5Y2E3ODU3NDc0ZTg1NzQ3MTllNTQ2ZGU4ODI4MTBmNzgyOGZlNTk5M2E4YWRmL2xpYi9weXRob24zLjEzL3NpdGUtcGFja2FnZXMvZG5hY2F1bGRyb24vQXNzZW1ibHkvYnVpbHRpbl9hc3NlbWJseV9jbGFzc2VzL1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHkucHkiLCBsaW5lIDE4MSwgaW4gc2ltdWxhdGUKICAgICAgICAgIHJlY29yZHMgPSBzZXF1ZW5jZV9yZXBvc2l0b3J5LmdldF9yZWNvcmRzKHNlbGYucGFydHMpCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9taW5pY29uZGEzL2VudnMvbXVsbGVkLXYxLTZjMmI5ZWJiNDc1YTM3YmQwZDljYTc4NTc0NzRlODU3NDcxOWU1NDZkZTg4MjgxMGY3ODI4ZmU1OTkzYThhZGYvbGliL3B5dGhvbjMuMTMvc2l0ZS1wYWNrYWdlcy9kbmFjYXVsZHJvbi9TZXF1ZW5jZVJlcG9zaXRvcnkucHkiLCBsaW5lIDEyMCwgaW4gZ2V0X3JlY29yZHMKICAgICAgICAgIHJhaXNlIE5vdEluUmVwb3NpdG9yeUVycm9yKG5vdF9pbl9yZXBvc2l0b3J5LCByZXBvc2l0b3J5PXNlbGYpCiAgICAgIGRuYWNhdWxkcm9uLlNlcXVlbmNlUmVwb3NpdG9yeS5Ob3RJblJlcG9zaXRvcnlFcnJvcjogUGFydHMgbm90IGZvdW5kIGluIHJlcG86IHBhcnQxLCBwYXJ0MiwgcGFydDMsIHBhcnQ0LCBwYXJ0NSwgcGFydDYKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAuCiAgICAgIGBgYAogICAgKiBgYGAKICAgICAgT3V0cHV0IGNvbGxlY3Rpb24gJ2NvbnN0cnVjdF9nYic6IGV4cGVjdGVkIHRvIGhhdmUgNCBlbGVtZW50cywgYnV0IGl0IGhhZCAwLgogICAgICBgYGAKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8xL2EvMS9kYXRhc2V0XzFhMWVlMzJkLWVlZDctNDdmZC1iNDkxLTRmMDc5OWI0NGE4NS5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy80LzQvMS9kYXRhc2V0XzQ0MTI5MTkxLTU1MzEtNGNjOS1iMzdiLWZlYzRlM2M2NzdkNS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy82LzEvZi9kYXRhc2V0XzYxZjVmMTlmLTE0N2ItNDZmZC04OTAwLWE4NTMwZjMxMTgzNS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy80LzQvMC9kYXRhc2V0XzQ0MGIzNGU3LTQ5MGUtNDliZC05YjI5LTZhZmNhYmU1ZjZmNi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9hLzMvZi9kYXRhc2V0X2EzZmNhMjEyLWI4ZGMtNDU3OS05MDFjLTYxMmI4MDYyNDFhZi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy81LzMvOS9kYXRhc2V0XzUzOThmMmNiLTFhMjUtNDVlNS05YmEwLWNkNzlhODhiNmU4OC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mLzUvMC9kYXRhc2V0X2Y1MDUyOTNhLTgyMjMtNGRhMi1hMjJjLWFhMjYxZDQ5NTVlYy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzUvMC9kYXRhc2V0X2M1MGU0YjFmLWM3MmEtNDI3Mi1iMzI0LWUxYzJjN2Q1MDI5My5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wLzAvZC9kYXRhc2V0XzAwZDc5NTYwLWY5NDQtNGQ4ZS05OGU3LWY1MTY2ODRhNjEwMC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8zL2QvNS9kYXRhc2V0XzNkNWJiMGZiLWQ2MTAtNDkzOS04ZmM1LTk5OTE3NGZlZTVjYS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzcvYy9kYXRhc2V0X2M3Y2Y5NmFmLWFiMWMtNDE5OS04MjFmLTViYjViOTQ3NzUyZi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2EvNS9kYXRhc2V0XzBhNTEzOWU3LTdkODMtNDhmMS1hMWM5LTQ1OGExZTcyNjg1Yy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mL2IvMy9kYXRhc2V0X2ZiMzYxZjIyLTAyMGMtNDk3Mi04NjYxLWYxZjU3ZDFhN2FmYS5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNC80LzEvZGF0YXNldF80NDEyOTE5MS01NTMxLTRjYzktYjM3Yi1mZWM0ZTNjNjc3ZDUuZGF0OnBhcnRfQS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzYvMS9mL2RhdGFzZXRfNjFmNWYxOWYtMTQ3Yi00NmZkLTg5MDAtYTg1MzBmMzExODM1LmRhdDpwYXJ0X0IuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy80LzQvMC9kYXRhc2V0XzQ0MGIzNGU3LTQ5MGUtNDliZC05YjI5LTZhZmNhYmU1ZjZmNi5kYXQ6cGFydF9DLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYS8zL2YvZGF0YXNldF9hM2ZjYTIxMi1iOGRjLTQ1NzktOTAxYy02MTJiODA2MjQxYWYuZGF0OnBhcnRfRC5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvMy85L2RhdGFzZXRfNTM5OGYyY2ItMWEyNS00NWU1LTliYTAtY2Q3OWE4OGI2ZTg4LmRhdDpwYXJ0X0UuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mLzUvMC9kYXRhc2V0X2Y1MDUyOTNhLTgyMjMtNGRhMi1hMjJjLWFhMjYxZDQ5NTVlYy5kYXQ6cGFydF9GLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYy81LzAvZGF0YXNldF9jNTBlNGIxZi1jNzJhLTQyNzItYjMyNC1lMWMyYzdkNTAyOTMuZGF0OnBhcnRfRy5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzAvMC9kL2RhdGFzZXRfMDBkNzk1NjAtZjk0NC00ZDhlLTk4ZTctZjUxNjY4NGE2MTAwLmRhdDpwYXJ0X0guZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8zL2QvNS9kYXRhc2V0XzNkNWJiMGZiLWQ2MTAtNDkzOS04ZmM1LTk5OTE3NGZlZTVjYS5kYXQ6cGFydF9JLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYy83L2MvZGF0YXNldF9jN2NmOTZhZi1hYjFjLTQxOTktODIxZi01YmI1Yjk0Nzc1MmYuZGF0OnBhcnRfSi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzAvYS81L2RhdGFzZXRfMGE1MTM5ZTctN2Q4My00OGYxLWExYzktNDU4YTFlNzI2ODVjLmRhdDpwYXJ0X0suZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mL2IvMy9kYXRhc2V0X2ZiMzYxZjIyLTAyMGMtNDk3Mi04NjYxLWYxZjU3ZDFhN2FmYS5kYXQ6cGFydF9MLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcHkyeXN2NnRuL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMTQvb3V0cHV0cy9kYXRhc2V0X2FjYjA2NGQ3LTI3ODEtNDZmZS05OGRmLTcxNmZlZTAyNGM4ZC5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMQogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNSBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHkiLCBsaW5lIDE3MSwgaW4gPG1vZHVsZT4KICAgICAgICAgIGNsb25pbmdfc2ltdWxhdGlvbigKICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fl4KICAgICAgICAgICAgICBhcmdzLnBhcnRzX2ZpbGVzLCBhcmdzLmRvbWVzdGljYXRlZF9zZXEsCiAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogICAgICAgICAgLi4uPDMgbGluZXM+Li4uCiAgICAgICAgICAgICAgYXJncy5vdXRwdXRfc2ltdWxhdGlvbiwgYXJncy5lbnp5bWUsIGFyZ3Mub3V0ZGlyX2diCiAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgICAgICAgICApCiAgICAgICAgICBeCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5IiwgbGluZSA5NywgaW4gY2xvbmluZ19zaW11bGF0aW9uCiAgICAgICAgICBzaW11bGF0aW9uID0gYXNzZW1ibHlfcGxhbi5zaW11bGF0ZShzZXF1ZW5jZV9yZXBvc2l0b3J5PXJlcG9zaXRvcnkpCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9taW5pY29uZGEzL2VudnMvbXVsbGVkLXYxLTZjMmI5ZWJiNDc1YTM3YmQwZDljYTc4NTc0NzRlODU3NDcxOWU1NDZkZTg4MjgxMGY3ODI4ZmU1OTkzYThhZGYvbGliL3B5dGhvbjMuMTMvc2l0ZS1wYWNrYWdlcy9kbmFjYXVsZHJvbi9Bc3NlbWJseVBsYW4vQXNzZW1ibHlQbGFuLnB5IiwgbGluZSAyNTEsIGluIHNpbXVsYXRlCiAgICAgICAgICBzaW11bGF0aW9uX3Jlc3VsdCA9IGFzc2VtYmx5LnNpbXVsYXRlKHNlcXVlbmNlX3JlcG9zaXRvcnkpCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9taW5pY29uZGEzL2VudnMvbXVsbGVkLXYxLTZjMmI5ZWJiNDc1YTM3YmQwZDljYTc4NTc0NzRlODU3NDcxOWU1NDZkZTg4MjgxMGY3ODI4ZmU1OTkzYThhZGYvbGliL3B5dGhvbjMuMTMvc2l0ZS1wYWNrYWdlcy9kbmFjYXVsZHJvbi9Bc3NlbWJseS9idWlsdGluX2Fzc2VtYmx5X2NsYXNzZXMvVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseS5weSIsIGxpbmUgMTgxLCBpbiBzaW11bGF0ZQogICAgICAgICAgcmVjb3JkcyA9IHNlcXVlbmNlX3JlcG9zaXRvcnkuZ2V0X3JlY29yZHMoc2VsZi5wYXJ0cykKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL21pbmljb25kYTMvZW52cy9tdWxsZWQtdjEtNmMyYjllYmI0NzVhMzdiZDBkOWNhNzg1NzQ3NGU4NTc0NzE5ZTU0NmRlODgyODEwZjc4MjhmZTU5OTNhOGFkZi9saWIvcHl0aG9uMy4xMy9zaXRlLXBhY2thZ2VzL2RuYWNhdWxkcm9uL1NlcXVlbmNlUmVwb3NpdG9yeS5weSIsIGxpbmUgMTIwLCBpbiBnZXRfcmVjb3JkcwogICAgICAgICAgcmFpc2UgTm90SW5SZXBvc2l0b3J5RXJyb3Iobm90X2luX3JlcG9zaXRvcnksIHJlcG9zaXRvcnk9c2VsZikKICAgICAgZG5hY2F1bGRyb24uU2VxdWVuY2VSZXBvc2l0b3J5Lk5vdEluUmVwb3NpdG9yeUVycm9yOiBQYXJ0cyBub3QgZm91bmQgaW4gcmVwbzogcGFydDEsIHBhcnQyLCBwYXJ0MywgcGFydDQsIHBhcnQ1LCBwYXJ0NgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICAgIDIgICAgICAgMyAgICAgICA0ICAgICAgIDUgICAgICAgNgogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIElEICAgICAgICAgICAgICAgICBwYXJ0MSAgIHBhcnQyICAgcGFydDMgICBwYXJ0NCAgIHBhcnQ1ICAgcGFydDYKICAgICAgY29uc3RydWN0XzMgIGNvbnN0cnVjdF8xICBwYXJ0X0wgIHBhcnRfSiAgcGFydF9LICAgICBOYU4gICAgIE5hTgogICAgICBjb25zdHJ1Y3RfNCAgY29uc3RydWN0XzIgIHBhcnRfTCAgcGFydF9KICBwYXJ0X0sgICAgIE5hTiAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF8xICAgICAgIHBhcnRfQSAgcGFydF9CICBwYXJ0X0MgIHBhcnRfRCAgcGFydF9FICBwYXJ0X0YKICAgICAgY29uc3RydWN0XzIgICAgICAgcGFydF9BICBwYXJ0X0cgIHBhcnRfSCAgcGFydF9JICBwYXJ0X0YgICAgIE5hTgogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXB5MnlzdjZ0bi9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCjwvZGV0YWlscz4KPGRldGFpbHMgPjxzdW1tYXJ5PlBhc3NlZCBUZXN0czwvc3VtbWFyeT4KCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgMik8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNi9lL2IvZGF0YXNldF82ZWIyMGRlMy02NjJjLTQ0MjgtOTA3Zi0yOWNiZTBhNWNjMjAuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYi82L2YvZGF0YXNldF9iNmZlMTQxZC1mMjdkLTQ3NWQtOTVmZC01MDFlMDMyZjBjM2IuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJycgLS1hc3NlbWJseV9jc3YgJ2Fzc2VtYmx5X2Nzdi5jc3YnIC0tYXNzZW1ibHlfcGxhbl9uYW1lICdHaWJzb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzYvZi9kYXRhc2V0X2I2ZmUxNDFkLWYyN2QtNDc1ZC05NWZkLTUwMWUwMzJmMGMzYi5kYXQ6Z2lic29uX3NlcXVlbmNlcy5mYScgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJycgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXB5MnlzdjZ0bi9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzE3L291dHB1dHMvZGF0YXNldF80MWQ4NTNiNC1hZGI2LTQ2MDUtYmJhZi1kNzE3OGI5NjJkOTIuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzUgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzUgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA0MCV84paI4paI4paI4paIICAgICAgfCAyLzUgWzAwOjAwPDAwOjAwLCAgNC4zMml0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDYwJXzilojilojilojilojilojiloggICAgfCAzLzUgWzAwOjAwPDAwOjAwLCAgNC4yNGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDgwJXzilojilojilojilojilojilojilojiloggIHwgNC81IFswMDowMDwwMDowMCwgIDQuMzVpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6IDEwMCV84paI4paI4paI4paI4paI4paI4paI4paI4paI4paIfCA1LzUgWzAwOjAxPDAwOjAwLCAgMy42M2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgICA0ICAgICAgICA1CiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGNvbnN0cnVjdCAgICAgcGFydHMgICAgIE5hTiAgICAgTmFOICAgICAgTmFOICAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF8xICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICAgRnJhZ180ICAgRnJhZ181CiAgICAgIGNvbnN0cnVjdF8yICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICBGcmFnXzRiICAgRnJhZ181CiAgICAgIGNvbnN0cnVjdF8zICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICBGcmFnXzRjICBGcmFnXzViCiAgICAgIGNvbnN0cnVjdF80ICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICAgRnJhZ180ICAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF81ICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICAgRnJhZ180ICBGcmFnXzRiCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDIsICd2YWxpZF9hc3NlbWJsaWVzJzogM30KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMywgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJHaWJzb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1weTJ5c3Y2dG4vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDMpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzQvNi85L2RhdGFzZXRfNDY5ZGYwNDgtMTYwOC00ZTI4LWE4YzMtNTc2NDMzYzcyYzdmLmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvOC85L2RhdGFzZXRfMTg5NTJjZWYtYzcxNS00Nzc2LTlmNTMtNjkxNTZkYTg5ZDAxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzgvMS8zL2RhdGFzZXRfODEzMjIwNTYtNjllYi00ZGNkLTg4ZWUtNmNiNzhmZjYxN2RiLmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnTGlnYXNlQ3ljbGluZ1JlYWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMS84LzkvZGF0YXNldF8xODk1MmNlZi1jNzE1LTQ3NzYtOWY1My02OTE1NmRhODlkMDEuZGF0OlJGUF9HRlBfcGxhc21pZF9CT3MuZmEsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy84LzEvMy9kYXRhc2V0XzgxMzIyMDU2LTY5ZWItNGRjZC04OGVlLTZjYjc4ZmY2MTdkYi5kYXQ6UkZQX0dGUF9wbGFzbWlkX3BhcnRzLmZhJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcHkyeXN2NnRuL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMjEvb3V0cHV0cy9kYXRhc2V0X2QyZGY2MTkwLTk0NjItNDFhYS05MmQyLWQ0YTVjMWE2MDVkMy5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMiBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMiBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDIvMiBbMDA6MDA8MDA6MDAsICAyLjI3aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgIC4uLiAgICAgICAgICAgMTQKICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAKICAgICAgQ29uc3RydWN0MSAgICAgICAgIFJGUF9HRlBfQk9fMTAyMzIgIC4uLiAgcDdfYmFja2JvbmUKICAgICAgQ29uc3RydWN0Ml9mbGF3ZWQgIFJGUF9HRlBfQk9fMTAyMzIgIC4uLiAgICAgICAgICBOYU4KCiAgICAgIFsyIHJvd3MgeCAxNCBjb2x1bW5zXQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAyLCAndmFsaWRfYXNzZW1ibGllcyc6IDB9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDUsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiTGlnYXNlQ3ljbGluZ1JlYWN0aW9uQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcHkyeXN2NnRuL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyA0KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8xLzEvYi9kYXRhc2V0XzExYjE5MDgwLWQyMWYtNGEzZS1hNTE2LTc3YmI3ZjFlYjhmZi5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzEvMy9kYXRhc2V0X2MxM2MzYmI1LTc0ZjMtNDliNC05NzllLTA4MDY0Y2JjZDk2ZS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8yLzIvMC9kYXRhc2V0XzIyMGQ4Y2UzLTY1YTItNDg4MC05OTI0LWU0MWY2ODVlMTM4Ni5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8yLzYvNC9kYXRhc2V0XzI2NGQ3ZTk1LTgwN2QtNDVhYS1hZGE3LTI0NGU3ODk2ZGQ5NS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83L2UvZS9kYXRhc2V0XzdlZWRlODFjLWE3OTYtNDE4OS05NGRmLTgyMjQ1NzYzZTE5Zi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzkvNS9kYXRhc2V0X2M5NTM3OTM4LWRiMGQtNGQwNy05ZWVlLTJjZmVlYzUwYTkwZC5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ0JBU0lDQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYy8xLzMvZGF0YXNldF9jMTNjM2JiNS03NGYzLTQ5YjQtOTc5ZS0wODA2NGNiY2Q5NmUuZGF0OkdGUC5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzIvMi8wL2RhdGFzZXRfMjIwZDhjZTMtNjVhMi00ODgwLTk5MjQtZTQxZjY4NWUxMzg2LmRhdDpwMTVBX2thbi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzIvNi80L2RhdGFzZXRfMjY0ZDdlOTUtODA3ZC00NWFhLWFkYTctMjQ0ZTc4OTZkZDk1LmRhdDpwcm9tb3Rlci5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzcvZS9lL2RhdGFzZXRfN2VlZGU4MWMtYTc5Ni00MTg5LTk0ZGYtODIyNDU3NjNlMTlmLmRhdDpSRlAuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzkvNS9kYXRhc2V0X2M5NTM3OTM4LWRiMGQtNGQwNy05ZWVlLTJjZmVlYzUwYTkwZC5kYXQ6b2xpZ29zLmZhJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcHkyeXN2NnRuL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMjgvb3V0cHV0cy9kYXRhc2V0X2IwNTVlZGM5LWVhNzItNDZjYS04OTcxLTM1MmM0NmRiMzg3ZS5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMTAgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC84IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNjIlfOKWiOKWiOKWiOKWiOKWiOKWiOKWjiAgIHwgNS84IFswMDowMDwwMDowMCwgNDcuNTRpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAzICAgLi4uICAgICAxMCAgICAgICAgMTEgICAgIDEyCiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgTDJSQlMtMVAgICAgIEwyUkJTLTFQX2Z3ZCAgTDJSQlMtMVBfYWRhcHRlciAgICAgICBOYU4gIC4uLiAgICBOYU4gICAgICAgTmFOICAgIE5hTgogICAgICBMTUEtUyAgICAgICAgICAgTE1BLVNfZndkICAgICBMTUEtU19hZGFwdGVyICAgICAgIE5hTiAgLi4uICAgIE5hTiAgICAgICBOYU4gICAgTmFOCiAgICAgIEwxUkJTLXhTICAgICBMMVJCUy14U19md2QgIEwxUkJTLXhTX2FkYXB0ZXIgICAgICAgTmFOICAuLi4gICAgTmFOICAgICAgIE5hTiAgICBOYU4KICAgICAgTDFSQlMtMVAgICAgIEwxUkJTLTFQX2Z3ZCAgTDFSQlMtMVBfYWRhcHRlciAgICAgICBOYU4gIC4uLiAgICBOYU4gICAgICAgTmFOICAgIE5hTgogICAgICBMMlJCUy14UyAgICAgTDJSQlMteFNfZndkICBMMlJCUy14U19hZGFwdGVyICAgICAgIE5hTiAgLi4uICAgIE5hTiAgICAgICBOYU4gICAgTmFOCiAgICAgIExNQS1QICAgICAgICAgICBMTUEtUF9md2QgICAgIExNQS1QX2FkYXB0ZXIgICAgICAgTmFOICAuLi4gICAgTmFOICAgICAgIE5hTiAgICBOYU4KICAgICAgTE1CLVMgICAgICAgICAgIExNQi1TX2Z3ZCAgICAgTE1CLVNfYWRhcHRlciAgICAgICBOYU4gIC4uLiAgICBOYU4gICAgICAgTmFOICAgIE5hTgogICAgICBMTUItUCAgICAgICAgICAgTE1CLVBfZndkICAgICBMTUItUF9hZGFwdGVyICAgICAgIE5hTiAgLi4uICAgIE5hTiAgICAgICBOYU4gICAgTmFOCiAgICAgIGFzbV9HRlBfUkZQICAgICAgICAgTE1BLVAgICAgICAgICAgcHJvbW90ZXIgIEwxUkJTLXhTICAuLi4gIExNQi1QICBwMTVBX2thbiAgTE1BLVMKICAgICAgYXNtX1JGUF9HRlAgICAgICAgICBMTUEtUCAgICAgICAgICBwcm9tb3RlciAgTDFSQlMteFMgIC4uLiAgTE1CLVAgIHAxNUFfa2FuICBMTUEtUwoKICAgICAgWzEwIHJvd3MgeCAxMiBjb2x1bW5zXQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDIsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiA4LCAndmFsaWRfYXNzZW1ibGllcyc6IDB9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDcsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiQkFTSUNBc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1weTJ5c3Y2dG4vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDUpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvNi9lL2RhdGFzZXRfNTZlODgwYmMtMWY5My00OTVmLWJmYTgtMDg3M2NiODE4MmE5LmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2QvZC9lL2RhdGFzZXRfZGRlZDc4ZTYtNWQzYS00NjZkLWEzNzgtNTc5M2M4MDFmMzJjLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzIvYS8wL2RhdGFzZXRfMmEwN2E5OTItNjUyNy00YWM3LTljNDktN2ZkOWFjYmRlYTU3LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvMi9mL2RhdGFzZXRfMTJmYWEzZDktYzk1ZC00YzM0LTlkZjctNmM1MzE3NGQ0Mjc2LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvOC8xL2RhdGFzZXRfNTgxYTRjNTUtMGNlMi00YzNiLWEzODAtNzU2NDQ4ODcxZjMyLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYi9mL2RhdGFzZXRfYWJmMjU1ZjctOTg0MS00OTkxLTliNjUtNTk4ZGYzNjhmZjg1LmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnQmlvQnJpY2tTdGFuZGFyZEFzc2VtYmx5JyAtLWZpbGVfbmFtZV9tYXBwaW5nICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2QvZC9lL2RhdGFzZXRfZGRlZDc4ZTYtNWQzYS00NjZkLWEzNzgtNTc5M2M4MDFmMzJjLmRhdDpCQmFfRTAwNDBfR0ZQLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMi9hLzAvZGF0YXNldF8yYTA3YTk5Mi02NTI3LTRhYzctOWM0OS03ZmQ5YWNiZGVhNTcuZGF0OkJCYV9KMjMxMTlfcHJvbS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvMi9mL2RhdGFzZXRfMTJmYWEzZDktYzk1ZC00YzM0LTlkZjctNmM1MzE3NGQ0Mjc2LmRhdDpCQmFfSjIzMTE5X3Byb21fZmxhd2VkLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNS84LzEvZGF0YXNldF81ODFhNGM1NS0wY2UyLTRjM2ItYTM4MC03NTY0NDg4NzFmMzIuZGF0OkJCYV9KNjEwNDhfdGVybS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYi9mL2RhdGFzZXRfYWJmMjU1ZjctOTg0MS00OTkxLTliNjUtNTk4ZGYzNjhmZjg1LmRhdDpCQmFfSzYxMTA5NF9iYXIuZ2InIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1weTJ5c3Y2dG4vam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8zNS9vdXRwdXRzL2RhdGFzZXRfZDVlMmFmZmQtOTIyOC00YjIxLThlODktMzZhNDNjNTlhYjM3LmRhdCcgJiYgZWNobyBERUJVRyAmJiBscyAnb3V0ZGlyX2diJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzMgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzMgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA2NyV84paI4paI4paI4paI4paI4paI4paLICAgfCAyLzMgWzAwOjAxPDAwOjAwLCAgMS45OGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDMvMyBbMDA6MDE8MDA6MDAsICAxLjYwaXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgMgogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGNvbnN0cnVjdCAgICAgICAgICAgICAgICAgIHBhcnRzICAgICAgICAgICAgICBOYU4KICAgICAgQzFfcHJvbV9iYXJjb2RlICBCQmFfSzYxMTA5NF9iYXIgIEJCYV9KMjMxMTlfcHJvbQogICAgICBDMl9nZnBfdGVybSAgICAgICAgQkJhX0UwMDQwX0dGUCAgQkJhX0o2MTA0OF90ZXJtCiAgICAgIEMzX2ZpbmFsICAgICAgICAgQzFfcHJvbV9iYXJjb2RlICAgICAgQzJfZ2ZwX3Rlcm0KICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiAzfQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgogICAgICBERUJVRwogICAgICBDMV9wcm9tX2JhcmNvZGUuZ2IKICAgICAgQzJfZ2ZwX3Rlcm0uZ2IKICAgICAgQzNfZmluYWwuZ2IKCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogOSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJCaW9Ccmlja1N0YW5kYXJkQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcHkyeXN2NnRuL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyA2KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy82L2MvMi9kYXRhc2V0XzZjMjA4OWRlLTUyODUtNGFlNi04ZTA4LWFmYTM4ODEwYzBlZS5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzYvOC9kYXRhc2V0X2I2OGQ4ZGJhLWYwOTgtNGYxNC1hYzlmLWI2OTU0MWE4MzRjOC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9hLzkvNC9kYXRhc2V0X2E5NDA0MmQ3LTJkNzAtNDI1Ny1iYmM1LWFjM2YyYmU5M2FmZi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8xL2QvZS9kYXRhc2V0XzFkZTcyMzQxLWY0YzEtNDhkZi05NDY2LWExYzgwZTIzZmRmYi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzEvMS9kYXRhc2V0X2MxMTI4YWJkLTg2YTEtNDhiOS1iNjZjLTAxNTJkNzZjODVjOS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8yL2YvMi9kYXRhc2V0XzJmMmFiN2I3LWQ2ZWYtNGEyZS05MGI4LWYxNWNkZGY1NmVlYS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy85LzAvNC9kYXRhc2V0XzkwNDg1ODI3LWQ4MzktNGUzMi1iNTQ2LTljMzJmNzdmZDI2NC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83L2MvNS9kYXRhc2V0XzdjNTZhMDcxLWU5ZmUtNDEzMy04YTk5LThhN2Q1OGU3YjFmZC5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2YvMy9kYXRhc2V0XzBmMzhkNDIwLWFmMmEtNDJiYS1hNmQzLWYxNjgwNzY1MzQwMi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2IvNi9kYXRhc2V0XzBiNjUzZWQ0LWY0NTgtNDU2Ny1iOWI3LTA3NDI1NzkzNDQzMy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83LzAvZC9kYXRhc2V0XzcwZDdjODU5LTgzZjEtNGFhNy1iMWRiLWZlZTFiNGQzODRjMC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jL2UvMi9kYXRhc2V0X2NlMjUwNWU2LTM1YzctNDg1OC1hMjdlLTZjNTc2MWEzNWJlMy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy82LzgvYi9kYXRhc2V0XzY4YjhkMzBlLTZjMGMtNDY2Zi1hNzBjLTBlNThiY2MyN2UwZC5kYXQnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzYvOC9kYXRhc2V0X2I2OGQ4ZGJhLWYwOTgtNGYxNC1hYzlmLWI2OTU0MWE4MzRjOC5kYXQ6cGFydF9BLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYS85LzQvZGF0YXNldF9hOTQwNDJkNy0yZDcwLTQyNTctYmJjNS1hYzNmMmJlOTNhZmYuZGF0OnBhcnRfQi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvZC9lL2RhdGFzZXRfMWRlNzIzNDEtZjRjMS00OGRmLTk0NjYtYTFjODBlMjNmZGZiLmRhdDpwYXJ0X0MuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzEvMS9kYXRhc2V0X2MxMTI4YWJkLTg2YTEtNDhiOS1iNjZjLTAxNTJkNzZjODVjOS5kYXQ6cGFydF9ELmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMi9mLzIvZGF0YXNldF8yZjJhYjdiNy1kNmVmLTRhMmUtOTBiOC1mMTVjZGRmNTZlZWEuZGF0OnBhcnRfRS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzkvMC80L2RhdGFzZXRfOTA0ODU4MjctZDgzOS00ZTMyLWI1NDYtOWMzMmY3N2ZkMjY0LmRhdDpwYXJ0X0YuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83L2MvNS9kYXRhc2V0XzdjNTZhMDcxLWU5ZmUtNDEzMy04YTk5LThhN2Q1OGU3YjFmZC5kYXQ6cGFydF9HLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2YvMy9kYXRhc2V0XzBmMzhkNDIwLWFmMmEtNDJiYS1hNmQzLWYxNjgwNzY1MzQwMi5kYXQ6cGFydF9ILmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMC9iLzYvZGF0YXNldF8wYjY1M2VkNC1mNDU4LTQ1NjctYjliNy0wNzQyNTc5MzQ0MzMuZGF0OnBhcnRfSS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzcvMC9kL2RhdGFzZXRfNzBkN2M4NTktODNmMS00YWE3LWIxZGItZmVlMWI0ZDM4NGMwLmRhdDpwYXJ0X0ouZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jL2UvMi9kYXRhc2V0X2NlMjUwNWU2LTM1YzctNDg1OC1hMjdlLTZjNTc2MWEzNWJlMy5kYXQ6cGFydF9LLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNi84L2IvZGF0YXNldF82OGI4ZDMwZS02YzBjLTQ2NmYtYTcwYy0wZTU4YmNjMjdlMGQuZGF0OnBhcnRfTC5nYicgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXB5MnlzdjZ0bi9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzQ5L291dHB1dHMvZGF0YXNldF80NDViYWI0MS1iYWE0LTRkZTEtYWRmYy1kNGZkNTY4OTJjNWYuZGF0JyAmJiBlY2hvIERFQlVHICYmIGxzICdvdXRkaXJfZ2InCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDUwJXzilojilojilojilojiloggICAgIHwgMi80IFswMDowMDwwMDowMCwgIDIuMzlpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA3NSV84paI4paI4paI4paI4paI4paI4paI4paMICB8IDMvNCBbMDA6MDE8MDA6MDAsICAyLjIwaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgNC80IFswMDowMjwwMDowMCwgIDEuNzlpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgIDQgICAgICAgNSAgICAgICA2CiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgY29uc3RydWN0XzMgIGNvbnN0cnVjdF8xICBwYXJ0X0wgIHBhcnRfSiAgcGFydF9LICAgICBOYU4gICAgIE5hTgogICAgICBjb25zdHJ1Y3RfNCAgY29uc3RydWN0XzIgIHBhcnRfTCAgcGFydF9KICBwYXJ0X0sgICAgIE5hTiAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF8xICAgICAgIHBhcnRfQSAgcGFydF9CICBwYXJ0X0MgIHBhcnRfRCAgcGFydF9FICBwYXJ0X0YKICAgICAgY29uc3RydWN0XzIgICAgICAgcGFydF9BICBwYXJ0X0cgIHBhcnRfSCAgcGFydF9JICBwYXJ0X0YgICAgIE5hTgogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAwLCAndmFsaWRfYXNzZW1ibGllcyc6IDR9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCiAgICAgIERFQlVHCiAgICAgIGNvbnN0cnVjdF8xLmdiCiAgICAgIGNvbnN0cnVjdF8yLmdiCiAgICAgIGNvbnN0cnVjdF8zLmdiCiAgICAgIGNvbnN0cnVjdF80LmdiCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDEyLCAic3JjIjogImhkY2EifV19IGAgfAogICAgICAgfCBkb21lc3RpY2F0ZWRcX2lucHV0IHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMTEsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1weTJ5c3Y2dG4vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDcpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYS9kL2RhdGFzZXRfYWFkYzJhYzUtYjkyZC00NDg5LWJhOWMtOWUzMGM3OWRhMjA3LmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzMvOC84L2RhdGFzZXRfMzg4Njc0ZDItMjRmZS00ZTc2LWIwYjgtMmRiNjQ2M2U3ODhmLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzcvNS9jL2RhdGFzZXRfNzVjMjdlZTUtZmQ5Yi00NmExLWJlMDctZjBjZGM0ZTE2YmMxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2IvYi9iL2RhdGFzZXRfYmJiYTVmZjktNjllNy00ZDQxLWFmODItOTkyZGY1ZjA2NWZiLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2QvYy85L2RhdGFzZXRfZGM5ODJlOWQtNmQ5My00NjM4LWI0ZmMtNjdmYzgyMzhiMjk1LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2UvZC8yL2RhdGFzZXRfZWQyZDdiMzUtNjI1Zi00MjllLWFlNTAtY2UxMDk4YTIwYjg1LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvYS8yL2RhdGFzZXRfNWEyMDEwY2ItNjRjZi00ZmY5LTg4NTItZjg4M2Y3YWIwMjY5LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzAvZi9hL2RhdGFzZXRfMGZhOGVkNmEtYjg0OC00YjBkLTk0NzQtMTNjZDIyZDRhNDdlLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYi9lL2RhdGFzZXRfYWJlYWQ0MTMtYzNkNC00MmQzLWJkOTctYzAyYTZiZDY5Nzc5LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzYvYS9iL2RhdGFzZXRfNmFiNmM0NzItYzY3Mi00YmRmLTk4MTQtOGUwNjlhOGEwN2UxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2IvMC9lL2RhdGFzZXRfYjBlMmNlMDctY2NmMC00ODA1LTk1OGMtOGRlMTc0YzNkNGMxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzMvMy9hL2RhdGFzZXRfMzNhZDIwNzItZmI3Ni00N2M0LWIzZjctNjBhMmEwOTdhYjg3LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzkvZC8xL2RhdGFzZXRfOWQxM2M0MTgtYmJiMS00NTdlLWJkYWYtMGYyYmY1MjMyZjc4LmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8zLzgvOC9kYXRhc2V0XzM4ODY3NGQyLTI0ZmUtNGU3Ni1iMGI4LTJkYjY0NjNlNzg4Zi5kYXQ6cGFydF9BLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNy81L2MvZGF0YXNldF83NWMyN2VlNS1mZDliLTQ2YTEtYmUwNy1mMGNkYzRlMTZiYzEuZGF0OnBhcnRfQi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2IvYi9iL2RhdGFzZXRfYmJiYTVmZjktNjllNy00ZDQxLWFmODItOTkyZGY1ZjA2NWZiLmRhdDpwYXJ0X0MuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9kL2MvOS9kYXRhc2V0X2RjOTgyZTlkLTZkOTMtNDYzOC1iNGZjLTY3ZmM4MjM4YjI5NS5kYXQ6cGFydF9ELmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvZS9kLzIvZGF0YXNldF9lZDJkN2IzNS02MjVmLTQyOWUtYWU1MC1jZTEwOThhMjBiODUuZGF0OnBhcnRfRS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvYS8yL2RhdGFzZXRfNWEyMDEwY2ItNjRjZi00ZmY5LTg4NTItZjg4M2Y3YWIwMjY5LmRhdDpwYXJ0X0YuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2YvYS9kYXRhc2V0XzBmYThlZDZhLWI4NDgtNGIwZC05NDc0LTEzY2QyMmQ0YTQ3ZS5kYXQ6cGFydF9HLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYS9iL2UvZGF0YXNldF9hYmVhZDQxMy1jM2Q0LTQyZDMtYmQ5Ny1jMDJhNmJkNjk3NzkuZGF0OnBhcnRfSC5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzYvYS9iL2RhdGFzZXRfNmFiNmM0NzItYzY3Mi00YmRmLTk4MTQtOGUwNjlhOGEwN2UxLmRhdDpwYXJ0X0kuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzAvZS9kYXRhc2V0X2IwZTJjZTA3LWNjZjAtNDgwNS05NThjLThkZTE3NGMzZDRjMS5kYXQ6cGFydF9KLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMy8zL2EvZGF0YXNldF8zM2FkMjA3Mi1mYjc2LTQ3YzQtYjNmNy02MGEyYTA5N2FiODcuZGF0OnBhcnRfSy5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzkvZC8xL2RhdGFzZXRfOWQxM2M0MTgtYmJiMS00NTdlLWJkYWYtMGYyYmY1MjMyZjc4LmRhdDpwYXJ0X0wuZ2InIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1weTJ5c3Y2dG4vam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC82My9vdXRwdXRzL2RhdGFzZXRfZmJlYjU3ZWQtMTcxOC00ZDJiLWEyMmItNWM0YTU3NzlkOWFiLmRhdCcgJiYgZWNobyBERUJVRyAmJiBscyAnb3V0ZGlyX2diJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA1MCV84paI4paI4paI4paI4paIICAgICB8IDIvNCBbMDA6MDA8MDA6MDAsICAyLjMxaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNzUlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWjCAgfCAzLzQgWzAwOjAxPDAwOjAwLCAgMi4xMWl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDQvNCBbMDA6MDI8MDA6MDAsICAxLjc1aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICAgIDIgICAgICAgMyAgICAgICA0ICAgICAgIDUgICAgICAgNgogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGNvbnN0cnVjdF8zICBjb25zdHJ1Y3RfMSAgcGFydF9MICBwYXJ0X0ogIHBhcnRfSyAgICAgTmFOICAgICBOYU4KICAgICAgY29uc3RydWN0XzQgIGNvbnN0cnVjdF8yICBwYXJ0X0wgIHBhcnRfSiAgcGFydF9LICAgICBOYU4gICAgIE5hTgogICAgICBjb25zdHJ1Y3RfMSAgICAgICBwYXJ0X0EgIHBhcnRfQiAgcGFydF9DICBwYXJ0X0QgIHBhcnRfRSAgcGFydF9GCiAgICAgIGNvbnN0cnVjdF8yICAgICAgIHBhcnRfQSAgcGFydF9HICBwYXJ0X0ggIHBhcnRfSSAgcGFydF9GICAgICBOYU4KICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiA0fQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgogICAgICBERUJVRwogICAgICBjb25zdHJ1Y3RfMS5nYgogICAgICBjb25zdHJ1Y3RfMi5nYgogICAgICBjb25zdHJ1Y3RfMy5nYgogICAgICBjb25zdHJ1Y3RfNC5nYgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIE5vbmUgYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIHsidmFsdWVzIjogW3siaWQiOiAxNCwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXB5MnlzdjZ0bi9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCjwvZGV0YWlscz4K')); + target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iNyIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iNyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSI3IFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjciIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSI3IiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDcgfAp8IFBhc3NlZCAgICAgfCA3IHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyAxKTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy8yL2IvZC9kYXRhc2V0XzJiZGY0MzZmLTUyY2MtNGM2ZS1hZmRiLTNmMDUxNjI5OTAwZi5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy80LzYvNS9kYXRhc2V0XzQ2NWE1M2FiLTg3NzAtNDUxNC1hOWIzLTIyN2Y3OTY0NmViNy5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9hL2UvMi9kYXRhc2V0X2FlMjJkNWQyLWNkZTAtNDViNS05ZThlLTY3YjVjYmQ1ODZmYS5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9lLzYvNC9kYXRhc2V0X2U2NDA1N2IxLTQzYjMtNDc4OC04ODkxLTc3YmNkMjk3MjIzYy5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8xL2QvMS9kYXRhc2V0XzFkMWY5ODMyLWI1OGUtNDhjMi1iMWIzLTZjM2ZiMThlOTg5MC5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy82LzcvMy9kYXRhc2V0XzY3MzJmYzc5LTA4MWUtNGVkZi1iY2NjLWEwMDg3NTIwMTcyYS5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9iLzEvNy9kYXRhc2V0X2IxN2M3YTQ5LTMxMjEtNDI5Mi05NWZmLTUxODkxYWEwNjZkMS5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8yLzgvMS9kYXRhc2V0XzI4MTFmODE2LTg1MzItNGRkZC04ZTI5LTlhNmVkN2RhZDU0ZS5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9lLzcvNC9kYXRhc2V0X2U3NGQwMTgyLTgwN2UtNDBhOC1iNjdhLWFjMDg4ZmMyZTAyYy5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy85L2QvYy9kYXRhc2V0XzlkYzU1Yzk4LTRhYjktNDI3Mi1hNjgwLTliMzEyOTk1NDM2Ny5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy85LzUvNi9kYXRhc2V0Xzk1Njk5ZGI5LTc3Y2YtNGFlMS04NDU0LTRmMjU1ZjNjYjYyYS5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8xLzEvOS9kYXRhc2V0XzExOTc5YzI4LTgyZWUtNDNjNC05ZTQzLWYzNGNiNTQxZjk2Yi5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8zL2YvNS9kYXRhc2V0XzNmNTNjYjg2LTJkMmItNDI5YS1iZjUxLWUyNzZiYmUzOTNmYS5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNC82LzUvZGF0YXNldF80NjVhNTNhYi04NzcwLTQ1MTQtYTliMy0yMjdmNzk2NDZlYjcuZGF0OnBhcnRfQS5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2EvZS8yL2RhdGFzZXRfYWUyMmQ1ZDItY2RlMC00NWI1LTllOGUtNjdiNWNiZDU4NmZhLmRhdDpwYXJ0X0IuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9lLzYvNC9kYXRhc2V0X2U2NDA1N2IxLTQzYjMtNDc4OC04ODkxLTc3YmNkMjk3MjIzYy5kYXQ6cGFydF9DLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMS9kLzEvZGF0YXNldF8xZDFmOTgzMi1iNThlLTQ4YzItYjFiMy02YzNmYjE4ZTk4OTAuZGF0OnBhcnRfRC5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzYvNy8zL2RhdGFzZXRfNjczMmZjNzktMDgxZS00ZWRmLWJjY2MtYTAwODc1MjAxNzJhLmRhdDpwYXJ0X0UuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9iLzEvNy9kYXRhc2V0X2IxN2M3YTQ5LTMxMjEtNDI5Mi05NWZmLTUxODkxYWEwNjZkMS5kYXQ6cGFydF9GLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMi84LzEvZGF0YXNldF8yODExZjgxNi04NTMyLTRkZGQtOGUyOS05YTZlZDdkYWQ1NGUuZGF0OnBhcnRfRy5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2UvNy80L2RhdGFzZXRfZTc0ZDAxODItODA3ZS00MGE4LWI2N2EtYWMwODhmYzJlMDJjLmRhdDpwYXJ0X0guZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy85L2QvYy9kYXRhc2V0XzlkYzU1Yzk4LTRhYjktNDI3Mi1hNjgwLTliMzEyOTk1NDM2Ny5kYXQ6cGFydF9JLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvOS81LzYvZGF0YXNldF85NTY5OWRiOS03N2NmLTRhZTEtODQ1NC00ZjI1NWYzY2I2MmEuZGF0OnBhcnRfSi5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzEvMS85L2RhdGFzZXRfMTE5NzljMjgtODJlZS00M2M0LTllNDMtZjM0Y2I1NDFmOTZiLmRhdDpwYXJ0X0suZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8zL2YvNS9kYXRhc2V0XzNmNTNjYjg2LTJkMmItNDI5YS1iZjUxLWUyNzZiYmUzOTNmYS5kYXQ6cGFydF9MLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcGM2bGljNHA5L2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMTQvb3V0cHV0cy9kYXRhc2V0X2FjMmQ5OGU3LWZmNTUtNGE5NC05ZTc5LTg2MWIwN2Q2MzUyOC5kYXQnICYmIGVjaG8gREVCVUcgJiYgbHMgJ291dGRpcl9nYicKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC80IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC80IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNTAlfOKWiOKWiOKWiOKWiOKWiCAgICAgfCAyLzQgWzAwOjAwPDAwOjAwLCAgMi4zOGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDc1JXzilojilojilojilojilojilojilojilowgIHwgMy80IFswMDowMTwwMDowMCwgIDIuMThpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6IDEwMCV84paI4paI4paI4paI4paI4paI4paI4paI4paI4paIfCA0LzQgWzAwOjAyPDAwOjAwLCAgMS43N2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAyICAgICAgIDMgICAgICAgNCAgICAgICA1ICAgICAgIDYKICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBjb25zdHJ1Y3RfMyAgY29uc3RydWN0XzEgIHBhcnRfTCAgcGFydF9KICBwYXJ0X0sgICAgIE5hTiAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF80ICBjb25zdHJ1Y3RfMiAgcGFydF9MICBwYXJ0X0ogIHBhcnRfSyAgICAgTmFOICAgICBOYU4KICAgICAgY29uc3RydWN0XzEgICAgICAgcGFydF9BICBwYXJ0X0IgIHBhcnRfQyAgcGFydF9EICBwYXJ0X0UgIHBhcnRfRgogICAgICBjb25zdHJ1Y3RfMiAgICAgICBwYXJ0X0EgIHBhcnRfRyAgcGFydF9IICBwYXJ0X0kgIHBhcnRfRiAgICAgTmFOCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDAsICd2YWxpZF9hc3NlbWJsaWVzJzogNH0KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KICAgICAgREVCVUcKICAgICAgY29uc3RydWN0XzEuZ2IKICAgICAgY29uc3RydWN0XzIuZ2IKICAgICAgY29uc3RydWN0XzMuZ2IKICAgICAgY29uc3RydWN0XzQuZ2IKCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBjNmxpYzRwOS9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgMik8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMS9kLzYvZGF0YXNldF8xZDYyNGMyNC1lODY0LTQ2M2EtOWZkMy0wYzYzZmQ0NmNiZDIuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNS8wLzUvZGF0YXNldF81MDVhYWZhMi01ZTljLTQ0YmItOWQyNi0zZjNlNjI0OGZjOWIuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJycgLS1hc3NlbWJseV9jc3YgJ2Fzc2VtYmx5X2Nzdi5jc3YnIC0tYXNzZW1ibHlfcGxhbl9uYW1lICdHaWJzb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy81LzAvNS9kYXRhc2V0XzUwNWFhZmEyLTVlOWMtNDRiYi05ZDI2LTNmM2U2MjQ4ZmM5Yi5kYXQ6Z2lic29uX3NlcXVlbmNlcy5mYScgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJycgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXBjNmxpYzRwOS9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzE3L291dHB1dHMvZGF0YXNldF8wZjYxNzE5Mi1lNjI1LTRkOWUtODM1OC0wYjliMWIwYWEwMjQuZGF0JyAmJiBlY2hvIERFQlVHICYmIGxzICdvdXRkaXJfZ2InCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNSBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNSBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDQwJXzilojilojilojiloggICAgICB8IDIvNSBbMDA6MDA8MDA6MDAsICA0LjI0aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNjAlfOKWiOKWiOKWiOKWiOKWiOKWiCAgICB8IDMvNSBbMDA6MDA8MDA6MDAsICA0LjI3aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgODAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiCAgfCA0LzUgWzAwOjAwPDAwOjAwLCAgNC4yOGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDUvNSBbMDA6MDE8MDA6MDAsICAzLjQ4aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAyICAgICAgIDMgICAgICAgIDQgICAgICAgIDUKICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgY29uc3RydWN0ICAgICBwYXJ0cyAgICAgTmFOICAgICBOYU4gICAgICBOYU4gICAgICBOYU4KICAgICAgY29uc3RydWN0XzEgIEZyYWdfMSAgRnJhZ18yICBGcmFnXzMgICBGcmFnXzQgICBGcmFnXzUKICAgICAgY29uc3RydWN0XzIgIEZyYWdfMSAgRnJhZ18yICBGcmFnXzMgIEZyYWdfNGIgICBGcmFnXzUKICAgICAgY29uc3RydWN0XzMgIEZyYWdfMSAgRnJhZ18yICBGcmFnXzMgIEZyYWdfNGMgIEZyYWdfNWIKICAgICAgY29uc3RydWN0XzQgIEZyYWdfMSAgRnJhZ18yICBGcmFnXzMgICBGcmFnXzQgICAgICBOYU4KICAgICAgY29uc3RydWN0XzUgIEZyYWdfMSAgRnJhZ18yICBGcmFnXzMgICBGcmFnXzQgIEZyYWdfNGIKICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMiwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiAzfQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgogICAgICBERUJVRwogICAgICBjb25zdHJ1Y3RfMS5nYgogICAgICBjb25zdHJ1Y3RfMi5nYgogICAgICBjb25zdHJ1Y3RfMy5nYgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIHsidmFsdWVzIjogW3siaWQiOiAzLCAic3JjIjogImhkY2EifV19IGAgfAogICAgICAgfCBkb21lc3RpY2F0ZWRcX2lucHV0IHwgYCBOb25lIGAgfAogICAgICAgfCBhc3NlbWJseVxfcGxhblxfbmFtZSB8IGAgIkdpYnNvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBjNmxpYzRwOS9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgMyk8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYS8xL2YvZGF0YXNldF9hMWY5ODliOS1lNzlmLTRiZDctOWNmMy02NjY3NWMxZDFlOTQuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYS82LzEvZGF0YXNldF9hNjE3YWUxZi03MGUzLTQ4NzMtYmRjYy1mMjI2OGZmZWFhZDQuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvOS80LzEvZGF0YXNldF85NDFiNGU5NS02MDBhLTQ4NWMtYTNmYS0xZGNmMGRlZmRkNzYuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJycgLS1hc3NlbWJseV9jc3YgJ2Fzc2VtYmx5X2Nzdi5jc3YnIC0tYXNzZW1ibHlfcGxhbl9uYW1lICdMaWdhc2VDeWNsaW5nUmVhY3Rpb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy9hLzYvMS9kYXRhc2V0X2E2MTdhZTFmLTcwZTMtNDg3My1iZGNjLWYyMjY4ZmZlYWFkNC5kYXQ6UkZQX0dGUF9wbGFzbWlkX0JPcy5mYSwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzkvNC8xL2RhdGFzZXRfOTQxYjRlOTUtNjAwYS00ODVjLWEzZmEtMWRjZjBkZWZkZDc2LmRhdDpSRlBfR0ZQX3BsYXNtaWRfcGFydHMuZmEnIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1wYzZsaWM0cDkvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8yMS9vdXRwdXRzL2RhdGFzZXRfODI3ZTY0YTEtN2Y4NC00ZjllLTg0NjgtZWFiYjM2ODRlZmEzLmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC8yIFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC8yIFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgMi8yIFswMDowMDwwMDowMCwgIDIuMTZpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgLi4uICAgICAgICAgICAxNAogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uICAgICAgICAgICAgIAogICAgICBDb25zdHJ1Y3QxICAgICAgICAgUkZQX0dGUF9CT18xMDIzMiAgLi4uICBwN19iYWNrYm9uZQogICAgICBDb25zdHJ1Y3QyX2ZsYXdlZCAgUkZQX0dGUF9CT18xMDIzMiAgLi4uICAgICAgICAgIE5hTgoKICAgICAgWzIgcm93cyB4IDE0IGNvbHVtbnNdCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDIsICd2YWxpZF9hc3NlbWJsaWVzJzogMH0KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogNSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJMaWdhc2VDeWNsaW5nUmVhY3Rpb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1wYzZsaWM0cDkvZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDQpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzYvYi9lL2RhdGFzZXRfNmJlMzhmN2QtYjVjNC00MzA4LTg1ZDEtM2JkNmI0ZGFlNGZjLmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2MvYi9hL2RhdGFzZXRfY2JhOWIyOTctNGRmZS00MDYzLTg1MTAtNmM0OGExYjZiN2ExLmRhdCwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzMvZS84L2RhdGFzZXRfM2U4ZGZjZTEtN2EwNS00NjY1LTkyNzctMzg4ZTNhYTQyNTgxLmRhdCwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2EvNS9kL2RhdGFzZXRfYTVkMDkzYzItMDA4Ny00NTNlLWI3ZDEtZDk0YTdjYjY2NGUwLmRhdCwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzAvZS9jL2RhdGFzZXRfMGVjNzJjYzAtMmE5NS00NzRiLWFhNzctN2E0MzZkYWQ2YTliLmRhdCwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2QvMi83L2RhdGFzZXRfZDI3MjE5OWYtMmUxYi00OWUxLWE1OTctNWZmYTExNTA3ZTgzLmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnQkFTSUNBc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy9jL2IvYS9kYXRhc2V0X2NiYTliMjk3LTRkZmUtNDA2My04NTEwLTZjNDhhMWI2YjdhMS5kYXQ6R0ZQLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMy9lLzgvZGF0YXNldF8zZThkZmNlMS03YTA1LTQ2NjUtOTI3Ny0zODhlM2FhNDI1ODEuZGF0OnAxNUFfa2FuLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYS81L2QvZGF0YXNldF9hNWQwOTNjMi0wMDg3LTQ1M2UtYjdkMS1kOTRhN2NiNjY0ZTAuZGF0OnByb21vdGVyLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMC9lL2MvZGF0YXNldF8wZWM3MmNjMC0yYTk1LTQ3NGItYWE3Ny03YTQzNmRhZDZhOWIuZGF0OlJGUC5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2QvMi83L2RhdGFzZXRfZDI3MjE5OWYtMmUxYi00OWUxLWE1OTctNWZmYTExNTA3ZTgzLmRhdDpvbGlnb3MuZmEnIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1wYzZsaWM0cDkvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8yOC9vdXRwdXRzL2RhdGFzZXRfNzQzNTMzNWUtODk2ZS00N2Y0LTg5YzctM2E2YzJjMjVmMjQ3LmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC8xMCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzggWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA3NSV84paI4paI4paI4paI4paI4paI4paI4paMICB8IDYvOCBbMDA6MDA8MDA6MDAsIDUwLjA0aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAyLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogOCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiAwfQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIHsidmFsdWVzIjogW3siaWQiOiA3LCAic3JjIjogImhkY2EifV19IGAgfAogICAgICAgfCBkb21lc3RpY2F0ZWRcX2lucHV0IHwgYCBOb25lIGAgfAogICAgICAgfCBhc3NlbWJseVxfcGxhblxfbmFtZSB8IGAgIkJBU0lDQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcGM2bGljNHA5L2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyA1KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy84L2UvMi9kYXRhc2V0XzhlMmRjYWFiLTNkZDctNDhjNC05MjBlLWJkZmZhYWQzOTc5My5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy9kLzQvMi9kYXRhc2V0X2Q0MjcxYTQzLTg3MjItNDM0NC05NTYyLTAwZTlhMzZkMDdlNS5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8yLzQvOC9kYXRhc2V0XzI0ODRiYmZiLWQ0YjAtNGM4Yi1hNTdmLTY3NTYyNWY5ODc1My5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy84LzMvZi9kYXRhc2V0XzgzZjAzNWY3LTI1ZmMtNGE1OS04M2IyLWQzNzdlM2NkNTlhZC5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy81L2EvYS9kYXRhc2V0XzVhYTdiMTllLTBhZDEtNDNiMS05MDgzLTk1NDA2N2ZmMjAxMC5kYXQsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9kLzYvNC9kYXRhc2V0X2Q2NDZiNzFjLTUzOTMtNDI5MS1iY2M1LTdkNmNiZTIyZjA1NS5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ0Jpb0JyaWNrU3RhbmRhcmRBc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXBjNmxpYzRwOS9maWxlcy9kLzQvMi9kYXRhc2V0X2Q0MjcxYTQzLTg3MjItNDM0NC05NTYyLTAwZTlhMzZkMDdlNS5kYXQ6QkJhX0UwMDQwX0dGUC5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzIvNC84L2RhdGFzZXRfMjQ4NGJiZmItZDRiMC00YzhiLWE1N2YtNjc1NjI1Zjk4NzUzLmRhdDpCQmFfSjIzMTE5X3Byb20uZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy84LzMvZi9kYXRhc2V0XzgzZjAzNWY3LTI1ZmMtNGE1OS04M2IyLWQzNzdlM2NkNTlhZC5kYXQ6QkJhX0oyMzExOV9wcm9tX2ZsYXdlZC5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzUvYS9hL2RhdGFzZXRfNWFhN2IxOWUtMGFkMS00M2IxLTkwODMtOTU0MDY3ZmYyMDEwLmRhdDpCQmFfSjYxMDQ4X3Rlcm0uZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9kLzYvNC9kYXRhc2V0X2Q2NDZiNzFjLTUzOTMtNDI5MS1iY2M1LTdkNmNiZTIyZjA1NS5kYXQ6QkJhX0s2MTEwOTRfYmFyLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcGM2bGljNHA5L2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMzUvb3V0cHV0cy9kYXRhc2V0XzgwODZjOGMwLTI0YjgtNGE1MS04NGRiLTZiNGM5YjBlNzZkMC5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMyBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMyBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDY3JXzilojilojilojilojilojilojilosgICB8IDIvMyBbMDA6MDA8MDA6MDAsICAyLjEwaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgMy8zIFswMDowMTwwMDowMCwgIDEuNzJpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAwLCAndmFsaWRfYXNzZW1ibGllcyc6IDN9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDksICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiQmlvQnJpY2tTdGFuZGFyZEFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBjNmxpYzRwOS9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgNik8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvOS84L2UvZGF0YXNldF85OGUxYjg2Mi0yZDNlLTQxNjQtYWVjZi01NmJkNDY0ZDBmMTEuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYi82LzYvZGF0YXNldF9iNjZhZmE1Yi02ODJkLTQ5ZjgtOTc1My1jNzhjMzU2ZmYyMjguZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNC82L2UvZGF0YXNldF80NmVhM2ZiOS04ZTYwLTQyZjMtYjdkMy1jMWE2ZWRjMTgzN2MuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvOC8zLzUvZGF0YXNldF84MzU4ZTY1Ny0wZTYxLTQ4NmItYWRiNC1lODg2ZjBmMzU0YmEuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNC9jL2YvZGF0YXNldF80Y2ZiYjJkZC1jNWE1LTQyZmUtODg5Yi1kYTY1MTA0MjJiNzIuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMi84L2MvZGF0YXNldF8yOGM5NjQ0NC1hYmZiLTQxNzMtOTcwZS1lODk1MTQ2YWVmOTcuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvZi81LzQvZGF0YXNldF9mNTRjN2ExNi1hYzZmLTQyYzItOWI2Yy0zNDVhZjMwNTBkODMuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMi9hLzMvZGF0YXNldF8yYTMzMGViNy1kMDMzLTRlNzUtYmU3YS00NDczNzQ4YTZmMmQuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNi84LzcvZGF0YXNldF82ODc3YzIyNy0yYzcwLTQwODAtOTYyZS1lZTE4NTVkZDc5N2YuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvZS8yLzEvZGF0YXNldF9lMjEyMjYyYy1hMzM2LTQyNjMtYTA3Ni0yY2QzMDA1OTBiYTQuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNC8xLzEvZGF0YXNldF80MTEyZDU0NS03ZTM3LTRhNmUtOGNhOC03YzFiOGY5MGE3MWUuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYi8zLzEvZGF0YXNldF9iMzE5NTVjZS1lYTQ0LTRlM2EtODZhMS02YWViYzQ3YmU4NDEuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvZC80L2QvZGF0YXNldF9kNGQxNDM4OC01NWQzLTRhZWMtODEwZC1hYTkwMjAyOGYyOWYuZGF0JyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYi82LzYvZGF0YXNldF9iNjZhZmE1Yi02ODJkLTQ5ZjgtOTc1My1jNzhjMzU2ZmYyMjguZGF0OnBhcnRfQS5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzQvNi9lL2RhdGFzZXRfNDZlYTNmYjktOGU2MC00MmYzLWI3ZDMtYzFhNmVkYzE4MzdjLmRhdDpwYXJ0X0IuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy84LzMvNS9kYXRhc2V0XzgzNThlNjU3LTBlNjEtNDg2Yi1hZGI0LWU4ODZmMGYzNTRiYS5kYXQ6cGFydF9DLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNC9jL2YvZGF0YXNldF80Y2ZiYjJkZC1jNWE1LTQyZmUtODg5Yi1kYTY1MTA0MjJiNzIuZGF0OnBhcnRfRC5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzIvOC9jL2RhdGFzZXRfMjhjOTY0NDQtYWJmYi00MTczLTk3MGUtZTg5NTE0NmFlZjk3LmRhdDpwYXJ0X0UuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9mLzUvNC9kYXRhc2V0X2Y1NGM3YTE2LWFjNmYtNDJjMi05YjZjLTM0NWFmMzA1MGQ4My5kYXQ6cGFydF9GLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMi9hLzMvZGF0YXNldF8yYTMzMGViNy1kMDMzLTRlNzUtYmU3YS00NDczNzQ4YTZmMmQuZGF0OnBhcnRfRy5nYicgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNi84LzcvZGF0YXNldF82ODc3YzIyNy0yYzcwLTQwODAtOTYyZS1lZTE4NTVkZDc5N2YuZGF0OnBhcnRfSC5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2UvMi8xL2RhdGFzZXRfZTIxMjI2MmMtYTMzNi00MjYzLWEwNzYtMmNkMzAwNTkwYmE0LmRhdDpwYXJ0X0kuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy80LzEvMS9kYXRhc2V0XzQxMTJkNTQ1LTdlMzctNGE2ZS04Y2E4LTdjMWI4ZjkwYTcxZS5kYXQ6cGFydF9KLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYi8zLzEvZGF0YXNldF9iMzE5NTVjZS1lYTQ0LTRlM2EtODZhMS02YWViYzQ3YmU4NDEuZGF0OnBhcnRfSy5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2QvNC9kL2RhdGFzZXRfZDRkMTQzODgtNTVkMy00YWVjLTgxMGQtYWE5MDIwMjhmMjlmLmRhdDpwYXJ0X0wuZ2InIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1wYzZsaWM0cDkvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC80OS9vdXRwdXRzL2RhdGFzZXRfNzdmMzlkMTItNTMyYy00NjhiLWJjZjctZmNjMWZkZWRkMzRjLmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC80IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC80IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNTAlfOKWiOKWiOKWiOKWiOKWiCAgICAgfCAyLzQgWzAwOjAwPDAwOjAwLCAgMi4zMWl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDc1JXzilojilojilojilojilojilojilojilowgIHwgMy80IFswMDowMTwwMDowMCwgIDIuMTRpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6IDEwMCV84paI4paI4paI4paI4paI4paI4paI4paI4paI4paIfCA0LzQgWzAwOjAyPDAwOjAwLCAgMS43NGl0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDAsICd2YWxpZF9hc3NlbWJsaWVzJzogNH0KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMTIsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIHsidmFsdWVzIjogW3siaWQiOiAxMSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBjNmxpYzRwOS9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgNyk8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvOS81LzAvZGF0YXNldF85NTA0ODk3ZC0wZDk5LTQ0YTQtOTAzMy03ZDE0ZTM5NDNlYzkuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYS9jL2QvZGF0YXNldF9hY2Q5ZTU0Ni1iYjMxLTQzOTEtYjg2Ny0xZDgxY2FiMTA5MjAuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYy9mL2UvZGF0YXNldF9jZmU4NTJmNi01YjMyLTQ2ZmQtYTlkOC0yYjc3NzAxNmQ0MDMuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMi81L2IvZGF0YXNldF8yNWJlMjc3MC1mNzY4LTRiMGUtYmU5Ni00NTllNDdlNmFlOGQuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvZS81LzgvZGF0YXNldF9lNTgwZjgwNi1lOGJhLTRkYWMtYjhkNS02Yjc2YjRhNzQyMWIuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMC9kLzYvZGF0YXNldF8wZDZkZTMxYS1hYWIxLTQyN2YtYTJhMS03YzhiYzk4ODIwOGUuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMS8yLzcvZGF0YXNldF8xMjcyYjIzZi03Y2VmLTRkZWItYmY5Mi1mYmFkOTczYmYyYzYuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNy80LzcvZGF0YXNldF83NDc2YjEwZC1jMTQzLTRiZTctYWRiNS0xMThkY2YzNzIyODcuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvZS8yL2UvZGF0YXNldF9lMmVkMGU0Ni1iMTU5LTRiY2EtYWVhYS05YmVmOWE1YjljOWEuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYy9hLzEvZGF0YXNldF9jYTE4YjUwYy0zYjRjLTQyMDEtODhiMC1kZmZkMDQ5NzE4ZjguZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMS9iLzQvZGF0YXNldF8xYjQ4MGU4NC0wM2NmLTQ0ODMtOWU5ZS1jY2Y3OWJmNjU0YTEuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYi9lLzgvZGF0YXNldF9iZTgzYjhmNC03M2RlLTQ3NzUtYWJiOC03NTQ4M2Q0ZThhYjIuZGF0LC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNS9kL2QvZGF0YXNldF81ZGRkZTU0OC00ODI4LTQwNjctOTNiNy0xMzc3YTcxMjIxZDcuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJycgLS1hc3NlbWJseV9jc3YgJ2Fzc2VtYmx5X2Nzdi5jc3YnIC0tYXNzZW1ibHlfcGxhbl9uYW1lICdUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5JyAtLWZpbGVfbmFtZV9tYXBwaW5nICcvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2EvYy9kL2RhdGFzZXRfYWNkOWU1NDYtYmIzMS00MzkxLWI4NjctMWQ4MWNhYjEwOTIwLmRhdDpwYXJ0X0EuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9jL2YvZS9kYXRhc2V0X2NmZTg1MmY2LTViMzItNDZmZC1hOWQ4LTJiNzc3MDE2ZDQwMy5kYXQ6cGFydF9CLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMi81L2IvZGF0YXNldF8yNWJlMjc3MC1mNzY4LTRiMGUtYmU5Ni00NTllNDdlNmFlOGQuZGF0OnBhcnRfQy5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzL2UvNS84L2RhdGFzZXRfZTU4MGY4MDYtZThiYS00ZGFjLWI4ZDUtNmI3NmI0YTc0MjFiLmRhdDpwYXJ0X0QuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy8wL2QvNi9kYXRhc2V0XzBkNmRlMzFhLWFhYjEtNDI3Zi1hMmExLTdjOGJjOTg4MjA4ZS5kYXQ6cGFydF9FLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvMS8yLzcvZGF0YXNldF8xMjcyYjIzZi03Y2VmLTRkZWItYmY5Mi1mYmFkOTczYmYyYzYuZGF0OnBhcnRfRi5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzcvNC83L2RhdGFzZXRfNzQ3NmIxMGQtYzE0My00YmU3LWFkYjUtMTE4ZGNmMzcyMjg3LmRhdDpwYXJ0X0cuZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9lLzIvZS9kYXRhc2V0X2UyZWQwZTQ2LWIxNTktNGJjYS1hZWFhLTliZWY5YTViOWM5YS5kYXQ6cGFydF9ILmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvYy9hLzEvZGF0YXNldF9jYTE4YjUwYy0zYjRjLTQyMDEtODhiMC1kZmZkMDQ5NzE4ZjguZGF0OnBhcnRfSS5nYiwvdG1wL3RtcGM2bGljNHA5L2ZpbGVzLzEvYi80L2RhdGFzZXRfMWI0ODBlODQtMDNjZi00NDgzLTllOWUtY2NmNzliZjY1NGExLmRhdDpwYXJ0X0ouZ2IsL3RtcC90bXBjNmxpYzRwOS9maWxlcy9iL2UvOC9kYXRhc2V0X2JlODNiOGY0LTczZGUtNDc3NS1hYmI4LTc1NDgzZDRlOGFiMi5kYXQ6cGFydF9LLmdiLC90bXAvdG1wYzZsaWM0cDkvZmlsZXMvNS9kL2QvZGF0YXNldF81ZGRkZTU0OC00ODI4LTQwNjctOTNiNy0xMzc3YTcxMjIxZDcuZGF0OnBhcnRfTC5nYicgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJycgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXBjNmxpYzRwOS9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzYzL291dHB1dHMvZGF0YXNldF9lMTA3ODRhNi0zMDUwLTQxMzEtYTY4NC0zODQ3Mzk3YzRjNGQuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA1MCV84paI4paI4paI4paI4paIICAgICB8IDIvNCBbMDA6MDA8MDA6MDAsICAyLjQ1aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNzUlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWjCAgfCAzLzQgWzAwOjAxPDAwOjAwLCAgMi4yNGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDQvNCBbMDA6MDI8MDA6MDAsICAxLjg0aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiA0fQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIE5vbmUgYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIHsidmFsdWVzIjogW3siaWQiOiAxNCwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBjNmxpYzRwOS9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCjwvZGV0YWlscz4K')); \ No newline at end of file diff -r 7d1778f5e164 -r 16ccb36aa8e3 output.json --- a/output.json Mon May 26 10:10:46 2025 +0000 +++ b/output.json Mon May 26 11:29:13 2025 +0000 @@ -1,7 +1,7 @@ { "summary": { "num_errors": 0, - "num_failures": 1, + "num_failures": 0, "num_skips": 0, "num_tests": 7 }, @@ -11,104 +11,96 @@ "inputs": { "adv|use_file_names_as_ids": true, "assembly_csv": { - "id": "41ca6db0600d7999", + "id": "c173cff58a987f8f", "src": "hda" }, "assembly_plan_name": "Type2sRestrictionAssembly", "genbank_files": { - "id": "66f8380583c086e1", + "id": "fcc5b7d13a1328f6", "src": "hdca" }, "topology": "circular" }, "job": { - "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmpy2ysv6tn/files/1/a/1/dataset_1a1ee32d-eed7-47fd-b491-4f0799b44a85.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmpy2ysv6tn/files/4/4/1/dataset_44129191-5531-4cc9-b37b-fec4e3c677d5.dat,/tmp/tmpy2ysv6tn/files/6/1/f/dataset_61f5f19f-147b-46fd-8900-a8530f311835.dat,/tmp/tmpy2ysv6tn/files/4/4/0/dataset_440b34e7-490e-49bd-9b29-6afcabe5f6f6.dat,/tmp/tmpy2ysv6tn/files/a/3/f/dataset_a3fca212-b8dc-4579-901c-612b806241af.dat,/tmp/tmpy2ysv6tn/files/5/3/9/dataset_5398f2cb-1a25-45e5-9ba0-cd79a88b6e88.dat,/tmp/tmpy2ysv6tn/files/f/5/0/dataset_f505293a-8223-4da2-a22c-aa261d4955ec.dat,/tmp/tmpy2ysv6tn/files/c/5/0/dataset_c50e4b1f-c72a-4272-b324-e1c2c7d50293.dat,/tmp/tmpy2ysv6tn/files/0/0/d/dataset_00d79560-f944-4d8e-98e7-f516684a6100.dat,/tmp/tmpy2ysv6tn/files/3/d/5/dataset_3d5bb0fb-d610-4939-8fc5-999174fee5ca.dat,/tmp/tmpy2ysv6tn/files/c/7/c/dataset_c7cf96af-ab1c-4199-821f-5bb5b947752f.dat,/tmp/tmpy2ysv6tn/files/0/a/5/dataset_0a5139e7-7d83-48f1-a1c9-458a1e72685c.dat,/tmp/tmpy2ysv6tn/files/f/b/3/dataset_fb361f22-020c-4972-8661-f1f57d1a7afa.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'Type2sRestrictionAssembly' --file_name_mapping '/tmp/tmpy2ysv6tn/files/4/4/1/dataset_44129191-5531-4cc9-b37b-fec4e3c677d5.dat:part_A.gb,/tmp/tmpy2ysv6tn/files/6/1/f/dataset_61f5f19f-147b-46fd-8900-a8530f311835.dat:part_B.gb,/tmp/tmpy2ysv6tn/files/4/4/0/dataset_440b34e7-490e-49bd-9b29-6afcabe5f6f6.dat:part_C.gb,/tmp/tmpy2ysv6tn/files/a/3/f/dataset_a3fca212-b8dc-4579-901c-612b806241af.dat:part_D.gb,/tmp/tmpy2ysv6tn/files/5/3/9/dataset_5398f2cb-1a25-45e5-9ba0-cd79a88b6e88.dat:part_E.gb,/tmp/tmpy2ysv6tn/files/f/5/0/dataset_f505293a-8223-4da2-a22c-aa261d4955ec.dat:part_F.gb,/tmp/tmpy2ysv6tn/files/c/5/0/dataset_c50e4b1f-c72a-4272-b324-e1c2c7d50293.dat:part_G.gb,/tmp/tmpy2ysv6tn/files/0/0/d/dataset_00d79560-f944-4d8e-98e7-f516684a6100.dat:part_H.gb,/tmp/tmpy2ysv6tn/files/3/d/5/dataset_3d5bb0fb-d610-4939-8fc5-999174fee5ca.dat:part_I.gb,/tmp/tmpy2ysv6tn/files/c/7/c/dataset_c7cf96af-ab1c-4199-821f-5bb5b947752f.dat:part_J.gb,/tmp/tmpy2ysv6tn/files/0/a/5/dataset_0a5139e7-7d83-48f1-a1c9-458a1e72685c.dat:part_K.gb,/tmp/tmpy2ysv6tn/files/f/b/3/dataset_fb361f22-020c-4972-8661-f1f57d1a7afa.dat:part_L.gb' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmpy2ysv6tn/job_working_directory/000/14/outputs/dataset_acb064d7-2781-46fe-98df-716fee024c8d.dat'", + "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmpc6lic4p9/files/2/b/d/dataset_2bdf436f-52cc-4c6e-afdb-3f051629900f.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmpc6lic4p9/files/4/6/5/dataset_465a53ab-8770-4514-a9b3-227f79646eb7.dat,/tmp/tmpc6lic4p9/files/a/e/2/dataset_ae22d5d2-cde0-45b5-9e8e-67b5cbd586fa.dat,/tmp/tmpc6lic4p9/files/e/6/4/dataset_e64057b1-43b3-4788-8891-77bcd297223c.dat,/tmp/tmpc6lic4p9/files/1/d/1/dataset_1d1f9832-b58e-48c2-b1b3-6c3fb18e9890.dat,/tmp/tmpc6lic4p9/files/6/7/3/dataset_6732fc79-081e-4edf-bccc-a0087520172a.dat,/tmp/tmpc6lic4p9/files/b/1/7/dataset_b17c7a49-3121-4292-95ff-51891aa066d1.dat,/tmp/tmpc6lic4p9/files/2/8/1/dataset_2811f816-8532-4ddd-8e29-9a6ed7dad54e.dat,/tmp/tmpc6lic4p9/files/e/7/4/dataset_e74d0182-807e-40a8-b67a-ac088fc2e02c.dat,/tmp/tmpc6lic4p9/files/9/d/c/dataset_9dc55c98-4ab9-4272-a680-9b3129954367.dat,/tmp/tmpc6lic4p9/files/9/5/6/dataset_95699db9-77cf-4ae1-8454-4f255f3cb62a.dat,/tmp/tmpc6lic4p9/files/1/1/9/dataset_11979c28-82ee-43c4-9e43-f34cb541f96b.dat,/tmp/tmpc6lic4p9/files/3/f/5/dataset_3f53cb86-2d2b-429a-bf51-e276bbe393fa.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'Type2sRestrictionAssembly' --file_name_mapping '/tmp/tmpc6lic4p9/files/4/6/5/dataset_465a53ab-8770-4514-a9b3-227f79646eb7.dat:part_A.gb,/tmp/tmpc6lic4p9/files/a/e/2/dataset_ae22d5d2-cde0-45b5-9e8e-67b5cbd586fa.dat:part_B.gb,/tmp/tmpc6lic4p9/files/e/6/4/dataset_e64057b1-43b3-4788-8891-77bcd297223c.dat:part_C.gb,/tmp/tmpc6lic4p9/files/1/d/1/dataset_1d1f9832-b58e-48c2-b1b3-6c3fb18e9890.dat:part_D.gb,/tmp/tmpc6lic4p9/files/6/7/3/dataset_6732fc79-081e-4edf-bccc-a0087520172a.dat:part_E.gb,/tmp/tmpc6lic4p9/files/b/1/7/dataset_b17c7a49-3121-4292-95ff-51891aa066d1.dat:part_F.gb,/tmp/tmpc6lic4p9/files/2/8/1/dataset_2811f816-8532-4ddd-8e29-9a6ed7dad54e.dat:part_G.gb,/tmp/tmpc6lic4p9/files/e/7/4/dataset_e74d0182-807e-40a8-b67a-ac088fc2e02c.dat:part_H.gb,/tmp/tmpc6lic4p9/files/9/d/c/dataset_9dc55c98-4ab9-4272-a680-9b3129954367.dat:part_I.gb,/tmp/tmpc6lic4p9/files/9/5/6/dataset_95699db9-77cf-4ae1-8454-4f255f3cb62a.dat:part_J.gb,/tmp/tmpc6lic4p9/files/1/1/9/dataset_11979c28-82ee-43c4-9e43-f34cb541f96b.dat:part_K.gb,/tmp/tmpc6lic4p9/files/3/f/5/dataset_3f53cb86-2d2b-429a-bf51-e276bbe393fa.dat:part_L.gb' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmpc6lic4p9/job_working_directory/000/14/outputs/dataset_ac2d98e7-ff55-4a94-9e79-861b07d63528.dat' && echo DEBUG && ls 'outdir_gb'", "command_version": "", "copied_from_job_id": null, - "create_time": "2025-05-26T10:00:43.823779", + "create_time": "2025-05-26T11:24:01.275241", "dependencies": [], - "exit_code": 1, - "external_id": "114506", + "exit_code": 0, + "external_id": "151844", "galaxy_version": "24.2", "handler": null, - "history_id": "66f8380583c086e1", - "id": "7f406d9538852eeb", + "history_id": "fcc5b7d13a1328f6", + "id": "c9445e550eef23d0", "inputs": { "assembly_csv": { - "id": "41ca6db0600d7999", + "id": "c173cff58a987f8f", "src": "hda", - "uuid": "1a1ee32d-eed7-47fd-b491-4f0799b44a85" + "uuid": "2bdf436f-52cc-4c6e-afdb-3f051629900f" }, "genbank_files1": { - "id": "66f8380583c086e1", + "id": "fcc5b7d13a1328f6", "src": "hda", - "uuid": "44129191-5531-4cc9-b37b-fec4e3c677d5" + "uuid": "465a53ab-8770-4514-a9b3-227f79646eb7" }, "genbank_files10": { - "id": "d3a48cfe9e5a1f02", + "id": "cf75f655bb15877b", "src": "hda", - "uuid": "c7cf96af-ab1c-4199-821f-5bb5b947752f" + "uuid": "95699db9-77cf-4ae1-8454-4f255f3cb62a" }, "genbank_files11": { - "id": "4fffd7776804f395", + "id": "744832bdd7ccd728", "src": "hda", - "uuid": "0a5139e7-7d83-48f1-a1c9-458a1e72685c" + "uuid": "11979c28-82ee-43c4-9e43-f34cb541f96b" }, "genbank_files12": { - "id": "193b12b5837c3789", + "id": "855b83dd0dec8eab", "src": "hda", - "uuid": "fb361f22-020c-4972-8661-f1f57d1a7afa" + "uuid": "3f53cb86-2d2b-429a-bf51-e276bbe393fa" }, "genbank_files2": { - "id": "afa012b5b55ac394", + "id": "df00a2d9def0cc87", "src": "hda", - "uuid": "61f5f19f-147b-46fd-8900-a8530f311835" + "uuid": "ae22d5d2-cde0-45b5-9e8e-67b5cbd586fa" }, "genbank_files3": { - "id": "c1bc3f2cd94aab77", + "id": "d9e72a80becfe6e7", "src": "hda", - "uuid": "440b34e7-490e-49bd-9b29-6afcabe5f6f6" + "uuid": "e64057b1-43b3-4788-8891-77bcd297223c" }, "genbank_files4": { - "id": "f1661b71781d8acc", + "id": "038c626e299361e9", "src": "hda", - "uuid": "a3fca212-b8dc-4579-901c-612b806241af" + "uuid": "1d1f9832-b58e-48c2-b1b3-6c3fb18e9890" }, "genbank_files5": { - "id": "e1129f30c30438be", + "id": "c7c3cd49f3337c1a", "src": "hda", - "uuid": "5398f2cb-1a25-45e5-9ba0-cd79a88b6e88" + "uuid": "6732fc79-081e-4edf-bccc-a0087520172a" }, "genbank_files6": { - "id": "abbaf1e2c3c282ad", + "id": "51c35891e43131e2", "src": "hda", - "uuid": "f505293a-8223-4da2-a22c-aa261d4955ec" + "uuid": "b17c7a49-3121-4292-95ff-51891aa066d1" }, "genbank_files7": { - "id": "18bb6cd07b986e37", + "id": "84db48b219855f4d", "src": "hda", - "uuid": "c50e4b1f-c72a-4272-b324-e1c2c7d50293" + "uuid": "2811f816-8532-4ddd-8e29-9a6ed7dad54e" }, "genbank_files8": { - "id": "82689942017f4326", + "id": "cf00b67a5455eb5a", "src": "hda", - "uuid": "00d79560-f944-4d8e-98e7-f516684a6100" + "uuid": "e74d0182-807e-40a8-b67a-ac088fc2e02c" }, "genbank_files9": { - "id": "ecc2b8a59c690090", + "id": "a3780ecc1a00a0d8", "src": "hda", - "uuid": "3d5bb0fb-d610-4939-8fc5-999174fee5ca" + "uuid": "9dc55c98-4ab9-4272-a680-9b3129954367" } }, - "job_messages": [ - { - "code_desc": "", - "desc": "Fatal error: Exit code 1 ()", - "error_level": 3, - "exit_code": 1, - "type": "exit_code" - } - ], + "job_messages": [], "job_metrics": [], "job_runner_name": null, "job_stderr": "", @@ -116,45 +108,60 @@ "model_class": "Job", "output_collections": { "construct_gb": { - "id": "afa012b5b55ac394", + "id": "df00a2d9def0cc87", "src": "hdca" } }, "outputs": { + "__new_primary_file_construct_gb|construct_1__": { + "id": "fedb85639c7c80b9", + "src": "hda", + "uuid": "4bf90377-e4de-4d13-8ebc-39a53494ea2a" + }, + "__new_primary_file_construct_gb|construct_2__": { + "id": "bd75ec7b3d9705ea", + "src": "hda", + "uuid": "ac9bac0c-348b-46b7-a882-60f56867cc30" + }, + "__new_primary_file_construct_gb|construct_3__": { + "id": "7eb30039064fccdd", + "src": "hda", + "uuid": "48e39545-a44e-410b-859b-01fcf6189002" + }, + "__new_primary_file_construct_gb|construct_4__": { + "id": "61cc0a7b70456dfd", + "src": "hda", + "uuid": "df8aca7f-8413-430f-b35f-7dac694ee0b6" + }, "output_zip": { - "id": "7f406d9538852eeb", + "id": "c9445e550eef23d0", "src": "hda", - "uuid": "acb064d7-2781-46fe-98df-716fee024c8d" + "uuid": "ac2d98e7-ff55-4a94-9e79-861b07d63528" } }, "params": { "__input_ext": "\"input\"", "adv": "{\"enzyme\": \"auto\", \"use_file_names_as_ids\": true}", "assembly_plan_name": "\"Type2sRestrictionAssembly\"", - "chromInfo": "\"/tmp/tmpy2ysv6tn/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", + "chromInfo": "\"/tmp/tmpc6lic4p9/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", "dbkey": "\"?\"", "domesticated_input": null, "genbank_files": "{\"values\": [{\"id\": 1, \"src\": \"hdca\"}]}", "topology": "\"circular\"" }, - "state": "error", - "stderr": "\rassembly: 0%| | 0/5 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r", - "stdout": " 1 2 3 4 5 6\n0 \nID part1 part2 part3 part4 part5 part6\nconstruct_3 construct_1 part_L part_J part_K NaN NaN\nconstruct_4 construct_2 part_L part_J part_K NaN NaN\nconstruct_1 part_A part_B part_C part_D part_E part_F\nconstruct_2 part_A part_G part_H part_I part_F NaN\nSimulating assembly plan assambly...\n", + "state": "ok", + "stderr": "\rassembly: 0%| | 0/4 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r", - "tool_stdout": " 1 2 3 4 5 6\n0 \nID part1 part2 part3 part4 part5 part6\nconstruct_3 construct_1 part_L part_J part_K NaN NaN\nconstruct_4 construct_2 part_L part_J part_K NaN NaN\nconstruct_1 part_A part_B part_C part_D part_E part_F\nconstruct_2 part_A part_G part_H part_I part_F NaN\nSimulating assembly plan assambly...\n", - "update_time": "2025-05-26T10:00:52.817543", + "tool_stderr": "\rassembly: 0%| | 0/4 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r.", - "Job in error state.. tool_id: cloning_simulation, exit_code: 1, stderr: \rassembly: 0%| | 0/5 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r.", - "Output collection 'construct_gb': expected to have 4 elements, but it had 0." - ], - "status": "failure", + "status": "success", "test_index": 0, - "time_seconds": 51.33188271522522, + "time_seconds": 53.70547914505005, "tool_id": "cloning_simulation", "tool_version": "0.1.0+galaxy0" }, @@ -166,21 +173,21 @@ "inputs": { "adv|use_file_names_as_ids": true, "assembly_csv": { - "id": "3abc48ca4f3e8d37", + "id": "3af58a5242e85ea6", "src": "hda" }, "assembly_plan_name": "GibsonAssembly", "genbank_files": { - "id": "c1bc3f2cd94aab77", + "id": "d9e72a80becfe6e7", "src": "hdca" }, "topology": "circular" }, "job": { - "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmpy2ysv6tn/files/6/e/b/dataset_6eb20de3-662c-4428-907f-29cbe0a5cc20.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmpy2ysv6tn/files/b/6/f/dataset_b6fe141d-f27d-475d-95fd-501e032f0c3b.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'GibsonAssembly' --file_name_mapping '/tmp/tmpy2ysv6tn/files/b/6/f/dataset_b6fe141d-f27d-475d-95fd-501e032f0c3b.dat:gibson_sequences.fa' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmpy2ysv6tn/job_working_directory/000/17/outputs/dataset_41d853b4-adb6-4605-bbaf-d7178b962d92.dat'", + "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmpc6lic4p9/files/1/d/6/dataset_1d624c24-e864-463a-9fd3-0c63fd46cbd2.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmpc6lic4p9/files/5/0/5/dataset_505aafa2-5e9c-44bb-9d26-3f3e6248fc9b.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'GibsonAssembly' --file_name_mapping '/tmp/tmpc6lic4p9/files/5/0/5/dataset_505aafa2-5e9c-44bb-9d26-3f3e6248fc9b.dat:gibson_sequences.fa' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmpc6lic4p9/job_working_directory/000/17/outputs/dataset_0f617192-e625-4d9e-8358-0b9b1b0aa024.dat' && echo DEBUG && ls 'outdir_gb'", "command_version": "", "copied_from_job_id": null, - "create_time": "2025-05-26T10:01:03.681089", + "create_time": "2025-05-26T11:24:25.394299", "dependencies": [ { "cacheable": false, @@ -360,21 +367,21 @@ } ], "exit_code": 0, - "external_id": "114833", + "external_id": "152204", "galaxy_version": "24.2", "handler": null, - "history_id": "afa012b5b55ac394", - "id": "991084752433b654", + "history_id": "df00a2d9def0cc87", + "id": "7eb30039064fccdd", "inputs": { "assembly_csv": { - "id": "3abc48ca4f3e8d37", + "id": "3af58a5242e85ea6", "src": "hda", - "uuid": "6eb20de3-662c-4428-907f-29cbe0a5cc20" + "uuid": "1d624c24-e864-463a-9fd3-0c63fd46cbd2" }, "genbank_files1": { - "id": "9677ca5db33658a1", + "id": "3b85967b9c87a1cc", "src": "hda", - "uuid": "b6fe141d-f27d-475d-95fd-501e032f0c3b" + "uuid": "505aafa2-5e9c-44bb-9d26-3f3e6248fc9b" } }, "job_messages": [], @@ -385,55 +392,55 @@ "model_class": "Job", "output_collections": { "construct_gb": { - "id": "f1661b71781d8acc", + "id": "038c626e299361e9", "src": "hdca" } }, "outputs": { "__new_primary_file_construct_gb|construct_1__": { - "id": "400090ecd3303f56", + "id": "9773f41fb184880d", "src": "hda", - "uuid": "e24f4e4b-a2c0-4ebc-ac8a-e80cb0ce1266" + "uuid": "0d66c887-a6a3-4fd6-978a-9c0e2ce4b317" }, "__new_primary_file_construct_gb|construct_2__": { - "id": "974cc872eaa7d6a0", + "id": "41b44b0c750630a6", "src": "hda", - "uuid": "baec54da-c9df-4fb2-a156-7aaaabc3ee2d" + "uuid": "be7e7183-3b0d-40dd-9908-3e8dcd7f80bf" }, "__new_primary_file_construct_gb|construct_3__": { - "id": "8586d482e8f05e33", + "id": "bfc60c3d9bac68ee", "src": "hda", - "uuid": "8649dd5f-afe7-44fa-b07c-aba6fdb3c6fc" + "uuid": "2c7f645c-33d1-4a91-9608-221494b22be4" }, "output_zip": { - "id": "991084752433b654", + "id": "5c8c8c874b5b07c6", "src": "hda", - "uuid": "41d853b4-adb6-4605-bbaf-d7178b962d92" + "uuid": "0f617192-e625-4d9e-8358-0b9b1b0aa024" } }, "params": { "__input_ext": "\"input\"", "adv": "{\"enzyme\": \"auto\", \"use_file_names_as_ids\": true}", "assembly_plan_name": "\"GibsonAssembly\"", - "chromInfo": "\"/tmp/tmpy2ysv6tn/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", + "chromInfo": "\"/tmp/tmpc6lic4p9/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", "dbkey": "\"?\"", "domesticated_input": null, "genbank_files": "{\"values\": [{\"id\": 3, \"src\": \"hdca\"}]}", "topology": "\"circular\"" }, "state": "ok", - "stderr": "\rassembly: 0%| | 0/5 [00:00