@inizioevoke/evosynth 2.1.4 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@ export interface AppConfigCloudFrontProps {
21
21
  responseHeaders?: AWSManagedResponseHeadersPolicy | UUID | false;
22
22
  responseHeadersParam?: string;
23
23
  responseHeadersPolicy?: ResponseHeadersPolicyProps;
24
- cspHeaders?: CspHeaders;
24
+ cspHeaders?: CspHeaders | string;
25
25
  redirects?: CloudFrontFunctionRedirects;
26
26
  function?: string | {
27
27
  code: string;
@@ -71,4 +71,4 @@ export async function runWebStaticServerlessApp(cmd, config) {
71
71
  break;
72
72
  }
73
73
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXN0YXRpYy1zZXJ2ZXJsZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS93ZWItc3RhdGljLXNlcnZlcmxlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU8vQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBaUMsTUFBTSwwQ0FBMEMsQ0FBQztBQTJEbkgsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxHQUFlLEVBQUUsTUFBb0M7SUFDbkcsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQztTQUN6QyxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBb0Q7WUFDbEUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzFCLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4RSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEtBQUssTUFBTSxD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dGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBUb29sa2l0IH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBJQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHsgQ2xvdWRGcm9udEVycm9yUmVzcG9uc2UsIENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cyB9IGZyb20gJy4uL2NvbnN0cnVjdHMvY2xvdWRmcm9udC5qcyc7XG5pbXBvcnQgeyBDb2RlQnVpbGRJbWFnZUlkLCBFY3JCdWlsZEltYWdlLCBDb2RlQnVpbGRTc21QYXJhbWV0ZXIsIENvZGVCdWlsZENvbXB1dGVUeXBlLCBDb2RlQnVpbGROb2RlSnMsIEVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi4vY29uc3RydWN0cy9jb2RlYnVpbGQudHMnO1xuaW1wb3J0IHR5cGUgeyBFdm9zeW50aEFwcENvbmZpZywgQ2RrQ29tbWFuZCwgRXZvc3ludGhBcHBUeXBlIH0gZnJvbSAnLi9ldm9zeW50aC50cyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZSwgQ3NwSGVhZGVycywgVVVJRCwgQVdTTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSB9IGZyb20gJy4uL3R5cGVzLmQudHMnO1xuaW1wb3J0IHsgZ2V0RW52IH0gZnJvbSAnLi4vaW5kZXguanMnO1xuaW1wb3J0IHsgV2ViU3RhdGljU2VydmVybGVzc1N0YWdlLCBXZWJTdGF0aWNTZXJ2ZXJsZXNzU3RhZ2VQcm9wcyB9IGZyb20gJy4uL3N0YWdlcy93ZWItc3RhdGljLXNlcnZlcmxlc3Mtc3RhZ2UuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ0Ruc1Byb3BzIHtcbiAgcmVjb3JkOiBzdHJpbmc7XG4gIHpvbmU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWdTZWN1cml0eVByb3BzIHtcbiAgYmFzaWNBdXRoPzogc3RyaW5nO1xuICBiYXNpY0F1dGhQYXJhbT86IHN0cmluZztcbiAgd2ViQWNsPzogc3RyaW5nIHwgYm9vbGVhbjtcbiAgd2ViQWNsUGFyYW0/OiBzdHJpbmcgfCB7IHBhdGg6IHN0cmluZywgdmVyc2lvbj86IG51bWJlciB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ0Nsb3VkRnJvbnRQcm9wcyB7XG4gIHJlc3BvbnNlSGVhZGVycz86IEFXU01hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3kgfCBVVUlEIHwgZmFsc2U7XG4gIHJlc3BvbnNlSGVhZGVyc1BhcmFtPzogc3RyaW5nO1xuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBSZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcztcbiAgY3NwSGVhZGVycz86IENzcEhlYWRlcnM7XG4gIHJlZGlyZWN0cz86IENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cztcbiAgZnVuY3Rpb24/OiBzdHJpbmcgfCB7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGV2ZW50VHlwZTogQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlW107XG4gIH0sXG4gIGVycm9yUmVzcG9uc2VzPzogQ2xvdWRGcm9udEVycm9yUmVzcG9uc2VbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ1BpcGVsaW5lU291cmNlUHJvcHMge1xuICBjb2Rlc3RhckNvbm5lY3Rpb24/OiBzdHJpbmc7XG4gIGNvZGVzdGFyQ29ubmVjdGlvblBhcmFtPzogc3RyaW5nO1xuICBvd25lcjogJ2V2b2tlZ3JvdXAnIHwgJ21lbHRtZWRpYScgfCAoc3RyaW5nICYge30pO1xuICByZXBvOiBzdHJpbmc7XG4gIGJyYW5jaDogc3RyaW5nO1xuICBmdWxsQ2xvbmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ1BpcGVsaW5lQnVpbGRQcm9wcyB7XG4gIGJ1aWxkU3BlYz86IHN0cmluZyB8IG9iamVjdDtcbiAgYnVpbGRJbWFnZT86IElCdWlsZEltYWdlO1xuICBidWlsZEltYWdlRWNyPzogRWNyQnVpbGRJbWFnZTtcbiAgYnVpbGRJbWFnZU5vZGVKUz86IENvZGVCdWlsZE5vZGVKcztcbiAgYnVpbGRJbWFnZUlkPzogQ29kZUJ1aWxkSW1hZ2VJZDtcbiAgY29tcHV0ZVR5cGU/OiBDb2RlQnVpbGRDb21wdXRlVHlwZTtcbiAgZW52aXJvbm1lbnRWYXJpYWJsZXM/OiBFbnZpcm9ubWVudFZhcmlhYmxlcztcbiAgc3NtUGFyYW1ldGVycz86IENvZGVCdWlsZFNzbVBhcmFtZXRlcltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU3RhdGljU2VydmVybGVzc0FwcENvbmZpZyBleHRlbmRzIEV2b3N5bnRoQXBwQ29uZmlnIHtcbiAgdHlwZTogRXh0cmFjdDxFdm9zeW50aEFwcFR5cGUsICd3ZWItc3RhdGljLXNlcnZlcmxlc3MnPixcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZG5zOiBBcHBDb25maWdEbnNQcm9wcyxcbiAgc2VjdXJpdHk/OiBBcHBDb25maWdTZWN1cml0eVByb3BzLFxuICBjbG91ZGZyb250PzogQXBwQ29uZmlnQ2xvdWRGcm9udFByb3BzLFxuICBwaXBlbGluZT86IHtcbiAgICBzb3VyY2U6IEFwcENvbmZpZ1BpcGVsaW5lU291cmNlUHJvcHMsXG4gICAgYnVpbGQ/OiBBcHBDb25maWdQaXBlbGluZUJ1aWxkUHJvcHNcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2ViU3RhdGljU2VydmVybGVzc0FwcChjbWQ6IENka0NvbW1hbmQsIGNvbmZpZzogV2ViU3RhdGljU2VydmVybGVzc0FwcENvbmZpZykge1xuICBjb25zdCBjZGsgPSBuZXcgVG9vbGtpdCgpO1xuICBjb25zdCBjeCA9IGF3YWl0IGNkay5mcm9tQXNzZW1ibHlCdWlsZGVyKGFzeW5jIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGFwcCA9IG5ldyBjb3JlLkFwcCh7XG4gICAgICBvdXRkaXI6IGpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5ldm9zeW50aCcpLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhZ2VQcm9wczogV2ViU3RhdGljU2VydmVybGVzc1N0YWdlUHJvcHMgJiBjb3JlLlN0YWdlUHJvcHMgPSB7XG4gICAgICBlbnY6IGdldEVudihjb25maWcucmVnaW9uKSxcbiAgICAgIHN0YWdlTmFtZTogYCR7Y29uZmlnLm5hbWV9JHtjb25maWcuZW52VHlwZSA/IGAtJHtjb25maWcuZW52VHlwZX1gIDogJyd9YCxcbiAgICAgIHRhZ3M6IGNvbmZpZy50YWdzLFxuICAgICAgZW52VHlwZTogY29uZmlnLmVudlR5cGUgPT09ICdwcm9kJyA/ICdQUk9EJyA6ICdOT1RfUFJPRCcsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7Y29uZmlnLmRlc2NyaXB0aW9ufSR7Y29uZmlnLmVudlR5cGUgPyBgICR7Y29uZmlnLmVudlR5cGUudG9VcHBlckNhc2UoKX1gIDogJyd9YCxcbiAgICAgIGhvc3RlZFpvbmU6IGNvbmZpZy5kbnMuem9uZSxcbiAgICAgIGRvbWFpbk5hbWU6IGAke2NvbmZpZy5kbnMucmVjb3JkfS4ke2NvbmZpZy5kbnMuem9uZX1gLFxuICAgICAgYmFzaWNBdXRoOiBjb25maWcuc2VjdXJpdHk/LmJhc2ljQXV0aFBhcmFtID8geyBwYXRoOiBjb25maWcuc2VjdXJpdHk/LmJhc2ljQXV0aFBhcmFtIH0gOiBjb25maWcuc2VjdXJpdHk/LmJhc2ljQXV0aCxcbiAgICAgIHdlYkFjbDogY29uZmlnLnNlY3VyaXR5Py53ZWJBY2xQYXJhbSA/IChjb25maWcuc2VjdXJpdHkud2ViQWNsUGFyYW0gYXMgYW55KS5wYXRoID8gY29uZmlnLnNlY3VyaXR5LndlYkFjbFBhcmFtIDogeyBwYXRoOiBjb25maWcuc2VjdXJpdHkud2ViQWNsUGFyYW0gYXMgc3RyaW5nIH0gOiBjb25maWcuc2VjdXJpdHk/LndlYkFjbCxcbiAgICAgIHJlZGlyZWN0czogY29uZmlnLmNsb3VkZnJvbnQ/LnJlZGlyZWN0cyxcbiAgICAgIHJlc3BvbnNlQ3NwSGVhZGVyczogY29uZmlnLmNsb3VkZnJvbnQ/LmNzcEhlYWRlcnMsXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3k6IGNvbmZpZy5jbG91ZGZyb250Py5yZXNwb25zZUhlYWRlcnNQYXJhbSA/IHsgcGF0aDogY29uZmlnLmNsb3VkZnJvbnQucmVzcG9uc2VIZWFkZXJzUGFyYW0gfSA6IGNvbmZpZy5jbG91ZGZyb250Py5yZXNwb25zZUhlYWRlcnMsXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wczogY29uZmlnLmNsb3VkZnJvbnQ/LnJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgIGNsb3VkZnJvbnRGdW5jdGlvbjogY29uZmlnLmNsb3VkZnJvbnQ/LmZ1bmN0aW9uICYmIHR5cGVvZiBjb25maWcuY2xvdWRmcm9udC5mdW5jdGlvbiA9PSAnc3RyaW5nJyA/IHtcbiAgICAgICAgY29kZTogY29uZmlnLmNsb3VkZnJvbnQuZnVuY3Rpb24sXG4gICAgICAgIGV2ZW50VHlwZTogWydWSUVXRVJfUkVRVUVTVCcsJ1ZJRVdFUl9SRVNQT05TRSddLFxuICAgICAgfSA6IGNvbmZpZy5jbG91ZGZyb250Py5mdW5jdGlvbiBhcyBhbnksXG4gICAgICBlcnJvclJlc3BvbnNlczogY29uZmlnLmNsb3VkZnJvbnQ/LmVycm9yUmVzcG9uc2VzXG4gICAgfVxuICAgIGlmIChjb25maWcucGlwZWxpbmUpIHtcbiAgICAgIHN0YWdlUHJvcHMucGlwZWxpbmUgPSB7XG4gICAgICAgIHNvdXJjZVN0YWdlOiB7XG4gICAgICAgICAgY29kZXN0YXJDb25uZWN0aW9uOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvblBhcmFtID8geyBwYXRoOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvblBhcmFtIH0gOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICAgcmVwb093bmVyOiBjb25maWcucGlwZWxpbmUuc291cmNlLm93bmVyLFxuICAgICAgICAgIHJlcG86IGNvbmZpZy5waXBlbGluZS5zb3VyY2UucmVwbyxcbiAgICAgICAgICBicmFuY2g6IGNvbmZpZy5waXBlbGluZS5zb3VyY2UuYnJhbmNoLFxuICAgICAgICAgIGZ1bGxDbG9uZTogY29uZmlnLnBpcGVsaW5lLnNvdXJjZS5mdWxsQ2xvbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5waXBlbGluZS5idWlsZCkge1xuICAgICAgICBzdGFnZVByb3BzLnBpcGVsaW5lLmJ1aWxkU3RhZ2UgPSB7XG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5lbnZpcm9ubWVudFZhcmlhYmxlc1xuICAgICAgICB9O1xuICAgICAgICBzdGFnZVByb3BzLnBpcGVsaW5lLmNvZGVCdWlsZFByb2plY3QgPSB7XG4gICAgICAgICAgYnVpbGRJbWFnZTogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmJ1aWxkSW1hZ2UsXG4gICAgICAgICAgYnVpbGRJbWFnZUlkOiBjb25maWcucGlwZWxpbmUuYnVpbGQuYnVpbGRJbWFnZUlkLFxuICAgICAgICAgIGJ1aWxkSW1hZ2VOb2RlSlM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5idWlsZEltYWdlTm9kZUpTLFxuICAgICAgICAgIGJ1aWxkU3BlYzogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmJ1aWxkU3BlYyxcbiAgICAgICAgICBjb21wdXRlVHlwZTogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmNvbXB1dGVUeXBlLFxuICAgICAgICAgIGVjckJ1aWxkSW1hZ2U6IGNvbmZpZy5waXBlbGluZS5idWlsZC5idWlsZEltYWdlRWNyLFxuICAgICAgICAgIHNzbVBhcmFtZXRlcnM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5zc21QYXJhbWV0ZXJzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IFdlYlN0YXRpY1NlcnZlcmxlc3NTdGFnZShhcHAsIGNvbmZpZy50eXBlLCBzdGFnZVByb3BzKTtcblxuICAgIHJldHVybiBhcHAuc3ludGgoKTtcbiAgfSk7XG5cbiAgc3dpdGNoIChjbWQpIHtcbiAgICAvLyBjYXNlICdib290c3RyYXAnOlxuICAgIC8vICAgYXdhaXQgY2RrLmJvb3RzdHJhcChCb290c3RyYXBFbnZpcm9ubWVudHMuZnJvbUxpc3QoW2Bhd3M6Ly8ke3Byb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlR9LyR7Y29uZmlnLnJlZ2lvbn1gXSkpO1xuICAgIC8vICAgYnJlYWs7XG4gICAgY2FzZSAnZGVwbG95JzpcbiAgICBjYXNlICdkZXN0cm95JzpcbiAgICBjYXNlICdkaWZmJzpcbiAgICBjYXNlICdkcmlmdCc6XG4gICAgY2FzZSAncm9sbGJhY2snOlxuICAgIGNhc2UgJ3N5bnRoJzpcbiAgICAgIGF3YWl0IGNka1tjbWRdKGN4KTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXN0YXRpYy1zZXJ2ZXJsZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS93ZWItc3RhdGljLXNlcnZlcmxlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU8vQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBaUMsTUFBTSwwQ0FBMEMsQ0FBQztBQTJEbkgsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxHQUFlLEVBQUUsTUFBb0M7SUFDbkcsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMxQixNQUFNLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQztTQUN6QyxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBb0Q7WUFDbEUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzFCLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4RSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEtBQUssTUFBTSxD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dGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBUb29sa2l0IH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBJQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHsgQ2xvdWRGcm9udEVycm9yUmVzcG9uc2UsIENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cyB9IGZyb20gJy4uL2NvbnN0cnVjdHMvY2xvdWRmcm9udC5qcyc7XG5pbXBvcnQgeyBDb2RlQnVpbGRJbWFnZUlkLCBFY3JCdWlsZEltYWdlLCBDb2RlQnVpbGRTc21QYXJhbWV0ZXIsIENvZGVCdWlsZENvbXB1dGVUeXBlLCBDb2RlQnVpbGROb2RlSnMsIEVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi4vY29uc3RydWN0cy9jb2RlYnVpbGQudHMnO1xuaW1wb3J0IHR5cGUgeyBFdm9zeW50aEFwcENvbmZpZywgQ2RrQ29tbWFuZCwgRXZvc3ludGhBcHBUeXBlIH0gZnJvbSAnLi9ldm9zeW50aC50cyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZSwgQ3NwSGVhZGVycywgVVVJRCwgQVdTTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSB9IGZyb20gJy4uL3R5cGVzLmQudHMnO1xuaW1wb3J0IHsgZ2V0RW52IH0gZnJvbSAnLi4vaW5kZXguanMnO1xuaW1wb3J0IHsgV2ViU3RhdGljU2VydmVybGVzc1N0YWdlLCBXZWJTdGF0aWNTZXJ2ZXJsZXNzU3RhZ2VQcm9wcyB9IGZyb20gJy4uL3N0YWdlcy93ZWItc3RhdGljLXNlcnZlcmxlc3Mtc3RhZ2UuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ0Ruc1Byb3BzIHtcbiAgcmVjb3JkOiBzdHJpbmc7XG4gIHpvbmU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWdTZWN1cml0eVByb3BzIHtcbiAgYmFzaWNBdXRoPzogc3RyaW5nO1xuICBiYXNpY0F1dGhQYXJhbT86IHN0cmluZztcbiAgd2ViQWNsPzogc3RyaW5nIHwgYm9vbGVhbjtcbiAgd2ViQWNsUGFyYW0/OiBzdHJpbmcgfCB7IHBhdGg6IHN0cmluZywgdmVyc2lvbj86IG51bWJlciB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ0Nsb3VkRnJvbnRQcm9wcyB7XG4gIHJlc3BvbnNlSGVhZGVycz86IEFXU01hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3kgfCBVVUlEIHwgZmFsc2U7XG4gIHJlc3BvbnNlSGVhZGVyc1BhcmFtPzogc3RyaW5nO1xuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBSZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcztcbiAgY3NwSGVhZGVycz86IENzcEhlYWRlcnMgfCBzdHJpbmc7XG4gIHJlZGlyZWN0cz86IENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cztcbiAgZnVuY3Rpb24/OiBzdHJpbmcgfCB7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGV2ZW50VHlwZTogQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlW107XG4gIH0sXG4gIGVycm9yUmVzcG9uc2VzPzogQ2xvdWRGcm9udEVycm9yUmVzcG9uc2VbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ1BpcGVsaW5lU291cmNlUHJvcHMge1xuICBjb2Rlc3RhckNvbm5lY3Rpb24/OiBzdHJpbmc7XG4gIGNvZGVzdGFyQ29ubmVjdGlvblBhcmFtPzogc3RyaW5nO1xuICBvd25lcjogJ2V2b2tlZ3JvdXAnIHwgJ21lbHRtZWRpYScgfCAoc3RyaW5nICYge30pO1xuICByZXBvOiBzdHJpbmc7XG4gIGJyYW5jaDogc3RyaW5nO1xuICBmdWxsQ2xvbmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZ1BpcGVsaW5lQnVpbGRQcm9wcyB7XG4gIGJ1aWxkU3BlYz86IHN0cmluZyB8IG9iamVjdDtcbiAgYnVpbGRJbWFnZT86IElCdWlsZEltYWdlO1xuICBidWlsZEltYWdlRWNyPzogRWNyQnVpbGRJbWFnZTtcbiAgYnVpbGRJbWFnZU5vZGVKUz86IENvZGVCdWlsZE5vZGVKcztcbiAgYnVpbGRJbWFnZUlkPzogQ29kZUJ1aWxkSW1hZ2VJZDtcbiAgY29tcHV0ZVR5cGU/OiBDb2RlQnVpbGRDb21wdXRlVHlwZTtcbiAgZW52aXJvbm1lbnRWYXJpYWJsZXM/OiBFbnZpcm9ubWVudFZhcmlhYmxlcztcbiAgc3NtUGFyYW1ldGVycz86IENvZGVCdWlsZFNzbVBhcmFtZXRlcltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU3RhdGljU2VydmVybGVzc0FwcENvbmZpZyBleHRlbmRzIEV2b3N5bnRoQXBwQ29uZmlnIHtcbiAgdHlwZTogRXh0cmFjdDxFdm9zeW50aEFwcFR5cGUsICd3ZWItc3RhdGljLXNlcnZlcmxlc3MnPixcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZG5zOiBBcHBDb25maWdEbnNQcm9wcyxcbiAgc2VjdXJpdHk/OiBBcHBDb25maWdTZWN1cml0eVByb3BzLFxuICBjbG91ZGZyb250PzogQXBwQ29uZmlnQ2xvdWRGcm9udFByb3BzLFxuICBwaXBlbGluZT86IHtcbiAgICBzb3VyY2U6IEFwcENvbmZpZ1BpcGVsaW5lU291cmNlUHJvcHMsXG4gICAgYnVpbGQ/OiBBcHBDb25maWdQaXBlbGluZUJ1aWxkUHJvcHNcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2ViU3RhdGljU2VydmVybGVzc0FwcChjbWQ6IENka0NvbW1hbmQsIGNvbmZpZzogV2ViU3RhdGljU2VydmVybGVzc0FwcENvbmZpZykge1xuICBjb25zdCBjZGsgPSBuZXcgVG9vbGtpdCgpO1xuICBjb25zdCBjeCA9IGF3YWl0IGNkay5mcm9tQXNzZW1ibHlCdWlsZGVyKGFzeW5jIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGFwcCA9IG5ldyBjb3JlLkFwcCh7XG4gICAgICBvdXRkaXI6IGpvaW4ocHJvY2Vzcy5jd2QoKSwgJy5ldm9zeW50aCcpLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhZ2VQcm9wczogV2ViU3RhdGljU2VydmVybGVzc1N0YWdlUHJvcHMgJiBjb3JlLlN0YWdlUHJvcHMgPSB7XG4gICAgICBlbnY6IGdldEVudihjb25maWcucmVnaW9uKSxcbiAgICAgIHN0YWdlTmFtZTogYCR7Y29uZmlnLm5hbWV9JHtjb25maWcuZW52VHlwZSA/IGAtJHtjb25maWcuZW52VHlwZX1gIDogJyd9YCxcbiAgICAgIHRhZ3M6IGNvbmZpZy50YWdzLFxuICAgICAgZW52VHlwZTogY29uZmlnLmVudlR5cGUgPT09ICdwcm9kJyA/ICdQUk9EJyA6ICdOT1RfUFJPRCcsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7Y29uZmlnLmRlc2NyaXB0aW9ufSR7Y29uZmlnLmVudlR5cGUgPyBgICR7Y29uZmlnLmVudlR5cGUudG9VcHBlckNhc2UoKX1gIDogJyd9YCxcbiAgICAgIGhvc3RlZFpvbmU6IGNvbmZpZy5kbnMuem9uZSxcbiAgICAgIGRvbWFpbk5hbWU6IGAke2NvbmZpZy5kbnMucmVjb3JkfS4ke2NvbmZpZy5kbnMuem9uZX1gLFxuICAgICAgYmFzaWNBdXRoOiBjb25maWcuc2VjdXJpdHk/LmJhc2ljQXV0aFBhcmFtID8geyBwYXRoOiBjb25maWcuc2VjdXJpdHk/LmJhc2ljQXV0aFBhcmFtIH0gOiBjb25maWcuc2VjdXJpdHk/LmJhc2ljQXV0aCxcbiAgICAgIHdlYkFjbDogY29uZmlnLnNlY3VyaXR5Py53ZWJBY2xQYXJhbSA/IChjb25maWcuc2VjdXJpdHkud2ViQWNsUGFyYW0gYXMgYW55KS5wYXRoID8gY29uZmlnLnNlY3VyaXR5LndlYkFjbFBhcmFtIDogeyBwYXRoOiBjb25maWcuc2VjdXJpdHkud2ViQWNsUGFyYW0gYXMgc3RyaW5nIH0gOiBjb25maWcuc2VjdXJpdHk/LndlYkFjbCxcbiAgICAgIHJlZGlyZWN0czogY29uZmlnLmNsb3VkZnJvbnQ/LnJlZGlyZWN0cyxcbiAgICAgIHJlc3BvbnNlQ3NwSGVhZGVyczogY29uZmlnLmNsb3VkZnJvbnQ/LmNzcEhlYWRlcnMsXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3k6IGNvbmZpZy5jbG91ZGZyb250Py5yZXNwb25zZUhlYWRlcnNQYXJhbSA/IHsgcGF0aDogY29uZmlnLmNsb3VkZnJvbnQucmVzcG9uc2VIZWFkZXJzUGFyYW0gfSA6IGNvbmZpZy5jbG91ZGZyb250Py5yZXNwb25zZUhlYWRlcnMsXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wczogY29uZmlnLmNsb3VkZnJvbnQ/LnJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgIGNsb3VkZnJvbnRGdW5jdGlvbjogY29uZmlnLmNsb3VkZnJvbnQ/LmZ1bmN0aW9uICYmIHR5cGVvZiBjb25maWcuY2xvdWRmcm9udC5mdW5jdGlvbiA9PSAnc3RyaW5nJyA/IHtcbiAgICAgICAgY29kZTogY29uZmlnLmNsb3VkZnJvbnQuZnVuY3Rpb24sXG4gICAgICAgIGV2ZW50VHlwZTogWydWSUVXRVJfUkVRVUVTVCcsJ1ZJRVdFUl9SRVNQT05TRSddLFxuICAgICAgfSA6IGNvbmZpZy5jbG91ZGZyb250Py5mdW5jdGlvbiBhcyBhbnksXG4gICAgICBlcnJvclJlc3BvbnNlczogY29uZmlnLmNsb3VkZnJvbnQ/LmVycm9yUmVzcG9uc2VzXG4gICAgfVxuICAgIGlmIChjb25maWcucGlwZWxpbmUpIHtcbiAgICAgIHN0YWdlUHJvcHMucGlwZWxpbmUgPSB7XG4gICAgICAgIHNvdXJjZVN0YWdlOiB7XG4gICAgICAgICAgY29kZXN0YXJDb25uZWN0aW9uOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvblBhcmFtID8geyBwYXRoOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvblBhcmFtIH0gOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICAgcmVwb093bmVyOiBjb25maWcucGlwZWxpbmUuc291cmNlLm93bmVyLFxuICAgICAgICAgIHJlcG86IGNvbmZpZy5waXBlbGluZS5zb3VyY2UucmVwbyxcbiAgICAgICAgICBicmFuY2g6IGNvbmZpZy5waXBlbGluZS5zb3VyY2UuYnJhbmNoLFxuICAgICAgICAgIGZ1bGxDbG9uZTogY29uZmlnLnBpcGVsaW5lLnNvdXJjZS5mdWxsQ2xvbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5waXBlbGluZS5idWlsZCkge1xuICAgICAgICBzdGFnZVByb3BzLnBpcGVsaW5lLmJ1aWxkU3RhZ2UgPSB7XG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5lbnZpcm9ubWVudFZhcmlhYmxlc1xuICAgICAgICB9O1xuICAgICAgICBzdGFnZVByb3BzLnBpcGVsaW5lLmNvZGVCdWlsZFByb2plY3QgPSB7XG4gICAgICAgICAgYnVpbGRJbWFnZTogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmJ1aWxkSW1hZ2UsXG4gICAgICAgICAgYnVpbGRJbWFnZUlkOiBjb25maWcucGlwZWxpbmUuYnVpbGQuYnVpbGRJbWFnZUlkLFxuICAgICAgICAgIGJ1aWxkSW1hZ2VOb2RlSlM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5idWlsZEltYWdlTm9kZUpTLFxuICAgICAgICAgIGJ1aWxkU3BlYzogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmJ1aWxkU3BlYyxcbiAgICAgICAgICBjb21wdXRlVHlwZTogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmNvbXB1dGVUeXBlLFxuICAgICAgICAgIGVjckJ1aWxkSW1hZ2U6IGNvbmZpZy5waXBlbGluZS5idWlsZC5idWlsZEltYWdlRWNyLFxuICAgICAgICAgIHNzbVBhcmFtZXRlcnM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5zc21QYXJhbWV0ZXJzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IFdlYlN0YXRpY1NlcnZlcmxlc3NTdGFnZShhcHAsIGNvbmZpZy50eXBlLCBzdGFnZVByb3BzKTtcblxuICAgIHJldHVybiBhcHAuc3ludGgoKTtcbiAgfSk7XG5cbiAgc3dpdGNoIChjbWQpIHtcbiAgICAvLyBjYXNlICdib290c3RyYXAnOlxuICAgIC8vICAgYXdhaXQgY2RrLmJvb3RzdHJhcChCb290c3RyYXBFbnZpcm9ubWVudHMuZnJvbUxpc3QoW2Bhd3M6Ly8ke3Byb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlR9LyR7Y29uZmlnLnJlZ2lvbn1gXSkpO1xuICAgIC8vICAgYnJlYWs7XG4gICAgY2FzZSAnZGVwbG95JzpcbiAgICBjYXNlICdkZXN0cm95JzpcbiAgICBjYXNlICdkaWZmJzpcbiAgICBjYXNlICdkcmlmdCc6XG4gICAgY2FzZSAncm9sbGJhY2snOlxuICAgIGNhc2UgJ3N5bnRoJzpcbiAgICAgIGF3YWl0IGNka1tjbWRdKGN4KTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG4iXX0=
@@ -24,7 +24,7 @@ export interface WebGlobalStackProps {
24
24
  webAcl?: boolean | string | SsmStringParameter;
25
25
  responseHeadersPolicy?: false | AWSManagedResponseHeadersPolicy | UUID | SsmStringParameter;
26
26
  responseHeadersPolicyProps?: ResponseHeadersPolicyProps;
27
- responseCspHeaders?: CspHeaders;
27
+ responseCspHeaders?: CspHeaders | string;
28
28
  destroy?: boolean;
29
29
  tags?: Record<string, string>;
30
30
  errorResponses?: (CloudFrontErrorResponse | ErrorResponse)[];
@@ -79,14 +79,26 @@ export class WebGlobalStack extends Stack {
79
79
  });
80
80
  }
81
81
  else if (props.responseCspHeaders) {
82
+ let csp = '';
83
+ if (typeof props.responseCspHeaders == 'string') {
84
+ if (isCspCsv(props.responseCspHeaders)) {
85
+ csp = cspHeadersToString(parseCspCsv(props.responseCspHeaders));
86
+ }
87
+ else {
88
+ csp = props.responseCspHeaders;
89
+ }
90
+ }
91
+ else {
92
+ csp = Object.entries(props.responseCspHeaders).map(([directive, values]) => {
93
+ return `${directive} ${values.join(' ')};`;
94
+ }).join(' ');
95
+ }
82
96
  responseHeadersPolicy = new ResponseHeadersPolicy(this, 'response-headers-policy', {
83
97
  securityHeadersBehavior: {
84
98
  ...baseHeadersBehavior,
85
99
  contentSecurityPolicy: {
86
100
  override: true,
87
- contentSecurityPolicy: Object.entries(props.responseCspHeaders).map(([directive, values]) => {
88
- return `${directive} ${values.join(' ')};`;
89
- }).join(' ')
101
+ contentSecurityPolicy: csp
90
102
  },
91
103
  },
92
104
  responseHeadersPolicyName
@@ -193,4 +205,52 @@ export class WebGlobalStack extends Stack {
193
205
  this.aaaaRecord = cfAlias.aaaaRecord;
194
206
  }
195
207
  }
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWdsb2JhbC1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGFja3Mvd2ViLXN0YXRpYy1zZXJ2ZXJsZXNzL3dlYi1nbG9iYWwtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJN0UsT0FBTyxFQUF5QyxpQkFBaUIsRUFBd0cscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc5USxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBK0Isa0JBQWtCLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEosT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUEwQnBFLE1BQU0sT0FBTyxjQUFlLFNBQVEsS0FBSztJQUN2QixjQUFjLENBQWM7SUFDNUIsUUFBUSxDQUFTO0lBQ2pCLGtCQUFrQixDQUFXO0lBQzdCLHNCQUFzQixDQUFlO0lBQ3JDLE1BQU0sQ0FBd0I7SUFDOUIscUJBQXFCLENBQXFDO0lBQzFELE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQWE7SUFFdkMsWUFBWSxLQUFn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dkIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3RCLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDaEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQ2xELFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDaEMsZUFBZTtZQUNmLFFBQVE7WUFDUixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFFMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNELFlBQVksRUFBRSxjQUFjLENBQUMsWUFBWTtZQUN6QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcywgUGh5c2ljYWxOYW1lLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmltcG9ydCB7IENlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IERpc3RyaWJ1dGlvbiwgRXJyb3JSZXNwb25zZSwgRnVuY3Rpb24sIEZ1bmN0aW9uRXZlbnRUeXBlLCBJUmVzcG9uc2VIZWFkZXJzUG9saWN5LCBSZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcywgUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciwgQmVoYXZpb3JPcHRpb25zLCBSZXNwb25zZUhlYWRlcnNQb2xpY3ksIEhlYWRlcnNGcmFtZU9wdGlvbiwgSGVhZGVyc1JlZmVycmVyUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0IHsgQVJlY29yZCwgQWFhYVJlY29yZCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBDZm5XZWJBQ0wgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtd2FmdjInO1xuXG5pbXBvcnQgeyBTU0xDZXJ0aWZpY2F0ZSB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvY2VydGlmaWNhdGVtYW5hZ2VyLmpzJztcbmltcG9ydCB7IENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cywgQ2xvdWRGcm9udEZ1bmN0aW9uLCBDbG91ZEZyb250RGlzdHJpYnV0aW9uLCBDbG91ZEZyb250RXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvY2xvdWRmcm9udC5qcyc7XG5pbXBvcnQgeyBnZXRIb3N0ZWRab25lLCBDbG91ZEZyb250QWxpYXMgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL3JvdXRlNTMuanMnO1xuaW1wb3J0IHsgUzNCdWNrZXQgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL3MzLmpzJztcbmltcG9ydCB0eXBlIHsgU3NtU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy9zc20udHMnO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFdlYkFjbCB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvd2FmLmpzJztcbmltcG9ydCB7IGRvbWFpbkFzSWQgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMuanMnO1xuaW1wb3J0IHsgYWRkRXZvU3RhY2tUYWdzIH0gZnJvbSAnLi4vLi4vbGliL3RhZ3MudHMnO1xuaW1wb3J0IHsgUzNCdWNrZXRPcmlnaW4gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zJztcbmltcG9ydCB0eXBlIHsgQmFzaWNBdXRoQ3JlZGVudGlhbHMsIENzcEhlYWRlcnMsIENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZSwgVVVJRCwgQVdTTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSB9IGZyb20gJy4uLy4uL3R5cGVzLmQudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdlYkdsb2JhbFN0YWNrUHJvcHMge1xuICBlbnZUeXBlOiAnTk9UX1BST0QnIHwgJ1BST0QnO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYnVja2V0TmFtZT86IHN0cmluZztcbiAgaG9zdGVkWm9uZTogc3RyaW5nO1xuICBkb21haW5OYW1lOiBzdHJpbmc7XG4gIGJhc2ljQXV0aD86IHN0cmluZyB8IEJhc2ljQXV0aENyZWRlbnRpYWxzIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICBjbG91ZGZyb250RnVuY3Rpb24/OiB7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGV2ZW50VHlwZTogQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlW107XG4gIH1cbiAgcmVkaXJlY3RzPzogQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RzO1xuICByZWRpcmVjdHNDc3ZQYXRoPzogc3RyaW5nO1xuICAvLyBhdHRhY2hXZWJBY2w/OiBib29sZWFuIHwgc3RyaW5nO1xuICB3ZWJBY2w/OiBib29sZWFuIHwgc3RyaW5nIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBmYWxzZSB8IEFXU01hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3kgfCBVVUlEIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcz86IFJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzO1xuICByZXNwb25zZUNzcEhlYWRlcnM/OiBDc3BIZWFkZXJzO1xuICBkZXN0cm95PzogYm9vbGVhbjtcbiAgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGVycm9yUmVzcG9uc2VzPzogKENsb3VkRnJvbnRFcnJvclJlc3BvbnNlIHwgRXJyb3JSZXNwb25zZSlbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFdlYkdsb2JhbFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgc3NsQ2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXQ6IEJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRGdW5jdGlvbjogRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250RGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG4gIHB1YmxpYyByZWFkb25seSB3ZWJBY2w6IENmbldlYkFDTCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGFSZWNvcmQ6IEFSZWNvcmQ7XG4gIHB1YmxpYyByZWFkb25seSBhYWFhUmVjb3JkOiBBYWFhUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJHbG9iYWxTdGFja1Byb3BzICYgU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGFkZEV2b1N0YWNrVGFncyh0aGlzLCAnV2ViR2xvYmFsU3RhY2snKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBnZXRIb3N0ZWRab25lKHRoaXMsICdnZXRIb3N0ZWRab25lJywgcHJvcHMuaG9zdGVkWm9uZSk7XG5cbiAgICBjb25zdCBfc3NsQ2VydCA9IG5ldyBTU0xDZXJ0aWZpY2F0ZSh0aGlzLCAnU1NMQ2VydGlmaWNhdGUnLCB7XG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICB9KTtcbiAgICB0aGlzLnNzbENlcnRpZmljYXRlID0gX3NzbENlcnQuY2VydGlmaWNhdGU7XG5cbiAgICBjb25zdCBfczNCdWNrZXQgPSBuZXcgUzNCdWNrZXQodGhpcywgJ1MzQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYnVja2V0TmFtZSA/PyBQaHlzaWNhbE5hbWUuR0VORVJBVEVfSUZfTkVFREVELFxuICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgIH0pO1xuICAgIHRoaXMuczNCdWNrZXQgPSBfczNCdWNrZXQuYnVja2V0O1xuXG4gICAgbGV0IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5KSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSA9PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpKSB7XG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gUmVzcG9uc2VIZWFkZXJzUG9saWN5LmZyb21SZXNwb25zZUhlYWRlcnNQb2xpY3lJZCh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3ktYnktaWQnLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IFJlc3BvbnNlSGVhZGVyc1BvbGljeVtwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgYXMga2V5b2YgdHlwZW9mIFJlc3BvbnNlSGVhZGVyc1BvbGljeV0gYXMgSVJlc3BvbnNlSGVhZGVyc1BvbGljeSA/PyBSZXNwb25zZUhlYWRlcnNQb2xpY3kuU0VDVVJJVFlfSEVBREVSUztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCkge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBSZXNwb25zZUhlYWRlcnNQb2xpY3kuZnJvbVJlc3BvbnNlSGVhZGVyc1BvbGljeUlkKHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeS1ieS1pZCcsIFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCwgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5LnZlcnNpb24pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFzZUhlYWRlcnNCZWhhdmlvcjogUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciA9IHtcbiAgICAgICAgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5zZWNvbmRzKDMxNTM2MDAwKVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50VHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBmcmFtZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBmcmFtZU9wdGlvbjogSGVhZGVyc0ZyYW1lT3B0aW9uLlNBTUVPUklHSU4sXG4gICAgICAgIH0sXG4gICAgICAgIHJlZmVycmVyUG9saWN5OiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IEhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOXG4gICAgICAgIH0sXG4gICAgICAgIHhzc1Byb3RlY3Rpb246IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBwcm90ZWN0aW9uOiB0cnVlLFxuICAgICAgICAgIG1vZGVCbG9jazogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lID0gYCR7ZG9tYWluQXNJZChwcm9wcy5kb21haW5OYW1lKX0tcmVzcG9uc2UtaGVhZGVycy1wb2xpY3lgO1xuICAgICAgXG4gICAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIHtcbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gbmV3IFJlc3BvbnNlSGVhZGVyc1BvbGljeSh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3knLCB7XG4gICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAuLi5wcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lIHx8IHJlc3BvbnNlSGVhZGVyc1BvbGljeU5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnJlc3BvbnNlQ3NwSGVhZGVycykge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBuZXcgUmVzcG9uc2VIZWFkZXJzUG9saWN5KHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeScsIHtcbiAgICAgICAgICBzZWN1cml0eUhlYWRlcnNCZWhhdmlvcjoge1xuICAgICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeToge1xuICAgICAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5OiBPYmplY3QuZW50cmllcyhwcm9wcy5yZXNwb25zZUNzcEhlYWRlcnMpLm1hcCgoW2RpcmVjdGl2ZSwgdmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkaXJlY3RpdmV9ICR7dmFsdWVzLmpvaW4oJyAnKX07YFxuICAgICAgICAgICAgICB9KS5qb2luKCcgJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSB0aGUgdGhlIHBvbGljeSBpcyBub3QgZ2V0dGluZyB1cGRhdGVkIGluIHRoZSBDbG91ZEZyb250IGJlaGF2aW9yXG4gICAgdGhpcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgPSByZXNwb25zZUhlYWRlcnNQb2xpY3k7XG5cbiAgICBjb25zdCBkZWZhdWx0QmVoYXZpb3I6IEJlaGF2aW9yT3B0aW9ucyA9IHtcbiAgICAgIG9yaWdpbjogUzNCdWNrZXRPcmlnaW4ud2l0aE9yaWdpbkFjY2Vzc0NvbnRyb2wodGhpcy5zM0J1Y2tldCksXG4gICAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogW10sXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3k6IHJlc3BvbnNlSGVhZGVyc1BvbGljeSA/PyAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5ICE9PSBmYWxzZSA/IFJlc3BvbnNlSGVhZGVyc1BvbGljeS5TRUNVUklUWV9IRUFERVJTIDogdW5kZWZpbmVkKVxuICAgIH07XG5cbiAgICBsZXQgY2ZmbjogQ2xvdWRGcm9udEZ1bmN0aW9uO1xuICAgIGlmIChwcm9wcy5iYXNpY0F1dGgpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMuYmFzaWNBdXRoICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICgocHJvcHMuYmFzaWNBdXRoIGFzIEJhc2ljQXV0aENyZWRlbnRpYWxzKS51c2VyICYmIChwcm9wcy5iYXNpY0F1dGggYXMgQmFzaWNBdXRoQ3JlZGVudGlhbHMpLnBhc3N3b3JkKSB7XG4gICAgICAgICAgcHJvcHMuYmFzaWNBdXRoID0gQnVmZmVyLmZyb20oYCR7KHByb3BzLmJhc2ljQXV0aCBhcyBCYXNpY0F1dGhDcmVkZW50aWFscykudXNlcn06JHsocHJvcHMuYmFzaWNBdXRoIGFzIEJhc2ljQXV0aENyZWRlbnRpYWxzKS5wYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoKHByb3BzLmJhc2ljQXV0aCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgpIHtcbiAgICAgICAgICBwcm9wcy5iYXNpY0F1dGggPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIodGhpcywgKHByb3BzLmJhc2ljQXV0aCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgsIChwcm9wcy5iYXNpY0F1dGggYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS52ZXJzaW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wcy5iYXNpY0F1dGggPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbikge1xuICAgICAgY2ZmbiA9IENsb3VkRnJvbnRGdW5jdGlvbi5jcmVhdGVGdW5jdGlvbih0aGlzLCBudWxsLCB7XG4gICAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5iYXNpY0F1dGgsXG4gICAgICAgIHJlZGlyZWN0czogcHJvcHMucmVkaXJlY3RzLFxuICAgICAgICByZWRpcmVjdHNDc3ZQYXRoOiBwcm9wcy5yZWRpcmVjdHNDc3ZQYXRoLFxuICAgICAgICBjb2RlOiBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uY29kZSxcbiAgICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5iYXNpY0F1dGgpIHtcbiAgICAgIGNmZm4gPSBDbG91ZEZyb250RnVuY3Rpb24uY3JlYXRlQmFzaWNBdXRoRGVmYXVsdERvYyh0aGlzLCB7XG4gICAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5iYXNpY0F1dGgsXG4gICAgICAgIHJlZGlyZWN0czogcHJvcHMucmVkaXJlY3RzLFxuICAgICAgICByZWRpcmVjdHNDc3ZQYXRoOiBwcm9wcy5yZWRpcmVjdHNDc3ZQYXRoLFxuICAgICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2ZmbiA9IENsb3VkRnJvbnRGdW5jdGlvbi5jcmVhdGVEZWZhdWx0RG9jKHRoaXMsIHtcbiAgICAgICAgcmVkaXJlY3RzOiBwcm9wcy5yZWRpcmVjdHMsXG4gICAgICAgIHJlZGlyZWN0c0NzdlBhdGg6IHByb3BzLnJlZGlyZWN0c0NzdlBhdGgsXG4gICAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNsb3VkRnJvbnRGdW5jdGlvbiA9IGNmZm4uZm47XG5cbiAgICAvLyBjb25zdCBldmVudFR5cGVzOiBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGVbXSA9IHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbj8uZXZlbnRUeXBlICYmIHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbi5ldmVudFR5cGUubGVuZ3RoID4gMCA/IHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbi5ldmVudFR5cGUgOiBbJ1ZJRVdFUl9SRVFVRVNUJywgJ1ZJRVdFUl9SRVNQT05TRSddO1xuXG4gICAgbGV0IGV2ZW50VHlwZXM6IENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZVtdID0gWydWSUVXRVJfUkVRVUVTVCcsICdWSUVXRVJfUkVTUE9OU0UnXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24/LmV2ZW50VHlwZSkgJiYgcHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uLmV2ZW50VHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBldHMgPSBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uZXZlbnRUeXBlXG4gICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdHlwZW9mIHYgPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICh2ID09PSAnVklFV0VSX1JFUVVFU1QnIHx8IHYgPT09ICdWSUVXRVJfUkVTUE9OU0UnKSAmJlxuICAgICAgICAgICAgYS5pbmRleE9mKHYpID09PSBpIC8vIGRlZHVwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICBpZiAoZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXZlbnRUeXBlcyA9IGV0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50VHlwZSBvZiBldmVudFR5cGVzKSB7XG4gICAgICBkZWZhdWx0QmVoYXZpb3IuZnVuY3Rpb25Bc3NvY2lhdGlvbnMhLnB1c2goe1xuICAgICAgICBldmVudFR5cGU6IEZ1bmN0aW9uRXZlbnRUeXBlW2V2ZW50VHlwZV0sXG4gICAgICAgIGZ1bmN0aW9uOiB0aGlzLmNsb3VkRnJvbnRGdW5jdGlvblxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGxldCB3ZWJBY2xJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcHJvcHMud2ViQWNsID09ICdzdHJpbmcnICYmIHByb3BzLndlYkFjbC5zdGFydHNXaXRoKCdhcm46YXdzJykpIHtcbiAgICAgIHdlYkFjbElkID0gcHJvcHMud2ViQWNsO1xuICAgIH0gZWxzZSBpZiAoKHByb3BzLndlYkFjbCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgpIHtcbiAgICAgIHdlYkFjbElkID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKHRoaXMsIChwcm9wcy53ZWJBY2wgYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoLCAocHJvcHMud2ViQWNsIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikudmVyc2lvbik7XG4gICAgfSBlbHNlIGlmIChwcm9wcy53ZWJBY2wgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IHdhZiA9IG5ldyBDbG91ZEZyb250V2ViQWNsKHRoaXMsICdDbG91ZEZyb250V2ViQWNsJywge1xuICAgICAgICBuYW1lOiBgJHtkb21haW5Bc0lkKHByb3BzLmRvbWFpbk5hbWUpfWAsXG4gICAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICAgIH0pO1xuICAgICAgdGhpcy53ZWJBY2wgPSB3YWYuYWNsO1xuICAgICAgd2ViQWNsSWQgPSB3YWYuYWNsLmF0dHJBcm47XG4gICAgfVxuXG4gICAgY29uc3QgY2ZEaXN0cmlidXRpb24gPSBuZXcgQ2xvdWRGcm9udERpc3RyaWJ1dGlvbih0aGlzLCAnQ2xvdWRGcm9udERpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gPz8gcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIHByaWNlQ2xhc3M6IHByb3BzLmVudlR5cGUsXG4gICAgICBjZXJ0aWZpY2F0ZTogdGhpcy5zc2xDZXJ0aWZpY2F0ZSxcbiAgICAgIGRlZmF1bHRCZWhhdmlvcixcbiAgICAgIHdlYkFjbElkLFxuICAgICAgZXJyb3JSZXNwb25zZXM6IHByb3BzLmVycm9yUmVzcG9uc2VzXG4gICAgfSk7XG4gICAgdGhpcy5jbG91ZEZyb250RGlzdHJpYnV0aW9uID0gY2ZEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uO1xuXG4gICAgY29uc3QgY2ZBbGlhcyA9IG5ldyBDbG91ZEZyb250QWxpYXModGhpcywgJ0Nsb3VkRnJvbnRBbGlhcycsIHtcbiAgICAgIGRpc3RyaWJ1dGlvbjogY2ZEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmVcbiAgICB9KTtcbiAgICB0aGlzLmFSZWNvcmQgPSBjZkFsaWFzLmFSZWNvcmQ7XG4gICAgdGhpcy5hYWFhUmVjb3JkID0gY2ZBbGlhcy5hYWFhUmVjb3JkO1xuICB9XG59Il19
208
+ function isCspCsv(str) {
209
+ if (typeof str != 'string') {
210
+ return false;
211
+ }
212
+ const lines = str.trim().split('\n');
213
+ if (lines.length < 1) {
214
+ return false;
215
+ }
216
+ const headers = lines[0].split(',').map(h => h.trim().toLowerCase());
217
+ return headers.indexOf('source') !== -1;
218
+ }
219
+ function parseCspCsv(csv) {
220
+ const lines = csv.trim().split('\n');
221
+ if (lines.length < 1)
222
+ return {};
223
+ // Parse header row
224
+ const headers = lines[0].split(',').map(h => h.trim().toLowerCase());
225
+ const sourceIndex = headers.indexOf('source');
226
+ if (sourceIndex === -1) {
227
+ throw new Error('CSV must contain a "source" column');
228
+ }
229
+ const result = {};
230
+ // Process data rows
231
+ for (let i = 1; i < lines.length; i++) {
232
+ const line = lines[i].trim();
233
+ if (!line)
234
+ continue; // Skip empty lines
235
+ const values = line.split(',').map(v => v.trim());
236
+ const source = values[sourceIndex];
237
+ if (!source)
238
+ continue; // Skip rows with no source
239
+ // For each directive, add source if the value is marked with 'x'
240
+ headers.forEach((header, colIndex) => {
241
+ if (header !== 'source' && values[colIndex].toLowerCase() === 'x') {
242
+ if (!result[header]) {
243
+ result[header] = [];
244
+ }
245
+ result[header].push(source);
246
+ }
247
+ });
248
+ }
249
+ return result;
250
+ }
251
+ function cspHeadersToString(headers) {
252
+ return Object.entries(headers)
253
+ .map(([directive, sources]) => `${directive} ${sources.join(' ')};`)
254
+ .join(' ');
255
+ }
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWdsb2JhbC1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGFja3Mvd2ViLXN0YXRpYy1zZXJ2ZXJsZXNzL3dlYi1nbG9iYWwtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJN0UsT0FBTyxFQUF5QyxpQkFBaUIsRUFBd0cscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc5USxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBK0Isa0JBQWtCLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEosT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUEwQnBFLE1BQU0sT0FBTyxjQUFlLFNBQVEsS0FBSztJQUN2QixjQUFjLENBQWM7SUFDNUIsUUFBUSxDQUFTO0lBQ2pCLGtCQUFrQixDQUFXO0lBQzdCLHNCQUFzQixDQUFlO0lBQ3JDLE1BQU0sQ0FBd0I7SUFDOUIscUJBQXFCLENBQXFDO0lBQzFELE9BQU8sQ0FBVTtJQUNqQixVQUFVLENBQWE7SUFFdkMsWUFBWSxLQUFn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QUFNLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsT0FBbUI7SUFDN0MsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ25FLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcywgUGh5c2ljYWxOYW1lLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmltcG9ydCB7IENlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IERpc3RyaWJ1dGlvbiwgRXJyb3JSZXNwb25zZSwgRnVuY3Rpb24sIEZ1bmN0aW9uRXZlbnRUeXBlLCBJUmVzcG9uc2VIZWFkZXJzUG9saWN5LCBSZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcywgUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciwgQmVoYXZpb3JPcHRpb25zLCBSZXNwb25zZUhlYWRlcnNQb2xpY3ksIEhlYWRlcnNGcmFtZU9wdGlvbiwgSGVhZGVyc1JlZmVycmVyUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0IHsgQVJlY29yZCwgQWFhYVJlY29yZCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBDZm5XZWJBQ0wgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtd2FmdjInO1xuXG5pbXBvcnQgeyBTU0xDZXJ0aWZpY2F0ZSB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvY2VydGlmaWNhdGVtYW5hZ2VyLmpzJztcbmltcG9ydCB7IENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cywgQ2xvdWRGcm9udEZ1bmN0aW9uLCBDbG91ZEZyb250RGlzdHJpYnV0aW9uLCBDbG91ZEZyb250RXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvY2xvdWRmcm9udC5qcyc7XG5pbXBvcnQgeyBnZXRIb3N0ZWRab25lLCBDbG91ZEZyb250QWxpYXMgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL3JvdXRlNTMuanMnO1xuaW1wb3J0IHsgUzNCdWNrZXQgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL3MzLmpzJztcbmltcG9ydCB0eXBlIHsgU3NtU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy9zc20udHMnO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFdlYkFjbCB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvd2FmLmpzJztcbmltcG9ydCB7IGRvbWFpbkFzSWQgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMuanMnO1xuaW1wb3J0IHsgYWRkRXZvU3RhY2tUYWdzIH0gZnJvbSAnLi4vLi4vbGliL3RhZ3MudHMnO1xuaW1wb3J0IHsgUzNCdWNrZXRPcmlnaW4gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zJztcbmltcG9ydCB0eXBlIHsgQmFzaWNBdXRoQ3JlZGVudGlhbHMsIENzcEhlYWRlcnMsIENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZSwgVVVJRCwgQVdTTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSB9IGZyb20gJy4uLy4uL3R5cGVzLmQudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdlYkdsb2JhbFN0YWNrUHJvcHMge1xuICBlbnZUeXBlOiAnTk9UX1BST0QnIHwgJ1BST0QnO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYnVja2V0TmFtZT86IHN0cmluZztcbiAgaG9zdGVkWm9uZTogc3RyaW5nO1xuICBkb21haW5OYW1lOiBzdHJpbmc7XG4gIGJhc2ljQXV0aD86IHN0cmluZyB8IEJhc2ljQXV0aENyZWRlbnRpYWxzIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICBjbG91ZGZyb250RnVuY3Rpb24/OiB7XG4gICAgY29kZTogc3RyaW5nO1xuICAgIGV2ZW50VHlwZTogQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlW107XG4gIH1cbiAgcmVkaXJlY3RzPzogQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RzO1xuICByZWRpcmVjdHNDc3ZQYXRoPzogc3RyaW5nO1xuICAvLyBhdHRhY2hXZWJBY2w/OiBib29sZWFuIHwgc3RyaW5nO1xuICB3ZWJBY2w/OiBib29sZWFuIHwgc3RyaW5nIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICByZXNwb25zZUhlYWRlcnNQb2xpY3k/OiBmYWxzZSB8IEFXU01hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3kgfCBVVUlEIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICByZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcz86IFJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzO1xuICByZXNwb25zZUNzcEhlYWRlcnM/OiBDc3BIZWFkZXJzIHwgc3RyaW5nO1xuICBkZXN0cm95PzogYm9vbGVhbjtcbiAgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGVycm9yUmVzcG9uc2VzPzogKENsb3VkRnJvbnRFcnJvclJlc3BvbnNlIHwgRXJyb3JSZXNwb25zZSlbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFdlYkdsb2JhbFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgc3NsQ2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXQ6IEJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRGdW5jdGlvbjogRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250RGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG4gIHB1YmxpYyByZWFkb25seSB3ZWJBY2w6IENmbldlYkFDTCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGFSZWNvcmQ6IEFSZWNvcmQ7XG4gIHB1YmxpYyByZWFkb25seSBhYWFhUmVjb3JkOiBBYWFhUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJHbG9iYWxTdGFja1Byb3BzICYgU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGFkZEV2b1N0YWNrVGFncyh0aGlzLCAnV2ViR2xvYmFsU3RhY2snKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBnZXRIb3N0ZWRab25lKHRoaXMsICdnZXRIb3N0ZWRab25lJywgcHJvcHMuaG9zdGVkWm9uZSk7XG5cbiAgICBjb25zdCBfc3NsQ2VydCA9IG5ldyBTU0xDZXJ0aWZpY2F0ZSh0aGlzLCAnU1NMQ2VydGlmaWNhdGUnLCB7XG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICB9KTtcbiAgICB0aGlzLnNzbENlcnRpZmljYXRlID0gX3NzbENlcnQuY2VydGlmaWNhdGU7XG5cbiAgICBjb25zdCBfczNCdWNrZXQgPSBuZXcgUzNCdWNrZXQodGhpcywgJ1MzQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYnVja2V0TmFtZSA/PyBQaHlzaWNhbE5hbWUuR0VORVJBVEVfSUZfTkVFREVELFxuICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgIH0pO1xuICAgIHRoaXMuczNCdWNrZXQgPSBfczNCdWNrZXQuYnVja2V0O1xuXG4gICAgbGV0IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5KSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSA9PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpKSB7XG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gUmVzcG9uc2VIZWFkZXJzUG9saWN5LmZyb21SZXNwb25zZUhlYWRlcnNQb2xpY3lJZCh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3ktYnktaWQnLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IFJlc3BvbnNlSGVhZGVyc1BvbGljeVtwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgYXMga2V5b2YgdHlwZW9mIFJlc3BvbnNlSGVhZGVyc1BvbGljeV0gYXMgSVJlc3BvbnNlSGVhZGVyc1BvbGljeSA/PyBSZXNwb25zZUhlYWRlcnNQb2xpY3kuU0VDVVJJVFlfSEVBREVSUztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCkge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBSZXNwb25zZUhlYWRlcnNQb2xpY3kuZnJvbVJlc3BvbnNlSGVhZGVyc1BvbGljeUlkKHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeS1ieS1pZCcsIFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCwgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5LnZlcnNpb24pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFzZUhlYWRlcnNCZWhhdmlvcjogUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciA9IHtcbiAgICAgICAgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5zZWNvbmRzKDMxNTM2MDAwKVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50VHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBmcmFtZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBmcmFtZU9wdGlvbjogSGVhZGVyc0ZyYW1lT3B0aW9uLlNBTUVPUklHSU4sXG4gICAgICAgIH0sXG4gICAgICAgIHJlZmVycmVyUG9saWN5OiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IEhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOXG4gICAgICAgIH0sXG4gICAgICAgIHhzc1Byb3RlY3Rpb246IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBwcm90ZWN0aW9uOiB0cnVlLFxuICAgICAgICAgIG1vZGVCbG9jazogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lID0gYCR7ZG9tYWluQXNJZChwcm9wcy5kb21haW5OYW1lKX0tcmVzcG9uc2UtaGVhZGVycy1wb2xpY3lgO1xuICAgICAgXG4gICAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIHtcbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gbmV3IFJlc3BvbnNlSGVhZGVyc1BvbGljeSh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3knLCB7XG4gICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAuLi5wcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lIHx8IHJlc3BvbnNlSGVhZGVyc1BvbGljeU5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnJlc3BvbnNlQ3NwSGVhZGVycykge1xuICAgICAgICBsZXQgY3NwID0gJyc7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMucmVzcG9uc2VDc3BIZWFkZXJzID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWYgKGlzQ3NwQ3N2KHByb3BzLnJlc3BvbnNlQ3NwSGVhZGVycykpIHtcbiAgICAgICAgICAgIGNzcCA9IGNzcEhlYWRlcnNUb1N0cmluZyhwYXJzZUNzcENzdihwcm9wcy5yZXNwb25zZUNzcEhlYWRlcnMpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3NwID0gcHJvcHMucmVzcG9uc2VDc3BIZWFkZXJzO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjc3AgPSBPYmplY3QuZW50cmllcyhwcm9wcy5yZXNwb25zZUNzcEhlYWRlcnMpLm1hcCgoW2RpcmVjdGl2ZSwgdmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2RpcmVjdGl2ZX0gJHt2YWx1ZXMuam9pbignICcpfTtgXG4gICAgICAgICAgfSkuam9pbignICcpXG4gICAgICAgIH1cbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gbmV3IFJlc3BvbnNlSGVhZGVyc1BvbGljeSh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3knLCB7XG4gICAgICAgICAgc2VjdXJpdHlIZWFkZXJzQmVoYXZpb3I6IHtcbiAgICAgICAgICAgIC4uLmJhc2VIZWFkZXJzQmVoYXZpb3IsXG4gICAgICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3k6IHtcbiAgICAgICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeTogY3NwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5TmFtZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgdGhlIHRoZSBwb2xpY3kgaXMgbm90IGdldHRpbmcgdXBkYXRlZCBpbiB0aGUgQ2xvdWRGcm9udCBiZWhhdmlvclxuICAgIHRoaXMucmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gcmVzcG9uc2VIZWFkZXJzUG9saWN5O1xuXG4gICAgY29uc3QgZGVmYXVsdEJlaGF2aW9yOiBCZWhhdmlvck9wdGlvbnMgPSB7XG4gICAgICBvcmlnaW46IFMzQnVja2V0T3JpZ2luLndpdGhPcmlnaW5BY2Nlc3NDb250cm9sKHRoaXMuczNCdWNrZXQpLFxuICAgICAgZnVuY3Rpb25Bc3NvY2lhdGlvbnM6IFtdLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5OiByZXNwb25zZUhlYWRlcnNQb2xpY3kgPz8gKHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSAhPT0gZmFsc2UgPyBSZXNwb25zZUhlYWRlcnNQb2xpY3kuU0VDVVJJVFlfSEVBREVSUyA6IHVuZGVmaW5lZClcbiAgICB9O1xuXG4gICAgbGV0IGNmZm46IENsb3VkRnJvbnRGdW5jdGlvbjtcbiAgICBpZiAocHJvcHMuYmFzaWNBdXRoKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLmJhc2ljQXV0aCAhPSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoKHByb3BzLmJhc2ljQXV0aCBhcyBCYXNpY0F1dGhDcmVkZW50aWFscykudXNlciAmJiAocHJvcHMuYmFzaWNBdXRoIGFzIEJhc2ljQXV0aENyZWRlbnRpYWxzKS5wYXNzd29yZCkge1xuICAgICAgICAgIHByb3BzLmJhc2ljQXV0aCA9IEJ1ZmZlci5mcm9tKGAkeyhwcm9wcy5iYXNpY0F1dGggYXMgQmFzaWNBdXRoQ3JlZGVudGlhbHMpLnVzZXJ9OiR7KHByb3BzLmJhc2ljQXV0aCBhcyBCYXNpY0F1dGhDcmVkZW50aWFscykucGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICB9IGVsc2UgaWYgKChwcm9wcy5iYXNpY0F1dGggYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoKSB7XG4gICAgICAgICAgcHJvcHMuYmFzaWNBdXRoID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKHRoaXMsIChwcm9wcy5iYXNpY0F1dGggYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoLCAocHJvcHMuYmFzaWNBdXRoIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikudmVyc2lvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcHMuYmFzaWNBdXRoID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24pIHtcbiAgICAgIGNmZm4gPSBDbG91ZEZyb250RnVuY3Rpb24uY3JlYXRlRnVuY3Rpb24odGhpcywgbnVsbCwge1xuICAgICAgICBjcmVkZW50aWFsczogcHJvcHMuYmFzaWNBdXRoLFxuICAgICAgICByZWRpcmVjdHM6IHByb3BzLnJlZGlyZWN0cyxcbiAgICAgICAgcmVkaXJlY3RzQ3N2UGF0aDogcHJvcHMucmVkaXJlY3RzQ3N2UGF0aCxcbiAgICAgICAgY29kZTogcHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uLmNvZGUsXG4gICAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYmFzaWNBdXRoKSB7XG4gICAgICBjZmZuID0gQ2xvdWRGcm9udEZ1bmN0aW9uLmNyZWF0ZUJhc2ljQXV0aERlZmF1bHREb2ModGhpcywge1xuICAgICAgICBjcmVkZW50aWFsczogcHJvcHMuYmFzaWNBdXRoLFxuICAgICAgICByZWRpcmVjdHM6IHByb3BzLnJlZGlyZWN0cyxcbiAgICAgICAgcmVkaXJlY3RzQ3N2UGF0aDogcHJvcHMucmVkaXJlY3RzQ3N2UGF0aCxcbiAgICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmZm4gPSBDbG91ZEZyb250RnVuY3Rpb24uY3JlYXRlRGVmYXVsdERvYyh0aGlzLCB7XG4gICAgICAgIHJlZGlyZWN0czogcHJvcHMucmVkaXJlY3RzLFxuICAgICAgICByZWRpcmVjdHNDc3ZQYXRoOiBwcm9wcy5yZWRpcmVjdHNDc3ZQYXRoLFxuICAgICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jbG91ZEZyb250RnVuY3Rpb24gPSBjZmZuLmZuO1xuXG4gICAgLy8gY29uc3QgZXZlbnRUeXBlczogQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlW10gPSBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24/LmV2ZW50VHlwZSAmJiBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uZXZlbnRUeXBlLmxlbmd0aCA+IDAgPyBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uZXZlbnRUeXBlIDogWydWSUVXRVJfUkVRVUVTVCcsICdWSUVXRVJfUkVTUE9OU0UnXTtcblxuICAgIGxldCBldmVudFR5cGVzOiBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGVbXSA9IFsnVklFV0VSX1JFUVVFU1QnLCAnVklFV0VSX1JFU1BPTlNFJ107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uPy5ldmVudFR5cGUpICYmIHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbi5ldmVudFR5cGUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXRzID0gcHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uLmV2ZW50VHlwZVxuICAgICAgICAuZmlsdGVyKCh2LCBpLCBhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR5cGVvZiB2ID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAodiA9PT0gJ1ZJRVdFUl9SRVFVRVNUJyB8fCB2ID09PSAnVklFV0VSX1JFU1BPTlNFJykgJiZcbiAgICAgICAgICAgIGEuaW5kZXhPZih2KSA9PT0gaSAvLyBkZWR1cFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgaWYgKGV0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV2ZW50VHlwZXMgPSBldHM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgZXZlbnRUeXBlcykge1xuICAgICAgZGVmYXVsdEJlaGF2aW9yLmZ1bmN0aW9uQXNzb2NpYXRpb25zIS5wdXNoKHtcbiAgICAgICAgZXZlbnRUeXBlOiBGdW5jdGlvbkV2ZW50VHlwZVtldmVudFR5cGVdLFxuICAgICAgICBmdW5jdGlvbjogdGhpcy5jbG91ZEZyb250RnVuY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBsZXQgd2ViQWNsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHByb3BzLndlYkFjbCA9PSAnc3RyaW5nJyAmJiBwcm9wcy53ZWJBY2wuc3RhcnRzV2l0aCgnYXJuOmF3cycpKSB7XG4gICAgICB3ZWJBY2xJZCA9IHByb3BzLndlYkFjbDtcbiAgICB9IGVsc2UgaWYgKChwcm9wcy53ZWJBY2wgYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoKSB7XG4gICAgICB3ZWJBY2xJZCA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCAocHJvcHMud2ViQWNsIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikucGF0aCwgKHByb3BzLndlYkFjbCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnZlcnNpb24pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMud2ViQWNsID09PSB0cnVlKSB7XG4gICAgICBjb25zdCB3YWYgPSBuZXcgQ2xvdWRGcm9udFdlYkFjbCh0aGlzLCAnQ2xvdWRGcm9udFdlYkFjbCcsIHtcbiAgICAgICAgbmFtZTogYCR7ZG9tYWluQXNJZChwcm9wcy5kb21haW5OYW1lKX1gLFxuICAgICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgICB9KTtcbiAgICAgIHRoaXMud2ViQWNsID0gd2FmLmFjbDtcbiAgICAgIHdlYkFjbElkID0gd2FmLmFjbC5hdHRyQXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNmRGlzdHJpYnV0aW9uID0gbmV3IENsb3VkRnJvbnREaXN0cmlidXRpb24odGhpcywgJ0Nsb3VkRnJvbnREaXN0cmlidXRpb24nLCB7XG4gICAgICBkb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uID8/IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBwcmljZUNsYXNzOiBwcm9wcy5lbnZUeXBlLFxuICAgICAgY2VydGlmaWNhdGU6IHRoaXMuc3NsQ2VydGlmaWNhdGUsXG4gICAgICBkZWZhdWx0QmVoYXZpb3IsXG4gICAgICB3ZWJBY2xJZCxcbiAgICAgIGVycm9yUmVzcG9uc2VzOiBwcm9wcy5lcnJvclJlc3BvbnNlc1xuICAgIH0pO1xuICAgIHRoaXMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbiA9IGNmRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbjtcblxuICAgIGNvbnN0IGNmQWxpYXMgPSBuZXcgQ2xvdWRGcm9udEFsaWFzKHRoaXMsICdDbG91ZEZyb250QWxpYXMnLCB7XG4gICAgICBkaXN0cmlidXRpb246IGNmRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbixcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lXG4gICAgfSk7XG4gICAgdGhpcy5hUmVjb3JkID0gY2ZBbGlhcy5hUmVjb3JkO1xuICAgIHRoaXMuYWFhYVJlY29yZCA9IGNmQWxpYXMuYWFhYVJlY29yZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NzcENzdihzdHI6IHN0cmluZykge1xuICBpZiAodHlwZW9mIHN0ciAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBsaW5lcyA9IHN0ci50cmltKCkuc3BsaXQoJ1xcbicpO1xuICBpZiAobGluZXMubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBoZWFkZXJzID0gbGluZXNbMF0uc3BsaXQoJywnKS5tYXAoaCA9PiBoLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgcmV0dXJuIGhlYWRlcnMuaW5kZXhPZignc291cmNlJykgIT09IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNzcENzdihjc3Y6IHN0cmluZyk6IENzcEhlYWRlcnMge1xuICBjb25zdCBsaW5lcyA9IGNzdi50cmltKCkuc3BsaXQoJ1xcbicpO1xuICBpZiAobGluZXMubGVuZ3RoIDwgMSkgcmV0dXJuIHt9O1xuXG4gIC8vIFBhcnNlIGhlYWRlciByb3dcbiAgY29uc3QgaGVhZGVycyA9IGxpbmVzWzBdLnNwbGl0KCcsJykubWFwKGggPT4gaC50cmltKCkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IHNvdXJjZUluZGV4ID0gaGVhZGVycy5pbmRleE9mKCdzb3VyY2UnKTtcblxuICBpZiAoc291cmNlSW5kZXggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDU1YgbXVzdCBjb250YWluIGEgXCJzb3VyY2VcIiBjb2x1bW4nKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogQ3NwSGVhZGVycyA9IHt9O1xuXG4gIC8vIFByb2Nlc3MgZGF0YSByb3dzXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBsaW5lID0gbGluZXNbaV0udHJpbSgpO1xuICAgIGlmICghbGluZSkgY29udGludWU7IC8vIFNraXAgZW1wdHkgbGluZXNcblxuICAgIGNvbnN0IHZhbHVlcyA9IGxpbmUuc3BsaXQoJywnKS5tYXAodiA9PiB2LnRyaW0oKSk7XG4gICAgY29uc3Qgc291cmNlID0gdmFsdWVzW3NvdXJjZUluZGV4XTtcblxuICAgIGlmICghc291cmNlKSBjb250aW51ZTsgLy8gU2tpcCByb3dzIHdpdGggbm8gc291cmNlXG5cbiAgICAvLyBGb3IgZWFjaCBkaXJlY3RpdmUsIGFkZCBzb3VyY2UgaWYgdGhlIHZhbHVlIGlzIG1hcmtlZCB3aXRoICd4J1xuICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBjb2xJbmRleCkgPT4ge1xuICAgICAgaWYgKGhlYWRlciAhPT0gJ3NvdXJjZScgJiYgdmFsdWVzW2NvbEluZGV4XS50b0xvd2VyQ2FzZSgpID09PSAneCcpIHtcbiAgICAgICAgaWYgKCFyZXN1bHRbaGVhZGVyIGFzIGtleW9mIENzcEhlYWRlcnNdKSB7XG4gICAgICAgICAgcmVzdWx0W2hlYWRlciBhcyBrZXlvZiBDc3BIZWFkZXJzXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIChyZXN1bHRbaGVhZGVyIGFzIGtleW9mIENzcEhlYWRlcnNdIGFzIHN0cmluZ1tdKS5wdXNoKHNvdXJjZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjc3BIZWFkZXJzVG9TdHJpbmcoaGVhZGVyczogQ3NwSGVhZGVycyk6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhoZWFkZXJzKVxuICAgIC5tYXAoKFtkaXJlY3RpdmUsIHNvdXJjZXNdKSA9PiBgJHtkaXJlY3RpdmV9ICR7c291cmNlcy5qb2luKCcgJyl9O2ApXG4gICAgLmpvaW4oJyAnKTtcbn0iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inizioevoke/evosynth",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "author": "",
5
5
  "license": "ISC",
6
6
  "description": "",
@@ -26,7 +26,7 @@ export interface AppConfigCloudFrontProps {
26
26
  responseHeaders?: AWSManagedResponseHeadersPolicy | UUID | false;
27
27
  responseHeadersParam?: string;
28
28
  responseHeadersPolicy?: ResponseHeadersPolicyProps;
29
- cspHeaders?: CspHeaders;
29
+ cspHeaders?: CspHeaders | string;
30
30
  redirects?: CloudFrontFunctionRedirects;
31
31
  function?: string | {
32
32
  code: string;
@@ -36,7 +36,7 @@ export interface WebGlobalStackProps {
36
36
  webAcl?: boolean | string | SsmStringParameter;
37
37
  responseHeadersPolicy?: false | AWSManagedResponseHeadersPolicy | UUID | SsmStringParameter;
38
38
  responseHeadersPolicyProps?: ResponseHeadersPolicyProps;
39
- responseCspHeaders?: CspHeaders;
39
+ responseCspHeaders?: CspHeaders | string;
40
40
  destroy?: boolean;
41
41
  tags?: Record<string, string>;
42
42
  errorResponses?: (CloudFrontErrorResponse | ErrorResponse)[];
@@ -115,14 +115,24 @@ export class WebGlobalStack extends Stack {
115
115
  responseHeadersPolicyName: props.responseHeadersPolicyProps.responseHeadersPolicyName || responseHeadersPolicyName
116
116
  });
117
117
  } else if (props.responseCspHeaders) {
118
+ let csp = '';
119
+ if (typeof props.responseCspHeaders == 'string') {
120
+ if (isCspCsv(props.responseCspHeaders)) {
121
+ csp = cspHeadersToString(parseCspCsv(props.responseCspHeaders));
122
+ } else {
123
+ csp = props.responseCspHeaders;
124
+ }
125
+ } else {
126
+ csp = Object.entries(props.responseCspHeaders).map(([directive, values]) => {
127
+ return `${directive} ${values.join(' ')};`
128
+ }).join(' ')
129
+ }
118
130
  responseHeadersPolicy = new ResponseHeadersPolicy(this, 'response-headers-policy', {
119
131
  securityHeadersBehavior: {
120
132
  ...baseHeadersBehavior,
121
133
  contentSecurityPolicy: {
122
134
  override: true,
123
- contentSecurityPolicy: Object.entries(props.responseCspHeaders).map(([directive, values]) => {
124
- return `${directive} ${values.join(' ')};`
125
- }).join(' ')
135
+ contentSecurityPolicy: csp
126
136
  },
127
137
  },
128
138
  responseHeadersPolicyName
@@ -231,4 +241,60 @@ export class WebGlobalStack extends Stack {
231
241
  this.aRecord = cfAlias.aRecord;
232
242
  this.aaaaRecord = cfAlias.aaaaRecord;
233
243
  }
244
+ }
245
+
246
+ function isCspCsv(str: string) {
247
+ if (typeof str != 'string') {
248
+ return false;
249
+ }
250
+ const lines = str.trim().split('\n');
251
+ if (lines.length < 1) {
252
+ return false;
253
+ }
254
+ const headers = lines[0].split(',').map(h => h.trim().toLowerCase());
255
+ return headers.indexOf('source') !== -1;
256
+ }
257
+
258
+ function parseCspCsv(csv: string): CspHeaders {
259
+ const lines = csv.trim().split('\n');
260
+ if (lines.length < 1) return {};
261
+
262
+ // Parse header row
263
+ const headers = lines[0].split(',').map(h => h.trim().toLowerCase());
264
+ const sourceIndex = headers.indexOf('source');
265
+
266
+ if (sourceIndex === -1) {
267
+ throw new Error('CSV must contain a "source" column');
268
+ }
269
+
270
+ const result: CspHeaders = {};
271
+
272
+ // Process data rows
273
+ for (let i = 1; i < lines.length; i++) {
274
+ const line = lines[i].trim();
275
+ if (!line) continue; // Skip empty lines
276
+
277
+ const values = line.split(',').map(v => v.trim());
278
+ const source = values[sourceIndex];
279
+
280
+ if (!source) continue; // Skip rows with no source
281
+
282
+ // For each directive, add source if the value is marked with 'x'
283
+ headers.forEach((header, colIndex) => {
284
+ if (header !== 'source' && values[colIndex].toLowerCase() === 'x') {
285
+ if (!result[header as keyof CspHeaders]) {
286
+ result[header as keyof CspHeaders] = [];
287
+ }
288
+ (result[header as keyof CspHeaders] as string[]).push(source);
289
+ }
290
+ });
291
+ }
292
+
293
+ return result;
294
+ }
295
+
296
+ function cspHeadersToString(headers: CspHeaders): string {
297
+ return Object.entries(headers)
298
+ .map(([directive, sources]) => `${directive} ${sources.join(' ')};`)
299
+ .join(' ');
234
300
  }