@workflow/builders 5.0.0-beta.17 → 5.0.0-beta.18

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.
@@ -810,7 +810,29 @@ describe('createSwcPlugin projectRoot', () => {
810
810
  ],
811
811
  });
812
812
  expect(result.errors).toHaveLength(0);
813
- expect(applySwcTransformMock).toHaveBeenCalledWith('src/internal/message/workflow/handle-message.ts', expect.stringContaining('"use workflow"'), 'workflow', fixture.workflowFile, fixture.appRoot);
813
+ expect(applySwcTransformMock).toHaveBeenCalledWith('src/internal/message/workflow/handle-message.ts', expect.stringContaining('"use workflow"'), 'workflow', fixture.workflowFile, fixture.appRoot, fixture.appRoot);
814
+ });
815
+ it('passes an explicit moduleSpecifierRoot separately from projectRoot', async () => {
816
+ const fixture = setupFixture();
817
+ const tracingRoot = testRoot;
818
+ const result = await esbuild.build({
819
+ entryPoints: [fixture.workflowFile],
820
+ absWorkingDir: fixture.packageRoot,
821
+ bundle: true,
822
+ format: 'esm',
823
+ platform: 'node',
824
+ write: false,
825
+ plugins: [
826
+ createSwcPlugin({
827
+ mode: 'workflow',
828
+ projectRoot: tracingRoot,
829
+ moduleSpecifierRoot: fixture.appRoot,
830
+ workflowManifest: {},
831
+ }),
832
+ ],
833
+ });
834
+ expect(result.errors).toHaveLength(0);
835
+ expect(applySwcTransformMock).toHaveBeenCalledWith('src/internal/message/workflow/handle-message.ts', expect.stringContaining('"use workflow"'), 'workflow', fixture.workflowFile, tracingRoot, fixture.appRoot);
814
836
  });
815
837
  it('defaults the transform projectRoot to absWorkingDir', async () => {
816
838
  const fixture = setupFixture();
@@ -829,7 +851,7 @@ describe('createSwcPlugin projectRoot', () => {
829
851
  ],
830
852
  });
831
853
  expect(result.errors).toHaveLength(0);
832
- expect(applySwcTransformMock).toHaveBeenCalledWith('src/internal/message/workflow/handle-message.ts', expect.stringContaining('"use workflow"'), 'workflow', fixture.workflowFile, fixture.packageRoot);
854
+ expect(applySwcTransformMock).toHaveBeenCalledWith('src/internal/message/workflow/handle-message.ts', expect.stringContaining('"use workflow"'), 'workflow', fixture.workflowFile, fixture.packageRoot, fixture.packageRoot);
833
855
  });
834
856
  });
