diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 9fef5e9..1528252 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2260,11 +2260,11 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addModule('default_route', Buffer.from('LyoKQ29weXJpZ2h0IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKi8NCg0KZnVuY3Rpb24gd2luZG93c19kZWZhdWx0Um91dGUoKQ0Kew0KICAgIHZhciByZXQgPSBudWxsOw0KICAgIHZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOw0KICAgIElQID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ0lwaGxwYXBpLmRsbCcpOw0KICAgIElQLkNyZWF0ZU1ldGhvZCgnR2V0SXBGb3J3YXJkVGFibGUnKTsNCg0KICAgIHZhciBzaXplID0gR00uQ3JlYXRlVmFyaWFibGUoNCk7DQogICAgdmFyIHJlc3VsdCA9IElQLkdldElwRm9yd2FyZFRhYmxlKDAsIHNpemUsIDEpOw0KICAgIGlmKHJlc3VsdC5WYWwgPT0gMTIyKQ0KICAgIHsNCiAgICAgICAgdmFyIHRhYmxlID0gR00uQ3JlYXRlVmFyaWFibGUoc2l6ZS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpKTsNCiAgICAgICAgcmVzdWx0ID0gSVAuR2V0SXBGb3J3YXJkVGFibGUodGFibGUsIHNpemUsIDEpOw0KICAgICAgICBpZihyZXN1bHQuVmFsID09IDApDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBlbnRyaWVzID0gdGFibGUuRGVyZWYoMCwgNCkudG9CdWZmZXIoKS5yZWFkVUludDMyTEUoKTsNCiAgICAgICAgICAgIHZhciByb3c7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8ZW50cmllczsrK2kpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcm93ID0gdGFibGUuRGVyZWYoNCArIChpICogNTYpLCA1Nik7DQogICAgICAgICAgICAgICAgaWYgKHJvdy5EZXJlZigwLCA0KS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpID09IDApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IFJvdXRlDQogICAgICAgICAgICAgICAgICAgIGlmICghcmV0IHx8IHJldC5tZXRyaWMgPiByb3cuRGVyZWYoMzYsIDQpLnRvQnVmZmVyKCkucmVhZFVJbnQzMkxFKCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHsgaW50ZXJmYWNlOiByb3cuRGVyZWYoMTYsIDQpLnRvQnVmZmVyKCkucmVhZFVJbnQzMkxFKCksIG1ldHJpYzogcm93LkRlcmVmKDM2LCA0KS50b0J1ZmZlcigpLnJlYWRVSW50MzJMRSgpIH07DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIChyZXQpOw0KfQ0KDQpmdW5jdGlvbiBsaW51eF9kZWZhdWx0Um91dGUoKQ0Kew0KICAgIHZhciBjaGlsZCA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjRmlsZSgnL2Jpbi9zaCcsIFsnc2gnXSk7DQogICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgY2hpbGQuc3Rkb3V0LnN0ciA9ICcnOyBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB0aGlzLnN0ciArPSBjLnRvU3RyaW5nKCk7IH0pOw0KICAgIGNoaWxkLnN0ZGluLndyaXRlKCdpcCByb3V0ZSB8IGdyZXAgZGVmYXVsdCB8IGF3ayBcJ3sgaWYoICQxPT0iZGVmYXVsdCIgJiYgJDQ9PSJkZXYiICkgeyBwcmludCAkNTsgfSB9XCdcbmV4aXRcbicpOw0KICAgIGNoaWxkLndhaXRFeGl0KCk7DQogICAgcmV0dXJuIChjaGlsZC5zdGRvdXQuc3RyLnRyaW0oKSA9PSAnJyA/IG51bGwgOiB7IGludGVyZmFjZTogY2hpbGQuc3Rkb3V0LnN0ci50cmltKCksIG1ldHJpYzogMSB9KTsNCn0NCg0KZnVuY3Rpb24gYnNkX2RlZmF1bHRSb3V0ZSgpDQp7DQogICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKCcvYmluL3NoJywgWydzaCddKTsNCiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBmdW5jdGlvbiAoYykgeyB9KTsNCiAgICBjaGlsZC5zdGRvdXQuc3RyID0gJyc7IGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IHRoaXMuc3RyICs9IGMudG9TdHJpbmcoKTsgfSk7DQogICAgY2hpbGQuc3RkaW4ud3JpdGUoJ25ldHN0YXQgLXJuIC1mIGluZXQgfCBncmVwIGRlZmF1bHQgfCBhd2sgXCd7IHByaW50ICRORiB9XCdcbmV4aXRcbicpOw0KICAgIGNoaWxkLndhaXRFeGl0KCk7DQogICAgcmV0dXJuIChjaGlsZC5zdGRvdXQuc3RyLnRyaW0oKSA9PSAnJyA/IG51bGwgOiB7IGludGVyZmFjZTogY2hpbGQuc3Rkb3V0LnN0ci50cmltKCksIG1ldHJpYzogMSB9KTsNCn0NCg0Kc3dpdGNoKHByb2Nlc3MucGxhdGZvcm0pDQp7DQogICAgY2FzZSAnd2luMzInOg0KICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd3NfZGVmYXVsdFJvdXRlOw0KICAgICAgICBicmVhazsNCiAgICBjYXNlICdsaW51eCc6DQogICAgICAgIG1vZHVsZS5leHBvcnRzID0gbGludXhfZGVmYXVsdFJvdXRlOw0KICAgICAgICBicmVhazsNCiAgICBjYXNlICdmcmVlYnNkJzoNCiAgICBjYXNlICdkYXJ3aW4nOg0KICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGJzZF9kZWZhdWx0Um91dGU7DQogICAgICAgIGJyZWFrOw0KfQ0KDQo=', 'base64').toString());"); // agent-instaler: Refer to modules/agent-installer.js - char *_agentinstaller = ILibMemory_Allocate(36191, 0, NULL, NULL); - memcpy_s(_agentinstaller + 0, 20680, "LyoNCkNvcHlyaWdodCAyMDIwIEludGVsIENvcnBvcmF0aW9uDQoNCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQoNCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQoqLw0KDQoNCmZ1bmN0aW9uIGluc3RhbGxTZXJ2aWNlKHBhcmFtcykNCnsNCiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnLi4uSW5zdGFsbGluZyBzZXJ2aWNlJyk7DQoNCg0KICAgIHZhciBvcHRpb25zID0NCiAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogcHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ01lc2ggQWdlbnQnIDogJ21lc2hhZ2VudCcsDQogICAgICAgICAgICB0YXJnZXQ6IHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdNZXNoQWdlbnQnIDogJ21lc2hhZ2VudCcsDQogICAgICAgICAgICBkaXNwbGF5TmFtZTogJ01lc2ggQWdlbnQgYmFja2dyb3VuZCBzZXJ2aWNlJywNCiAgICAgICAgICAgIHNlcnZpY2VQYXRoOiBwcm9jZXNzLmV4ZWNQYXRoLA0KICAgICAgICAgICAgc3RhcnRUeXBlOiAnQVVUT19TVEFSVCcsDQogICAgICAgICAgICBwYXJhbWV0ZXJzOiBwYXJhbXMNCiAgICAgICAgfTsNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKSB7IG9wdGlvbnMuY29tcGFueU5hbWUgPSAnJzsgfQ0KDQogICAgdmFyIGk7DQogICAgaWYgKChpPXBhcmFtcy5pbmRleE9mKCctLV9sb2NhbFNlcnZpY2U9IjEiJykpPj0wKQ0KICAgIHsNCiAgICAgICAgLy8gaW5zdGFsbCBpbiBwbGFjZQ0KICAgICAgICBvcHRpb25zLnBhcmFtZXRlcnMuc3BsaWNlKGksIDEpOw0KICAgICAgICBvcHRpb25zLmluc3RhbGxJblBsYWNlID0gdHJ1ZTsNCiAgICB9DQogICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMucGFyYW1ldGVycy5sZW5ndGg7ICsraSkNCiAgICB7DQogICAgICAgIGlmKG9wdGlvbnMucGFyYW1ldGVyc1tpXS5zdGFydHNXaXRoKCctLWluc3RhbGxQYXRoPScpKQ0KICAgICAgICB7DQogICAgICAgICAgICBvcHRpb25zLmluc3RhbGxQYXRoID0gb3B0aW9ucy5wYXJhbWV0ZXJzW2ldLnNwbGl0KCc9JylbMV07DQogICAgICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsUGF0aC5zdGFydHNXaXRoKCciJykpIHsgb3B0aW9ucy5pbnN0YWxsUGF0aCA9IG9wdGlvbnMuaW5zdGFsbFBhdGguc3Vic3RyaW5nKDEsIG9wdGlvbnMuaW5zdGFsbFBhdGgubGVuZ3RoIC0gMSk7IH0NCiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1ldGVycy5zcGxpY2UoaSwgMSk7DQogICAgICAgICAgICBvcHRpb25zLmluc3RhbGxJblBsYWNlID0gZmFsc2U7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZiAob3B0aW9ucy5wYXJhbWV0ZXJzW2ldLnN0YXJ0c1dpdGgoJy0tY29tcGFueU5hbWU9JykpDQogICAgICAgIHsNCiAgICAgICAgICAgIG9wdGlvbnMuY29tcGFueU5hbWUgPSBvcHRpb25zLnBhcmFtZXRlcnNbaV0uc3BsaXQoJz0nKVsxXTsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbXBhbnlOYW1lLnN0YXJ0c1dpdGgoJyInKSkgeyBvcHRpb25zLmNvbXBhbnlOYW1lID0gb3B0aW9ucy5jb21wYW55TmFtZS5zdWJzdHJpbmcoMSwgb3B0aW9ucy5jb21wYW55TmFtZS5sZW5ndGggLSAxKTsgfQ0KICAgICAgICAgICAgb3B0aW9ucy5wYXJhbWV0ZXJzLnNwbGljZShpLCAxKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5pbnN0YWxsU2VydmljZShvcHRpb25zKTsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgIH0NCiAgICBjYXRjaChzaWUpDQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtFUlJPUl0gJyArIHNpZSk7DQogICAgICAgIHByb2Nlc3MuZXhpdCgpOw0KICAgIH0NCiAgICB2YXIgc3ZjID0gcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5nZXRTZXJ2aWNlKHByb2Nlc3MucGxhdGZvcm09PSd3aW4zMic/J01lc2ggQWdlbnQnOidtZXNoYWdlbnQnKTsNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnZGFyd2luJykNCiAgICB7DQogICAgICAgIHN2Yy5sb2FkKCk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAtPiBzZXR0aW5nIHVwIGxhdW5jaCBhZ2VudC4uLicpOw0KICAgICAgICB0cnkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5pbnN0YWxsTGF1bmNoQWdlbnQoDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbWVzaGFnZW50JywNCiAgICAgICAgICAgICAgICAgICAgc2VydmljZVBhdGg6IHN2Yy5hcHBMb2NhdGlvbigpLA0KICAgICAgICAgICAgICAgICAgICBzdGFydFR5cGU6ICdBVVRPX1NUQVJUJywNCiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblR5cGVzOiBbJ0xvZ2luV2luZG93J10sDQogICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFsnLWt2bTEnXQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgICAgICB9DQogICAgICAgIGNhdGNoIChzaWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0VSUk9SXSAnICsgc2llKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgaWYocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKQ0KICAgIHsNCiAgICAgICAgdmFyIGxvYyA9IHN2Yy5hcHBMb2NhdGlvbigpOw0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gV3JpdGluZyBmaXJld2FsbCBydWxlcyBmb3IgTWVzaCBBZ2VudCBTZXJ2aWNlLi4uJyk7DQoNCiAgICAgICAgdmFyIHJ1bGUgPSANCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZTogJ01lc2ggQWdlbnQgTWFuYWdlbWVudCBUcmFmZmljIChUQ1AtMSknLA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2luYm91bmQnLA0KICAgICAgICAgICAgICAgIFByb2dyYW06IGxvYywNCiAgICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsDQogICAgICAgICAgICAgICAgUHJvZmlsZTogJ1B1YmxpYywgUHJpdmF0ZSwgRG9tYWluJywNCiAgICAgICAgICAgICAgICBMb2NhbFBvcnQ6IDE2OTkwLA0KICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uOiAnTWVzaCBDZW50cmFsIEFnZW50IE1hbmFnZW1lbnQgVHJhZmZpYycsDQogICAgICAgICAgICAgICAgRWRnZVRyYXZlcnNhbFBvbGljeTogJ2FsbG93JywNCiAgICAgICAgICAgICAgICBFbmFibGVkOiB0cnVlDQogICAgICAgICAgICB9Ow0KICAgICAgICByZXF1aXJlKCd3aW4tZmlyZXdhbGwnKS5hZGRGaXJld2FsbFJ1bGUocnVsZSk7DQoNCiAgICAgICAgcnVsZSA9IA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lOiAnTWVzaCBBZ2VudCBNYW5hZ2VtZW50IFRyYWZmaWMgKFRDUC0yKScsDQogICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnaW5ib3VuZCcsDQogICAgICAgICAgICAgICAgUHJvZ3JhbTogbG9jLA0KICAgICAgICAgICAgICAgIFByb3RvY29sOiAnVENQJywNCiAgICAgICAgICAgICAgICBQcm9maWxlOiAnUHVibGljLCBQcml2YXRlLCBEb21haW4nLA0KICAgICAgICAgICAgICAgIExvY2FsUG9ydDogMTY5OTEsDQogICAgICAgICAgICAgICAgRGVzY3JpcHRpb246ICdNZXNoIENlbnRyYWwgQWdlbnQgTWFuYWdlbWVudCBUcmFmZmljJywNCiAgICAgICAgICAgICAgICBFZGdlVHJhdmVyc2FsUG9saWN5OiAnYWxsb3cnLA0KICAgICAgICAgICAgICAgIEVuYWJsZWQ6IHRydWUNCiAgICAgICAgICAgIH07DQogICAgICAgIHJlcXVpcmUoJ3dpbi1maXJld2FsbCcpLmFkZEZpcmV3YWxsUnVsZShydWxlKTsgDQoNCiAgICAgICAgcnVsZSA9DQogICAgICAgIHsNCiAgICAgICAgICAgIERpc3BsYXlOYW1lOiAnTWVzaCBBZ2VudCBQZWVyLXRvLVBlZXIgVHJhZmZpYyAoVURQLTEpJywNCiAgICAgICAgICAgIGRpcmVjdGlvbjogJ2luYm91bmQnLA0KICAgICAgICAgICAgUHJvZ3JhbTogbG9jLA0KICAgICAgICAgICAgUHJvdG9jb2w6ICdVRFAnLA0KICAgICAgICAgICAgUHJvZmlsZTogJ1B1YmxpYywgUHJpdmF0ZSwgRG9tYWluJywNCiAgICAgICAgICAgIExvY2FsUG9ydDogMTY5OTAsDQogICAgICAgICAgICBEZXNjcmlwdGlvbjogJ01lc2ggQ2VudHJhbCBBZ2VudCBQZWVyLXRvLVBlZXIgVHJhZmZpYycsDQogICAgICAgICAgICBFZGdlVHJhdmVyc2FsUG9saWN5OiAnYWxsb3cnLA0KICAgICAgICAgICAgRW5hYmxlZDogdHJ1ZQ0KICAgICAgICB9Ow0KICAgICAgICByZXF1aXJlKCd3aW4tZmlyZXdhbGwnKS5hZGRGaXJld2FsbFJ1bGUocnVsZSk7DQoNCiAgICAgICAgcnVsZSA9DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRGlzcGxheU5hbWU6ICdNZXNoIEFnZW50IFBlZXItdG8tUGVlciBUcmFmZmljIChVRFAtMiknLA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2luYm91bmQnLA0KICAgICAgICAgICAgICAgIFByb2dyYW06IGxvYywNCiAgICAgICAgICAgICAgICBQcm90b2NvbDogJ1VEUCcsDQogICAgICAgICAgICAgICAgUHJvZmlsZTogJ1B1YmxpYywgUHJpdmF0ZSwgRG9tYWluJywNCiAgICAgICAgICAgICAgICBMb2NhbFBvcnQ6IDE2OTkxLA0KICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uOiAnTWVzaCBDZW50cmFsIEFnZW50IFBlZXItdG8tUGVlciBUcmFmZmljJywNCiAgICAgICAgICAgICAgICBFZGdlVHJhdmVyc2FsUG9saWN5OiAnYWxsb3cnLA0KICAgICAgICAgICAgICAgIEVuYWJsZWQ6IHRydWUNCiAgICAgICAgICAgIH07DQogICAgICAgIHJlcXVpcmUoJ3dpbi1maXJld2FsbCcpLmFkZEZpcmV3YWxsUnVsZShydWxlKTsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgIH0NCiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gU3RhcnRpbmcgc2VydmljZS4uLicpOw0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgc3ZjLnN0YXJ0KCk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW09LXVxuJyk7DQogICAgfQ0KICAgIGNhdGNoKGVlKQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICB9DQoNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKSB7IHN2Yy5jbG9zZSgpOyB9DQogICAgcHJvY2Vzcy5leGl0KCk7DQp9DQoNCmZ1bmN0aW9uIHVuaW5zdGFsbFNlcnZpY2UzKHBhcmFtcykNCnsNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnZGFyd2luJykNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAtPiBVbmluc3RhbGxpbmcgbGF1bmNoIGFnZW50Li4uJyk7DQogICAgICAgIHRyeQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgbGF1bmNoYWdlbnQgPSByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLmdldExhdW5jaEFnZW50KCdtZXNoYWdlbnQnKTsNCiAgICAgICAgICAgIGxhdW5jaGFnZW50LnVubG9hZCgpOw0KICAgICAgICAgICAgcmVxdWlyZSgnZnMnKS51bmxpbmtTeW5jKGxhdW5jaGFnZW50LnBsaXN0KTsNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0RPTkVdXG4nKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAocGFyYW1zICE9IG51bGwgJiYgIXBhcmFtcy5pbmNsdWRlcygnX3N0b3AnKSkNCiAgICB7DQogICAgICAgIGluc3RhbGxTZXJ2aWNlKHBhcmFtcyk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIHByb2Nlc3MuZXhpdCgpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gdW5pbnN0YWxsU2VydmljZTIocGFyYW1zKQ0Kew0KICAgIHZhciBzZWNvbmRhcnlhZ2VudCA9IGZhbHNlOw0KICAgIHZhciBpOw0KICAgIHZhciBkYXRhRm9sZGVyID0gbnVsbDsNCiAgICB2YXIgYXBwUHJlZml4ID0gbnVsbDsNCg0KICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLmluY2x1ZGVzKCctLV9kZWxldGVEYXRhPSIxIicpKQ0KICAgIHsNCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7ICsraSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHBhcmFtc1tpXS5zdGFydHNXaXRoKCdfd29ya2luZ0Rpcj0nKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBkYXRhRm9sZGVyID0gcGFyYW1zW2ldLnNwbGl0KCc9JylbMV07DQogICAgICAgICAgICAgICAgaWYgKGRhdGFGb2xkZXIuc3RhcnRzV2l0aCgnIicpKSB7IGRhdGFGb2xkZXIgPSBkYXRhRm9sZGVyLnN1YnN0cmluZygxLCBkYXRhRm9sZGVyLmxlbmd0aCAtIDEpOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAocGFyYW1zW2ldLnN0YXJ0c1dpdGgoJ19hcHBQcmVmaXg9JykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgYXBwUHJlZml4ID0gcGFyYW1zW2ldLnNwbGl0KCc9JylbMV07DQogICAgICAgICAgICAgICAgaWYgKGFwcFByZWZpeC5zdGFydHNXaXRoKCciJykpIHsgYXBwUHJlZml4ID0gYXBwUHJlZml4LnN1YnN0cmluZygxLCBhcHBQcmVmaXgubGVuZ3RoIC0gMSk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAtPiBVbmluc3RhbGxpbmcgcHJldmlvdXMgaW5zdGFsbGF0aW9uLi4uJyk7DQogICAgdHJ5DQogICAgew0KICAgICAgICByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLnVuaW5zdGFsbFNlcnZpY2UocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ01lc2ggQWdlbnQnIDogJ21lc2hhZ2VudCcpOw0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtET05FXVxuJyk7DQogICAgICAgIGlmIChkYXRhRm9sZGVyICYmIGFwcFByZWZpeCkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyAgIC0+IERlbGV0aW5nIGFnZW50IGRhdGEuLi4nKTsNCiAgICAgICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtICE9ICd3aW4zMicpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGxldmVsVXAgPSBkYXRhRm9sZGVyLnNwbGl0KCcvJyk7DQogICAgICAgICAgICAgICAgbGV2ZWxVcC5wb3AoKTsNCiAgICAgICAgICAgICAgICBsZXZlbFVwID0gbGV2ZWxVcC5qb2luKCcvJyk7DQoNCiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlY0ZpbGUoJy9iaW4vc2gnLCBbJ3NoJ10pOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZGluLndyaXRlKCdjZCAnICsgZGF0YUZvbGRlciArICdcbicpOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZGluLndyaXRlKCdybSAnICsgYXBwUHJlZml4ICsgJy4qXG4nKTsNCiAgICAgICAgICAgICAgICBjaGlsZC5zdGRpbi53cml0ZSgnY2QgL1xuJyk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ3JtZGlyICcgKyBkYXRhRm9sZGVyICsgJ1xuJyk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ3JtZGlyICcgKyBsZXZlbFVwICsgJ1xuJyk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ2V4aXRcbicpOyAgICAgICANCiAgICAgICAgICAgICAgICBjaGlsZC53YWl0RXhpdCgpOyAgICANCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgbGV2ZWxVcCA9IGRhdGFGb2xkZXIuc3BsaXQoJ1xcJyk7DQogICAgICAgICAgICAgICAgbGV2ZWxVcC5wb3AoKTsNCiAgICAgICAgICAgICAgICBsZXZlbFVwID0gbGV2ZWxVcC5qb2luKCdcXCcpOw0KICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjRmlsZShwcm9jZXNzLmVudlsnd2luZGlyJ10gKyAnXFxzeXN0ZW0zMlxcY21kLmV4ZScsIFsnL0MgZGVsICInICsgZGF0YUZvbGRlciArICdcXCcgKyBhcHBQcmVmaXggKyAnLioiICYmIHJtZGlyICInICsgZGF0YUZvbGRlciArICciICYmIHJtZGlyICInICsgbGV2ZWxVcCArICciJ10pOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uIChjKSB7IH0pOw0KICAgICAgICAgICAgICAgIGNoaWxkLndhaXRFeGl0KCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0RPTkVdXG4nKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBjYXRjaCAoZSkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0VSUk9SXVxuJyk7DQogICAgfQ0KDQogICAgLy8gQ2hlY2sgZm9yIHNlY29uZGFyeSBhZ2VudA0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyAgIC0+IENoZWNraW5nIGZvciBzZWNvbmRhcnkgYWdlbnQuLi4nKTsNCiAgICAgICAgdmFyIHMgPSByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLmdldFNlcnZpY2UoJ21lc2hhZ2VudERpYWdub3N0aWMnKTsNCiAgICAgICAgdmFyIGxvYyA9IHMuYXBwTG9jYXRpb24oKTsNCiAgICAgICAgcy5jbG9zZSgpOw0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtGT1VORF1cbicpOw0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgICAgLT4gVW5pbnN0YWxsaW5nIHNlY29uZGFyeSBhZ2VudC4uLicpOw0KICAgICAgICBzZWNvbmRhcnlhZ2VudCA9IHRydWU7DQogICAgICAgIHRyeQ0KICAgICAgICB7DQogICAgICAgICAgICByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLnVuaW5zdGFsbFNlcnZpY2UoJ21lc2hhZ2VudERpYWdub3N0aWMnKTsNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0RPTkVdXG4nKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBjYXRjaCAoZSkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW05PTkVdXG4nKTsNCiAgICB9DQoNCiAgICBpZihzZWNvbmRhcnlhZ2VudCkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAgICAtPiByZW1vdmluZyBzZWNvbmRhcnkgYWdlbnQgZnJvbSB0YXNrIHNjaGVkdWxlci4uLicpOw0KICAgICAgICB2YXIgcCA9IHJlcXVpcmUoJ3Rhc2stc2NoZWR1bGVyJykuZGVsZXRlKCdtZXNoYWdlbnREaWFnbm9zdGljL3BlcmlvZGljU3RhcnQnKTsNCiAgICAgICAgcC5fcGFyYW1zID0gcGFyYW1zOw0KICAgICAgICBwLnRoZW4oZnVuY3Rpb24gKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgICAgICAgICAgdW5pbnN0YWxsU2VydmljZTModGhpcy5fcGFyYW1zKTsNCiAgICAgICAgfSwgZnVuY3Rpb24gKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICAgICAgICAgIHVuaW5zdGFsbFNlcnZpY2UzKHRoaXMuX3BhcmFtcyk7DQogICAgICAgIH0pOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICB1bmluc3RhbGxTZXJ2aWNlMyhwYXJhbXMpOw0KICAgIH0NCn0NCmZ1bmN0aW9uIHVuaW5zdGFsbFNlcnZpY2UocGFyYW1zKQ0Kew0KICAgIHZhciBzdmMgPSByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLmdldFNlcnZpY2UocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ01lc2ggQWdlbnQnIDogJ21lc2hhZ2VudCcpOw0KICAgIGlmIChzdmMuaXNSdW5uaW5nKCkpDQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gU3RvcHBpbmcgU2VydmljZS4uLicpOw0KICAgICAgICBpZihwcm9jZXNzLnBsYXRmb3JtPT0nd2luMzInKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdmMuc3RvcCgpLnRoZW4oZnVuY3Rpb24gKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtTVE9QUEVEXVxuJyk7DQogICAgICAgICAgICAgICAgc3ZjLmNsb3NlKCk7DQogICAgICAgICAgICAgICAgdW5pbnN0YWxsU2VydmljZTIodGhpcy5fcGFyYW1zKTsNCiAgICAgICAgICAgIH0sIGZ1bmN0aW9uICgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICAgICAgICAgICAgICBzdmMuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICB1bmluc3RhbGxTZXJ2aWNlMih0aGlzLl9wYXJhbXMpOw0KICAgICAgICAgICAgfSkucGFyZW50UHJvbWlzZS5fcGFyYW1zID0gcGFyYW1zOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT0gJ2RhcndpbicpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3ZjLnVubG9hZCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN2Yy5zdG9wKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtTVE9QUEVEXVxuJyk7DQogICAgICAgICAgICB1bmluc3RhbGxTZXJ2aWNlMihwYXJhbXMpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicpIHsgc3ZjLmNsb3NlKCk7IH0NCiAgICAgICAgdW5pbnN0YWxsU2VydmljZTIocGFyYW1zKTsNCiAgICB9DQp9DQpmdW5jdGlvbiBzZXJ2aWNlRXhpc3RzKGxvYywgcGFyYW1zKQ0Kew0KICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0ZPVU5EOiAnICsgbG9jICsgJ11cbicpOw0KICAgIGlmKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJykNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAtPiBDaGVja2luZyBmaXJld2FsbCBydWxlcyBmb3IgcHJldmlvdXMgaW5zdGFsbGF0aW9uLi4uJyk7DQogICAgICAgIHJlcXVpcmUoJ3dpbi1maXJld2FsbCcpLnJlbW92ZUZpcmV3YWxsUnVsZSh7IHByb2dyYW06IGxvYyB9KS50aGVuKGZ1bmN0aW9uICgpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFNVQ0NFU1MNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0RFTEVURURdXG4nKTsN", 16000); - memcpy_s(_agentinstaller + 16000, 4680, "CiAgICAgICAgICAgIHVuaW5zdGFsbFNlcnZpY2UodGhpcy5fcGFyYW1zKTsNCiAgICAgICAgfSwgZnVuY3Rpb24gKCkNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gRkFJTEVEDQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtObyBSdWxlcyBGb3VuZF1cbicpOw0KICAgICAgICAgICAgdW5pbnN0YWxsU2VydmljZSh0aGlzLl9wYXJhbXMpOw0KICAgICAgICB9KS5wYXJlbnRQcm9taXNlLl9wYXJhbXMgPSBwYXJhbXM7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIHVuaW5zdGFsbFNlcnZpY2UocGFyYW1zKTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIGZ1bGxVbmluc3RhbGwoanNvblN0cmluZykNCnsNCiAgICBjb25zb2xlLnNldERlc3RpbmF0aW9uKGNvbnNvbGUuRGVzdGluYXRpb25zLkRJU0FCTEVEKTsNCiAgICB2YXIgcGFybXMgPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpOw0KICAgIHBhcm1zLnB1c2goJ19zdG9wJyk7DQoNCiAgICB0cnkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcuLi5DaGVja2luZyBmb3IgcHJldmlvdXMgaW5zdGFsbGF0aW9uJyk7DQogICAgICAgIHZhciBzID0gcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5nZXRTZXJ2aWNlKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdNZXNoIEFnZW50JyA6ICdtZXNoYWdlbnQnKTsNCiAgICAgICAgdmFyIGxvYyA9IHMuYXBwTG9jYXRpb24oKTsNCiAgICAgICAgdmFyIGFwcFByZWZpeCA9IGxvYy5zcGxpdChwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicgPyAnXFwnIDogJy8nKS5wb3AoKTsNCiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJykgeyBhcHBQcmVmaXggPSBhcHBQcmVmaXguc3Vic3RyaW5nKDAsIGFwcFByZWZpeC5sZW5ndGggLSA0KTsgfQ0KDQogICAgICAgIHBhcm1zLnB1c2goJ193b3JraW5nRGlyPScgKyBzLmFwcFdvcmtpbmdEaXJlY3RvcnkoKSk7DQogICAgICAgIHBhcm1zLnB1c2goJ19hcHBQcmVmaXg9JyArIGFwcFByZWZpeCk7DQoNCiAgICAgICAgcy5jbG9zZSgpOw0KICAgIH0NCiAgICBjYXRjaCAoZSkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW05PTkVdXG4nKTsNCiAgICAgICAgcHJvY2Vzcy5leGl0KCk7DQogICAgfQ0KICAgIHNlcnZpY2VFeGlzdHMobG9jLCBwYXJtcyk7DQp9DQoNCmZ1bmN0aW9uIGZ1bGxJbnN0YWxsKGpzb25TdHJpbmcpDQp7DQogICAgY29uc29sZS5zZXREZXN0aW5hdGlvbihjb25zb2xlLkRlc3RpbmF0aW9ucy5ESVNBQkxFRCk7DQogICAgdmFyIHBhcm1zID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTsNCg0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJy4uLkNoZWNraW5nIGZvciBwcmV2aW91cyBpbnN0YWxsYXRpb24nKTsNCiAgICAgICAgdmFyIHMgPSByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLmdldFNlcnZpY2UocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ01lc2ggQWdlbnQnIDogJ21lc2hhZ2VudCcpOw0KICAgICAgICB2YXIgbG9jID0gcy5hcHBMb2NhdGlvbigpOw0KICAgICAgICBzLmNsb3NlKCk7DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbTk9ORV1cbicpOw0KICAgICAgICBpbnN0YWxsU2VydmljZShwYXJtcyk7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgc2VydmljZUV4aXN0cyhsb2MsIHBhcm1zKTsNCn0NCg0KDQptb2R1bGUuZXhwb3J0cyA9DQogICAgew0KICAgICAgICBmdWxsSW5zdGFsbDogZnVsbEluc3RhbGwsDQogICAgICAgIGZ1bGxVbmluc3RhbGw6IGZ1bGxVbmluc3RhbGwNCiAgICB9Ow0KDQppZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKQ0Kew0KICAgIGZ1bmN0aW9uIHdpbl91cGRhdGUoKQ0KICAgIHsNCiAgICAgICAgY29uc29sZS5zZXREZXN0aW5hdGlvbihjb25zb2xlLkRlc3RpbmF0aW9ucy5MT0dGSUxFKTsNCiAgICAgICAgdmFyIHVwZGF0ZUxvY2F0aW9uID0gcHJvY2Vzcy5hcmd2WzFdLnN1YnN0cmluZyg4KTsNCiAgICAgICAgdmFyIHNlcnZpY2UgPSBudWxsOw0KICAgICAgICB2YXIgc2VydmljZUxvY2F0aW9uID0gIiI7DQoNCiAgICAgICAgaWYoIWdsb2JhbC5faW50ZXJ2YWwpDQogICAgICAgIHsNCiAgICAgICAgICAgIGdsb2JhbC5faW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh3aW5fdXBkYXRlLCA2MDAwMCk7DQogICAgICAgIH0NCg0KICAgICAgICB0cnkNCiAgICAgICAgew0KICAgICAgICAgICAgc2VydmljZSA9IHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIuZ2V0U2VydmljZSgnTWVzaCBBZ2VudCcpOw0KICAgICAgICAgICAgc2VydmljZUxvY2F0aW9uID0gc2VydmljZS5hcHBMb2NhdGlvbigpOw0KICAgICAgICB9DQogICAgICAgIGNhdGNoKGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXJ2aWNlIE1hbmFnZXIgRXJyb3I6ICcgKyBlKTsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUcnlpbmcgYWdhaW4gaW4gb25lIG1pbnV0ZS4uLicpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgc2VydmljZS5zdG9wKCkuZmluYWxseShmdW5jdGlvbiAoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXF1aXJlKCdwcm9jZXNzLW1hbmFnZXInKS5lbnVtZXJhdGVQcm9jZXNzZXMoKS50aGVuKGZ1bmN0aW9uIChwcm9jKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcHJvYykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChwcm9jW3BdLnBhdGggPT0gc2VydmljZUxvY2F0aW9uKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmtpbGwocHJvY1twXS5waWQpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgdHJ5DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXF1aXJlKCdmcycpLmNvcHlGaWxlU3luYyhwcm9jZXNzLmV4ZWNQYXRoLCB1cGRhdGVMb2NhdGlvbik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhdGNoIChjZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb3VsZCBub3QgY29weSBmaWxlLi4gVHJ5aW5nIGFnYWluIGluIDYwIHNlY29uZHMnKTsNCiAgICAgICAgICAgICAgICAgICAgc2VydmljZS5jbG9zZSgpOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgc2VydmljZS5zdGFydCgpOw0KICAgICAgICAgICAgICAgIHByb2Nlc3MuX2V4aXQoKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9DQogICAgbW9kdWxlLmV4cG9ydHMudXBkYXRlID0gd2luX3VwZGF0ZTsNCn0=", 4680); - ILibBase64DecodeEx((unsigned char*)_agentinstaller, 20680, (unsigned char*)_agentinstaller + 20680); - duk_push_global_object(ctx); duk_get_prop_string(ctx, -1, "addModule"); duk_swap_top(ctx, -2); duk_push_string(ctx, "agent-installer"); duk_push_string(ctx, _agentinstaller + 20680); + char *_agentinstaller = ILibMemory_Allocate(36857, 0, NULL, NULL); + memcpy_s(_agentinstaller + 0, 21060, "LyoNCkNvcHlyaWdodCAyMDIwIEludGVsIENvcnBvcmF0aW9uDQoNCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQoNCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQoqLw0KDQoNCmZ1bmN0aW9uIGluc3RhbGxTZXJ2aWNlKHBhcmFtcykNCnsNCiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnLi4uSW5zdGFsbGluZyBzZXJ2aWNlJyk7DQoNCg0KICAgIHZhciBvcHRpb25zID0NCiAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogcHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ01lc2ggQWdlbnQnIDogJ21lc2hhZ2VudCcsDQogICAgICAgICAgICB0YXJnZXQ6IHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdNZXNoQWdlbnQnIDogJ21lc2hhZ2VudCcsDQogICAgICAgICAgICBkaXNwbGF5TmFtZTogJ01lc2ggQWdlbnQgYmFja2dyb3VuZCBzZXJ2aWNlJywNCiAgICAgICAgICAgIHNlcnZpY2VQYXRoOiBwcm9jZXNzLmV4ZWNQYXRoLA0KICAgICAgICAgICAgc3RhcnRUeXBlOiAnQVVUT19TVEFSVCcsDQogICAgICAgICAgICBwYXJhbWV0ZXJzOiBwYXJhbXMNCiAgICAgICAgfTsNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKSB7IG9wdGlvbnMuY29tcGFueU5hbWUgPSAnJzsgfQ0KDQogICAgdmFyIGk7DQogICAgaWYgKChpPXBhcmFtcy5pbmRleE9mKCctLV9sb2NhbFNlcnZpY2U9IjEiJykpPj0wKQ0KICAgIHsNCiAgICAgICAgLy8gaW5zdGFsbCBpbiBwbGFjZQ0KICAgICAgICBvcHRpb25zLnBhcmFtZXRlcnMuc3BsaWNlKGksIDEpOw0KICAgICAgICBvcHRpb25zLmluc3RhbGxJblBsYWNlID0gdHJ1ZTsNCiAgICB9DQogICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMucGFyYW1ldGVycy5sZW5ndGg7ICsraSkNCiAgICB7DQogICAgICAgIGlmKG9wdGlvbnMucGFyYW1ldGVyc1tpXS5zdGFydHNXaXRoKCctLWluc3RhbGxQYXRoPScpKQ0KICAgICAgICB7DQogICAgICAgICAgICBvcHRpb25zLmluc3RhbGxQYXRoID0gb3B0aW9ucy5wYXJhbWV0ZXJzW2ldLnNwbGl0KCc9JylbMV07DQogICAgICAgICAgICBpZiAob3B0aW9ucy5pbnN0YWxsUGF0aC5zdGFydHNXaXRoKCciJykpIHsgb3B0aW9ucy5pbnN0YWxsUGF0aCA9IG9wdGlvbnMuaW5zdGFsbFBhdGguc3Vic3RyaW5nKDEsIG9wdGlvbnMuaW5zdGFsbFBhdGgubGVuZ3RoIC0gMSk7IH0NCiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1ldGVycy5zcGxpY2UoaSwgMSk7DQogICAgICAgICAgICBvcHRpb25zLmluc3RhbGxJblBsYWNlID0gZmFsc2U7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZiAob3B0aW9ucy5wYXJhbWV0ZXJzW2ldLnN0YXJ0c1dpdGgoJy0tY29tcGFueU5hbWU9JykpDQogICAgICAgIHsNCiAgICAgICAgICAgIG9wdGlvbnMuY29tcGFueU5hbWUgPSBvcHRpb25zLnBhcmFtZXRlcnNbaV0uc3BsaXQoJz0nKVsxXTsNCiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbXBhbnlOYW1lLnN0YXJ0c1dpdGgoJyInKSkgeyBvcHRpb25zLmNvbXBhbnlOYW1lID0gb3B0aW9ucy5jb21wYW55TmFtZS5zdWJzdHJpbmcoMSwgb3B0aW9ucy5jb21wYW55TmFtZS5sZW5ndGggLSAxKTsgfQ0KICAgICAgICAgICAgb3B0aW9ucy5wYXJhbWV0ZXJzLnNwbGljZShpLCAxKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5pbnN0YWxsU2VydmljZShvcHRpb25zKTsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgIH0NCiAgICBjYXRjaChzaWUpDQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtFUlJPUl0gJyArIHNpZSk7DQogICAgICAgIHByb2Nlc3MuZXhpdCgpOw0KICAgIH0NCiAgICB2YXIgc3ZjID0gcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5nZXRTZXJ2aWNlKHByb2Nlc3MucGxhdGZvcm09PSd3aW4zMic/J01lc2ggQWdlbnQnOidtZXNoYWdlbnQnKTsNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnZGFyd2luJykNCiAgICB7DQogICAgICAgIHN2Yy5sb2FkKCk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAtPiBzZXR0aW5nIHVwIGxhdW5jaCBhZ2VudC4uLicpOw0KICAgICAgICB0cnkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5pbnN0YWxsTGF1bmNoQWdlbnQoDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbWVzaGFnZW50JywNCiAgICAgICAgICAgICAgICAgICAgc2VydmljZVBhdGg6IHN2Yy5hcHBMb2NhdGlvbigpLA0KICAgICAgICAgICAgICAgICAgICBzdGFydFR5cGU6ICdBVVRPX1NUQVJUJywNCiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblR5cGVzOiBbJ0xvZ2luV2luZG93J10sDQogICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM6IFsnLWt2bTEnXQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgICAgICB9DQogICAgICAgIGNhdGNoIChzaWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0VSUk9SXSAnICsgc2llKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KDQogICAgaWYocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKQ0KICAgIHsNCiAgICAgICAgdmFyIGxvYyA9IHN2Yy5hcHBMb2NhdGlvbigpOw0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gV3JpdGluZyBmaXJld2FsbCBydWxlcyBmb3IgTWVzaCBBZ2VudCBTZXJ2aWNlLi4uJyk7DQoNCiAgICAgICAgdmFyIHJ1bGUgPSANCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZTogJ01lc2ggQWdlbnQgTWFuYWdlbWVudCBUcmFmZmljIChUQ1AtMSknLA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2luYm91bmQnLA0KICAgICAgICAgICAgICAgIFByb2dyYW06IGxvYywNCiAgICAgICAgICAgICAgICBQcm90b2NvbDogJ1RDUCcsDQogICAgICAgICAgICAgICAgUHJvZmlsZTogJ1B1YmxpYywgUHJpdmF0ZSwgRG9tYWluJywNCiAgICAgICAgICAgICAgICBMb2NhbFBvcnQ6IDE2OTkwLA0KICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uOiAnTWVzaCBDZW50cmFsIEFnZW50IE1hbmFnZW1lbnQgVHJhZmZpYycsDQogICAgICAgICAgICAgICAgRWRnZVRyYXZlcnNhbFBvbGljeTogJ2FsbG93JywNCiAgICAgICAgICAgICAgICBFbmFibGVkOiB0cnVlDQogICAgICAgICAgICB9Ow0KICAgICAgICByZXF1aXJlKCd3aW4tZmlyZXdhbGwnKS5hZGRGaXJld2FsbFJ1bGUocnVsZSk7DQoNCiAgICAgICAgcnVsZSA9IA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lOiAnTWVzaCBBZ2VudCBNYW5hZ2VtZW50IFRyYWZmaWMgKFRDUC0yKScsDQogICAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnaW5ib3VuZCcsDQogICAgICAgICAgICAgICAgUHJvZ3JhbTogbG9jLA0KICAgICAgICAgICAgICAgIFByb3RvY29sOiAnVENQJywNCiAgICAgICAgICAgICAgICBQcm9maWxlOiAnUHVibGljLCBQcml2YXRlLCBEb21haW4nLA0KICAgICAgICAgICAgICAgIExvY2FsUG9ydDogMTY5OTEsDQogICAgICAgICAgICAgICAgRGVzY3JpcHRpb246ICdNZXNoIENlbnRyYWwgQWdlbnQgTWFuYWdlbWVudCBUcmFmZmljJywNCiAgICAgICAgICAgICAgICBFZGdlVHJhdmVyc2FsUG9saWN5OiAnYWxsb3cnLA0KICAgICAgICAgICAgICAgIEVuYWJsZWQ6IHRydWUNCiAgICAgICAgICAgIH07DQogICAgICAgIHJlcXVpcmUoJ3dpbi1maXJld2FsbCcpLmFkZEZpcmV3YWxsUnVsZShydWxlKTsgDQoNCiAgICAgICAgcnVsZSA9DQogICAgICAgIHsNCiAgICAgICAgICAgIERpc3BsYXlOYW1lOiAnTWVzaCBBZ2VudCBQZWVyLXRvLVBlZXIgVHJhZmZpYyAoVURQLTEpJywNCiAgICAgICAgICAgIGRpcmVjdGlvbjogJ2luYm91bmQnLA0KICAgICAgICAgICAgUHJvZ3JhbTogbG9jLA0KICAgICAgICAgICAgUHJvdG9jb2w6ICdVRFAnLA0KICAgICAgICAgICAgUHJvZmlsZTogJ1B1YmxpYywgUHJpdmF0ZSwgRG9tYWluJywNCiAgICAgICAgICAgIExvY2FsUG9ydDogMTY5OTAsDQogICAgICAgICAgICBEZXNjcmlwdGlvbjogJ01lc2ggQ2VudHJhbCBBZ2VudCBQZWVyLXRvLVBlZXIgVHJhZmZpYycsDQogICAgICAgICAgICBFZGdlVHJhdmVyc2FsUG9saWN5OiAnYWxsb3cnLA0KICAgICAgICAgICAgRW5hYmxlZDogdHJ1ZQ0KICAgICAgICB9Ow0KICAgICAgICByZXF1aXJlKCd3aW4tZmlyZXdhbGwnKS5hZGRGaXJld2FsbFJ1bGUocnVsZSk7DQoNCiAgICAgICAgcnVsZSA9DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRGlzcGxheU5hbWU6ICdNZXNoIEFnZW50IFBlZXItdG8tUGVlciBUcmFmZmljIChVRFAtMiknLA0KICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2luYm91bmQnLA0KICAgICAgICAgICAgICAgIFByb2dyYW06IGxvYywNCiAgICAgICAgICAgICAgICBQcm90b2NvbDogJ1VEUCcsDQogICAgICAgICAgICAgICAgUHJvZmlsZTogJ1B1YmxpYywgUHJpdmF0ZSwgRG9tYWluJywNCiAgICAgICAgICAgICAgICBMb2NhbFBvcnQ6IDE2OTkxLA0KICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uOiAnTWVzaCBDZW50cmFsIEFnZW50IFBlZXItdG8tUGVlciBUcmFmZmljJywNCiAgICAgICAgICAgICAgICBFZGdlVHJhdmVyc2FsUG9saWN5OiAnYWxsb3cnLA0KICAgICAgICAgICAgICAgIEVuYWJsZWQ6IHRydWUNCiAgICAgICAgICAgIH07DQogICAgICAgIHJlcXVpcmUoJ3dpbi1maXJld2FsbCcpLmFkZEZpcmV3YWxsUnVsZShydWxlKTsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgIH0NCiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gU3RhcnRpbmcgc2VydmljZS4uLicpOw0KICAgIHRyeQ0KICAgIHsNCiAgICAgICAgc3ZjLnN0YXJ0KCk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW09LXVxuJyk7DQogICAgfQ0KICAgIGNhdGNoKGVlKQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICB9DQoNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKSB7IHN2Yy5jbG9zZSgpOyB9DQogICAgcHJvY2Vzcy5leGl0KCk7DQp9DQoNCmZ1bmN0aW9uIHVuaW5zdGFsbFNlcnZpY2UzKHBhcmFtcykNCnsNCiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnZGFyd2luJykNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAtPiBVbmluc3RhbGxpbmcgbGF1bmNoIGFnZW50Li4uJyk7DQogICAgICAgIHRyeQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgbGF1bmNoYWdlbnQgPSByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLmdldExhdW5jaEFnZW50KCdtZXNoYWdlbnQnKTsNCiAgICAgICAgICAgIGxhdW5jaGFnZW50LnVubG9hZCgpOw0KICAgICAgICAgICAgcmVxdWlyZSgnZnMnKS51bmxpbmtTeW5jKGxhdW5jaGFnZW50LnBsaXN0KTsNCiAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0RPTkVdXG4nKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAocGFyYW1zICE9IG51bGwgJiYgIXBhcmFtcy5pbmNsdWRlcygnX3N0b3AnKSkNCiAgICB7DQogICAgICAgIGluc3RhbGxTZXJ2aWNlKHBhcmFtcyk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIHByb2Nlc3MuZXhpdCgpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gdW5pbnN0YWxsU2VydmljZTIocGFyYW1zLCBtc2gpDQp7DQogICAgdmFyIHNlY29uZGFyeWFnZW50ID0gZmFsc2U7DQogICAgdmFyIGk7DQogICAgdmFyIGRhdGFGb2xkZXIgPSBudWxsOw0KICAgIHZhciBhcHBQcmVmaXggPSBudWxsOw0KDQogICAgdHJ5IHsgcmVxdWlyZSgnZnMnKS51bmxpbmtTeW5jKG1zaCk7IH0gY2F0Y2ggKG1zaGUpIHsgfQ0KDQogICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMuaW5jbHVkZXMoJy0tX2RlbGV0ZURhdGE9IjEiJykpDQogICAgew0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgKytpKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAocGFyYW1zW2ldLnN0YXJ0c1dpdGgoJ193b3JraW5nRGlyPScpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGRhdGFGb2xkZXIgPSBwYXJhbXNbaV0uc3BsaXQoJz0nKVsxXTsNCiAgICAgICAgICAgICAgICBpZiAoZGF0YUZvbGRlci5zdGFydHNXaXRoKCciJykpIHsgZGF0YUZvbGRlciA9IGRhdGFGb2xkZXIuc3Vic3RyaW5nKDEsIGRhdGFGb2xkZXIubGVuZ3RoIC0gMSk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChwYXJhbXNbaV0uc3RhcnRzV2l0aCgnX2FwcFByZWZpeD0nKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBhcHBQcmVmaXggPSBwYXJhbXNbaV0uc3BsaXQoJz0nKVsxXTsNCiAgICAgICAgICAgICAgICBpZiAoYXBwUHJlZml4LnN0YXJ0c1dpdGgoJyInKSkgeyBhcHBQcmVmaXggPSBhcHBQcmVmaXguc3Vic3RyaW5nKDEsIGFwcFByZWZpeC5sZW5ndGggLSAxKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyAgIC0+IFVuaW5zdGFsbGluZyBwcmV2aW91cyBpbnN0YWxsYXRpb24uLi4nKTsNCiAgICB0cnkNCiAgICB7DQogICAgICAgIHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIudW5pbnN0YWxsU2VydmljZShwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicgPyAnTWVzaCBBZ2VudCcgOiAnbWVzaGFnZW50Jyk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0RPTkVdXG4nKTsNCiAgICAgICAgaWYgKGRhdGFGb2xkZXIgJiYgYXBwUHJlZml4KQ0KICAgICAgICB7DQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gRGVsZXRpbmcgYWdlbnQgZGF0YS4uLicpOw0KICAgICAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gIT0gJ3dpbjMyJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgbGV2ZWxVcCA9IGRhdGFGb2xkZXIuc3BsaXQoJy8nKTsNCiAgICAgICAgICAgICAgICBsZXZlbFVwLnBvcCgpOw0KICAgICAgICAgICAgICAgIGxldmVsVXAgPSBsZXZlbFVwLmpvaW4oJy8nKTsNCg0KICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5leGVjRmlsZSgnL2Jpbi9zaCcsIFsnc2gnXSk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ2NkICcgKyBkYXRhRm9sZGVyICsgJ1xuJyk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkaW4ud3JpdGUoJ3JtICcgKyBhcHBQcmVmaXggKyAnLipcbicpOw0KICAgICAgICAgICAgICAgIGNoaWxkLnN0ZGluLndyaXRlKCdjZCAvXG4nKTsNCiAgICAgICAgICAgICAgICBjaGlsZC5zdGRpbi53cml0ZSgncm1kaXIgJyArIGRhdGFGb2xkZXIgKyAnXG4nKTsNCiAgICAgICAgICAgICAgICBjaGlsZC5zdGRpbi53cml0ZSgncm1kaXIgJyArIGxldmVsVXAgKyAnXG4nKTsNCiAgICAgICAgICAgICAgICBjaGlsZC5zdGRpbi53cml0ZSgnZXhpdFxuJyk7ICAgICAgIA0KICAgICAgICAgICAgICAgIGNoaWxkLndhaXRFeGl0KCk7ICAgIA0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBsZXZlbFVwID0gZGF0YUZvbGRlci5zcGxpdCgnXFwnKTsNCiAgICAgICAgICAgICAgICBsZXZlbFVwLnBvcCgpOw0KICAgICAgICAgICAgICAgIGxldmVsVXAgPSBsZXZlbFVwLmpvaW4oJ1xcJyk7DQogICAgICAgICAgICAgICAgdmFyIGNoaWxkID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWNGaWxlKHByb2Nlc3MuZW52Wyd3aW5kaXInXSArICdcXHN5c3RlbTMyXFxjbWQuZXhlJywgWycvQyBkZWwgIicgKyBkYXRhRm9sZGVyICsgJ1xcJyArIGFwcFByZWZpeCArICcuKiIgJiYgcm1kaXIgIicgKyBkYXRhRm9sZGVyICsgJyIgJiYgcm1kaXIgIicgKyBsZXZlbFVwICsgJyInXSk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgICAgICAgICAgICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZnVuY3Rpb24gKGMpIHsgfSk7DQogICAgICAgICAgICAgICAgY2hpbGQud2FpdEV4aXQoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRVJST1JdXG4nKTsNCiAgICB9DQoNCiAgICAvLyBDaGVjayBmb3Igc2Vjb25kYXJ5IGFnZW50DQogICAgdHJ5DQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gQ2hlY2tpbmcgZm9yIHNlY29uZGFyeSBhZ2VudC4uLicpOw0KICAgICAgICB2YXIgcyA9IHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIuZ2V0U2VydmljZSgnbWVzaGFnZW50RGlhZ25vc3RpYycpOw0KICAgICAgICB2YXIgbG9jID0gcy5hcHBMb2NhdGlvbigpOw0KICAgICAgICBzLmNsb3NlKCk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW0ZPVU5EXVxuJyk7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgICAgICAtPiBVbmluc3RhbGxpbmcgc2Vjb25kYXJ5IGFnZW50Li4uJyk7DQogICAgICAgIHNlY29uZGFyeWFnZW50ID0gdHJ1ZTsNCiAgICAgICAgdHJ5DQogICAgICAgIHsNCiAgICAgICAgICAgIHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIudW5pbnN0YWxsU2VydmljZSgnbWVzaGFnZW50RGlhZ25vc3RpYycpOw0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbRE9ORV1cbicpOw0KICAgICAgICB9DQogICAgICAgIGNhdGNoIChlKQ0KICAgICAgICB7DQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtFUlJPUl1cbicpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGNhdGNoIChlKQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbTk9ORV1cbicpOw0KICAgIH0NCg0KICAgIGlmKHNlY29uZGFyeWFnZW50KQ0KICAgIHsNCiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyAgICAgIC0+IHJlbW92aW5nIHNlY29uZGFyeSBhZ2VudCBmcm9tIHRhc2sgc2NoZWR1bGVyLi4uJyk7DQogICAgICAgIHZhciBwID0gcmVxdWlyZSgndGFzay1zY2hlZHVsZXInKS5kZWxldGUoJ21lc2hhZ2VudERpYWdub3N0aWMvcGVyaW9kaWNTdGFydCcpOw0KICAgICAgICBwLl9wYXJhbXMgPSBwYXJhbXM7DQogICAgICAgIHAudGhlbihmdW5jdGlvbiAoKQ0KICAgICAgICB7DQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtET05FXVxuJyk7DQogICAgICAgICAgICB1bmluc3RhbGxTZXJ2aWNlMyh0aGlzLl9wYXJhbXMpOw0KICAgICAgICB9LCBmdW5jdGlvbiAoKQ0KICAgICAgICB7DQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtFUlJPUl1cbicpOw0KICAgICAgICAgICAgdW5pbnN0YWxsU2VydmljZTModGhpcy5fcGFyYW1zKTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIHVuaW5zdGFsbFNlcnZpY2UzKHBhcmFtcyk7DQogICAgfQ0KfQ0KZnVuY3Rpb24gdW5pbnN0YWxsU2VydmljZShwYXJhbXMpDQp7DQogICAgdmFyIHN2YyA9IHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIuZ2V0U2VydmljZShwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicgPyAnTWVzaCBBZ2VudCcgOiAnbWVzaGFnZW50Jyk7DQogICAgdmFyIG1zaCA9IHN2Yy5hcHBMb2NhdGlvbigpOw0KICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicpDQogICAgew0KICAgICAgICBtc2ggPSBtc2guc3Vic3RyaW5nKDAsIG1zaC5sZW5ndGggLSA0KSArICcubXNoJzsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgbXNoID0gbXNoICsgJy5tc2gnOw0KICAgIH0NCg0KICAgIGlmIChzdmMuaXNSdW5uaW5nKCkpDQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gU3RvcHBpbmcgU2VydmljZS4uLicpOw0KICAgICAgICBpZihwcm9jZXNzLnBsYXRmb3JtPT0nd2luMzInKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdmMuc3RvcCgpLnRoZW4oZnVuY3Rpb24gKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtTVE9QUEVEXVxuJyk7DQogICAgICAgICAgICAgICAgc3ZjLmNsb3NlKCk7DQogICAgICAgICAgICAgICAgdW5pbnN0YWxsU2VydmljZTIodGhpcy5fcGFyYW1zLCBtc2gpOw0KICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtFUlJPUl1cbicpOw0KICAgICAgICAgICAgICAgIHN2Yy5jbG9zZSgpOw0KICAgICAgICAgICAgICAgIHVuaW5zdGFsbFNlcnZpY2UyKHRoaXMuX3BhcmFtcywgbXMpOw0KICAgICAgICAgICAgfSkucGFyZW50UHJvbWlzZS5fcGFyYW1zID0gcGFyYW1zOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT0gJ2RhcndpbicpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3ZjLnVubG9hZCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN2Yy5zdG9wKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtTVE9QUEVEXVxuJyk7DQogICAgICAgICAgICB1bmluc3RhbGxTZXJ2aWNlMihwYXJhbXMsIG1zaCk7DQogICAgICAgIH0NCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJykgeyBzdmMuY2xvc2UoKTsgfQ0KICAgICAgICB1bmluc3RhbGxTZXJ2aWNlMihwYXJhbXMsIG1zaCk7DQogICAgfQ0KfQ0KZnVuY3Rpb24gc2VydmljZUV4aXN0cyhsb2MsIHBhcmFtcykNCnsNCiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtGT1VORDogJyArIGxvYyArICddXG4nKTsNCiAgICBpZihwcm9jZXNzLnBsYXRmb3Jt", 16000); + memcpy_s(_agentinstaller + 16000, 5060, "ID09ICd3aW4zMicpDQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnICAgLT4gQ2hlY2tpbmcgZmlyZXdhbGwgcnVsZXMgZm9yIHByZXZpb3VzIGluc3RhbGxhdGlvbi4uLicpOw0KICAgICAgICByZXF1aXJlKCd3aW4tZmlyZXdhbGwnKS5yZW1vdmVGaXJld2FsbFJ1bGUoeyBwcm9ncmFtOiBsb2MgfSkudGhlbihmdW5jdGlvbiAoKQ0KICAgICAgICB7DQogICAgICAgICAgICAvLyBTVUNDRVNTDQogICAgICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtERUxFVEVEXVxuJyk7DQogICAgICAgICAgICB1bmluc3RhbGxTZXJ2aWNlKHRoaXMuX3BhcmFtcyk7DQogICAgICAgIH0sIGZ1bmN0aW9uICgpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIEZBSUxFRA0KICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJyBbTm8gUnVsZXMgRm91bmRdXG4nKTsNCiAgICAgICAgICAgIHVuaW5zdGFsbFNlcnZpY2UodGhpcy5fcGFyYW1zKTsNCiAgICAgICAgfSkucGFyZW50UHJvbWlzZS5fcGFyYW1zID0gcGFyYW1zOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICB1bmluc3RhbGxTZXJ2aWNlKHBhcmFtcyk7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBmdWxsVW5pbnN0YWxsKGpzb25TdHJpbmcpDQp7DQogICAgY29uc29sZS5zZXREZXN0aW5hdGlvbihjb25zb2xlLkRlc3RpbmF0aW9ucy5ESVNBQkxFRCk7DQogICAgdmFyIHBhcm1zID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTsNCiAgICBwYXJtcy5wdXNoKCdfc3RvcCcpOw0KDQogICAgdHJ5DQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnLi4uQ2hlY2tpbmcgZm9yIHByZXZpb3VzIGluc3RhbGxhdGlvbicpOw0KICAgICAgICB2YXIgcyA9IHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIuZ2V0U2VydmljZShwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicgPyAnTWVzaCBBZ2VudCcgOiAnbWVzaGFnZW50Jyk7DQogICAgICAgIHZhciBsb2MgPSBzLmFwcExvY2F0aW9uKCk7DQogICAgICAgIHZhciBhcHBQcmVmaXggPSBsb2Muc3BsaXQocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInID8gJ1xcJyA6ICcvJykucG9wKCk7DQogICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicpIHsgYXBwUHJlZml4ID0gYXBwUHJlZml4LnN1YnN0cmluZygwLCBhcHBQcmVmaXgubGVuZ3RoIC0gNCk7IH0NCg0KICAgICAgICBwYXJtcy5wdXNoKCdfd29ya2luZ0Rpcj0nICsgcy5hcHBXb3JraW5nRGlyZWN0b3J5KCkpOw0KICAgICAgICBwYXJtcy5wdXNoKCdfYXBwUHJlZml4PScgKyBhcHBQcmVmaXgpOw0KDQogICAgICAgIHMuY2xvc2UoKTsNCiAgICB9DQogICAgY2F0Y2ggKGUpDQogICAgew0KICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnIFtOT05FXVxuJyk7DQogICAgICAgIHByb2Nlc3MuZXhpdCgpOw0KICAgIH0NCiAgICBzZXJ2aWNlRXhpc3RzKGxvYywgcGFybXMpOw0KfQ0KDQpmdW5jdGlvbiBmdWxsSW5zdGFsbChqc29uU3RyaW5nKQ0Kew0KICAgIGNvbnNvbGUuc2V0RGVzdGluYXRpb24oY29uc29sZS5EZXN0aW5hdGlvbnMuRElTQUJMRUQpOw0KICAgIHZhciBwYXJtcyA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7DQoNCiAgICB0cnkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcuLi5DaGVja2luZyBmb3IgcHJldmlvdXMgaW5zdGFsbGF0aW9uJyk7DQogICAgICAgIHZhciBzID0gcmVxdWlyZSgnc2VydmljZS1tYW5hZ2VyJykubWFuYWdlci5nZXRTZXJ2aWNlKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdNZXNoIEFnZW50JyA6ICdtZXNoYWdlbnQnKTsNCiAgICAgICAgdmFyIGxvYyA9IHMuYXBwTG9jYXRpb24oKTsNCiAgICAgICAgcy5jbG9zZSgpOw0KICAgIH0NCiAgICBjYXRjaCAoZSkNCiAgICB7DQogICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCcgW05PTkVdXG4nKTsNCiAgICAgICAgaW5zdGFsbFNlcnZpY2UocGFybXMpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIHNlcnZpY2VFeGlzdHMobG9jLCBwYXJtcyk7DQp9DQoNCg0KbW9kdWxlLmV4cG9ydHMgPQ0KICAgIHsNCiAgICAgICAgZnVsbEluc3RhbGw6IGZ1bGxJbnN0YWxsLA0KICAgICAgICBmdWxsVW5pbnN0YWxsOiBmdWxsVW5pbnN0YWxsDQogICAgfTsNCg0KaWYgKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJykNCnsNCiAgICBmdW5jdGlvbiB3aW5fdXBkYXRlKCkNCiAgICB7DQogICAgICAgIGNvbnNvbGUuc2V0RGVzdGluYXRpb24oY29uc29sZS5EZXN0aW5hdGlvbnMuTE9HRklMRSk7DQogICAgICAgIHZhciB1cGRhdGVMb2NhdGlvbiA9IHByb2Nlc3MuYXJndlsxXS5zdWJzdHJpbmcoOCk7DQogICAgICAgIHZhciBzZXJ2aWNlID0gbnVsbDsNCiAgICAgICAgdmFyIHNlcnZpY2VMb2NhdGlvbiA9ICIiOw0KDQogICAgICAgIGlmKCFnbG9iYWwuX2ludGVydmFsKQ0KICAgICAgICB7DQogICAgICAgICAgICBnbG9iYWwuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwod2luX3VwZGF0ZSwgNjAwMDApOw0KICAgICAgICB9DQoNCiAgICAgICAgdHJ5DQogICAgICAgIHsNCiAgICAgICAgICAgIHNlcnZpY2UgPSByZXF1aXJlKCdzZXJ2aWNlLW1hbmFnZXInKS5tYW5hZ2VyLmdldFNlcnZpY2UoJ01lc2ggQWdlbnQnKTsNCiAgICAgICAgICAgIHNlcnZpY2VMb2NhdGlvbiA9IHNlcnZpY2UuYXBwTG9jYXRpb24oKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaChlKQ0KICAgICAgICB7DQogICAgICAgICAgICBjb25zb2xlLmxvZygnU2VydmljZSBNYW5hZ2VyIEVycm9yOiAnICsgZSk7DQogICAgICAgICAgICBjb25zb2xlLmxvZygnVHJ5aW5nIGFnYWluIGluIG9uZSBtaW51dGUuLi4nKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIHNlcnZpY2Uuc3RvcCgpLmZpbmFsbHkoZnVuY3Rpb24gKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVxdWlyZSgncHJvY2Vzcy1tYW5hZ2VyJykuZW51bWVyYXRlUHJvY2Vzc2VzKCkudGhlbihmdW5jdGlvbiAocHJvYykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIHByb2MpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAocHJvY1twXS5wYXRoID09IHNlcnZpY2VMb2NhdGlvbikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHByb2NbcF0ucGlkKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSgnZnMnKS5jb3B5RmlsZVN5bmMocHJvY2Vzcy5leGVjUGF0aCwgdXBkYXRlTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjYXRjaCAoY2UpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGNvcHkgZmlsZS4uIFRyeWluZyBhZ2FpbiBpbiA2MCBzZWNvbmRzJyk7DQogICAgICAgICAgICAgICAgICAgIHNlcnZpY2UuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHNlcnZpY2Uuc3RhcnQoKTsNCiAgICAgICAgICAgICAgICBwcm9jZXNzLl9leGl0KCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIG1vZHVsZS5leHBvcnRzLnVwZGF0ZSA9IHdpbl91cGRhdGU7DQp9", 5060); + ILibBase64DecodeEx((unsigned char*)_agentinstaller, 21060, (unsigned char*)_agentinstaller + 21060); + duk_push_global_object(ctx); duk_get_prop_string(ctx, -1, "addModule"); duk_swap_top(ctx, -2); duk_push_string(ctx, "agent-installer"); duk_push_string(ctx, _agentinstaller + 21060); duk_pcall_method(ctx, 2); duk_pop(ctx); free(_agentinstaller); diff --git a/modules/agent-installer.js b/modules/agent-installer.js index b97a4e0..b058847 100644 --- a/modules/agent-installer.js +++ b/modules/agent-installer.js @@ -194,13 +194,15 @@ function uninstallService3(params) } } -function uninstallService2(params) +function uninstallService2(params, msh) { var secondaryagent = false; var i; var dataFolder = null; var appPrefix = null; + try { require('fs').unlinkSync(msh); } catch (mshe) { } + if (params && params.includes('--_deleteData="1"')) { for (i = 0; i < params.length; ++i) @@ -310,6 +312,16 @@ function uninstallService2(params) function uninstallService(params) { var svc = require('service-manager').manager.getService(process.platform == 'win32' ? 'Mesh Agent' : 'meshagent'); + var msh = svc.appLocation(); + if (process.platform == 'win32') + { + msh = msh.substring(0, msh.length - 4) + '.msh'; + } + else + { + msh = msh + '.msh'; + } + if (svc.isRunning()) { process.stdout.write(' -> Stopping Service...'); @@ -319,12 +331,12 @@ function uninstallService(params) { process.stdout.write(' [STOPPED]\n'); svc.close(); - uninstallService2(this._params); + uninstallService2(this._params, msh); }, function () { process.stdout.write(' [ERROR]\n'); svc.close(); - uninstallService2(this._params); + uninstallService2(this._params, ms); }).parentPromise._params = params; } else @@ -338,13 +350,13 @@ function uninstallService(params) svc.stop(); } process.stdout.write(' [STOPPED]\n'); - uninstallService2(params); + uninstallService2(params, msh); } } else { if (process.platform == 'win32') { svc.close(); } - uninstallService2(params); + uninstallService2(params, msh); } } function serviceExists(loc, params)