UNPKG

@cloudbase/app

Version:
156 lines 24.8 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { ERROR, SECRET_TYPE } from './constants'; import { checkIsInScf, getEnv } from './utils'; export function parseContext(context) { if (typeof context !== 'object') { throw __assign(__assign({}, ERROR.INVALID_CONTEXT), { message: 'context 必须为对象类型' }); } var parseResult = {}; var memory_limit_in_mb = context.memory_limit_in_mb, time_limit_in_ms = context.time_limit_in_ms, request_id = context.request_id, function_version = context.function_version, namespace = context.namespace, function_name = context.function_name, environ = context.environ, environment = context.environment; try { parseResult.memoryLimitInMb = memory_limit_in_mb; parseResult.timeLimitIns = time_limit_in_ms; parseResult.requestId = request_id; parseResult.functionVersion = function_version; parseResult.namespace = namespace; parseResult.functionName = function_name; if (environment) { parseResult.environment = JSON.parse(environment); } else { var parseEnviron = environ === null || environ === void 0 ? void 0 : environ.split(';'); var parseEnvironObj = {}; for (var i in parseEnviron) { if (parseEnviron[i].includes('=')) { var equalIndex = parseEnviron[i].indexOf('='); var key = parseEnviron[i].slice(0, equalIndex); var value = parseEnviron[i].slice(equalIndex + 1); if (value.indexOf(',') >= 0) { value = value.split(','); } parseEnvironObj[key] = value; } } parseResult.environ = parseEnvironObj; } } catch (_err) { throw __assign({}, ERROR.INVALID_CONTEXT); } return parseResult; } export var getCloudbaseContext = function (context) { if (checkIsInScf()) { if (!getEnv('TENCENTCLOUD_REGION')) { console.error('[TCB][ERROR] missing `TENCENTCLOUD_REGION` environment'); } if (!getEnv('SCF_NAMESPACE')) { console.error('[TCB][ERROR] missing `SCF_NAMESPACE` environment'); } } var envObj = getEnv(); var envFromProcessEnv = { TRIGGER_SRC: envObj.TRIGGER_SRC, _SCF_TCB_LOG: envObj._SCF_TCB_LOG, SCF_NAMESPACE: envObj.SCF_NAMESPACE, TENCENTCLOUD_RUNENV: envObj.TENCENTCLOUD_RUNENV, TENCENTCLOUD_SECRETID: envObj.TENCENTCLOUD_SECRETID, TENCENTCLOUD_SECRETKEY: envObj.TENCENTCLOUD_SECRETKEY, TENCENTCLOUD_SESSIONTOKEN: envObj.TENCENTCLOUD_SESSIONTOKEN, WX_CONTEXT_KEYS: envObj.WX_CONTEXT_KEYS, WX_TRIGGER_API_TOKEN_V0: envObj.WX_TRIGGER_API_TOKEN_V0, WX_CLIENTIP: envObj.WX_CLIENTIP, WX_CLIENTIPV6: envObj.WX_CLIENTIPV6, TCB_CONTEXT_KEYS: envObj.TCB_CONTEXT_KEYS, TCB_CONTEXT_CNFG: envObj.TCB_CONTEXT_CNFG, LOGINTYPE: envObj.LOGINTYPE, }; var envFromContext = {}; if (context) { var _a = parseContext(context), environment = _a.environment, environ = _a.environ; envFromContext = environment || environ || {}; } var tcbContextKeys = envFromContext.TCB_CONTEXT_KEYS || envObj.TCB_CONTEXT_KEYS; var wxContextKeys = envFromContext.WX_CONTEXT_KEYS || envObj.WX_CONTEXT_KEYS; if (tcbContextKeys) { try { var tcbKeysList = tcbContextKeys.split(','); for (var _i = 0, tcbKeysList_1 = tcbKeysList; _i < tcbKeysList_1.length; _i++) { var item = tcbKeysList_1[_i]; envFromProcessEnv[item] = envFromContext[item] || getEnv(item); } } catch (_e) { } } if (wxContextKeys) { try { var wxKeysList = wxContextKeys.split(','); for (var _b = 0, wxKeysList_1 = wxKeysList; _b < wxKeysList_1.length; _b++) { var item = wxKeysList_1[_b]; envFromProcessEnv[item] = envFromContext[item] || getEnv(item); } } catch (_e) { } } var allContext = __assign(__assign({}, envFromProcessEnv), envFromContext); var finalContext = {}; for (var key in allContext) { if (allContext[key] !== undefined) { finalContext[key] = allContext[key]; } } return finalContext; }; export var INIT_CONFIG = {}; export var getSecretInfo = function (config) { var _a, _b, _c, _d, _f, _g; INIT_CONFIG = JSON.parse(JSON.stringify(config || {})); var _h = getCloudbaseContext(), TCB_ENV = _h.TCB_ENV, SCF_NAMESPACE = _h.SCF_NAMESPACE; var env = (config === null || config === void 0 ? void 0 : config.env) || TCB_ENV || SCF_NAMESPACE || ''; var defaultInfo = { env: env, secretId: '', secretKey: '', sessionToken: '', accessKey: '', secretType: '', }; if (config === null || config === void 0 ? void 0 : config.accessKey) { return defaultInfo; } if (((_a = config === null || config === void 0 ? void 0 : config.auth) === null || _a === void 0 ? void 0 : _a.secretId) && ((_b = config === null || config === void 0 ? void 0 : config.auth) === null || _b === void 0 ? void 0 : _b.secretKey)) { return __assign(__assign({}, defaultInfo), { secretId: config.auth.secretId, secretKey: config.auth.secretKey, secretType: SECRET_TYPE.SECRET }); } var secretEnv = getEnv(); var TENCENTCLOUD_SECRETID = secretEnv.TENCENTCLOUD_SECRETID; var TENCENTCLOUD_SECRETKEY = secretEnv.TENCENTCLOUD_SECRETKEY; var TENCENTCLOUD_SESSIONTOKEN = secretEnv.TENCENTCLOUD_SESSIONTOKEN; var CLOUDBASE_APIKEY = secretEnv.CLOUDBASE_APIKEY; if (CLOUDBASE_APIKEY) { return __assign(__assign({}, defaultInfo), { accessKey: CLOUDBASE_APIKEY }); } if (TENCENTCLOUD_SECRETID && TENCENTCLOUD_SECRETKEY) { return __assign(__assign({}, defaultInfo), { secretId: TENCENTCLOUD_SECRETID, secretKey: TENCENTCLOUD_SECRETKEY, sessionToken: TENCENTCLOUD_SESSIONTOKEN || '', secretType: SECRET_TYPE.SESSION_SECRET }); } if ((_c = config === null || config === void 0 ? void 0 : config.context) === null || _c === void 0 ? void 0 : _c.extendedContext) { var extendedContext = config.context.extendedContext; if (!env) { env = extendedContext.envId || ''; } return __assign(__assign({}, defaultInfo), { secretId: ((_d = extendedContext === null || extendedContext === void 0 ? void 0 : extendedContext.tmpSecret) === null || _d === void 0 ? void 0 : _d.secretId) || '', secretKey: ((_f = extendedContext === null || extendedContext === void 0 ? void 0 : extendedContext.tmpSecret) === null || _f === void 0 ? void 0 : _f.secretKey) || '', sessionToken: ((_g = extendedContext === null || extendedContext === void 0 ? void 0 : extendedContext.tmpSecret) === null || _g === void 0 ? void 0 : _g.token) || '' }); } return __assign({}, defaultInfo); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXItbm9kZS9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFZOUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFzQjtJQUNqRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtRQUMvQiw0QkFBVyxLQUFLLENBQUMsZUFBZSxLQUFFLE9BQU8sRUFBRSxpQkFBaUIsSUFBRTtLQUMvRDtJQUVELElBQU0sV0FBVyxHQUFRLEVBQUUsQ0FBQTtJQUd6QixJQUFBLGtCQUFrQixHQVNoQixPQUFPLG1CQVRTLEVBQ2xCLGdCQUFnQixHQVFkLE9BQU8saUJBUk8sRUFDaEIsVUFBVSxHQU9SLE9BQU8sV0FQQyxFQUNWLGdCQUFnQixHQU1kLE9BQU8saUJBTk8sRUFDaEIsU0FBUyxHQUtQLE9BQU8sVUFMQSxFQUNULGFBQWEsR0FJWCxPQUFPLGNBSkksRUFFYixPQUFPLEdBRUwsT0FBTyxRQUZGLEVBQ1AsV0FBVyxHQUNULE9BQU8sWUFERSxDQUNGO0lBRVgsSUFBSTtRQUNGLFdBQVcsQ0FBQyxlQUFlLEdBQUcsa0JBQWtCLENBQUE7UUFDaEQsV0FBVyxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQTtRQUMzQyxXQUFXLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQTtRQUNsQyxXQUFXLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFBO1FBQzlDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQ2pDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFBO1FBRXhDLElBQUksV0FBVyxFQUFFO1lBRWYsV0FBVyxDQUFDLFdBQVcsR0FB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cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLW11dGFibGUtZXhwb3J0cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHsgRVJST1IsIFNFQ1JFVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBjaGVja0lzSW5TY2YsIGdldEVudiB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IElDb250ZXh0UGFyYW0sIElDb21wbGV0ZUNsb3VkYmFzZUNvbnRleHQgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5cbi8qKlxuICog6Kej5p6Q5bm25qCh6aqM5LqR5Ye95pWw5YWl5Y+j55qEIENvbnRleHQg5Y+C5pWwXG4gKiDlsIbkuIvliJLnur/lkb3lkI3nmoTlrZfmrrXovazkuLrpqbzls7DmoLzlvI/vvIzlubbop6PmnpDnjq/looPlj5jph49cbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIOS6keWHveaVsOWFpeWPo+S8oOWFpeeahCBjb250ZXh0IOWvueixoVxuICogQHJldHVybnMg6Kej5p6Q5ZCO55qE5LiK5LiL5paH5a+56LGh77yM5YyF5ZCrIGVudmlyb25tZW5077yI5paw5p625p6E77yJ5oiWIGVudmlyb27vvIjogIHmnrbmnoTvvIlcbiAqIEB0aHJvd3MgSU5WQUxJRF9DT05URVhUIC0gY29udGV4dCDkuI3mmK/lr7nosaHmiJbop6PmnpDlpLHotKXml7ZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29udGV4dChjb250ZXh0OiBJQ29udGV4dFBhcmFtKSB7XG4gIGlmICh0eXBlb2YgY29udGV4dCAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyB7IC4uLkVSUk9SLklOVkFMSURfQ09OVEVYVCwgbWVzc2FnZTogJ2NvbnRleHQg5b+F6aG75Li65a+56LGh57G75Z6LJyB9XG4gIH1cblxuICBjb25zdCBwYXJzZVJlc3VsdDogYW55ID0ge31cblxuICBjb25zdCB7XG4gICAgbWVtb3J5X2xpbWl0X2luX21iLFxuICAgIHRpbWVfbGltaXRfaW5fbXMsXG4gICAgcmVxdWVzdF9pZCxcbiAgICBmdW5jdGlvbl92ZXJzaW9uLFxuICAgIG5hbWVzcGFjZSxcbiAgICBmdW5jdGlvbl9uYW1lLFxuXG4gICAgZW52aXJvbixcbiAgICBlbnZpcm9ubWVudCxcbiAgfSA9IGNvbnRleHRcblxuICB0cnkge1xuICAgIHBhcnNlUmVzdWx0Lm1lbW9yeUxpbWl0SW5NYiA9IG1lbW9yeV9saW1pdF9pbl9tYlxuICAgIHBhcnNlUmVzdWx0LnRpbWVMaW1pdElucyA9IHRpbWVfbGltaXRfaW5fbXNcbiAgICBwYXJzZVJlc3VsdC5yZXF1ZXN0SWQgPSByZXF1ZXN0X2lkXG4gICAgcGFyc2VSZXN1bHQuZnVuY3Rpb25WZXJzaW9uID0gZnVuY3Rpb25fdmVyc2lvblxuICAgIHBhcnNlUmVzdWx0Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZVxuICAgIHBhcnNlUmVzdWx0LmZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uX25hbWVcblxuICAgIGlmIChlbnZpcm9ubWVudCkge1xuICAgICAgLy8g5paw5p625p6E77yaZW52aXJvbm1lbnQg5Li6IEpTT04g5a2X56ym5Liy77yM55u05o6l6Kej5p6QXG4gICAgICBwYXJzZVJlc3VsdC5lbnZpcm9ubWVudCA9IEpTT04ucGFyc2UoZW52aXJvbm1lbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE86IOiAg+iZkeenu+mZpOiAgeaetuaehOeahOWFvOWuuemAu+i+kVxuICAgICAgLy8g6ICB5p625p6E77yaZW52aXJvbiDkuLrliIblj7fliIbpmpTnmoQga2V5PXZhbHVlIOWtl+espuS4slxuICAgICAgLy8g5a2Y5ZyoIGJ1Z++8mnZhbHVlIOWQq+eJueauiuWtl+espuaXtuWPr+iDveW9seWTjeino+aekFxuICAgICAgY29uc3QgcGFyc2VFbnZpcm9uOiBhbnkgPSBlbnZpcm9uPy5zcGxpdCgnOycpXG4gICAgICBjb25zdCBwYXJzZUVudmlyb25PYmo6IGFueSA9IHt9XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZm9yLWluLWFycmF5XG4gICAgICBmb3IgKGNvbnN0IGkgaW4gcGFyc2VFbnZpcm9uKSB7XG4gICAgICAgIGlmIChwYXJzZUVudmlyb25baV0uaW5jbHVkZXMoJz0nKSkge1xuICAgICAgICAgIC8vIOWPquaMieesrOS4gOS4qiA9IOWIh+WJsu+8jOS/neeVmSB2YWx1ZSDkuK3nmoQgPVxuICAgICAgICAgIGNvbnN0IGVxdWFsSW5kZXggPSBwYXJzZUVudmlyb25baV0uaW5kZXhPZignPScpXG4gICAgICAgICAgY29uc3Qga2V5ID0gcGFyc2VFbnZpcm9uW2ldLnNsaWNlKDAsIGVxdWFsSW5kZXgpXG4gICAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBwYXJzZUVudmlyb25baV0uc2xpY2UoZXF1YWxJbmRleCArIDEpXG5cbiAgICAgICAgICAvLyB2YWx1ZSDlkKvpgJflj7fml7bop4bkuLrmlbDnu4RcbiAgICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignLCcpID49IDApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJywnKVxuICAgICAgICAgIH1cbiAgICAgICAgICBwYXJzZUVudmlyb25PYmpba2V5XSA9IHZhbHVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcGFyc2VSZXN1bHQuZW52aXJvbiA9IHBhcnNlRW52aXJvbk9ialxuICAgIH1cbiAgfSBjYXRjaCAoX2VycjogYW55KSB7XG4gICAgdGhyb3cgeyAuLi5FUlJPUi5JTlZBTElEX0NPTlRFWFQgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlUmVzdWx0XG59XG5cbi8qKlxuICog6I635Y+W5b2T5YmN5LqR5Ye95pWw5YaF55qE5omA5pyJ546v5aKD5Y+Y6YePXG4gKiDnu5/kuIDku44gcHJvY2Vzcy5lbnYg5ZKMIGNvbnRleHQg5Lik5Liq5p2l5rqQ5ZCI5bm25Y+W5YC8XG4gKlxuICog5Y+W5YC85LyY5YWI57qn77yaY29udGV4dCA+IHByb2Nlc3MuZW52XG4gKiDpgJrov4cgVENCX0NPTlRFWFRfS0VZUyAvIFdYX0NPTlRFWFRfS0VZUyDliqjmgIHmianlsZXpnIDopoHor7vlj5bnmoTnjq/looPlj5jph4/liJfooahcbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIOWPr+mAie+8jOS6keWHveaVsOWFpeWPo+eahCBjb250ZXh0IOWPguaVsFxuICogQHJldHVybnMg5ZCI5bm25ZCO55qE5a6M5pW0546v5aKD5Y+Y6YeP5LiK5LiL5paHXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDbG91ZGJhc2VDb250ZXh0ID0gKGNvbnRleHQ/OiBJQ29udGV4dFBhcmFtKTogSUNvbXBsZXRlQ2xvdWRiYXNlQ29udGV4dCA9PiB7XG4gIC8vIOS6keWHveaVsOeOr+Wig+S4i+agoemqjOW/heimgeeOr+Wig+WPmOmHj1xuICBpZiAoY2hlY2tJc0luU2NmKCkpIHtcbiAgICBpZiAoIWdldEVudignVEVOQ0VOVENMT1VEX1JFR0lPTicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbVENCXVtFUlJPUl0gbWlzc2luZyBgVEVOQ0VOVENMT1VEX1JFR0lPTmAgZW52aXJvbm1lbnQnKVxuICAgIH1cbiAgICBpZiAoIWdldEVudignU0NGX05BTUVTUEFDRScpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbVENCXVtFUlJPUl0gbWlzc2luZyBgU0NGX05BTUVTUEFDRWAgZW52aXJvbm1lbnQnKVxuICAgIH1cbiAgfVxuXG4gIC8vIOesrOS4gOatpe+8muS7jiBwcm9jZXNzLmVudiDor7vlj5bln7rnoYDnjq/looPlj5jph49cbiAgY29uc3QgZW52T2JqID0gZ2V0RW52KClcbiAgY29uc3QgZW52RnJvbVByb2Nlc3NFbnY6IGFueSA9IHtcbiAgICBUUklHR0VSX1NSQzogZW52T2JqLlRSSUdHRVJfU1JDLFxuICAgIF9TQ0ZfVENCX0xPRzogZW52T2JqLl9TQ0ZfVENCX0xPRyxcbiAgICBTQ0ZfTkFNRVNQQUNFOiBlbnZPYmouU0NGX05BTUVTUEFDRSxcbiAgICBURU5DRU5UQ0xPVURfUlVORU5WOiBlbnZPYmouVEVOQ0VOVENMT1VEX1JVTkVOVixcbiAgICBURU5DRU5UQ0xPVURfU0VDUkVUSUQ6IGVudk9iai5URU5DRU5UQ0xPVURfU0VDUkVUSUQsXG4gICAgVEVOQ0VOVENMT1VEX1NFQ1JFVEtFWTogZW52T2JqLlRFTkNFTlRDTE9VRF9TRUNSRVRLRVksXG4gICAgVEVOQ0VOVENMT1VEX1NFU1NJT05UT0tFTjogZW52T2JqLlRFTkNFTlRDTE9VRF9TRVNTSU9OVE9LRU4sXG4gICAgV1hfQ09OVEVYVF9LRVlTOiBlbnZPYmouV1hfQ09OVEVYVF9LRVlTLFxuICAgIFdYX1RSSUdHRVJfQVBJX1RPS0VOX1YwOiBlbnZPYmouV1hfVFJJR0dFUl9BUElfVE9LRU5fVjAsXG4gICAgV1hfQ0xJRU5USVA6IGVudk9iai5XWF9DTElFTlRJUCxcbiAgICBXWF9DTElFTlRJUFY2OiBlbnZPYmouV1hfQ0xJRU5USVBWNixcbiAgICBUQ0JfQ09OVEVYVF9LRVlTOiBlbnZPYmouVENCX0NPTlRFWFRfS0VZUyxcbiAgICBUQ0JfQ09OVEVYVF9DTkZHOiBlbnZPYmouVENCX0NPTlRFWFRfQ05GRyxcbiAgICBMT0dJTlRZUEU6IGVudk9iai5MT0dJTlRZUEUsXG4gIH1cblxuICAvLyDnrKzkuozmraXvvJrku44gY29udGV4dCDkuK3op6PmnpDnjq/looPlj5jph49cbiAgbGV0IGVudkZyb21Db250ZXh0OiBhbnkgPSB7fVxuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnN0IHsgZW52aXJvbm1lbnQsIGVudmlyb24gfSA9IHBhcnNlQ29udGV4dChjb250ZXh0KVxuICAgIGVudkZyb21Db250ZXh0ID0gZW52aXJvbm1lbnQgfHwgZW52aXJvbiB8fCB7fVxuICB9XG5cbiAgLy8g56ys5LiJ5q2l77ya5qC55o2uIENPTlRFWFRfS0VZUyDliqjmgIHmianlsZXlj5jph4/liJfooajvvIjkvJjlhYjlj5YgY29udGV4dCDkuK3nmoTlgLzvvIlcbiAgY29uc3QgdGNiQ29udGV4dEtleXMgPSBlbnZGcm9tQ29udGV4dC5UQ0JfQ09OVEVYVF9LRVlTIHx8IGVudk9iai5UQ0JfQ09OVEVYVF9LRVlTXG4gIGNvbnN0IHd4Q29udGV4dEtleXMgPSBlbnZGcm9tQ29udGV4dC5XWF9DT05URVhUX0tFWVMgfHwgZW52T2JqLldYX0NPTlRFWFRfS0VZU1xuXG4gIGlmICh0Y2JDb250ZXh0S2V5cykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0Y2JLZXlzTGlzdCA9IHRjYkNvbnRleHRLZXlzLnNwbGl0KCcsJylcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0Y2JLZXlzTGlzdCkge1xuICAgICAgICBlbnZGcm9tUHJvY2Vzc0VudltpdGVtXSA9IGVudkZyb21Db250ZXh0W2l0ZW1dIHx8IGdldEVudihpdGVtKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lKSB7XG4gICAgICAvL1xuICAgIH1cbiAgfVxuXG4gIGlmICh3eENvbnRleHRLZXlzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHd4S2V5c0xpc3QgPSB3eENvbnRleHRLZXlzLnNwbGl0KCcsJylcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB3eEtleXNMaXN0KSB7XG4gICAgICAgIGVudkZyb21Qcm9jZXNzRW52W2l0ZW1dID0gZW52RnJvbUNvbnRleHRbaXRlbV0gfHwgZ2V0RW52KGl0ZW0pXG4gICAgICB9XG4gICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgLy8g56ys5Zub5q2l77ya5ZCI5bm25omA5pyJ5p2l5rqQ77yMY29udGV4dCDnmoTlgLzopobnm5YgcHJvY2Vzcy5lbnbvvIzov4fmu6QgdW5kZWZpbmVkXG4gIGNvbnN0IGFsbENvbnRleHQgPSB7IC4uLmVudkZyb21Qcm9jZXNzRW52LCAuLi5lbnZGcm9tQ29udGV4dCB9XG5cbiAgY29uc3QgZmluYWxDb250ZXh0OiBhbnkgPSB7fVxuICBmb3IgKGNvbnN0IGtleSBpbiBhbGxDb250ZXh0KSB7XG4gICAgaWYgKGFsbENvbnRleHRba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaW5hbENvbnRleHRba2V5XSA9IGFsbENvbnRleHRba2V5XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaW5hbENvbnRleHRcbn1cblxuLyoqIOe8k+WtmCBleHRlbmRlZENvbnRleHTvvIzkvpvlhbbku5bmqKHlnZfor7vlj5bvvIjlpoIgdG9vbC50cyDkuK3ojrflj5YgdXNlcklk77yJICovXG5leHBvcnQgbGV0IElOSVRfQ09ORklHOiBJQ2xvdWRiYXNlQ29uZmlnID0ge30gYXMgdW5rbm93biBhcyBJQ2xvdWRiYXNlQ29uZmlnXG5cbi8qKlxuICog5LuO546v5aKD5Y+Y6YeP5Lit6I635Y+W6IW+6K6v5LqR5Li05pe25a+G6ZKl5L+h5oGvXG4gKiDnlKjkuo4gQVBJIOivt+axguetvuWQjVxuICovXG5leHBvcnQgY29uc3QgZ2V0U2VjcmV0SW5mbyA9IChjb25maWc/OiBJQ2xvdWRiYXNlQ29uZmlnKSA9PiB7XG4gIElOSVRfQ09ORklHID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjb25maWcgfHwge30pKVxuXG4gIGNvbnN0IHsgVENCX0VOViwgU0NGX05BTUVTUEFDRSB9ID0gZ2V0Q2xvdWRiYXNlQ29udGV4dCgpXG5cbiAgbGV0IGVudiA9IGNvbmZpZz8uZW52IHx8IFRDQl9FTlYgfHwgU0NGX05BTUVTUEFDRSB8fCAnJ1xuICBjb25zdCBkZWZhdWx0SW5mbyA9IHtcbiAgICBlbnYsXG4gICAgc2VjcmV0SWQ6ICcnLFxuICAgIHNlY3JldEtleTogJycsXG4gICAgc2Vzc2lvblRva2VuOiAnJyxcbiAgICBhY2Nlc3NLZXk6ICcnLFxuICAgIHNlY3JldFR5cGU6ICcnLFxuICB9XG5cbiAgaWYgKGNvbmZpZz8uYWNjZXNzS2V5KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRJbmZvXG4gIH1cblxuICBpZiAoY29uZmlnPy5hdXRoPy5zZWNyZXRJZCAmJiBjb25maWc/LmF1dGg/LnNlY3JldEtleSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0SW5mbyxcbiAgICAgIHNlY3JldElkOiBjb25maWcuYXV0aC5zZWNyZXRJZCxcbiAgICAgIHNlY3JldEtleTogY29uZmlnLmF1dGguc2VjcmV0S2V5LFxuICAgICAgc2VjcmV0VHlwZTogU0VDUkVUX1RZUEUuU0VDUkVULFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNlY3JldEVudiA9IGdldEVudigpXG4gIGNvbnN0IHsgVEVOQ0VOVENMT1VEX1NFQ1JFVElEIH0gPSBzZWNyZXRFbnZcbiAgY29uc3QgeyBURU5DRU5UQ0xPVURfU0VDUkVUS0VZIH0gPSBzZWNyZXRFbnZcbiAgY29uc3QgeyBURU5DRU5UQ0xPVURfU0VTU0lPTlRPS0VOIH0gPSBzZWNyZXRFbnZcbiAgY29uc3QgeyBDTE9VREJBU0VfQVBJS0VZIH0gPSBzZWNyZXRFbnZcblxuICBpZiAoQ0xPVURCQVNFX0FQSUtFWSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0SW5mbyxcbiAgICAgIGFjY2Vzc0tleTogQ0xPVURCQVNFX0FQSUtFWSxcbiAgICB9XG4gIH1cblxuICBpZiAoVEVOQ0VOVENMT1VEX1NFQ1JFVElEICYmIFRFTkNFTlRDTE9VRF9TRUNSRVRLRVkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdEluZm8sXG4gICAgICBzZWNyZXRJZDogVEVOQ0VOVENMT1VEX1NFQ1JFVElELFxuICAgICAgc2VjcmV0S2V5OiBURU5DRU5UQ0xPVURfU0VDUkVUS0VZLFxuICAgICAgc2Vzc2lvblRva2VuOiBURU5DRU5UQ0xPVURfU0VTU0lPTlRPS0VOIHx8ICcnLFxuICAgICAgc2VjcmV0VHlwZTogU0VDUkVUX1RZUEUuU0VTU0lPTl9TRUNSRVQsXG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbmZpZz8uY29udGV4dD8uZXh0ZW5kZWRDb250ZXh0KSB7XG4gICAgY29uc3QgeyBleHRlbmRlZENvbnRleHQgfSA9IGNvbmZpZy5jb250ZXh0XG4gICAgaWYgKCFlbnYpIHtcbiAgICAgIGVudiA9IGV4dGVuZGVkQ29udGV4dC5lbnZJZCB8fCAnJ1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kZWZhdWx0SW5mbyxcbiAgICAgIHNlY3JldElkOiBleHRlbmRlZENvbnRleHQ/LnRtcFNlY3JldD8uc2VjcmV0SWQgfHwgJycsXG4gICAgICBzZWNyZXRLZXk6IGV4dGVuZGVkQ29udGV4dD8udG1wU2VjcmV0Py5zZWNyZXRLZXkgfHwgJycsXG4gICAgICBzZXNzaW9uVG9rZW46IGV4dGVuZGVkQ29udGV4dD8udG1wU2VjcmV0Py50b2tlbiB8fCAnJyxcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyAuLi5kZWZhdWx0SW5mbyB9XG59XG4iXX0=