835
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3djLWVzYnVpbGQtcGx1Z2luLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3djLWVzYnVpbGQtcGx1Z2luLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFekUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDL0IsQ0FBQyxDQUFDLENBQUM7QUFFSixFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsaUJBQWlCLEVBQUUscUJBQXFCO0NBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBRUosT0FBTyxFQUNMLDJCQUEyQixFQUMzQixhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFFMUMsU0FBUyxTQUFTLENBQUMsSUFBWSxFQUFFLFFBQVEsR0FBRyxFQUFFO0lBQzVDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFD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LENBQUMsb0JBQW9CLENBQ2hELGlEQUFpRCxFQUNqRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFDekMsVUFBVSxFQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxPQUFPLENBQ2hCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRSxNQUFNLE9BQU8sR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUUvQixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDakMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNuQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDbEMsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsS0FBSztZQUNiLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFO2dCQUNQLGVBQWUsQ0FBQztvQkFDZCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsZ0JBQWdCLEVBQUUsRUFBRTtpQkFDckIsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsb0JBQW9CLENBQ2hELGlEQUFpRCxFQUNqRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFDekMsVUFBVSxFQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxXQUFXLENBQ3BCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgbWtkaXJTeW5jLFxuICBta2R0ZW1wU3luYyxcbiAgcmVhbHBhdGhTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0LCB2aSB9IGZyb20gJ3ZpdGVzdCc7XG5cbmNvbnN0IHsgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrIH0gPSB2aS5ob2lzdGVkKCgpID0+ICh7XG4gIGFwcGx5U3djVHJhbnNmb3JtTW9jazogdmkuZm4oKSxcbn0pKTtcblxudmkubW9jaygnLi9hcHBseS1zd2MtdHJhbnNmb3JtLmpzJywgKCkgPT4gKHtcbiAgYXBwbHlTd2NUcmFuc2Zvcm06IGFwcGx5U3djVHJhbnNmb3JtTW9jayxcbn0pKTtcblxuaW1wb3J0IHtcbiAgY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luLFxuICBpbXBvcnRQYXJlbnRzLFxufSBmcm9tICcuL2Rpc2NvdmVyLWVudHJpZXMtZXNidWlsZC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgY3JlYXRlU3djUGx1Z2luIH0gZnJvbSAnLi9zd2MtZXNidWlsZC1wbHVnaW4uanMnO1xuXG5jb25zdCByZWFsVG1wZGlyID0gcmVhbHBhdGhTeW5jKHRtcGRpcigpKTtcblxuZnVuY3Rpb24gd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgY29udGVudHMgPSAnJyk6IHZvaWQge1xuICBta2RpclN5bmMoZGlybmFtZShwYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIHdyaXRlRmlsZVN5bmMocGF0aCwgY29udGVudHMsICd1dGYtOCcpO1xufVxuXG5kZXNjcmliZSgnY3JlYXRlU3djUGx1Z2luIGV4dGVybmFsaXplTm9uU3RlcHMnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3djLXBsdWdpbi0nKSk7XG4gICAgaW1wb3J0UGFyZW50cy5jbGVhcigpO1xuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrUmVzZXQoKTtcbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKF9maWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpbXBvcnRQYXJlbnRzLmNsZWFyKCk7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdmYWlscyB0aGUgYnVpbGQgd2hlbiB0d28gZmlsZXMgZW1pdCB0aGUgc2FtZSBzdGVwIGlkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICBjb25zdCBmaXJzdFN0ZXBGaWxlID0gam9pbihzcmNEaXIsICdjb25maXJtYXRpb24udHMnKTtcbiAgICBjb25zdCBzZWNvbmRTdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAncmVzY2hlZHVsZS50cycpO1xuXG4gICAgd3JpdGVGaWxlKGZpcnN0U3RlcEZpbGUsIGBleHBvcnQgY29uc3QgZmlyc3QgPSB0cnVlO2ApO1xuICAgIHdyaXRlRmlsZShzZWNvbmRTdGVwRmlsZSwgYGV4cG9ydCBjb25zdCBzZWNvbmQgPSB0cnVlO2ApO1xuXG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tJbXBsZW1lbnRhdGlvbihcbiAgICAgIGFzeW5jIChmaWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7XG4gICAgICAgICAgc3RlcHM6IHtcbiAgICAgICAgICAgIFtmaWxlbmFtZV06IHtcbiAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICBzdGVwSWQ6ICdzdGVwLy9zaGFyZWQtcGFja2FnZUAxLjAuMC8vc2VuZE1lc3NhZ2UnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZmlyc3RTdGVwRmlsZSwgc2Vjb25kU3RlcEZpbGVdLFxuICAgICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgb3V0ZGlyOiBqb2luKHRlc3RSb290LCAnb3V0JyksXG4gICAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgKS5yZWplY3RzLnRvVGhyb3coL0R1cGxpY2F0ZSB3b3JrZmxvdyBzdGVwIElELyk7XG4gIH0pO1xuXG4gIGl0KCdmYWlscyB0aGUgYnVpbGQgd2hlbiB0d28gZmlsZXMgZW1pdCB0aGUgc2FtZSB3b3JrZmxvdyBpZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3QgZmlyc3RXb3JrZmxvd0ZpbGUgPSBqb2luKHNyY0RpciwgJ2NvbmZpcm1hdGlvbi50cycpO1xuICAgIGNvbnN0IHNlY29uZFdvcmtmbG93RmlsZSA9IGpvaW4oc3JjRGlyLCAncmVzY2hlZHVsZS50cycpO1xuXG4gICAgd3JpdGVGaWxlKGZpcnN0V29ya2Zsb3dGaWxlLCBgZXhwb3J0IGNvbnN0IGZpcnN0ID0gdHJ1ZTtgKTtcbiAgICB3cml0ZUZpbGUoc2Vjb25kV29ya2Zsb3dGaWxlLCBgZXhwb3J0IGNvbnN0IHNlY29uZCA9IHRydWU7YCk7XG5cbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKGZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHtcbiAgICAgICAgICB3b3JrZmxvd3M6IHtcbiAgICAgICAgICAgIFtmaWxlbmFtZV06IHtcbiAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICB3b3JrZmxvd0lkOiAnd29ya2Zsb3cvL3NoYXJlZC1wYWNrYWdlQDEuMC4wLy9zZW5kTWVzc2FnZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgZW50cnlQb2ludHM6IFtmaXJzdFdvcmtmbG93RmlsZSwgc2Vjb25kV29ya2Zsb3dGaWxlXSxcbiAgICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICAgIG91dGRpcjogam9pbih0ZXN0Um9vdCwgJ291dCcpLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgICBtb2RlOiAnd29ya2Zsb3cnLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICApLnJlamVjdHMudG9UaHJvdygvRHVwbGljYXRlIHdvcmtmbG93IElELyk7XG4gIH0pO1xuXG4gIGl0LmVhY2goW1xuICAgIHsgaW5wdXRFeHQ6ICcudHMnLCBvdXRwdXRFeHQ6ICcuanMnIH0sXG4gICAgeyBpbnB1dEV4dDogJy50c3gnLCBvdXRwdXRFeHQ6ICcuanMnIH0sXG4gICAgeyBpbnB1dEV4dDogJy5tdHMnLCBvdXRwdXRFeHQ6ICcubWpzJyB9LFxuICAgIHsgaW5wdXRFeHQ6ICcuY3RzJywgb3V0cHV0RXh0OiAnLmNqcycgfSxcbiAgXSkoJ3Jld3JpdGVzIGV4dGVybmFsaXplZCAkaW5wdXRFeHQgaW1wb3J0cyB0byAkb3V0cHV0RXh0IHdoZW4gcmV3cml0ZVRzRXh0ZW5zaW9ucyBpcyBlbmFibGVkJywgYXN5bmMgKHtcbiAgICBpbnB1dEV4dCxcbiAgICBvdXRwdXRFeHQsXG4gIH0pID0+IHtcbiAgICBjb25zdCBvdXRkaXIgPSBqb2luKHRlc3RSb290LCAnb3V0Jyk7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbihzcmNEaXIsICdzdGVwLnRzJyk7XG5cbiAgICB3cml0ZUZpbGUoam9pbihzcmNEaXIsIGBkZXAke2lucHV0RXh0fWApLCAnZXhwb3J0IGNvbnN0IGRlcCA9IHt9OycpO1xuICAgIHdyaXRlRmlsZShzdGVwRmlsZSwgYGltcG9ydCB7IGRlcCB9IGZyb20gJy4vZGVwJztcXG5jb25zb2xlLmxvZyhkZXApO2ApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgICAgcmV3cml0ZVRzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oYC9kZXAke291dHB1dEV4dH1gKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKGAvZGVwJHtpbnB1dEV4dH1gKTtcbiAgfSk7XG5cbiAgaXQoJ2J1bmRsZXMgcGF0aC1hbGlhc2VkIHByb2plY3QtbG9jYWwgaW1wb3J0cyBpbmxpbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gQWxpYXNlZCBwcm9qZWN0LWxvY2FsIGZpbGVzIG11c3QgYmUgYnVuZGxlZCBpbmxpbmUgKG5vdCBleHRlcm5hbGl6ZWRcbiAgICAvLyBhcyByZWxhdGl2ZSBwYXRocykgYmVjYXVzZSB0aGVpciBzb3VyY2Ugb24gZGlzayBtYXkgY29udGFpbiBmdXJ0aGVyXG4gICAgLy8gYWxpYXMgaW1wb3J0cyB0aGF0IE5vZGUncyBFU00gbG9hZGVyIGNhbm5vdCByZXNvbHZlIGF0IHJ1bnRpbWUuXG4gICAgLy8gU2VlIHBhY2thZ2VzL2J1aWxkZXJzL3NyYy9zd2MtZXNidWlsZC1wbHVnaW4udHMgZm9yIGZ1bGwgcmVhc29uaW5nLlxuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3QgbGliRGlyID0gam9pbihzcmNEaXIsICdsaWInKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihsaWJEaXIsICdjb25maWcudHMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgY29uZmlnID0geyB2YWx1ZTogXCJoZWxsby1mcm9tLWNvbmZpZ1wiIH07J1xuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnQC9saWIvY29uZmlnJztcXG5jb25zb2xlLmxvZyhjb25maWcpO2BcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBhbGlhczogeyAnQCc6IHNyY0RpciB9LFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZV0sXG4gICAgICAgICAgb3V0ZGlyLFxuICAgICAgICAgIHJld3JpdGVUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgLy8gVGhlIGFsaWFzZWQgaGVscGVyIHNob3VsZCBiZSBidW5kbGVkIGlubGluZSAoaXRzIGNvbnRlbnQgaXMgaW4gdGhlXG4gICAgLy8gb3V0cHV0KSwgbm90IGV4dGVybmFsaXplZCBhcyBhIHJlbGF0aXZlIHBhdGggb3IgbGVmdCBhcyBhIGJhcmUgYWxpYXMuXG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdoZWxsby1mcm9tLWNvbmZpZycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ0AvbGliL2NvbmZpZycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b01hdGNoKC9mcm9tXFxzK1tcIiddW15cIiddKlxcL2xpYlxcL2NvbmZpZ1xcLihqc3x0cylbXCInXS8pO1xuICB9KTtcblxuICBpdCgnYnVuZGxlcyB0cmFuc2l0aXZlIGFsaWFzZWQgaW1wb3J0cyBpbnNpZGUgYWxpYXNlZCBoZWxwZXJzIChNdXggc2VsZi1yZWZlcmVuY2luZyBwYWNrYWdlIHJlZ3Jlc3Npb24pJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL211eGluYy9haS9wdWxsLzE5My5cbiAgICAvL1xuICAgIC8vIEEgcGFja2FnZSBzZWxmLXJlZmVyZW5jZXMgaXRzIG93biBzdWJwYXRoIHZpYSB0c2NvbmZpZyBgcGF0aHNgIChlLmcuXG4gICAgLy8gYEBteS1wa2cvbGliL2Zvb2Ag4oaSIGBzcmMvbGliL2Zvby50c2ApLiBBIHN0ZXAgZmlsZSBpbXBvcnRzIGEgaGVscGVyXG4gICAgLy8gdmlhIHRoZSBhbGlhcywgYW5kIHRoYXQgaGVscGVyIGltcG9ydHMgYW5vdGhlciBoZWxwZXIgdmlhIHRoZSBhbGlhcy5cbiAgICAvL1xuICAgIC8vIFByZXZpb3VzbHkgdGhlIGhlbHBlcnMgd2VyZSBleHRlcm5hbGl6ZWQgYXMgcmVsYXRpdmUgcGF0aHMsIGJ1dCB0aGVpclxuICAgIC8vIHNvdXJjZSBvbiBkaXNrIHN0aWxsIGNvbnRhaW5lZCBgaW1wb3J0IFwiQG15LXBrZy9saWIvLi4uXCJgLiBBdCBydW50aW1lLFxuICAgIC8vIE5vZGUncyBFU00gbG9hZGVyIGRpZG4ndCBrbm93IGFib3V0IHRzY29uZmlnIHBhdGhzLCBmZWxsIHRocm91Z2ggdG9cbiAgICAvLyB0aGUgcGFja2FnZSdzIGBleHBvcnRzYCBtYXAsIGFuZCB0aHJldyBgUGFja2FnZSBzdWJwYXRoIC4uLiBpcyBub3RcbiAgICAvLyBkZWZpbmVkIGJ5IFwiZXhwb3J0c1wiYC5cbiAgICAvL1xuICAgIC8vIFdpdGggdGhlIGZpeCwgYWxpYXNlZCBwcm9qZWN0LWxvY2FsIGZpbGVzIGFyZSBidW5kbGVkIGlubGluZSwgc29cbiAgICAvLyB0aGVpciBhbGlhcyBpbXBvcnRzIGFyZSByZXNvbHZlZCBhdCBidWlsZCB0aW1lLlxuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3QgbGliRGlyID0gam9pbihzcmNEaXIsICdsaWInKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihsaWJEaXIsICdwcm92aWRlcnMudHMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgcHJvdmlkZXJOYW1lID0gXCJhbnRocm9waWNcIjsnXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKGxpYkRpciwgJ2NsaWVudC1mYWN0b3J5LnRzJyksXG4gICAgICAvLyBIZWxwZXIgdXNlcyB0aGUgc2FtZSBhbGlhcyB0byByZWFjaCBhIHNpYmxpbmcg4oCUIHRoaXMgaXMgdGhlIGNhc2VcbiAgICAgIC8vIHRoYXQgYnJva2UgdGhlIE11eCBidWlsZCB3aXRoIHdvcmtmbG93ID49IDQuMi4wLWJldGEuNzguXG4gICAgICBgaW1wb3J0IHsgcHJvdmlkZXJOYW1lIH0gZnJvbSAnQG15LXBrZy9saWIvcHJvdmlkZXJzJztcbmV4cG9ydCBjb25zdCBjbGllbnQgPSB7IHByb3ZpZGVyOiBwcm92aWRlck5hbWUgfTtgXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzdGVwRmlsZSxcbiAgICAgIGBpbXBvcnQgeyBjbGllbnQgfSBmcm9tICdAbXktcGtnL2xpYi9jbGllbnQtZmFjdG9yeSc7XFxuY29uc29sZS5sb2coY2xpZW50KTtgXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgYWxpYXM6IHsgJ0BteS1wa2cnOiBzcmNEaXIgfSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBbc3RlcEZpbGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgICByZXdyaXRlVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIC8vIEJvdGggaGVscGVycyBzaG91bGQgYmUgYnVuZGxlZCBpbmxpbmUg4oCUIG5vIGFsaWFzZWQgc3BlY2lmaWVycyBzaG91bGRcbiAgICAvLyBsZWFrIGludG8gdGhlIG91dHB1dCwgd2hlcmUgTm9kZSdzIEVTTSBsb2FkZXIgd291bGQgY2hva2Ugb24gdGhlbS5cbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2FudGhyb3BpYycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ0BteS1wa2cvbGliL3Byb3ZpZGVycycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ0BteS1wa2cvbGliL2NsaWVudC1mYWN0b3J5Jyk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCByZWxhdGl2aXplIE5vZGUuanMgYnVpbHRpbiBpbXBvcnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3Qgc3RlcEZpbGUgPSBqb2luKHNyY0RpciwgJ3N0ZXAudHMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xcbmNvbnNvbGUubG9nKGNyZWF0ZUhhc2gsIGpvaW4pO2BcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgLy8gQnVpbHRpbnMgc2hvdWxkIHJlbWFpbiBhcyBiYXJlIHNwZWNpZmllcnMsIG5vdCByZWxhdGl2aXplZCBwYXRoc1xuICAgIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2goL2Zyb21cXHMrW1wiJ11jcnlwdG9bXCInXS8pO1xuICAgIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2goL2Zyb21cXHMrW1wiJ11ub2RlOnBhdGhbXCInXS8pO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b01hdGNoKC9mcm9tXFxzK1tcIiddXFwuLipjcnlwdG9bXCInXS8pO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b01hdGNoKC9mcm9tXFxzK1tcIiddXFwuLipub2RlOnBhdGhbXCInXS8pO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgZXh0ZXJuYWxpemUgYWxpYXNlZCBpbXBvcnRzIHRoYXQgcmVzb2x2ZSBpbnRvIG5vZGVfbW9kdWxlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvdXRkaXIgPSBqb2luKHRlc3RSb290LCAnb3V0Jyk7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbihzcmNEaXIsICdzdGVwLnRzJyk7XG4gICAgY29uc3Qgbm9kZU1vZHVsZXNEaXIgPSBqb2luKHRlc3RSb290LCAnbm9kZV9tb2R1bGVzJywgJ3NvbWUtcGtnJyk7XG5cbiAgICB3cml0ZUZpbGUoam9pbihub2RlTW9kdWxlc0RpciwgJ2luZGV4LmpzJyksICdleHBvcnQgY29uc3QgcGtnID0gXCJoZWxsb1wiOycpO1xuICAgIHdyaXRlRmlsZShzdGVwRmlsZSwgYGltcG9ydCB7IHBrZyB9IGZyb20gJ0Bwa2cnO1xcbmNvbnNvbGUubG9nKHBrZyk7YCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbc3RlcEZpbGVdLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBvdXRkaXIsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIGFsaWFzOiB7ICdAcGtnJzogam9pbihub2RlTW9kdWxlc0RpciwgJ2luZGV4LmpzJykgfSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBbc3RlcEZpbGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAvLyBTaG91bGQgYmUgYnVuZGxlZCAoaW5saW5lZCksIG5vdCBleHRlcm5hbGl6ZWQgYXMgYSByZWxhdGl2ZSBub2RlX21vZHVsZXMgcGF0aFxuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignaGVsbG8nKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXS4qbm9kZV9tb2R1bGVzLyk7XG4gIH0pO1xuXG4gIGl0KCdleHRlcm5hbGl6ZXMgbmVzdGVkIGJhcmUgcGFja2FnZSBpbXBvcnRzIHRoYXQgb25seSByZXNvbHZlIGZyb20gYSBidW5kbGVkIHBhY2thZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuICAgIGNvbnN0IHBhcmVudFBrZ0RpciA9IGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCAncGFyZW50LXBrZycpO1xuICAgIGNvbnN0IHBhcmVudFBrZ0luZGV4ID0gam9pbihwYXJlbnRQa2dEaXIsICdpbmRleC5qcycpO1xuICAgIGNvbnN0IG5hdGl2ZVBrZ0RpciA9IGpvaW4ocGFyZW50UGtnRGlyLCAnbm9kZV9tb2R1bGVzJywgJ29wdGlvbmFsLW5hdGl2ZScpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwYXJlbnRQa2dEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ3BhcmVudC1wa2cnLCBtYWluOiAnaW5kZXguanMnIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBwYXJlbnRQa2dJbmRleCxcbiAgICAgIGBjb25zdCBuYXRpdmUgPSByZXF1aXJlKCdvcHRpb25hbC1uYXRpdmUnKTtcXG5leHBvcnRzLnZhbHVlID0gbmF0aXZlLnZhbHVlO2BcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4obmF0aXZlUGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdvcHRpb25hbC1uYXRpdmUnLCBtYWluOiAnYmluZGluZy5ub2RlJyB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKGpvaW4obmF0aXZlUGtnRGlyLCAnYmluZGluZy5ub2RlJyksICcnKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzdGVwRmlsZSxcbiAgICAgIGBpbXBvcnQgeyB2YWx1ZSB9IGZyb20gJ3BhcmVudC1wa2cnO1xcbmNvbnNvbGUubG9nKHZhbHVlKTtgXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZSwgcGFyZW50UGtnSW5kZXhdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ29wdGlvbmFsLW5hdGl2ZScpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ2JpbmRpbmcubm9kZScpO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICAnLnRzJyxcbiAgICAnLnRzeCcsXG4gICAgJy5tdHMnLFxuICAgICcuY3RzJyxcbiAgXSkoJ3ByZXNlcnZlcyBleHRlcm5hbGl6ZWQgJXMgZXh0ZW5zaW9ucyBieSBkZWZhdWx0JywgYXN5bmMgKGlucHV0RXh0KSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4oc3JjRGlyLCBgZGVwJHtpbnB1dEV4dH1gKSwgJ2V4cG9ydCBjb25zdCBkZXAgPSB7fTsnKTtcbiAgICB3cml0ZUZpbGUoc3RlcEZpbGUsIGBpbXBvcnQgeyBkZXAgfSBmcm9tICcuL2RlcCc7XFxuY29uc29sZS5sb2coZGVwKTtgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZV0sXG4gICAgICAgICAgb3V0ZGlyLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbihgL2RlcCR7aW5wdXRFeHR9YCk7XG4gIH0pO1xuXG4gIGl0KCdidW5kbGVzIHRyYW5zaXRpdmUgbG9jYWwgVHlwZVNjcmlwdCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlbnNpb25sZXNzIGltcG9ydHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NlcnZlcicsICd3b3JrZmxvd3MnLCAnbXktd29ya2Zsb3cudHMnKTtcbiAgICBjb25zdCBjb25zdGFudHNGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NoYXJlZCcsICdjb25zdGFudHMudHMnKTtcbiAgICBjb25zdCBoZWxwZXJzRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzaGFyZWQnLCAnaGVscGVycy50cycpO1xuXG4gICAgd3JpdGVGaWxlKGhlbHBlcnNGaWxlLCBgZXhwb3J0IGNvbnN0IEhFTFBFUl9WQUxVRSA9IFwiZnJvbS1oZWxwZXJcIjtgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBjb25zdGFudHNGaWxlLFxuICAgICAgYGltcG9ydCB7IEhFTFBFUl9WQUxVRSB9IGZyb20gJy4vaGVscGVycyc7XFxuZXhwb3J0IGNvbnN0IENBVEVHT1JJRVMgPSBbSEVMUEVSX1ZBTFVFXTtgXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzdGVwRmlsZSxcbiAgICAgIGBpbXBvcnQgeyBDQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG15U3RlcCgpIHtcXG4gICd1c2Ugc3RlcCc7XFxuICByZXR1cm4gQ0FURUdPUklFU1swXTtcXG59YFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB9O1xuICAgIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcmVzb2x2ZUV4dGVuc2lvbnM6IFsnLnRzJywgJy50c3gnLCAnLmpzJywgJy5qc3gnLCAnLm1qcycsICcuY2pzJ10sXG4gICAgICBwbHVnaW5zOiBbY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luKHN0YXRlLCB0ZXN0Um9vdCldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICByZXNvbHZlRXh0ZW5zaW9uczogWycudHMnLCAnLnRzeCcsICcuanMnLCAnLmpzeCcsICcubWpzJywgJy5janMnXSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBbc3RlcEZpbGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignZnJvbS1oZWxwZXInKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXVteXCInXSpzaGFyZWRcXC9jb25zdGFudHMvKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXVteXCInXSpzaGFyZWRcXC9oZWxwZXJzLyk7XG4gIH0pO1xuXG4gIGl0KCdleHRlcm5hbGl6ZXMgdHJhbnNpdGl2ZSBsb2NhbCBUeXBlU2NyaXB0IGRlcGVuZGVuY2llcyBieSBkZWZhdWx0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzZXJ2ZXInLCAnd29ya2Zsb3dzJywgJ215LXdvcmtmbG93LnRzJyk7XG4gICAgY29uc3QgY29uc3RhbnRzRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzaGFyZWQnLCAnY29uc3RhbnRzLnRzJyk7XG4gICAgY29uc3QgaGVscGVyc0ZpbGUgPSBqb2luKHRlc3RSb290LCAnc2hhcmVkJywgJ2hlbHBlcnMudHMnKTtcblxuICAgIHdyaXRlRmlsZShoZWxwZXJzRmlsZSwgYGV4cG9ydCBjb25zdCBIRUxQRVJfVkFMVUUgPSBcImZyb20taGVscGVyXCI7YCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgY29uc3RhbnRzRmlsZSxcbiAgICAgIGBpbXBvcnQgeyBIRUxQRVJfVkFMVUUgfSBmcm9tICcuL2hlbHBlcnMnO1xcbmV4cG9ydCBjb25zdCBDQVRFR09SSUVTID0gW0hFTFBFUl9WQUxVRV07YFxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0IHsgQ0FURUdPUklFUyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBteVN0ZXAoKSB7XFxuICAndXNlIHN0ZXAnO1xcbiAgcmV0dXJuIENBVEVHT1JJRVNbMF07XFxufWBcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgZGlzY292ZXJlZFdvcmtmbG93czogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgfTtcbiAgICBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbc3RlcEZpbGVdLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHJlc29sdmVFeHRlbnNpb25zOiBbJy50cycsICcudHN4JywgJy5qcycsICcuanN4JywgJy5tanMnLCAnLmNqcyddLFxuICAgICAgcGx1Z2luczogW2NyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbihzdGF0ZSwgdGVzdFJvb3QpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcmVzb2x2ZUV4dGVuc2lvbnM6IFsnLnRzJywgJy50c3gnLCAnLmpzJywgJy5qc3gnLCAnLm1qcycsICcuY2pzJ10sXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbignZnJvbS1oZWxwZXInKTtcbiAgICBleHBlY3Qob3V0cHV0KS50b01hdGNoKC9mcm9tXFxzK1tcIiddW15cIiddKnNoYXJlZFxcL2NvbnN0YW50c1xcLnRzW1wiJ10vKTtcbiAgfSk7XG5cbiAgaXQoJ2tlZXBzIG9yZGluYXJ5IHBhY2thZ2UgZGVwZW5kZW5jaWVzIGV4dGVybmFsIHdoZW4gcmVhY2hhYmxlIGZyb20gYSBidW5kbGVkIHN0ZXAnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NlcnZlcicsICd3b3JrZmxvd3MnLCAnbXktd29ya2Zsb3cudHMnKTtcbiAgICBjb25zdCBwa2dEaXIgPSBqb2luKHRlc3RSb290LCAnbm9kZV9tb2R1bGVzJywgJ3BsYWluLXBrZycpO1xuICAgIGNvbnN0IHBrZ0luZGV4ID0gam9pbihwa2dEaXIsICdpbmRleC5qcycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwa2dEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ3BsYWluLXBrZycsIG1haW46ICdpbmRleC5qcycgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShwa2dJbmRleCwgYGV4cG9ydCBjb25zdCB2YWx1ZSA9IFwiZnJvbS1wYWNrYWdlXCI7YCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0IHsgdmFsdWUgfSBmcm9tICdwbGFpbi1wa2cnO1xcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBteVN0ZXAoKSB7XFxuICAndXNlIHN0ZXAnO1xcbiAgcmV0dXJuIHZhbHVlO1xcbn1gXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgZGlzY292ZXJlZFN0ZXBzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRXb3JrZmxvd3M6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgZGlzY292ZXJlZFNlcmRlRmlsZXM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgIH07XG4gICAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luKHN0YXRlLCB0ZXN0Um9vdCldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgICAgYnVuZGxlVHJhbnNpdGl2ZUxvY2FsU3RlcERlcGVuZGVuY2llczogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b01hdGNoKC9mcm9tXFxzK1tcIiddcGxhaW4tcGtnW1wiJ10vKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdmcm9tLXBhY2thZ2UnKTtcbiAgfSk7XG5cbiAgaXQoJ2J1bmRsZXMgcGFja2FnZSBwYXJlbnRzIHdoZW4gdGhleSBsZWFkIHRvIGRpc2NvdmVyZWQgd29ya2Zsb3ctcmVsYXRlZCBlbnRyaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzZXJ2ZXInLCAnd29ya2Zsb3dzJywgJ215LXdvcmtmbG93LnRzJyk7XG4gICAgY29uc3QgcGtnRGlyID0gam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICd3b3JrZmxvdy1wa2cnKTtcbiAgICBjb25zdCBwa2dJbmRleCA9IGpvaW4ocGtnRGlyLCAnaW5kZXguanMnKTtcbiAgICBjb25zdCBwa2dTZXJkZSA9IGpvaW4ocGtnRGlyLCAnc2VyZGUuanMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICd3b3JrZmxvdy1wa2cnLCBtYWluOiAnaW5kZXguanMnIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUocGtnU2VyZGUsIGBleHBvcnQgY29uc3QgdmFsdWUgPSBcImZyb20tc2VyZGVcIjtgKTtcbiAgICB3cml0ZUZpbGUocGtnSW5kZXgsIGBleHBvcnQgeyB2YWx1ZSB9IGZyb20gJy4vc2VyZGUuanMnO2ApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGltcG9ydCB7IHZhbHVlIH0gZnJvbSAnd29ya2Zsb3ctcGtnJztcXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbXlTdGVwKCkge1xcbiAgJ3VzZSBzdGVwJztcXG4gIHJldHVybiB2YWx1ZTtcXG59YFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB9O1xuICAgIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW2NyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbihzdGF0ZSwgdGVzdFJvb3QpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZSwgcGtnU2VyZGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2Zyb20tc2VyZGUnKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXXdvcmtmbG93LXBrZ1tcIiddLyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdjcmVhdGVTd2NQbHVnaW4gc2lkZUVmZmVjdEVudHJpZXMnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3djLXBsdWdpbi0nKSk7XG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tSZXNldCgpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHJtU3luYyh0ZXN0Um9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogSGVscGVyOiBjcmVhdGVzIGEgZmFrZSBub2RlX21vZHVsZXMgcGFja2FnZSB3aXRoIGBcInNpZGVFZmZlY3RzXCI6IGZhbHNlYFxuICAgKiBpbiBpdHMgcGFja2FnZS5qc29uIGFuZCBhIHNpbmdsZSBlbnRyeSBmaWxlIHRoYXQgZXhwb3J0cyBhIHNpZGUtZWZmZWN0ZnVsXG4gICAqIHJlZ2lzdHJhdGlvbiBjYWxsIChzaW11bGF0aW5nIHdoYXQgdGhlIFNXQyB0cmFuc2Zvcm0gcHJvZHVjZXMpLlxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlU2lkZUVmZmVjdHNGYWxzZVBhY2thZ2UoXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICBlbnRyeUNvZGU6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHBrZ0RpciA9IGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCBwYWNrYWdlTmFtZSk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwa2dEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIHNpZGVFZmZlY3RzOiBmYWxzZSxcbiAgICAgICAgbWFpbjogJ2luZGV4LmpzJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKHBrZ0RpciwgJ2luZGV4LmpzJyk7XG4gICAgd3JpdGVGaWxlKGVudHJ5UGF0aCwgZW50cnlDb2RlKTtcbiAgICByZXR1cm4gZW50cnlQYXRoO1xuICB9XG5cbiAgaXQoJ3ByZXNlcnZlcyBiYXJlIGltcG9ydHMgb2Ygc2lkZUVmZmVjdEVudHJpZXMgcGFja2FnZXMgd2hlbiBidW5kbGluZyB3aXRob3V0IGVudHJpZXNUb0J1bmRsZScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaWRlRWZmZWN0Q29kZSA9XG4gICAgICAnZ2xvYmFsVGhpcy5fX3JlZ2lzdGVyZWQgPSBnbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZCB8fCBbXTtcXG5nbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZC5wdXNoKFwibXktcGtnXCIpOyc7XG4gICAgY29uc3QgZW50cnlQYXRoID0gY3JlYXRlU2lkZUVmZmVjdHNGYWxzZVBhY2thZ2UoXG4gICAgICAnbXktc2lkZS1lZmZlY3QtcGtnJyxcbiAgICAgIHNpZGVFZmZlY3RDb2RlXG4gICAgKTtcblxuICAgIC8vIFNXQyBtb2NrOiByZXR1cm4gdGhlIGNvZGUgdW5jaGFuZ2VkICh0aGUgc2lkZSBlZmZlY3RzIGFyZSBhbHJlYWR5IHRoZXJlKVxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBzdGRpbjoge1xuICAgICAgICBjb250ZW50czogYGltcG9ydCAnbXktc2lkZS1lZmZlY3QtcGtnJztgLFxuICAgICAgICByZXNvbHZlRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgc2lkZUVmZmVjdEVudHJpZXM6IFtlbnRyeVBhdGhdLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIC8vIFRoZSByZWdpc3RyYXRpb24gY29kZSBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgYnVuZGxlXG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdfX3JlZ2lzdGVyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ2Ryb3BzIGJhcmUgaW1wb3J0cyB3aGVuIHNpZGVFZmZlY3RFbnRyaWVzIGlzIE5PVCBwcm92aWRlZCBmb3Igc2lkZUVmZmVjdHM6ZmFsc2UgcGFja2FnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2lkZUVmZmVjdENvZGUgPVxuICAgICAgJ2dsb2JhbFRoaXMuX19yZWdpc3RlcmVkID0gZ2xvYmFsVGhpcy5fX3JlZ2lzdGVyZWQgfHwgW107XFxuZ2xvYmFsVGhpcy5fX3JlZ2lzdGVyZWQucHVzaChcIm15LXBrZ1wiKTsnO1xuICAgIGNyZWF0ZVNpZGVFZmZlY3RzRmFsc2VQYWNrYWdlKCdteS1kcm9wcGVkLXBrZycsIHNpZGVFZmZlY3RDb2RlKTtcblxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBzdGRpbjoge1xuICAgICAgICBjb250ZW50czogYGltcG9ydCAnbXktZHJvcHBlZC1wa2cnO2AsXG4gICAgICAgIHJlc29sdmVEaXI6IHRlc3RSb290LFxuICAgICAgICBzb3VyY2VmaWxlOiAndmlydHVhbC1lbnRyeS5qcycsXG4gICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgIH0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAvLyBXaXRob3V0IHNpZGVFZmZlY3RFbnRyaWVzLCBlc2J1aWxkIGRyb3BzIHRoZSBiYXJlIGltcG9ydFxuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ19fcmVnaXN0ZXJlZCcpO1xuICB9KTtcblxuICBpdCgncHJvZHVjZXMgbm8gd2FybmluZ3MgZm9yIHNpZGVFZmZlY3RFbnRyaWVzIHBhY2thZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpZGVFZmZlY3RDb2RlID1cbiAgICAgICdnbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZCA9IGdsb2JhbFRoaXMuX19yZWdpc3RlcmVkIHx8IFtdO1xcbmdsb2JhbFRoaXMuX19yZWdpc3RlcmVkLnB1c2goXCJ3YXJuZWQtcGtnXCIpOyc7XG4gICAgY29uc3QgZW50cnlQYXRoID0gY3JlYXRlU2lkZUVmZmVjdHNGYWxzZVBhY2thZ2UoXG4gICAgICAnbXktd2FybmVkLXBrZycsXG4gICAgICBzaWRlRWZmZWN0Q29kZVxuICAgICk7XG5cbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKF9maWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGBpbXBvcnQgJ215LXdhcm5lZC1wa2cnO2AsXG4gICAgICAgIHJlc29sdmVEaXI6IHRlc3RSb290LFxuICAgICAgICBzb3VyY2VmaWxlOiAndmlydHVhbC1lbnRyeS5qcycsXG4gICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgIH0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgICBzaWRlRWZmZWN0RW50cmllczogW2VudHJ5UGF0aF0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgLy8gTm8gXCJpZ25vcmVkLWJhcmUtaW1wb3J0XCIgd2FybmluZ3Mgc2hvdWxkIGJlIHByb2R1Y2VkXG4gICAgY29uc3Qgc2lkZUVmZmVjdFdhcm5pbmdzID0gcmVzdWx0Lndhcm5pbmdzLmZpbHRlcihcbiAgICAgICh3KSA9PiB3LmlkID09PSAnaWdub3JlZC1iYXJlLWltcG9ydCdcbiAgICApO1xuICAgIGV4cGVjdChzaWRlRWZmZWN0V2FybmluZ3MpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXNlcnZlcyBiYXJlIGltcG9ydHMgd2l0aCBlbnRyaWVzVG9CdW5kbGUgYW5kIHNpZGVFZmZlY3RFbnRyaWVzIHRvZ2V0aGVyJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpZGVFZmZlY3RDb2RlID1cbiAgICAgICdnbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZCA9IGdsb2JhbFRoaXMuX19yZWdpc3RlcmVkIHx8IFtdO1xcbmdsb2JhbFRoaXMuX19yZWdpc3RlcmVkLnB1c2goXCJidW5kbGVkLXBrZ1wiKTsnO1xuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGNyZWF0ZVNpZGVFZmZlY3RzRmFsc2VQYWNrYWdlKFxuICAgICAgJ215LWJ1bmRsZWQtcGtnJyxcbiAgICAgIHNpZGVFZmZlY3RDb2RlXG4gICAgKTtcblxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzdGVwLnRzJyk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0ICdteS1idW5kbGVkLXBrZyc7XFxuZXhwb3J0IGNvbnN0IFBPU1QgPSAoKSA9PiB7fTtgXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlLCBlbnRyeVBhdGhdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgICBzaWRlRWZmZWN0RW50cmllczogW2VudHJ5UGF0aF0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgLy8gVGhlIHJlZ2lzdHJhdGlvbiBjb2RlIHNob3VsZCBiZSBidW5kbGVkIGluXG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdfX3JlZ2lzdGVyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXNlcnZlcyBiYXJlIGltcG9ydHMgZm9yIGxvY2FsIGZpbGVzIHdpdGggc2lkZUVmZmVjdHM6ZmFsc2UgaW4gdGhlaXIgcGFyZW50IHBhY2thZ2UuanNvbicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBTaW11bGF0ZSBhIHdvcmtzcGFjZSBwYWNrYWdlIHdpdGggc2lkZUVmZmVjdHM6IGZhbHNlXG4gICAgY29uc3QgcGtnRGlyID0gam9pbih0ZXN0Um9vdCwgJ3BhY2thZ2VzJywgJ3NoYXJlZCcpO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6ICdAbXlvcmcvc2hhcmVkJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgc2lkZUVmZmVjdHM6IGZhbHNlLFxuICAgICAgICBtYWluOiAnaW5kZXguanMnLFxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHNoYXJlZEVudHJ5ID0gam9pbihwa2dEaXIsICdpbmRleC5qcycpO1xuICAgIHdyaXRlRmlsZShzaGFyZWRFbnRyeSwgJ2dsb2JhbFRoaXMuX19zaGFyZWRSZWdpc3RlcmVkID0gdHJ1ZTsnKTtcblxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gVXNlIGEgcmVsYXRpdmUgaW1wb3J0IHRvIHRoZSBsb2NhbCBmaWxlIChsaWtlIHRoZSB2aXJ0dWFsIGVudHJ5IGRvZXMgZm9yIGxvY2FsIGZpbGVzKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGBpbXBvcnQgJy4vcGFja2FnZXMvc2hhcmVkL2luZGV4LmpzJztgLFxuICAgICAgICByZXNvbHZlRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgc2lkZUVmZmVjdEVudHJpZXM6IFtzaGFyZWRFbnRyeV0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdfX3NoYXJlZFJlZ2lzdGVyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IG92ZXJyaWRlIHNpZGVFZmZlY3RzIGZvciBub24tZW50cnkgbW9kdWxlcycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBDcmVhdGUgdHdvIHBhY2thZ2VzIC0gb25lIGlzIGEgc2lkZS1lZmZlY3QgZW50cnksIG9uZSBpcyBub3RcbiAgICBjb25zdCBzaWRlRWZmZWN0Q29kZSA9ICdnbG9iYWxUaGlzLl9fZW50cnlSZWdpc3RlcmVkID0gdHJ1ZTsnO1xuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGNyZWF0ZVNpZGVFZmZlY3RzRmFsc2VQYWNrYWdlKFxuICAgICAgJ2VudHJ5LXBrZycsXG4gICAgICBzaWRlRWZmZWN0Q29kZVxuICAgICk7XG5cbiAgICBjb25zdCBub25FbnRyeUNvZGUgPSAnZ2xvYmFsVGhpcy5fX25vbkVudHJ5UmVnaXN0ZXJlZCA9IHRydWU7JztcbiAgICBjcmVhdGVTaWRlRWZmZWN0c0ZhbHNlUGFja2FnZSgnbm9uLWVudHJ5LXBrZycsIG5vbkVudHJ5Q29kZSk7XG5cbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKF9maWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGBpbXBvcnQgJ2VudHJ5LXBrZyc7XFxuaW1wb3J0ICdub24tZW50cnktcGtnJztgLFxuICAgICAgICByZXNvbHZlRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgLy8gT25seSBlbnRyeS1wa2cgaXMgbGlzdGVkLCBub24tZW50cnktcGtnIGlzIG5vdFxuICAgICAgICAgIHNpZGVFZmZlY3RFbnRyaWVzOiBbZW50cnlQYXRoXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAvLyBlbnRyeS1wa2cgc2hvdWxkIGJlIHByZXNlcnZlZFxuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignX19lbnRyeVJlZ2lzdGVyZWQnKTtcbiAgICAvLyBub24tZW50cnktcGtnIHNob3VsZCBiZSBkcm9wcGVkIChzaWRlRWZmZWN0czogZmFsc2UgaXMgcmVzcGVjdGVkKVxuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ19fbm9uRW50cnlSZWdpc3RlcmVkJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdjcmVhdGVTd2NQbHVnaW4gcHJvamVjdFJvb3QnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3djLXBsdWdpbi0nKSk7XG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tSZXNldCgpO1xuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHJtU3luYyh0ZXN0Um9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9KTtcblxuICBmdW5jdGlvbiBzZXR1cEZpeHR1cmUoKSB7XG4gICAgY29uc3QgYXBwUm9vdCA9IGpvaW4odGVzdFJvb3QsICdhcHBzJywgJ2NoYXQnKTtcbiAgICBjb25zdCBwYWNrYWdlUm9vdCA9IGpvaW4odGVzdFJvb3QsICdwYWNrYWdlcycsICd2YWRlJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dGaWxlID0gam9pbihcbiAgICAgIHBhY2thZ2VSb290LFxuICAgICAgJ3NyYycsXG4gICAgICAnaW50ZXJuYWwnLFxuICAgICAgJ21lc3NhZ2UnLFxuICAgICAgJ3dvcmtmbG93JyxcbiAgICAgICdoYW5kbGUtbWVzc2FnZS50cydcbiAgICApO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgd29ya2Zsb3dGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlV29ya2Zsb3cobWVzc2FnZSkge1xuICBcInVzZSB3b3JrZmxvd1wiO1xuXG4gIHJldHVybiBtZXNzYWdlO1xufVxuYFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXBwUm9vdCxcbiAgICAgIHBhY2thZ2VSb290LFxuICAgICAgd29ya2Zsb3dGaWxlLFxuICAgIH07XG4gIH1cblxuICBpdCgncGFzc2VzIHRoZSBleHBsaWNpdCBwcm9qZWN0Um9vdCB0aHJvdWdoIHRvIGFwcGx5U3djVHJhbnNmb3JtJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBzZXR1cEZpeHR1cmUoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtmaXh0dXJlLndvcmtmbG93RmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiBmaXh0dXJlLnBhY2thZ2VSb290LFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgICBwcm9qZWN0Um9vdDogZml4dHVyZS5hcHBSb290LFxuICAgICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChhcHBseVN3Y1RyYW5zZm9ybU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgJ3NyYy9pbnRlcm5hbC9tZXNzYWdlL3dvcmtmbG93L2hhbmRsZS1tZXNzYWdlLnRzJyxcbiAgICAgIGV4cGVjdC5zdHJpbmdDb250YWluaW5nKCdcInVzZSB3b3JrZmxvd1wiJyksXG4gICAgICAnd29ya2Zsb3cnLFxuICAgICAgZml4dHVyZS53b3JrZmxvd0ZpbGUsXG4gICAgICBmaXh0dXJlLmFwcFJvb3RcbiAgICApO1xuICB9KTtcblxuICBpdCgnZGVmYXVsdHMgdGhlIHRyYW5zZm9ybSBwcm9qZWN0Um9vdCB0byBhYnNXb3JraW5nRGlyJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBzZXR1cEZpeHR1cmUoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtmaXh0dXJlLndvcmtmbG93RmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiBmaXh0dXJlLnBhY2thZ2VSb290LFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBleHBlY3QoYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICdzcmMvaW50ZXJuYWwvbWVzc2FnZS93b3JrZmxvdy9oYW5kbGUtbWVzc2FnZS50cycsXG4gICAgICBleHBlY3Quc3RyaW5nQ29udGFpbmluZygnXCJ1c2Ugd29ya2Zsb3dcIicpLFxuICAgICAgJ3dvcmtmbG93JyxcbiAgICAgIGZpeHR1cmUud29ya2Zsb3dGaWxlLFxuICAgICAgZml4dHVyZS5wYWNrYWdlUm9vdFxuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
857
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3djLWVzYnVpbGQtcGx1Z2luLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3djLWVzYnVpbGQtcGx1Z2luLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFekUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDL0IsQ0FBQyxDQUFDLENBQUM7QUFFSixFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsaUJBQWlCLEVBQUUscUJBQXFCO0NBQ3pDLENBQUMsQ0FBQyxDQUFDO0FBRUosT0FBTyxFQUNMLDJCQUEyQixFQUMzQixhQUFhLEdBQ2QsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFFMUMsU0FBUyxTQUFTLENBQUMsSUFBWSxFQUFFLFFBQVEsR0FBRyxFQUFFO0lBQzVDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFD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QUUsQ0FBQyxxREFBcUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRSxNQUFNLE9BQU8sR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUUvQixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDakMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNuQyxhQUFhLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDbEMsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsS0FBSztZQUNiLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFO2dCQUNQLGVBQWUsQ0FBQztvQkFDZCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsZ0JBQWdCLEVBQUUsRUFBRTtpQkFDckIsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsb0JBQW9CLENBQ2hELGlEQUFpRCxFQUNqRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFDekMsVUFBVSxFQUNWLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxXQUFXLEVBQ25CLE9BQU8sQ0FBQyxXQUFXLENBQ3BCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgbWtkaXJTeW5jLFxuICBta2R0ZW1wU3luYyxcbiAgcmVhbHBhdGhTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0LCB2aSB9IGZyb20gJ3ZpdGVzdCc7XG5cbmNvbnN0IHsgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrIH0gPSB2aS5ob2lzdGVkKCgpID0+ICh7XG4gIGFwcGx5U3djVHJhbnNmb3JtTW9jazogdmkuZm4oKSxcbn0pKTtcblxudmkubW9jaygnLi9hcHBseS1zd2MtdHJhbnNmb3JtLmpzJywgKCkgPT4gKHtcbiAgYXBwbHlTd2NUcmFuc2Zvcm06IGFwcGx5U3djVHJhbnNmb3JtTW9jayxcbn0pKTtcblxuaW1wb3J0IHtcbiAgY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luLFxuICBpbXBvcnRQYXJlbnRzLFxufSBmcm9tICcuL2Rpc2NvdmVyLWVudHJpZXMtZXNidWlsZC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgY3JlYXRlU3djUGx1Z2luIH0gZnJvbSAnLi9zd2MtZXNidWlsZC1wbHVnaW4uanMnO1xuXG5jb25zdCByZWFsVG1wZGlyID0gcmVhbHBhdGhTeW5jKHRtcGRpcigpKTtcblxuZnVuY3Rpb24gd3JpdGVGaWxlKHBhdGg6IHN0cmluZywgY29udGVudHMgPSAnJyk6IHZvaWQge1xuICBta2RpclN5bmMoZGlybmFtZShwYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIHdyaXRlRmlsZVN5bmMocGF0aCwgY29udGVudHMsICd1dGYtOCcpO1xufVxuXG5kZXNjcmliZSgnY3JlYXRlU3djUGx1Z2luIGV4dGVybmFsaXplTm9uU3RlcHMnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3djLXBsdWdpbi0nKSk7XG4gICAgaW1wb3J0UGFyZW50cy5jbGVhcigpO1xuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrUmVzZXQoKTtcbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKF9maWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpbXBvcnRQYXJlbnRzLmNsZWFyKCk7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdmYWlscyB0aGUgYnVpbGQgd2hlbiB0d28gZmlsZXMgZW1pdCB0aGUgc2FtZSBzdGVwIGlkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICBjb25zdCBmaXJzdFN0ZXBGaWxlID0gam9pbihzcmNEaXIsICdjb25maXJtYXRpb24udHMnKTtcbiAgICBjb25zdCBzZWNvbmRTdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAncmVzY2hlZHVsZS50cycpO1xuXG4gICAgd3JpdGVGaWxlKGZpcnN0U3RlcEZpbGUsIGBleHBvcnQgY29uc3QgZmlyc3QgPSB0cnVlO2ApO1xuICAgIHdyaXRlRmlsZShzZWNvbmRTdGVwRmlsZSwgYGV4cG9ydCBjb25zdCBzZWNvbmQgPSB0cnVlO2ApO1xuXG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tJbXBsZW1lbnRhdGlvbihcbiAgICAgIGFzeW5jIChmaWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7XG4gICAgICAgICAgc3RlcHM6IHtcbiAgICAgICAgICAgIFtmaWxlbmFtZV06IHtcbiAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICBzdGVwSWQ6ICdzdGVwLy9zaGFyZWQtcGFja2FnZUAxLjAuMC8vc2VuZE1lc3NhZ2UnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZmlyc3RTdGVwRmlsZSwgc2Vjb25kU3RlcEZpbGVdLFxuICAgICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgb3V0ZGlyOiBqb2luKHRlc3RSb290LCAnb3V0JyksXG4gICAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgKS5yZWplY3RzLnRvVGhyb3coL0R1cGxpY2F0ZSB3b3JrZmxvdyBzdGVwIElELyk7XG4gIH0pO1xuXG4gIGl0KCdmYWlscyB0aGUgYnVpbGQgd2hlbiB0d28gZmlsZXMgZW1pdCB0aGUgc2FtZSB3b3JrZmxvdyBpZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3QgZmlyc3RXb3JrZmxvd0ZpbGUgPSBqb2luKHNyY0RpciwgJ2NvbmZpcm1hdGlvbi50cycpO1xuICAgIGNvbnN0IHNlY29uZFdvcmtmbG93RmlsZSA9IGpvaW4oc3JjRGlyLCAncmVzY2hlZHVsZS50cycpO1xuXG4gICAgd3JpdGVGaWxlKGZpcnN0V29ya2Zsb3dGaWxlLCBgZXhwb3J0IGNvbnN0IGZpcnN0ID0gdHJ1ZTtgKTtcbiAgICB3cml0ZUZpbGUoc2Vjb25kV29ya2Zsb3dGaWxlLCBgZXhwb3J0IGNvbnN0IHNlY29uZCA9IHRydWU7YCk7XG5cbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKGZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHtcbiAgICAgICAgICB3b3JrZmxvd3M6IHtcbiAgICAgICAgICAgIFtmaWxlbmFtZV06IHtcbiAgICAgICAgICAgICAgc2VuZE1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICB3b3JrZmxvd0lkOiAnd29ya2Zsb3cvL3NoYXJlZC1wYWNrYWdlQDEuMC4wLy9zZW5kTWVzc2FnZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgZW50cnlQb2ludHM6IFtmaXJzdFdvcmtmbG93RmlsZSwgc2Vjb25kV29ya2Zsb3dGaWxlXSxcbiAgICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICAgIG91dGRpcjogam9pbih0ZXN0Um9vdCwgJ291dCcpLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgICBtb2RlOiAnd29ya2Zsb3cnLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSlcbiAgICApLnJlamVjdHMudG9UaHJvdygvRHVwbGljYXRlIHdvcmtmbG93IElELyk7XG4gIH0pO1xuXG4gIGl0LmVhY2goW1xuICAgIHsgaW5wdXRFeHQ6ICcudHMnLCBvdXRwdXRFeHQ6ICcuanMnIH0sXG4gICAgeyBpbnB1dEV4dDogJy50c3gnLCBvdXRwdXRFeHQ6ICcuanMnIH0sXG4gICAgeyBpbnB1dEV4dDogJy5tdHMnLCBvdXRwdXRFeHQ6ICcubWpzJyB9LFxuICAgIHsgaW5wdXRFeHQ6ICcuY3RzJywgb3V0cHV0RXh0OiAnLmNqcycgfSxcbiAgXSkoJ3Jld3JpdGVzIGV4dGVybmFsaXplZCAkaW5wdXRFeHQgaW1wb3J0cyB0byAkb3V0cHV0RXh0IHdoZW4gcmV3cml0ZVRzRXh0ZW5zaW9ucyBpcyBlbmFibGVkJywgYXN5bmMgKHtcbiAgICBpbnB1dEV4dCxcbiAgICBvdXRwdXRFeHQsXG4gIH0pID0+IHtcbiAgICBjb25zdCBvdXRkaXIgPSBqb2luKHRlc3RSb290LCAnb3V0Jyk7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbihzcmNEaXIsICdzdGVwLnRzJyk7XG5cbiAgICB3cml0ZUZpbGUoam9pbihzcmNEaXIsIGBkZXAke2lucHV0RXh0fWApLCAnZXhwb3J0IGNvbnN0IGRlcCA9IHt9OycpO1xuICAgIHdyaXRlRmlsZShzdGVwRmlsZSwgYGltcG9ydCB7IGRlcCB9IGZyb20gJy4vZGVwJztcXG5jb25zb2xlLmxvZyhkZXApO2ApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgICAgcmV3cml0ZVRzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oYC9kZXAke291dHB1dEV4dH1gKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKGAvZGVwJHtpbnB1dEV4dH1gKTtcbiAgfSk7XG5cbiAgaXQoJ2J1bmRsZXMgcGF0aC1hbGlhc2VkIHByb2plY3QtbG9jYWwgaW1wb3J0cyBpbmxpbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gQWxpYXNlZCBwcm9qZWN0LWxvY2FsIGZpbGVzIG11c3QgYmUgYnVuZGxlZCBpbmxpbmUgKG5vdCBleHRlcm5hbGl6ZWRcbiAgICAvLyBhcyByZWxhdGl2ZSBwYXRocykgYmVjYXVzZSB0aGVpciBzb3VyY2Ugb24gZGlzayBtYXkgY29udGFpbiBmdXJ0aGVyXG4gICAgLy8gYWxpYXMgaW1wb3J0cyB0aGF0IE5vZGUncyBFU00gbG9hZGVyIGNhbm5vdCByZXNvbHZlIGF0IHJ1bnRpbWUuXG4gICAgLy8gU2VlIHBhY2thZ2VzL2J1aWxkZXJzL3NyYy9zd2MtZXNidWlsZC1wbHVnaW4udHMgZm9yIGZ1bGwgcmVhc29uaW5nLlxuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3QgbGliRGlyID0gam9pbihzcmNEaXIsICdsaWInKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihsaWJEaXIsICdjb25maWcudHMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgY29uZmlnID0geyB2YWx1ZTogXCJoZWxsby1mcm9tLWNvbmZpZ1wiIH07J1xuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnQC9saWIvY29uZmlnJztcXG5jb25zb2xlLmxvZyhjb25maWcpO2BcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBhbGlhczogeyAnQCc6IHNyY0RpciB9LFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZV0sXG4gICAgICAgICAgb3V0ZGlyLFxuICAgICAgICAgIHJld3JpdGVUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgLy8gVGhlIGFsaWFzZWQgaGVscGVyIHNob3VsZCBiZSBidW5kbGVkIGlubGluZSAoaXRzIGNvbnRlbnQgaXMgaW4gdGhlXG4gICAgLy8gb3V0cHV0KSwgbm90IGV4dGVybmFsaXplZCBhcyBhIHJlbGF0aXZlIHBhdGggb3IgbGVmdCBhcyBhIGJhcmUgYWxpYXMuXG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdoZWxsby1mcm9tLWNvbmZpZycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ0AvbGliL2NvbmZpZycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b01hdGNoKC9mcm9tXFxzK1tcIiddW15cIiddKlxcL2xpYlxcL2NvbmZpZ1xcLihqc3x0cylbXCInXS8pO1xuICB9KTtcblxuICBpdCgnYnVuZGxlcyB0cmFuc2l0aXZlIGFsaWFzZWQgaW1wb3J0cyBpbnNpZGUgYWxpYXNlZCBoZWxwZXJzIChNdXggc2VsZi1yZWZlcmVuY2luZyBwYWNrYWdlIHJlZ3Jlc3Npb24pJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL211eGluYy9haS9wdWxsLzE5My5cbiAgICAvL1xuICAgIC8vIEEgcGFja2FnZSBzZWxmLXJlZmVyZW5jZXMgaXRzIG93biBzdWJwYXRoIHZpYSB0c2NvbmZpZyBgcGF0aHNgIChlLmcuXG4gICAgLy8gYEBteS1wa2cvbGliL2Zvb2Ag4oaSIGBzcmMvbGliL2Zvby50c2ApLiBBIHN0ZXAgZmlsZSBpbXBvcnRzIGEgaGVscGVyXG4gICAgLy8gdmlhIHRoZSBhbGlhcywgYW5kIHRoYXQgaGVscGVyIGltcG9ydHMgYW5vdGhlciBoZWxwZXIgdmlhIHRoZSBhbGlhcy5cbiAgICAvL1xuICAgIC8vIFByZXZpb3VzbHkgdGhlIGhlbHBlcnMgd2VyZSBleHRlcm5hbGl6ZWQgYXMgcmVsYXRpdmUgcGF0aHMsIGJ1dCB0aGVpclxuICAgIC8vIHNvdXJjZSBvbiBkaXNrIHN0aWxsIGNvbnRhaW5lZCBgaW1wb3J0IFwiQG15LXBrZy9saWIvLi4uXCJgLiBBdCBydW50aW1lLFxuICAgIC8vIE5vZGUncyBFU00gbG9hZGVyIGRpZG4ndCBrbm93IGFib3V0IHRzY29uZmlnIHBhdGhzLCBmZWxsIHRocm91Z2ggdG9cbiAgICAvLyB0aGUgcGFja2FnZSdzIGBleHBvcnRzYCBtYXAsIGFuZCB0aHJldyBgUGFja2FnZSBzdWJwYXRoIC4uLiBpcyBub3RcbiAgICAvLyBkZWZpbmVkIGJ5IFwiZXhwb3J0c1wiYC5cbiAgICAvL1xuICAgIC8vIFdpdGggdGhlIGZpeCwgYWxpYXNlZCBwcm9qZWN0LWxvY2FsIGZpbGVzIGFyZSBidW5kbGVkIGlubGluZSwgc29cbiAgICAvLyB0aGVpciBhbGlhcyBpbXBvcnRzIGFyZSByZXNvbHZlZCBhdCBidWlsZCB0aW1lLlxuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3QgbGliRGlyID0gam9pbihzcmNEaXIsICdsaWInKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihsaWJEaXIsICdwcm92aWRlcnMudHMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgcHJvdmlkZXJOYW1lID0gXCJhbnRocm9waWNcIjsnXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKGxpYkRpciwgJ2NsaWVudC1mYWN0b3J5LnRzJyksXG4gICAgICAvLyBIZWxwZXIgdXNlcyB0aGUgc2FtZSBhbGlhcyB0byByZWFjaCBhIHNpYmxpbmcg4oCUIHRoaXMgaXMgdGhlIGNhc2VcbiAgICAgIC8vIHRoYXQgYnJva2UgdGhlIE11eCBidWlsZCB3aXRoIHdvcmtmbG93ID49IDQuMi4wLWJldGEuNzguXG4gICAgICBgaW1wb3J0IHsgcHJvdmlkZXJOYW1lIH0gZnJvbSAnQG15LXBrZy9saWIvcHJvdmlkZXJzJztcbmV4cG9ydCBjb25zdCBjbGllbnQgPSB7IHByb3ZpZGVyOiBwcm92aWRlck5hbWUgfTtgXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzdGVwRmlsZSxcbiAgICAgIGBpbXBvcnQgeyBjbGllbnQgfSBmcm9tICdAbXktcGtnL2xpYi9jbGllbnQtZmFjdG9yeSc7XFxuY29uc29sZS5sb2coY2xpZW50KTtgXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgYWxpYXM6IHsgJ0BteS1wa2cnOiBzcmNEaXIgfSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBbc3RlcEZpbGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgICByZXdyaXRlVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIC8vIEJvdGggaGVscGVycyBzaG91bGQgYmUgYnVuZGxlZCBpbmxpbmUg4oCUIG5vIGFsaWFzZWQgc3BlY2lmaWVycyBzaG91bGRcbiAgICAvLyBsZWFrIGludG8gdGhlIG91dHB1dCwgd2hlcmUgTm9kZSdzIEVTTSBsb2FkZXIgd291bGQgY2hva2Ugb24gdGhlbS5cbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2FudGhyb3BpYycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ0BteS1wa2cvbGliL3Byb3ZpZGVycycpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ0BteS1wa2cvbGliL2NsaWVudC1mYWN0b3J5Jyk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCByZWxhdGl2aXplIE5vZGUuanMgYnVpbHRpbiBpbXBvcnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzcmNEaXIgPSBqb2luKHRlc3RSb290LCAnc3JjJyk7XG4gICAgY29uc3Qgc3RlcEZpbGUgPSBqb2luKHNyY0RpciwgJ3N0ZXAudHMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xcbmNvbnNvbGUubG9nKGNyZWF0ZUhhc2gsIGpvaW4pO2BcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgLy8gQnVpbHRpbnMgc2hvdWxkIHJlbWFpbiBhcyBiYXJlIHNwZWNpZmllcnMsIG5vdCByZWxhdGl2aXplZCBwYXRoc1xuICAgIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2goL2Zyb21cXHMrW1wiJ11jcnlwdG9bXCInXS8pO1xuICAgIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2goL2Zyb21cXHMrW1wiJ11ub2RlOnBhdGhbXCInXS8pO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b01hdGNoKC9mcm9tXFxzK1tcIiddXFwuLipjcnlwdG9bXCInXS8pO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b01hdGNoKC9mcm9tXFxzK1tcIiddXFwuLipub2RlOnBhdGhbXCInXS8pO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgZXh0ZXJuYWxpemUgYWxpYXNlZCBpbXBvcnRzIHRoYXQgcmVzb2x2ZSBpbnRvIG5vZGVfbW9kdWxlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvdXRkaXIgPSBqb2luKHRlc3RSb290LCAnb3V0Jyk7XG4gICAgY29uc3Qgc3JjRGlyID0gam9pbih0ZXN0Um9vdCwgJ3NyYycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbihzcmNEaXIsICdzdGVwLnRzJyk7XG4gICAgY29uc3Qgbm9kZU1vZHVsZXNEaXIgPSBqb2luKHRlc3RSb290LCAnbm9kZV9tb2R1bGVzJywgJ3NvbWUtcGtnJyk7XG5cbiAgICB3cml0ZUZpbGUoam9pbihub2RlTW9kdWxlc0RpciwgJ2luZGV4LmpzJyksICdleHBvcnQgY29uc3QgcGtnID0gXCJoZWxsb1wiOycpO1xuICAgIHdyaXRlRmlsZShzdGVwRmlsZSwgYGltcG9ydCB7IHBrZyB9IGZyb20gJ0Bwa2cnO1xcbmNvbnNvbGUubG9nKHBrZyk7YCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbc3RlcEZpbGVdLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBvdXRkaXIsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIGFsaWFzOiB7ICdAcGtnJzogam9pbihub2RlTW9kdWxlc0RpciwgJ2luZGV4LmpzJykgfSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBbc3RlcEZpbGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAvLyBTaG91bGQgYmUgYnVuZGxlZCAoaW5saW5lZCksIG5vdCBleHRlcm5hbGl6ZWQgYXMgYSByZWxhdGl2ZSBub2RlX21vZHVsZXMgcGF0aFxuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignaGVsbG8nKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXS4qbm9kZV9tb2R1bGVzLyk7XG4gIH0pO1xuXG4gIGl0KCdleHRlcm5hbGl6ZXMgbmVzdGVkIGJhcmUgcGFja2FnZSBpbXBvcnRzIHRoYXQgb25seSByZXNvbHZlIGZyb20gYSBidW5kbGVkIHBhY2thZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuICAgIGNvbnN0IHBhcmVudFBrZ0RpciA9IGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCAncGFyZW50LXBrZycpO1xuICAgIGNvbnN0IHBhcmVudFBrZ0luZGV4ID0gam9pbihwYXJlbnRQa2dEaXIsICdpbmRleC5qcycpO1xuICAgIGNvbnN0IG5hdGl2ZVBrZ0RpciA9IGpvaW4ocGFyZW50UGtnRGlyLCAnbm9kZV9tb2R1bGVzJywgJ29wdGlvbmFsLW5hdGl2ZScpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwYXJlbnRQa2dEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ3BhcmVudC1wa2cnLCBtYWluOiAnaW5kZXguanMnIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBwYXJlbnRQa2dJbmRleCxcbiAgICAgIGBjb25zdCBuYXRpdmUgPSByZXF1aXJlKCdvcHRpb25hbC1uYXRpdmUnKTtcXG5leHBvcnRzLnZhbHVlID0gbmF0aXZlLnZhbHVlO2BcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4obmF0aXZlUGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdvcHRpb25hbC1uYXRpdmUnLCBtYWluOiAnYmluZGluZy5ub2RlJyB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKGpvaW4obmF0aXZlUGtnRGlyLCAnYmluZGluZy5ub2RlJyksICcnKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzdGVwRmlsZSxcbiAgICAgIGBpbXBvcnQgeyB2YWx1ZSB9IGZyb20gJ3BhcmVudC1wa2cnO1xcbmNvbnNvbGUubG9nKHZhbHVlKTtgXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZSwgcGFyZW50UGtnSW5kZXhdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ29wdGlvbmFsLW5hdGl2ZScpO1xuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ2JpbmRpbmcubm9kZScpO1xuICB9KTtcblxuICBpdC5lYWNoKFtcbiAgICAnLnRzJyxcbiAgICAnLnRzeCcsXG4gICAgJy5tdHMnLFxuICAgICcuY3RzJyxcbiAgXSkoJ3ByZXNlcnZlcyBleHRlcm5hbGl6ZWQgJXMgZXh0ZW5zaW9ucyBieSBkZWZhdWx0JywgYXN5bmMgKGlucHV0RXh0KSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHNyY0RpciA9IGpvaW4odGVzdFJvb3QsICdzcmMnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4oc3JjRGlyLCAnc3RlcC50cycpO1xuXG4gICAgd3JpdGVGaWxlKGpvaW4oc3JjRGlyLCBgZGVwJHtpbnB1dEV4dH1gKSwgJ2V4cG9ydCBjb25zdCBkZXAgPSB7fTsnKTtcbiAgICB3cml0ZUZpbGUoc3RlcEZpbGUsIGBpbXBvcnQgeyBkZXAgfSBmcm9tICcuL2RlcCc7XFxuY29uc29sZS5sb2coZGVwKTtgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZV0sXG4gICAgICAgICAgb3V0ZGlyLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbihgL2RlcCR7aW5wdXRFeHR9YCk7XG4gIH0pO1xuXG4gIGl0KCdidW5kbGVzIHRyYW5zaXRpdmUgbG9jYWwgVHlwZVNjcmlwdCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlbnNpb25sZXNzIGltcG9ydHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NlcnZlcicsICd3b3JrZmxvd3MnLCAnbXktd29ya2Zsb3cudHMnKTtcbiAgICBjb25zdCBjb25zdGFudHNGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NoYXJlZCcsICdjb25zdGFudHMudHMnKTtcbiAgICBjb25zdCBoZWxwZXJzRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzaGFyZWQnLCAnaGVscGVycy50cycpO1xuXG4gICAgd3JpdGVGaWxlKGhlbHBlcnNGaWxlLCBgZXhwb3J0IGNvbnN0IEhFTFBFUl9WQUxVRSA9IFwiZnJvbS1oZWxwZXJcIjtgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBjb25zdGFudHNGaWxlLFxuICAgICAgYGltcG9ydCB7IEhFTFBFUl9WQUxVRSB9IGZyb20gJy4vaGVscGVycyc7XFxuZXhwb3J0IGNvbnN0IENBVEVHT1JJRVMgPSBbSEVMUEVSX1ZBTFVFXTtgXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBzdGVwRmlsZSxcbiAgICAgIGBpbXBvcnQgeyBDQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NvbnN0YW50cyc7XFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG15U3RlcCgpIHtcXG4gICd1c2Ugc3RlcCc7XFxuICByZXR1cm4gQ0FURUdPUklFU1swXTtcXG59YFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB9O1xuICAgIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcmVzb2x2ZUV4dGVuc2lvbnM6IFsnLnRzJywgJy50c3gnLCAnLmpzJywgJy5qc3gnLCAnLm1qcycsICcuY2pzJ10sXG4gICAgICBwbHVnaW5zOiBbY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luKHN0YXRlLCB0ZXN0Um9vdCldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICByZXNvbHZlRXh0ZW5zaW9uczogWycudHMnLCAnLnRzeCcsICcuanMnLCAnLmpzeCcsICcubWpzJywgJy5janMnXSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnc3RlcCcsXG4gICAgICAgICAgZW50cmllc1RvQnVuZGxlOiBbc3RlcEZpbGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignZnJvbS1oZWxwZXInKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXVteXCInXSpzaGFyZWRcXC9jb25zdGFudHMvKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXVteXCInXSpzaGFyZWRcXC9oZWxwZXJzLyk7XG4gIH0pO1xuXG4gIGl0KCdleHRlcm5hbGl6ZXMgdHJhbnNpdGl2ZSBsb2NhbCBUeXBlU2NyaXB0IGRlcGVuZGVuY2llcyBieSBkZWZhdWx0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzZXJ2ZXInLCAnd29ya2Zsb3dzJywgJ215LXdvcmtmbG93LnRzJyk7XG4gICAgY29uc3QgY29uc3RhbnRzRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzaGFyZWQnLCAnY29uc3RhbnRzLnRzJyk7XG4gICAgY29uc3QgaGVscGVyc0ZpbGUgPSBqb2luKHRlc3RSb290LCAnc2hhcmVkJywgJ2hlbHBlcnMudHMnKTtcblxuICAgIHdyaXRlRmlsZShoZWxwZXJzRmlsZSwgYGV4cG9ydCBjb25zdCBIRUxQRVJfVkFMVUUgPSBcImZyb20taGVscGVyXCI7YCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgY29uc3RhbnRzRmlsZSxcbiAgICAgIGBpbXBvcnQgeyBIRUxQRVJfVkFMVUUgfSBmcm9tICcuL2hlbHBlcnMnO1xcbmV4cG9ydCBjb25zdCBDQVRFR09SSUVTID0gW0hFTFBFUl9WQUxVRV07YFxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0IHsgQ0FURUdPUklFUyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBteVN0ZXAoKSB7XFxuICAndXNlIHN0ZXAnO1xcbiAgcmV0dXJuIENBVEVHT1JJRVNbMF07XFxufWBcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgZGlzY292ZXJlZFdvcmtmbG93czogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgfTtcbiAgICBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbc3RlcEZpbGVdLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHJlc29sdmVFeHRlbnNpb25zOiBbJy50cycsICcudHN4JywgJy5qcycsICcuanN4JywgJy5tanMnLCAnLmNqcyddLFxuICAgICAgcGx1Z2luczogW2NyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbihzdGF0ZSwgdGVzdFJvb3QpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcmVzb2x2ZUV4dGVuc2lvbnM6IFsnLnRzJywgJy50c3gnLCAnLmpzJywgJy5qc3gnLCAnLm1qcycsICcuY2pzJ10sXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbignZnJvbS1oZWxwZXInKTtcbiAgICBleHBlY3Qob3V0cHV0KS50b01hdGNoKC9mcm9tXFxzK1tcIiddW15cIiddKnNoYXJlZFxcL2NvbnN0YW50c1xcLnRzW1wiJ10vKTtcbiAgfSk7XG5cbiAgaXQoJ2tlZXBzIG9yZGluYXJ5IHBhY2thZ2UgZGVwZW5kZW5jaWVzIGV4dGVybmFsIHdoZW4gcmVhY2hhYmxlIGZyb20gYSBidW5kbGVkIHN0ZXAnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NlcnZlcicsICd3b3JrZmxvd3MnLCAnbXktd29ya2Zsb3cudHMnKTtcbiAgICBjb25zdCBwa2dEaXIgPSBqb2luKHRlc3RSb290LCAnbm9kZV9tb2R1bGVzJywgJ3BsYWluLXBrZycpO1xuICAgIGNvbnN0IHBrZ0luZGV4ID0gam9pbihwa2dEaXIsICdpbmRleC5qcycpO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwa2dEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ3BsYWluLXBrZycsIG1haW46ICdpbmRleC5qcycgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShwa2dJbmRleCwgYGV4cG9ydCBjb25zdCB2YWx1ZSA9IFwiZnJvbS1wYWNrYWdlXCI7YCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0IHsgdmFsdWUgfSBmcm9tICdwbGFpbi1wa2cnO1xcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBteVN0ZXAoKSB7XFxuICAndXNlIHN0ZXAnO1xcbiAgcmV0dXJuIHZhbHVlO1xcbn1gXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgZGlzY292ZXJlZFN0ZXBzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRXb3JrZmxvd3M6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICAgZGlzY292ZXJlZFNlcmRlRmlsZXM6IG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgIH07XG4gICAgYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbY3JlYXRlRGlzY292ZXJFbnRyaWVzUGx1Z2luKHN0YXRlLCB0ZXN0Um9vdCldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW3N0ZXBGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IHRlc3RSb290LFxuICAgICAgb3V0ZGlyLFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlXSxcbiAgICAgICAgICBvdXRkaXIsXG4gICAgICAgICAgYnVuZGxlVHJhbnNpdGl2ZUxvY2FsU3RlcERlcGVuZGVuY2llczogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b01hdGNoKC9mcm9tXFxzK1tcIiddcGxhaW4tcGtnW1wiJ10vKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdmcm9tLXBhY2thZ2UnKTtcbiAgfSk7XG5cbiAgaXQoJ2J1bmRsZXMgcGFja2FnZSBwYXJlbnRzIHdoZW4gdGhleSBsZWFkIHRvIGRpc2NvdmVyZWQgd29ya2Zsb3ctcmVsYXRlZCBlbnRyaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG91dGRpciA9IGpvaW4odGVzdFJvb3QsICdvdXQnKTtcbiAgICBjb25zdCBzdGVwRmlsZSA9IGpvaW4odGVzdFJvb3QsICdzZXJ2ZXInLCAnd29ya2Zsb3dzJywgJ215LXdvcmtmbG93LnRzJyk7XG4gICAgY29uc3QgcGtnRGlyID0gam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICd3b3JrZmxvdy1wa2cnKTtcbiAgICBjb25zdCBwa2dJbmRleCA9IGpvaW4ocGtnRGlyLCAnaW5kZXguanMnKTtcbiAgICBjb25zdCBwa2dTZXJkZSA9IGpvaW4ocGtnRGlyLCAnc2VyZGUuanMnKTtcblxuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICd3b3JrZmxvdy1wa2cnLCBtYWluOiAnaW5kZXguanMnIH0pXG4gICAgKTtcbiAgICB3cml0ZUZpbGUocGtnU2VyZGUsIGBleHBvcnQgY29uc3QgdmFsdWUgPSBcImZyb20tc2VyZGVcIjtgKTtcbiAgICB3cml0ZUZpbGUocGtnSW5kZXgsIGBleHBvcnQgeyB2YWx1ZSB9IGZyb20gJy4vc2VyZGUuanMnO2ApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGltcG9ydCB7IHZhbHVlIH0gZnJvbSAnd29ya2Zsb3ctcGtnJztcXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbXlTdGVwKCkge1xcbiAgJ3VzZSBzdGVwJztcXG4gIHJldHVybiB2YWx1ZTtcXG59YFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldDxzdHJpbmc+KCksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0PHN0cmluZz4oKSxcbiAgICB9O1xuICAgIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW2NyZWF0ZURpc2NvdmVyRW50cmllc1BsdWdpbihzdGF0ZSwgdGVzdFJvb3QpXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICdzdGVwJyxcbiAgICAgICAgICBlbnRyaWVzVG9CdW5kbGU6IFtzdGVwRmlsZSwgcGtnU2VyZGVdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2Zyb20tc2VyZGUnKTtcbiAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9NYXRjaCgvZnJvbVxccytbXCInXXdvcmtmbG93LXBrZ1tcIiddLyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdjcmVhdGVTd2NQbHVnaW4gc2lkZUVmZmVjdEVudHJpZXMnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3djLXBsdWdpbi0nKSk7XG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tSZXNldCgpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHJtU3luYyh0ZXN0Um9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogSGVscGVyOiBjcmVhdGVzIGEgZmFrZSBub2RlX21vZHVsZXMgcGFja2FnZSB3aXRoIGBcInNpZGVFZmZlY3RzXCI6IGZhbHNlYFxuICAgKiBpbiBpdHMgcGFja2FnZS5qc29uIGFuZCBhIHNpbmdsZSBlbnRyeSBmaWxlIHRoYXQgZXhwb3J0cyBhIHNpZGUtZWZmZWN0ZnVsXG4gICAqIHJlZ2lzdHJhdGlvbiBjYWxsIChzaW11bGF0aW5nIHdoYXQgdGhlIFNXQyB0cmFuc2Zvcm0gcHJvZHVjZXMpLlxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlU2lkZUVmZmVjdHNGYWxzZVBhY2thZ2UoXG4gICAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgICBlbnRyeUNvZGU6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHBrZ0RpciA9IGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCBwYWNrYWdlTmFtZSk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbihwa2dEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbmFtZTogcGFja2FnZU5hbWUsXG4gICAgICAgIHZlcnNpb246ICcxLjAuMCcsXG4gICAgICAgIHNpZGVFZmZlY3RzOiBmYWxzZSxcbiAgICAgICAgbWFpbjogJ2luZGV4LmpzJyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBjb25zdCBlbnRyeVBhdGggPSBqb2luKHBrZ0RpciwgJ2luZGV4LmpzJyk7XG4gICAgd3JpdGVGaWxlKGVudHJ5UGF0aCwgZW50cnlDb2RlKTtcbiAgICByZXR1cm4gZW50cnlQYXRoO1xuICB9XG5cbiAgaXQoJ3ByZXNlcnZlcyBiYXJlIGltcG9ydHMgb2Ygc2lkZUVmZmVjdEVudHJpZXMgcGFja2FnZXMgd2hlbiBidW5kbGluZyB3aXRob3V0IGVudHJpZXNUb0J1bmRsZScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaWRlRWZmZWN0Q29kZSA9XG4gICAgICAnZ2xvYmFsVGhpcy5fX3JlZ2lzdGVyZWQgPSBnbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZCB8fCBbXTtcXG5nbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZC5wdXNoKFwibXktcGtnXCIpOyc7XG4gICAgY29uc3QgZW50cnlQYXRoID0gY3JlYXRlU2lkZUVmZmVjdHNGYWxzZVBhY2thZ2UoXG4gICAgICAnbXktc2lkZS1lZmZlY3QtcGtnJyxcbiAgICAgIHNpZGVFZmZlY3RDb2RlXG4gICAgKTtcblxuICAgIC8vIFNXQyBtb2NrOiByZXR1cm4gdGhlIGNvZGUgdW5jaGFuZ2VkICh0aGUgc2lkZSBlZmZlY3RzIGFyZSBhbHJlYWR5IHRoZXJlKVxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBzdGRpbjoge1xuICAgICAgICBjb250ZW50czogYGltcG9ydCAnbXktc2lkZS1lZmZlY3QtcGtnJztgLFxuICAgICAgICByZXNvbHZlRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgc2lkZUVmZmVjdEVudHJpZXM6IFtlbnRyeVBhdGhdLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlc1swXS50ZXh0O1xuICAgIC8vIFRoZSByZWdpc3RyYXRpb24gY29kZSBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgYnVuZGxlXG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdfX3JlZ2lzdGVyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ2Ryb3BzIGJhcmUgaW1wb3J0cyB3aGVuIHNpZGVFZmZlY3RFbnRyaWVzIGlzIE5PVCBwcm92aWRlZCBmb3Igc2lkZUVmZmVjdHM6ZmFsc2UgcGFja2FnZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc2lkZUVmZmVjdENvZGUgPVxuICAgICAgJ2dsb2JhbFRoaXMuX19yZWdpc3RlcmVkID0gZ2xvYmFsVGhpcy5fX3JlZ2lzdGVyZWQgfHwgW107XFxuZ2xvYmFsVGhpcy5fX3JlZ2lzdGVyZWQucHVzaChcIm15LXBrZ1wiKTsnO1xuICAgIGNyZWF0ZVNpZGVFZmZlY3RzRmFsc2VQYWNrYWdlKCdteS1kcm9wcGVkLXBrZycsIHNpZGVFZmZlY3RDb2RlKTtcblxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBzdGRpbjoge1xuICAgICAgICBjb250ZW50czogYGltcG9ydCAnbXktZHJvcHBlZC1wa2cnO2AsXG4gICAgICAgIHJlc29sdmVEaXI6IHRlc3RSb290LFxuICAgICAgICBzb3VyY2VmaWxlOiAndmlydHVhbC1lbnRyeS5qcycsXG4gICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgIH0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAvLyBXaXRob3V0IHNpZGVFZmZlY3RFbnRyaWVzLCBlc2J1aWxkIGRyb3BzIHRoZSBiYXJlIGltcG9ydFxuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ19fcmVnaXN0ZXJlZCcpO1xuICB9KTtcblxuICBpdCgncHJvZHVjZXMgbm8gd2FybmluZ3MgZm9yIHNpZGVFZmZlY3RFbnRyaWVzIHBhY2thZ2VzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpZGVFZmZlY3RDb2RlID1cbiAgICAgICdnbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZCA9IGdsb2JhbFRoaXMuX19yZWdpc3RlcmVkIHx8IFtdO1xcbmdsb2JhbFRoaXMuX19yZWdpc3RlcmVkLnB1c2goXCJ3YXJuZWQtcGtnXCIpOyc7XG4gICAgY29uc3QgZW50cnlQYXRoID0gY3JlYXRlU2lkZUVmZmVjdHNGYWxzZVBhY2thZ2UoXG4gICAgICAnbXktd2FybmVkLXBrZycsXG4gICAgICBzaWRlRWZmZWN0Q29kZVxuICAgICk7XG5cbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKF9maWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGBpbXBvcnQgJ215LXdhcm5lZC1wa2cnO2AsXG4gICAgICAgIHJlc29sdmVEaXI6IHRlc3RSb290LFxuICAgICAgICBzb3VyY2VmaWxlOiAndmlydHVhbC1lbnRyeS5qcycsXG4gICAgICAgIGxvYWRlcjogJ2pzJyxcbiAgICAgIH0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgICBzaWRlRWZmZWN0RW50cmllczogW2VudHJ5UGF0aF0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgLy8gTm8gXCJpZ25vcmVkLWJhcmUtaW1wb3J0XCIgd2FybmluZ3Mgc2hvdWxkIGJlIHByb2R1Y2VkXG4gICAgY29uc3Qgc2lkZUVmZmVjdFdhcm5pbmdzID0gcmVzdWx0Lndhcm5pbmdzLmZpbHRlcihcbiAgICAgICh3KSA9PiB3LmlkID09PSAnaWdub3JlZC1iYXJlLWltcG9ydCdcbiAgICApO1xuICAgIGV4cGVjdChzaWRlRWZmZWN0V2FybmluZ3MpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXNlcnZlcyBiYXJlIGltcG9ydHMgd2l0aCBlbnRyaWVzVG9CdW5kbGUgYW5kIHNpZGVFZmZlY3RFbnRyaWVzIHRvZ2V0aGVyJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHNpZGVFZmZlY3RDb2RlID1cbiAgICAgICdnbG9iYWxUaGlzLl9fcmVnaXN0ZXJlZCA9IGdsb2JhbFRoaXMuX19yZWdpc3RlcmVkIHx8IFtdO1xcbmdsb2JhbFRoaXMuX19yZWdpc3RlcmVkLnB1c2goXCJidW5kbGVkLXBrZ1wiKTsnO1xuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGNyZWF0ZVNpZGVFZmZlY3RzRmFsc2VQYWNrYWdlKFxuICAgICAgJ215LWJ1bmRsZWQtcGtnJyxcbiAgICAgIHNpZGVFZmZlY3RDb2RlXG4gICAgKTtcblxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3Qgb3V0ZGlyID0gam9pbih0ZXN0Um9vdCwgJ291dCcpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzdGVwLnRzJyk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgaW1wb3J0ICdteS1idW5kbGVkLXBrZyc7XFxuZXhwb3J0IGNvbnN0IFBPU1QgPSAoKSA9PiB7fTtgXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtzdGVwRmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiB0ZXN0Um9vdCxcbiAgICAgIG91dGRpcixcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3N0ZXAnLFxuICAgICAgICAgIGVudHJpZXNUb0J1bmRsZTogW3N0ZXBGaWxlLCBlbnRyeVBhdGhdLFxuICAgICAgICAgIG91dGRpcixcbiAgICAgICAgICBzaWRlRWZmZWN0RW50cmllczogW2VudHJ5UGF0aF0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgLy8gVGhlIHJlZ2lzdHJhdGlvbiBjb2RlIHNob3VsZCBiZSBidW5kbGVkIGluXG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdfX3JlZ2lzdGVyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZXNlcnZlcyBiYXJlIGltcG9ydHMgZm9yIGxvY2FsIGZpbGVzIHdpdGggc2lkZUVmZmVjdHM6ZmFsc2UgaW4gdGhlaXIgcGFyZW50IHBhY2thZ2UuanNvbicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBTaW11bGF0ZSBhIHdvcmtzcGFjZSBwYWNrYWdlIHdpdGggc2lkZUVmZmVjdHM6IGZhbHNlXG4gICAgY29uc3QgcGtnRGlyID0gam9pbih0ZXN0Um9vdCwgJ3BhY2thZ2VzJywgJ3NoYXJlZCcpO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4ocGtnRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG5hbWU6ICdAbXlvcmcvc2hhcmVkJyxcbiAgICAgICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgICAgICAgc2lkZUVmZmVjdHM6IGZhbHNlLFxuICAgICAgICBtYWluOiAnaW5kZXguanMnLFxuICAgICAgfSlcbiAgICApO1xuICAgIGNvbnN0IHNoYXJlZEVudHJ5ID0gam9pbihwa2dEaXIsICdpbmRleC5qcycpO1xuICAgIHdyaXRlRmlsZShzaGFyZWRFbnRyeSwgJ2dsb2JhbFRoaXMuX19zaGFyZWRSZWdpc3RlcmVkID0gdHJ1ZTsnKTtcblxuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gVXNlIGEgcmVsYXRpdmUgaW1wb3J0IHRvIHRoZSBsb2NhbCBmaWxlIChsaWtlIHRoZSB2aXJ0dWFsIGVudHJ5IGRvZXMgZm9yIGxvY2FsIGZpbGVzKVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGBpbXBvcnQgJy4vcGFja2FnZXMvc2hhcmVkL2luZGV4LmpzJztgLFxuICAgICAgICByZXNvbHZlRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgc2lkZUVmZmVjdEVudHJpZXM6IFtzaGFyZWRFbnRyeV0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzWzBdLnRleHQ7XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdfX3NoYXJlZFJlZ2lzdGVyZWQnKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IG92ZXJyaWRlIHNpZGVFZmZlY3RzIGZvciBub24tZW50cnkgbW9kdWxlcycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBDcmVhdGUgdHdvIHBhY2thZ2VzIC0gb25lIGlzIGEgc2lkZS1lZmZlY3QgZW50cnksIG9uZSBpcyBub3RcbiAgICBjb25zdCBzaWRlRWZmZWN0Q29kZSA9ICdnbG9iYWxUaGlzLl9fZW50cnlSZWdpc3RlcmVkID0gdHJ1ZTsnO1xuICAgIGNvbnN0IGVudHJ5UGF0aCA9IGNyZWF0ZVNpZGVFZmZlY3RzRmFsc2VQYWNrYWdlKFxuICAgICAgJ2VudHJ5LXBrZycsXG4gICAgICBzaWRlRWZmZWN0Q29kZVxuICAgICk7XG5cbiAgICBjb25zdCBub25FbnRyeUNvZGUgPSAnZ2xvYmFsVGhpcy5fX25vbkVudHJ5UmVnaXN0ZXJlZCA9IHRydWU7JztcbiAgICBjcmVhdGVTaWRlRWZmZWN0c0ZhbHNlUGFja2FnZSgnbm9uLWVudHJ5LXBrZycsIG5vbkVudHJ5Q29kZSk7XG5cbiAgICBhcHBseVN3Y1RyYW5zZm9ybU1vY2subW9ja0ltcGxlbWVudGF0aW9uKFxuICAgICAgYXN5bmMgKF9maWxlbmFtZTogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gKHtcbiAgICAgICAgY29kZTogc291cmNlLFxuICAgICAgICB3b3JrZmxvd01hbmlmZXN0OiB7fSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgc3RkaW46IHtcbiAgICAgICAgY29udGVudHM6IGBpbXBvcnQgJ2VudHJ5LXBrZyc7XFxuaW1wb3J0ICdub24tZW50cnktcGtnJztgLFxuICAgICAgICByZXNvbHZlRGlyOiB0ZXN0Um9vdCxcbiAgICAgICAgc291cmNlZmlsZTogJ3ZpcnR1YWwtZW50cnkuanMnLFxuICAgICAgICBsb2FkZXI6ICdqcycsXG4gICAgICB9LFxuICAgICAgYWJzV29ya2luZ0RpcjogdGVzdFJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgLy8gT25seSBlbnRyeS1wa2cgaXMgbGlzdGVkLCBub24tZW50cnktcGtnIGlzIG5vdFxuICAgICAgICAgIHNpZGVFZmZlY3RFbnRyaWVzOiBbZW50cnlQYXRoXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXNbMF0udGV4dDtcbiAgICAvLyBlbnRyeS1wa2cgc2hvdWxkIGJlIHByZXNlcnZlZFxuICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignX19lbnRyeVJlZ2lzdGVyZWQnKTtcbiAgICAvLyBub24tZW50cnktcGtnIHNob3VsZCBiZSBkcm9wcGVkIChzaWRlRWZmZWN0czogZmFsc2UgaXMgcmVzcGVjdGVkKVxuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ19fbm9uRW50cnlSZWdpc3RlcmVkJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdjcmVhdGVTd2NQbHVnaW4gcHJvamVjdFJvb3QnLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3djLXBsdWdpbi0nKSk7XG4gICAgYXBwbHlTd2NUcmFuc2Zvcm1Nb2NrLm1vY2tSZXNldCgpO1xuICAgIGFwcGx5U3djVHJhbnNmb3JtTW9jay5tb2NrSW1wbGVtZW50YXRpb24oXG4gICAgICBhc3luYyAoX2ZpbGVuYW1lOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiAoe1xuICAgICAgICBjb2RlOiBzb3VyY2UsXG4gICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHJtU3luYyh0ZXN0Um9vdCwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICB9KTtcblxuICBmdW5jdGlvbiBzZXR1cEZpeHR1cmUoKSB7XG4gICAgY29uc3QgYXBwUm9vdCA9IGpvaW4odGVzdFJvb3QsICdhcHBzJywgJ2NoYXQnKTtcbiAgICBjb25zdCBwYWNrYWdlUm9vdCA9IGpvaW4odGVzdFJvb3QsICdwYWNrYWdlcycsICd2YWRlJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dGaWxlID0gam9pbihcbiAgICAgIHBhY2thZ2VSb290LFxuICAgICAgJ3NyYycsXG4gICAgICAnaW50ZXJuYWwnLFxuICAgICAgJ21lc3NhZ2UnLFxuICAgICAgJ3dvcmtmbG93JyxcbiAgICAgICdoYW5kbGUtbWVzc2FnZS50cydcbiAgICApO1xuXG4gICAgd3JpdGVGaWxlKFxuICAgICAgd29ya2Zsb3dGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlV29ya2Zsb3cobWVzc2FnZSkge1xuICBcInVzZSB3b3JrZmxvd1wiO1xuXG4gIHJldHVybiBtZXNzYWdlO1xufVxuYFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXBwUm9vdCxcbiAgICAgIHBhY2thZ2VSb290LFxuICAgICAgd29ya2Zsb3dGaWxlLFxuICAgIH07XG4gIH1cblxuICBpdCgncGFzc2VzIHRoZSBleHBsaWNpdCBwcm9qZWN0Um9vdCB0aHJvdWdoIHRvIGFwcGx5U3djVHJhbnNmb3JtJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBzZXR1cEZpeHR1cmUoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgZW50cnlQb2ludHM6IFtmaXh0dXJlLndvcmtmbG93RmlsZV0sXG4gICAgICBhYnNXb3JraW5nRGlyOiBmaXh0dXJlLnBhY2thZ2VSb290LFxuICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgZm9ybWF0OiAnZXNtJyxcbiAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBwbHVnaW5zOiBbXG4gICAgICAgIGNyZWF0ZVN3Y1BsdWdpbih7XG4gICAgICAgICAgbW9kZTogJ3dvcmtmbG93JyxcbiAgICAgICAgICBwcm9qZWN0Um9vdDogZml4dHVyZS5hcHBSb290LFxuICAgICAgICAgIHdvcmtmbG93TWFuaWZlc3Q6IHt9LFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChhcHBseVN3Y1RyYW5zZm9ybU1vY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgJ3NyYy9pbnRlcm5hbC9tZXNzYWdlL3dvcmtmbG93L2hhbmRsZS1tZXNzYWdlLnRzJyxcbiAgICAgIGV4cGVjdC5zdHJpbmdDb250YWluaW5nKCdcInVzZSB3b3JrZmxvd1wiJyksXG4gICAgICAnd29ya2Zsb3cnLFxuICAgICAgZml4dHVyZS53b3JrZmxvd0ZpbGUsXG4gICAgICBmaXh0dXJlLmFwcFJvb3QsXG4gICAgICBmaXh0dXJlLmFwcFJvb3RcbiAgICApO1xuICB9KTtcblxuICBpdCgncGFzc2VzIGFuIGV4cGxpY2l0IG1vZHVsZVNwZWNpZmllclJvb3Qgc2VwYXJhdGVseSBmcm9tIHByb2plY3RSb290JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGZpeHR1cmUgPSBzZXR1cEZpeHR1cmUoKTtcbiAgICBjb25zdCB0cmFjaW5nUm9vdCA9IHRlc3RSb290O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICBlbnRyeVBvaW50czogW2ZpeHR1cmUud29ya2Zsb3dGaWxlXSxcbiAgICAgIGFic1dvcmtpbmdEaXI6IGZpeHR1cmUucGFja2FnZVJvb3QsXG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgcGxhdGZvcm06ICdub2RlJyxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgY3JlYXRlU3djUGx1Z2luKHtcbiAgICAgICAgICBtb2RlOiAnd29ya2Zsb3cnLFxuICAgICAgICAgIHByb2plY3RSb290OiB0cmFjaW5nUm9vdCxcbiAgICAgICAgICBtb2R1bGVTcGVjaWZpZXJSb290OiBmaXh0dXJlLmFwcFJvb3QsXG4gICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdDoge30sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgZXhwZWN0KGFwcGx5U3djVHJhbnNmb3JtTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAnc3JjL2ludGVybmFsL21lc3NhZ2Uvd29ya2Zsb3cvaGFuZGxlLW1lc3NhZ2UudHMnLFxuICAgICAgZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ1widXNlIHdvcmtmbG93XCInKSxcbiAgICAgICd3b3JrZmxvdycsXG4gICAgICBmaXh0dXJlLndvcmtmbG93RmlsZSxcbiAgICAgIHRyYWNpbmdSb290LFxuICAgICAgZml4dHVyZS5hcHBSb290XG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2RlZmF1bHRzIHRoZSB0cmFuc2Zvcm0gcHJvamVjdFJvb3QgdG8gYWJzV29ya2luZ0RpcicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmaXh0dXJlID0gc2V0dXBGaXh0dXJlKCk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgIGVudHJ5UG9pbnRzOiBbZml4dHVyZS53b3JrZmxvd0ZpbGVdLFxuICAgICAgYWJzV29ya2luZ0RpcjogZml4dHVyZS5wYWNrYWdlUm9vdCxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICBjcmVhdGVTd2NQbHVnaW4oe1xuICAgICAgICAgIG1vZGU6ICd3b3JrZmxvdycsXG4gICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdDoge30sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgZXhwZWN0KGFwcGx5U3djVHJhbnNmb3JtTW9jaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAnc3JjL2ludGVybmFsL21lc3NhZ2Uvd29ya2Zsb3cvaGFuZGxlLW1lc3NhZ2UudHMnLFxuICAgICAgZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoJ1widXNlIHdvcmtmbG93XCInKSxcbiAgICAgICd3b3JrZmxvdycsXG4gICAgICBmaXh0dXJlLndvcmtmbG93RmlsZSxcbiAgICAgIGZpeHR1cmUucGFja2FnZVJvb3QsXG4gICAgICBmaXh0dXJlLnBhY2thZ2VSb290XG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==
package/dist/types.d.ts CHANGED
@@ -19,10 +19,16 @@ interface BaseWorkflowConfig {
19
19
  dirs: string[];
20
20
  workingDir: string;
21
21
  /**
22
- * Project root used for package and workspace module-specifier resolution
23
- * during SWC transforms. Defaults to `workingDir`.
22
+ * Project root used for tracing, discovery, and tsconfig lookup during SWC
23
+ * transforms. Defaults to `workingDir`.
24
24
  */
25
25
  projectRoot?: string;
26
+ /**
27
+ * Project root used for package and workspace module-specifier resolution
28
+ * during SWC transforms. Defaults to `projectRoot` when set, otherwise
29
+ * `workingDir`.
30
+ */
31
+ moduleSpecifierRoot?: string;
26
32
  clientBundlePath?: string;
27
33
  externalPackages?: string[];
28
34
  workflowManifestPath?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,0FAOpB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhF;;GAEG;AACH,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,eAAe,CAAC,EAAE,MAAM,CAAC;IAIzB,cAAc,CAAC,EAAE,MAAM,CAAC;IAIxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAG5C,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAGhD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAG1C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,WAAW,EAAE,YAAY,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,WAAW,EAAE,yBAAyB,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,WAAW,EAAE,WAAW,CAAC;IAEzB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,WAAW,EAAE,OAAO,CAAC;IAErB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,uBAAuB,GACvB,UAAU,GACV,UAAU,GACV,eAAe,GACf,WAAW,CAAC;AAEhB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,IAAI,WAAW,CAEvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,0FAOpB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhF;;GAEG;AACH,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAK7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,eAAe,CAAC,EAAE,MAAM,CAAC;IAIzB,cAAc,CAAC,EAAE,MAAM,CAAC;IAIxB,OAAO,CAAC,EAAE,MAAM,CAAC;IAIjB,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAG5C,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAGhD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAG1C,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,WAAW,EAAE,YAAY,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,WAAW,EAAE,yBAAyB,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,WAAW,EAAE,WAAW,CAAC;IAEzB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD,WAAW,EAAE,OAAO,CAAC;IAErB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,uBAAuB,GACvB,UAAU,GACV,UAAU,GACV,eAAe,GACf,WAAW,CAAC;AAEhB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,IAAI,WAAW,CAEvB"}
package/dist/types.js CHANGED
@@ -9,4 +9,4 @@ export const validBuildTargets = [
9
9
  export function isValidBuildTarget(target) {
10
10
  return !!target && validBuildTargets.includes(target);
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsWUFBWTtJQUNaLHlCQUF5QjtJQUN6QixNQUFNO0lBQ04sTUFBTTtJQUNOLFdBQVc7SUFDWCxPQUFPO0NBQ0MsQ0FBQztBQStKWCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQTBCO0lBRTFCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmFsaWRCdWlsZFRhcmdldHMgPSBbXG4gICdzdGFuZGFsb25lJyxcbiAgJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJyxcbiAgJ25leHQnLFxuICAnbmVzdCcsXG4gICdzdmVsdGVraXQnLFxuICAnYXN0cm8nLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJ1aWxkVGFyZ2V0ID0gKHR5cGVvZiB2YWxpZEJ1aWxkVGFyZ2V0cylbbnVtYmVyXTtcblxuLyoqXG4gKiBTb3VyY2UgbWFwIGVtaXNzaW9uIG1vZGUgZm9yIGdlbmVyYXRlZCB3b3JrZmxvdyBidW5kbGVzLiBNYXRjaGVzIGVzYnVpbGQnc1xuICogYHNvdXJjZW1hcGAgb3B0aW9uIHZvY2FidWxhcnk6XG4gKlxuICogLSBgdHJ1ZWAgLyBgJ2xpbmtlZCdgOiB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlIGFuZCBhZGQgYSBgc291cmNlTWFwcGluZ1VSTGAgY29tbWVudFxuICogLSBgJ2lubGluZSdgOiBlbWl0IGEgYmFzZTY0LWVuY29kZWQgc291cmNlIG1hcCBhdCB0aGUgZW5kIG9mIHRoZSBidW5kbGVcbiAqIC0gYCdleHRlcm5hbCdgOiB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlIHdpdGhvdXQgdGhlIGNvbW1lbnRcbiAqIC0gYCdib3RoJ2A6IGVtaXQgYm90aCBpbmxpbmUgYW5kIGV4dGVybmFsIHNvdXJjZSBtYXBzXG4gKiAtIGBmYWxzZWA6IG9taXQgc291cmNlIG1hcHMgZW50aXJlbHlcbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlbWFwTW9kZSA9IGJvb2xlYW4gfCAnaW5saW5lJyB8ICdsaW5rZWQnIHwgJ2V4dGVybmFsJyB8ICdib3RoJztcblxuLyoqXG4gKiBDb21tb24gY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXJlZCBhY3Jvc3MgYWxsIGJ1aWxkZXIgdHlwZXMuXG4gKi9cbmludGVyZmFjZSBCYXNlV29ya2Zsb3dDb25maWcge1xuICB3YXRjaD86IGJvb2xlYW47XG4gIGRpcnM6IHN0cmluZ1tdO1xuICB3b3JraW5nRGlyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm9qZWN0IHJvb3QgdXNlZCBmb3IgcGFja2FnZSBhbmQgd29ya3NwYWNlIG1vZHVsZS1zcGVjaWZpZXIgcmVzb2x1dGlvblxuICAgKiBkdXJpbmcgU1dDIHRyYW5zZm9ybXMuIERlZmF1bHRzIHRvIGB3b3JraW5nRGlyYC5cbiAgICovXG4gIHByb2plY3RSb290Pzogc3RyaW5nO1xuXG4gIC8vIE9wdGlvbmFsbHkgZ2VuZXJhdGUgYSBjbGllbnQgbGlicmFyeSBmb3Igd29ya2Zsb3cgZXhlY3V0aW9uLiBUaGUgcHJlZmVycmVkXG4gIC8vIG1ldGhvZCBvZiB1c2luZyB3b3JrZmxvdyBpcyB0byB1c2UgYSBsb2FkZXIgd2l0aGluIGEgZnJhbWV3b3JrIChsaWtlXG4gIC8vIE5leHRKUykgdGhhdCByZXNvbHZlcyBjbGllbnQgYmluZGluZ3Mgb24gdGhlIGZseS5cbiAgY2xpZW50QnVuZGxlUGF0aD86IHN0cmluZztcblxuICBleHRlcm5hbFBhY2thZ2VzPzogc3RyaW5nW107XG5cbiAgd29ya2Zsb3dNYW5pZmVzdFBhdGg/OiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgcHJlZml4IGZvciBkZWJ1ZyBmaWxlcyAoZS5nLiwgXCJfXCIgZm9yIEFzdHJvIHRvIGlnbm9yZSB0aGVtKVxuICBkZWJ1Z0ZpbGVQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWwgZGlyZWN0b3J5IHdoZXJlIGRpYWdub3N0aWNzIGFydGlmYWN0cyBzaG91bGQgYmUgd3JpdHRlbi5cbiAgLy8gVGhlIHdvcmtmbG93IG1hbmlmZXN0IGlzIHdyaXR0ZW4gdG8gd29ya2Zsb3dzLW1hbmlmZXN0Lmpzb24gaW5zaWRlIHRoaXMgZGlyLlxuICBkaWFnbm9zdGljc0Rpcj86IHN0cmluZztcblxuICAvLyBPcHRpb25hbCBmcmFtZXdvcmsgb3V0cHV0IGRpcmVjdG9yeSwgdXNlZCBieSBidWlsZGVycyB0aGF0IG1pcnJvciBmcmFtZXdvcmtcbiAgLy8gYXJ0aWZhY3QgbG9jYXRpb25zLlxuICBkaXN0RGlyPzogc3RyaW5nO1xuXG4gIC8vIFN1cHByZXNzIGluZm9ybWF0aW9uYWwgbG9ncyBlbWl0dGVkIGJ5IGNyZWF0ZVdvcmtmbG93c0J1bmRsZSgpXG4gIC8vIChlLmcuIGludGVybWVkaWF0ZS9maW5hbCB3b3JrZmxvdyBidW5kbGUgdGltaW5nIGxvZ3MpLlxuICBzdXBwcmVzc0NyZWF0ZVdvcmtmbG93c0J1bmRsZUxvZ3M/OiBib29sZWFuO1xuXG4gIC8vIFN1cHByZXNzIGVzYnVpbGQgd2FybmluZ3MgZW1pdHRlZCBieSBjcmVhdGVXb3JrZmxvd3NCdW5kbGUoKS5cbiAgc3VwcHJlc3NDcmVhdGVXb3JrZmxvd3NCdW5kbGVXYXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLy8gU3VwcHJlc3MgaW5mb3JtYXRpb25hbCBsb2dzIGVtaXR0ZWQgYnkgY3JlYXRlV2ViaG9va0J1bmRsZSgpLlxuICBzdXBwcmVzc0NyZWF0ZVdlYmhvb2tCdW5kbGVMb2dzPzogYm9vbGVhbjtcblxuICAvLyBTdXBwcmVzcyBpbmZvcm1hdGlvbmFsIGxvZ3MgZW1pdHRlZCBieSBjcmVhdGVNYW5pZmVzdCgpLlxuICBzdXBwcmVzc0NyZWF0ZU1hbmlmZXN0TG9ncz86IGJvb2xlYW47XG5cbiAgLy8gTm9kZS5qcyBydW50aW1lIHZlcnNpb24gZm9yIFZlcmNlbCBGdW5jdGlvbnMgKGUuZy4sIFwibm9kZWpzMjIueFwiLCBcIm5vZGVqczI0LnhcIilcbiAgcnVudGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgaG93IHNvdXJjZSBtYXBzIGFyZSBlbWl0dGVkIGZvciB3b3JrZmxvdyBidW5kbGVzLiBBY2NlcHRzIHRoZVxuICAgKiBzYW1lIHZhbHVlcyBhcyBlc2J1aWxkJ3MgYHNvdXJjZW1hcGAgb3B0aW9uLlxuICAgKlxuICAgKiBEZWZhdWx0IGlzIGAnaW5saW5lJ2AgZm9yIHRoZSBzdGVwIGJ1bmRsZSBhbmQgaW50ZXJtZWRpYXRlIHdvcmtmbG93XG4gICAqIGJ1bmRsZSAoZ2l2ZXMgcmVhZGFibGUgc3RhY2sgdHJhY2VzIGZvciBzdGVwIGVycm9ycyBhbmQgd29ya2Zsb3cgVk1cbiAgICogZXJyb3JzKS4gU2V0dGluZyBgZmFsc2VgIG9taXRzIHNvdXJjZSBtYXBzIGVudGlyZWx5LCB3aGljaCBwcm9kdWNlc1xuICAgKiBzbWFsbGVyIGJ1bmRsZXMg4oCUIHVzZWZ1bCBmb3Igc3RheWluZyB1bmRlciB0aGUgVmVyY2VsIDI1ME1CIGZ1bmN0aW9uXG4gICAqIGxpbWl0IOKAlCBhdCB0aGUgY29zdCBvZiBzdGFjayB0cmFjZXMgdGhhdCByZWZlcmVuY2UgZ2VuZXJhdGVkIGNvZGUuXG4gICAqXG4gICAqIGAnZXh0ZXJuYWwnYCBhbmQgYCdsaW5rZWQnYCB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlOyB1c2UgdGhlc2VcbiAgICogd2hlbiB5b3Ugd2FudCB0byBzaGlwIHNvdXJjZSBtYXBzIHRvIG9ic2VydmFiaWxpdHkgdG9vbGluZyBidXQga2VlcFxuICAgKiB0aGVtIG91dCBvZiB0aGUgZnVuY3Rpb24gYnVuZGxlLlxuICAgKlxuICAgKiBDYW4gYWxzbyBiZSBzZXQgdmlhIHRoZSBgV09SS0ZMT1dfU09VUkNFTUFQYCBlbnZpcm9ubWVudCB2YXJpYWJsZTtcbiAgICogY29uZmlnIHdpbnMgb3ZlciBlbnYgdmFyLCBlbnYgdmFyIHdpbnMgb3ZlciB0aGUgZGVmYXVsdC5cbiAgICovXG4gIHNvdXJjZW1hcD86IFNvdXJjZW1hcE1vZGU7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3Igc3RhbmRhbG9uZSAoQ0xJLWJhc2VkKSBidWlsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhbG9uZUNvbmZpZyBleHRlbmRzIEJhc2VXb3JrZmxvd0NvbmZpZyB7XG4gIGJ1aWxkVGFyZ2V0OiAnc3RhbmRhbG9uZSc7XG4gIHN0ZXBzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdlYmhvb2tCdW5kbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgYnVpbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcmNlbEJ1aWxkT3V0cHV0Q29uZmlnIGV4dGVuZHMgQmFzZVdvcmtmbG93Q29uZmlnIHtcbiAgYnVpbGRUYXJnZXQ6ICd2ZXJjZWwtYnVpbGQtb3V0cHV0LWFwaSc7XG4gIHN0ZXBzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdlYmhvb2tCdW5kbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgTmV4dC5qcyBidWlsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV4dENvbmZpZyBleHRlbmRzIEJhc2VXb3JrZmxvd0NvbmZpZyB7XG4gIGJ1aWxkVGFyZ2V0OiAnbmV4dCc7XG4gIC8vIE5leHQuanMgYnVpbGRlciBjb21wdXRlcyBwYXRocyBkeW5hbWljYWxseSwgc28gdGhlc2UgYXJlIG5vdCB1c2VkXG4gIHN0ZXBzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdlYmhvb2tCdW5kbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgU3ZlbHRlS2l0IGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdmVsdGVLaXRDb25maWcgZXh0ZW5kcyBCYXNlV29ya2Zsb3dDb25maWcge1xuICBidWlsZFRhcmdldDogJ3N2ZWx0ZWtpdCc7XG4gIC8vIFN2ZWx0ZUtpdCBidWlsZGVyIGNvbXB1dGVzIHBhdGhzIGR5bmFtaWNhbGx5LCBzbyB0aGVzZSBhcmUgbm90IHVzZWRcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBBc3RybyBidWlsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXN0cm9Db25maWcgZXh0ZW5kcyBCYXNlV29ya2Zsb3dDb25maWcge1xuICBidWlsZFRhcmdldDogJ2FzdHJvJztcbiAgLy8gQXN0cm8gYnVpbGRlciBjb21wdXRlcyBwYXRocyBkeW5hbWljYWxseSwgc28gdGhlc2UgYXJlIG5vdCB1c2VkXG4gIHN0ZXBzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdlYmhvb2tCdW5kbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgTmVzdEpTIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXN0Q29uZmlnIGV4dGVuZHMgQmFzZVdvcmtmbG93Q29uZmlnIHtcbiAgYnVpbGRUYXJnZXQ6ICduZXN0JztcbiAgLy8gTmVzdEpTIGJ1aWxkZXIgY29tcHV0ZXMgcGF0aHMgZHluYW1pY2FsbHksIHNvIHRoZXNlIGFyZSBub3QgdXNlZFxuICBzdGVwc0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd29ya2Zsb3dzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3ZWJob29rQnVuZGxlUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERpc2NyaW1pbmF0ZWQgdW5pb24gb2YgYWxsIGJ1aWxkZXIgY29uZmlndXJhdGlvbiB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgV29ya2Zsb3dDb25maWcgPVxuICB8IFN0YW5kYWxvbmVDb25maWdcbiAgfCBWZXJjZWxCdWlsZE91dHB1dENvbmZpZ1xuICB8IE5leHRDb25maWdcbiAgfCBOZXN0Q29uZmlnXG4gIHwgU3ZlbHRlS2l0Q29uZmlnXG4gIHwgQXN0cm9Db25maWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQnVpbGRUYXJnZXQoXG4gIHRhcmdldDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiB0YXJnZXQgaXMgQnVpbGRUYXJnZXQge1xuICByZXR1cm4gISF0YXJnZXQgJiYgdmFsaWRCdWlsZFRhcmdldHMuaW5jbHVkZXModGFyZ2V0IGFzIEJ1aWxkVGFyZ2V0KTtcbn1cbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsWUFBWTtJQUNaLHlCQUF5QjtJQUN6QixNQUFNO0lBQ04sTUFBTTtJQUNOLFdBQVc7SUFDWCxPQUFPO0NBQ0MsQ0FBQztBQXNLWCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQTBCO0lBRTFCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmFsaWRCdWlsZFRhcmdldHMgPSBbXG4gICdzdGFuZGFsb25lJyxcbiAgJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJyxcbiAgJ25leHQnLFxuICAnbmVzdCcsXG4gICdzdmVsdGVraXQnLFxuICAnYXN0cm8nLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJ1aWxkVGFyZ2V0ID0gKHR5cGVvZiB2YWxpZEJ1aWxkVGFyZ2V0cylbbnVtYmVyXTtcblxuLyoqXG4gKiBTb3VyY2UgbWFwIGVtaXNzaW9uIG1vZGUgZm9yIGdlbmVyYXRlZCB3b3JrZmxvdyBidW5kbGVzLiBNYXRjaGVzIGVzYnVpbGQnc1xuICogYHNvdXJjZW1hcGAgb3B0aW9uIHZvY2FidWxhcnk6XG4gKlxuICogLSBgdHJ1ZWAgLyBgJ2xpbmtlZCdgOiB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlIGFuZCBhZGQgYSBgc291cmNlTWFwcGluZ1VSTGAgY29tbWVudFxuICogLSBgJ2lubGluZSdgOiBlbWl0IGEgYmFzZTY0LWVuY29kZWQgc291cmNlIG1hcCBhdCB0aGUgZW5kIG9mIHRoZSBidW5kbGVcbiAqIC0gYCdleHRlcm5hbCdgOiB3cml0ZSBhIHNlcGFyYXRlIGAubWFwYCBmaWxlIHdpdGhvdXQgdGhlIGNvbW1lbnRcbiAqIC0gYCdib3RoJ2A6IGVtaXQgYm90aCBpbmxpbmUgYW5kIGV4dGVybmFsIHNvdXJjZSBtYXBzXG4gKiAtIGBmYWxzZWA6IG9taXQgc291cmNlIG1hcHMgZW50aXJlbHlcbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlbWFwTW9kZSA9IGJvb2xlYW4gfCAnaW5saW5lJyB8ICdsaW5rZWQnIHwgJ2V4dGVybmFsJyB8ICdib3RoJztcblxuLyoqXG4gKiBDb21tb24gY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXJlZCBhY3Jvc3MgYWxsIGJ1aWxkZXIgdHlwZXMuXG4gKi9cbmludGVyZmFjZSBCYXNlV29ya2Zsb3dDb25maWcge1xuICB3YXRjaD86IGJvb2xlYW47XG4gIGRpcnM6IHN0cmluZ1tdO1xuICB3b3JraW5nRGlyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm9qZWN0IHJvb3QgdXNlZCBmb3IgdHJhY2luZywgZGlzY292ZXJ5LCBhbmQgdHNjb25maWcgbG9va3VwIGR1cmluZyBTV0NcbiAgICogdHJhbnNmb3Jtcy4gRGVmYXVsdHMgdG8gYHdvcmtpbmdEaXJgLlxuICAgKi9cbiAgcHJvamVjdFJvb3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByb2plY3Qgcm9vdCB1c2VkIGZvciBwYWNrYWdlIGFuZCB3b3Jrc3BhY2UgbW9kdWxlLXNwZWNpZmllciByZXNvbHV0aW9uXG4gICAqIGR1cmluZyBTV0MgdHJhbnNmb3Jtcy4gRGVmYXVsdHMgdG8gYHByb2plY3RSb290YCB3aGVuIHNldCwgb3RoZXJ3aXNlXG4gICAqIGB3b3JraW5nRGlyYC5cbiAgICovXG4gIG1vZHVsZVNwZWNpZmllclJvb3Q/OiBzdHJpbmc7XG5cbiAgLy8gT3B0aW9uYWxseSBnZW5lcmF0ZSBhIGNsaWVudCBsaWJyYXJ5IGZvciB3b3JrZmxvdyBleGVjdXRpb24uIFRoZSBwcmVmZXJyZWRcbiAgLy8gbWV0aG9kIG9mIHVzaW5nIHdvcmtmbG93IGlzIHRvIHVzZSBhIGxvYWRlciB3aXRoaW4gYSBmcmFtZXdvcmsgKGxpa2VcbiAgLy8gTmV4dEpTKSB0aGF0IHJlc29sdmVzIGNsaWVudCBiaW5kaW5ncyBvbiB0aGUgZmx5LlxuICBjbGllbnRCdW5kbGVQYXRoPzogc3RyaW5nO1xuXG4gIGV4dGVybmFsUGFja2FnZXM/OiBzdHJpbmdbXTtcblxuICB3b3JrZmxvd01hbmlmZXN0UGF0aD86IHN0cmluZztcblxuICAvLyBPcHRpb25hbCBwcmVmaXggZm9yIGRlYnVnIGZpbGVzIChlLmcuLCBcIl9cIiBmb3IgQXN0cm8gdG8gaWdub3JlIHRoZW0pXG4gIGRlYnVnRmlsZVByZWZpeD86IHN0cmluZztcblxuICAvLyBPcHRpb25hbCBkaXJlY3Rvcnkgd2hlcmUgZGlhZ25vc3RpY3MgYXJ0aWZhY3RzIHNob3VsZCBiZSB3cml0dGVuLlxuICAvLyBUaGUgd29ya2Zsb3cgbWFuaWZlc3QgaXMgd3JpdHRlbiB0byB3b3JrZmxvd3MtbWFuaWZlc3QuanNvbiBpbnNpZGUgdGhpcyBkaXIuXG4gIGRpYWdub3N0aWNzRGlyPzogc3RyaW5nO1xuXG4gIC8vIE9wdGlvbmFsIGZyYW1ld29yayBvdXRwdXQgZGlyZWN0b3J5LCB1c2VkIGJ5IGJ1aWxkZXJzIHRoYXQgbWlycm9yIGZyYW1ld29ya1xuICAvLyBhcnRpZmFjdCBsb2NhdGlvbnMuXG4gIGRpc3REaXI/OiBzdHJpbmc7XG5cbiAgLy8gU3VwcHJlc3MgaW5mb3JtYXRpb25hbCBsb2dzIGVtaXR0ZWQgYnkgY3JlYXRlV29ya2Zsb3dzQnVuZGxlKClcbiAgLy8gKGUuZy4gaW50ZXJtZWRpYXRlL2ZpbmFsIHdvcmtmbG93IGJ1bmRsZSB0aW1pbmcgbG9ncykuXG4gIHN1cHByZXNzQ3JlYXRlV29ya2Zsb3dzQnVuZGxlTG9ncz86IGJvb2xlYW47XG5cbiAgLy8gU3VwcHJlc3MgZXNidWlsZCB3YXJuaW5ncyBlbWl0dGVkIGJ5IGNyZWF0ZVdvcmtmbG93c0J1bmRsZSgpLlxuICBzdXBwcmVzc0NyZWF0ZVdvcmtmbG93c0J1bmRsZVdhcm5pbmdzPzogYm9vbGVhbjtcblxuICAvLyBTdXBwcmVzcyBpbmZvcm1hdGlvbmFsIGxvZ3MgZW1pdHRlZCBieSBjcmVhdGVXZWJob29rQnVuZGxlKCkuXG4gIHN1cHByZXNzQ3JlYXRlV2ViaG9va0J1bmRsZUxvZ3M/OiBib29sZWFuO1xuXG4gIC8vIFN1cHByZXNzIGluZm9ybWF0aW9uYWwgbG9ncyBlbWl0dGVkIGJ5IGNyZWF0ZU1hbmlmZXN0KCkuXG4gIHN1cHByZXNzQ3JlYXRlTWFuaWZlc3RMb2dzPzogYm9vbGVhbjtcblxuICAvLyBOb2RlLmpzIHJ1bnRpbWUgdmVyc2lvbiBmb3IgVmVyY2VsIEZ1bmN0aW9ucyAoZS5nLiwgXCJub2RlanMyMi54XCIsIFwibm9kZWpzMjQueFwiKVxuICBydW50aW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgc291cmNlIG1hcHMgYXJlIGVtaXR0ZWQgZm9yIHdvcmtmbG93IGJ1bmRsZXMuIEFjY2VwdHMgdGhlXG4gICAqIHNhbWUgdmFsdWVzIGFzIGVzYnVpbGQncyBgc291cmNlbWFwYCBvcHRpb24uXG4gICAqXG4gICAqIERlZmF1bHQgaXMgYCdpbmxpbmUnYCBmb3IgdGhlIHN0ZXAgYnVuZGxlIGFuZCBpbnRlcm1lZGlhdGUgd29ya2Zsb3dcbiAgICogYnVuZGxlIChnaXZlcyByZWFkYWJsZSBzdGFjayB0cmFjZXMgZm9yIHN0ZXAgZXJyb3JzIGFuZCB3b3JrZmxvdyBWTVxuICAgKiBlcnJvcnMpLiBTZXR0aW5nIGBmYWxzZWAgb21pdHMgc291cmNlIG1hcHMgZW50aXJlbHksIHdoaWNoIHByb2R1Y2VzXG4gICAqIHNtYWxsZXIgYnVuZGxlcyDigJQgdXNlZnVsIGZvciBzdGF5aW5nIHVuZGVyIHRoZSBWZXJjZWwgMjUwTUIgZnVuY3Rpb25cbiAgICogbGltaXQg4oCUIGF0IHRoZSBjb3N0IG9mIHN0YWNrIHRyYWNlcyB0aGF0IHJlZmVyZW5jZSBnZW5lcmF0ZWQgY29kZS5cbiAgICpcbiAgICogYCdleHRlcm5hbCdgIGFuZCBgJ2xpbmtlZCdgIHdyaXRlIGEgc2VwYXJhdGUgYC5tYXBgIGZpbGU7IHVzZSB0aGVzZVxuICAgKiB3aGVuIHlvdSB3YW50IHRvIHNoaXAgc291cmNlIG1hcHMgdG8gb2JzZXJ2YWJpbGl0eSB0b29saW5nIGJ1dCBrZWVwXG4gICAqIHRoZW0gb3V0IG9mIHRoZSBmdW5jdGlvbiBidW5kbGUuXG4gICAqXG4gICAqIENhbiBhbHNvIGJlIHNldCB2aWEgdGhlIGBXT1JLRkxPV19TT1VSQ0VNQVBgIGVudmlyb25tZW50IHZhcmlhYmxlO1xuICAgKiBjb25maWcgd2lucyBvdmVyIGVudiB2YXIsIGVudiB2YXIgd2lucyBvdmVyIHRoZSBkZWZhdWx0LlxuICAgKi9cbiAgc291cmNlbWFwPzogU291cmNlbWFwTW9kZTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBzdGFuZGFsb25lIChDTEktYmFzZWQpIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFsb25lQ29uZmlnIGV4dGVuZHMgQmFzZVdvcmtmbG93Q29uZmlnIHtcbiAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJztcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSSBidWlsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyY2VsQnVpbGRPdXRwdXRDb25maWcgZXh0ZW5kcyBCYXNlV29ya2Zsb3dDb25maWcge1xuICBidWlsZFRhcmdldDogJ3ZlcmNlbC1idWlsZC1vdXRwdXQtYXBpJztcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBOZXh0LmpzIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXh0Q29uZmlnIGV4dGVuZHMgQmFzZVdvcmtmbG93Q29uZmlnIHtcbiAgYnVpbGRUYXJnZXQ6ICduZXh0JztcbiAgLy8gTmV4dC5qcyBidWlsZGVyIGNvbXB1dGVzIHBhdGhzIGR5bmFtaWNhbGx5LCBzbyB0aGVzZSBhcmUgbm90IHVzZWRcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBTdmVsdGVLaXQgYnVpbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN2ZWx0ZUtpdENvbmZpZyBleHRlbmRzIEJhc2VXb3JrZmxvd0NvbmZpZyB7XG4gIGJ1aWxkVGFyZ2V0OiAnc3ZlbHRla2l0JztcbiAgLy8gU3ZlbHRlS2l0IGJ1aWxkZXIgY29tcHV0ZXMgcGF0aHMgZHluYW1pY2FsbHksIHNvIHRoZXNlIGFyZSBub3QgdXNlZFxuICBzdGVwc0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd29ya2Zsb3dzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3ZWJob29rQnVuZGxlUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIEFzdHJvIGJ1aWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3Ryb0NvbmZpZyBleHRlbmRzIEJhc2VXb3JrZmxvd0NvbmZpZyB7XG4gIGJ1aWxkVGFyZ2V0OiAnYXN0cm8nO1xuICAvLyBBc3RybyBidWlsZGVyIGNvbXB1dGVzIHBhdGhzIGR5bmFtaWNhbGx5LCBzbyB0aGVzZSBhcmUgbm90IHVzZWRcbiAgc3RlcHNCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdvcmtmbG93c0J1bmRsZVBhdGg6IHN0cmluZztcbiAgd2ViaG9va0J1bmRsZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBOZXN0SlMgYnVpbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RDb25maWcgZXh0ZW5kcyBCYXNlV29ya2Zsb3dDb25maWcge1xuICBidWlsZFRhcmdldDogJ25lc3QnO1xuICAvLyBOZXN0SlMgYnVpbGRlciBjb21wdXRlcyBwYXRocyBkeW5hbWljYWxseSwgc28gdGhlc2UgYXJlIG5vdCB1c2VkXG4gIHN0ZXBzQnVuZGxlUGF0aDogc3RyaW5nO1xuICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBzdHJpbmc7XG4gIHdlYmhvb2tCdW5kbGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiBvZiBhbGwgYnVpbGRlciBjb25maWd1cmF0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgdHlwZSBXb3JrZmxvd0NvbmZpZyA9XG4gIHwgU3RhbmRhbG9uZUNvbmZpZ1xuICB8IFZlcmNlbEJ1aWxkT3V0cHV0Q29uZmlnXG4gIHwgTmV4dENvbmZpZ1xuICB8IE5lc3RDb25maWdcbiAgfCBTdmVsdGVLaXRDb25maWdcbiAgfCBBc3Ryb0NvbmZpZztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCdWlsZFRhcmdldChcbiAgdGFyZ2V0OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IHRhcmdldCBpcyBCdWlsZFRhcmdldCB7XG4gIHJldHVybiAhIXRhcmdldCAmJiB2YWxpZEJ1aWxkVGFyZ2V0cy5pbmNsdWRlcyh0YXJnZXQgYXMgQnVpbGRUYXJnZXQpO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/builders",
3
- "version": "5.0.0-beta.17",
3
+ "version": "5.0.0-beta.18",
4
4
  "description": "Shared builder infrastructure for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -40,10 +40,10 @@
40
40
  "find-up": "7.0.0",
41
41
  "json5": "2.2.3",
42
42
  "tinyglobby": "0.2.17",
43
- "@workflow/core": "5.0.0-beta.17",
43
+ "@workflow/core": "5.0.0-beta.18",
44
44
  "@workflow/errors": "5.0.0-beta.8",
45
45
  "@workflow/utils": "5.0.0-beta.4",
46
- "@workflow/swc-plugin": "5.0.0-beta.4"
46
+ "@workflow/swc-plugin": "5.0.0-beta.5"
47
47
  },
48
48
  "scripts": {
49
49
  "build": "tsc",