@mecanizou/telemetry-hub 1.3.1 → 1.3.3

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.
@@ -95,20 +95,19 @@ const api_1 = require("@opentelemetry/api");
95
95
  (0, vitest_1.expect)(attributes['http.host']).toBe('api.example.com');
96
96
  });
97
97
  (0, vitest_1.it)('deve incluir atributos de usuário', () => {
98
+ const user = {
99
+ uid: 'user-123',
100
+ email: 'user@example.com',
101
+ };
98
102
  standardTracer.startSpan({
99
103
  spanName: 'user-operation',
100
104
  serviceName: 'user-service',
101
105
  environment: 'production',
102
- user: {
103
- accountUserUid: 'user-123',
104
- accountUid: 'account-456',
105
- applicationUid: 'app-789',
106
- },
106
+ user,
107
107
  });
108
108
  const attributes = mockTracer.startSpan.mock.calls[0][1].attributes;
109
- (0, vitest_1.expect)(attributes['accountUser.uid']).toBe('user-123');
110
- (0, vitest_1.expect)(attributes['account.uid']).toBe('account-456');
111
- (0, vitest_1.expect)(attributes['application.uid']).toBe('app-789');
109
+ (0, vitest_1.expect)(attributes['user.uid']).toBe(user.uid);
110
+ (0, vitest_1.expect)(attributes['user.email']).toBe(user.email);
112
111
  });
113
112
  (0, vitest_1.it)('deve incluir atributos de performance', () => {
114
113
  standardTracer.startSpan({
@@ -310,9 +309,6 @@ const api_1 = require("@opentelemetry/api");
310
309
  spanName: 'error-operation',
311
310
  serviceName: 'error-service',
312
311
  environment: 'production',
313
- user: {
314
- accountUserUid: 'user-123',
315
- },
316
312
  });
317
313
  const error = new Error('Operation failed');
318
314
  spanResult.setError(error);
@@ -327,4 +323,4 @@ const api_1 = require("@opentelemetry/api");
327
323
  });
328
324
  });
329
325
  });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9fX3Rlc3RzX18vdHJhY2VyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBOEQ7QUFDOUQsc0NBQTJDO0FBQzNDLDRDQUE4RDtBQUU5RCxJQUFBLGlCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksUUFBYSxDQUFDO0lBQ2xCLElBQUksY0FBOEIsQ0FBQztJQUVuQyxJQUFBLG1CQUFVLEVBQUMsR0FBRyxFQUFFO1FBQ2QsUUFBUSxHQUFHO1lBQ1QsR0FBRyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDWixZQUFZLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQixTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQixlQUFlLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtTQUN6QixDQUFDO1FBRUYsVUFBVSxHQUFHO1lBQ1gsU0FBUyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO1NBQzdDLENBQUM7UUFFRixjQUFjLEdBQUcsSUFBSSx1QkFBYyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLElBQUEsV0FBRSxFQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUMxQyxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixXQUFXLEVBQUUsWUFBWTtnQkFDekIsV0FBVyxFQUFFLFlBQVk7YUFDMUIsQ0FBQyxDQUFDO1lBRUgsSUFBQSxlQUFNLEVBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9C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TyxFQUFFLGtCQUFrQjthQUM1QixDQUFDLENBQUM7WUFDSCxJQUFBLGVBQU0sRUFBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgaXQsIGV4cGVjdCwgdmksIGJlZm9yZUVhY2ggfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgU3RhbmRhcmRUcmFjZXIgfSBmcm9tICcuLi90cmFjZXInO1xuaW1wb3J0IHsgU3BhblN0YXR1c0NvZGUsIFNwYW5LaW5kIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcblxuZGVzY3JpYmUoJ1N0YW5kYXJkVHJhY2VyJywgKCkgPT4ge1xuICBsZXQgbW9ja1RyYWNlcjogYW55O1xuICBsZXQgbW9ja1NwYW46IGFueTtcbiAgbGV0IHN0YW5kYXJkVHJhY2VyOiBTdGFuZGFyZFRyYWNlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBtb2NrU3BhbiA9IHtcbiAgICAgIGVuZDogdmkuZm4oKSxcbiAgICAgIHNldEF0dHJpYnV0ZTogdmkuZm4oKSxcbiAgICAgIHNldFN0YXR1czogdmkuZm4oKSxcbiAgICAgIHJlY29yZEV4Y2VwdGlvbjogdmkuZm4oKSxcbiAgICB9O1xuXG4gICAgbW9ja1RyYWNlciA9IHtcbiAgICAgIHN0YXJ0U3BhbjogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUobW9ja1NwYW4pLFxuICAgIH07XG5cbiAgICBzdGFuZGFyZFRyYWNlciA9IG5ldyBTdGFuZGFyZFRyYWNlcihtb2NrVHJhY2VyLCAndGVzdC1zZXJ2aWNlJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzdGFydFNwYW4nLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgY3JpYXIgc3BhbiBjb20gbm9tZSBlIGF0cmlidXRvcyBiw6FzaWNvcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNwYW5SZXN1bHQgPSBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3Rlc3Qtb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdteS1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobW9ja1RyYWNlci5zdGFydFNwYW4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCd0ZXN0LW9wZXJhdGlvbicsIHtcbiAgICAgICAga2luZDogU3BhbktpbmQuU0VSVkVSLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgJ3NlcnZpY2UubmFtZSc6ICdteS1zZXJ2aWNlJyxcbiAgICAgICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChzcGFuUmVzdWx0LnNwYW4pLnRvQmUobW9ja1NwYW4pO1xuICAgICAgZXhwZWN0KHNwYW5SZXN1bHQuZW5kKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHNwYW5SZXN1bHQuc2V0U3VjY2VzcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzcGFuUmVzdWx0LnNldEVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHNwYW5SZXN1bHQuc2V0QXR0cmlidXRlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgdXNhciBkZWZhdWx0U2VydmljZU5hbWUgcXVhbmRvIHNlcnZpY2VOYW1lIG7Do28gZm9ybmVjaWRvJywgKCkgPT4ge1xuICAgICAgc3RhbmRhcmRUcmFjZXIuc3RhcnRTcGFuKHtcbiAgICAgICAgc3Bhbk5hbWU6ICd0ZXN0LW9wZXJhdGlvbicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9ja1RyYWNlci5zdGFydFNwYW4ubW9jay5jYWxsc1swXVsxXS5hdHRyaWJ1dGVzO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ3NlcnZpY2UubmFtZSddKS50b0JlKCd0ZXN0LXNlcnZpY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgYXRyaWJ1dG9zIGRlIGV4ZWN1w6fDo28nLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3Byb2Nlc3MtcmVxdWVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnYXBpLXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBleGVjdXRpb246IHtcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6ICdwcm9jZXNzUGF5bWVudCcsXG4gICAgICAgICAgaW52b2NhdGlvbklkOiAnaW52LTEyMycsXG4gICAgICAgICAgYXdzUmVxdWVzdElkOiAnYXdzLTQ1NicsXG4gICAgICAgICAgcmVxdWVzdElkOiAncmVxLTc4OScsXG4gICAgICAgICAgY29udHJvbGxlcjogJ1BheW1lbnRDb250cm9sbGVyJyxcbiAgICAgICAgICBjb250cm9sbGVyTWV0aG9kOiAncHJvY2VzcycsXG4gICAgICAgICAgb3JpZ2luOiAnbW9iaWxlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9ja1RyYWNlci5zdGFydFNwYW4ubW9jay5jYWxsc1swXVsxXS5hdHRyaWJ1dGVzO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2Z1bmN0aW9uLm5hbWUnXSkudG9CZSgncHJvY2Vzc1BheW1lbnQnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJ10pLnRvQmUoJ2ludi0xMjMnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydhd3MucmVxdWVzdC5pZCddKS50b0JlKCdhd3MtNDU2Jyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1sncmVxdWVzdC5pZCddKS50b0JlKCdyZXEtNzg5Jyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snY29udHJvbGxlci5uYW1lJ10pLnRvQmUoJ1BheW1lbnRDb250cm9sbGVyJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snY29udHJvbGxlci5tZXRob2QnXSkudG9CZSgncHJvY2VzcycpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ29yaWdpbiddKS50b0JlKCdtb2JpbGUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgYXRyaWJ1dG9zIEhUVFAnLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ2h0dHAtcmVxdWVzdCcsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnd2ViLXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICBodHRwOiB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vb3JkZXJzJyxcbiAgICAgICAgICBlbmRwb2ludDogJy9vcmRlcnMnLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IDIwMSxcbiAgICAgICAgICBzY2hlbWU6ICdodHRwcycsXG4gICAgICAgICAgaG9zdDogJ2FwaS5leGFtcGxlLmNvbScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG1vY2tUcmFjZXIuc3RhcnRTcGFuLm1vY2suY2FsbHNbMF1bMV0uYXR0cmlidXRlcztcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydodHRwLm1ldGhvZCddKS50b0JlKCdQT1NUJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snaHR0cC51cmwnXSkudG9CZSgnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vb3JkZXJzJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snaHR0cC50YXJnZXQnXSkudG9CZSgnL29yZGVycycpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2h0dHAuc3RhdHVzX2NvZGUnXSkudG9CZSgyMDEpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2h0dHAuc2NoZW1lJ10pLnRvQmUoJ2h0dHBzJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snaHR0cC5ob3N0J10pLnRvQmUoJ2FwaS5leGFtcGxlLmNvbScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgZGUgdXN1w6FyaW8nLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3VzZXItb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd1c2VyLXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgYWNjb3VudFVzZXJVaWQ6ICd1c2VyLTEyMycsXG4gICAgICAgICAgYWNjb3VudFVpZDogJ2FjY291bnQtNDU2JyxcbiAgICAgICAgICBhcHBsaWNhdGlvblVpZDogJ2FwcC03ODknLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2NrVHJhY2VyLnN0YXJ0U3Bhbi5tb2NrLmNhbGxzWzBdWzFdLmF0dHJpYnV0ZXM7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snYWNjb3VudFVzZXIudWlkJ10pLnRvQmUoJ3VzZXItMTIzJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snYWNjb3VudC51aWQnXSkudG9CZSgnYWNjb3VudC00NTYnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydhcHBsaWNhdGlvbi51aWQnXSkudG9CZSgnYXBwLTc4OScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgZGUgcGVyZm9ybWFuY2UnLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3BlcmZvcm1hbmNlLXRlc3QnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3BlcmYtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NczogMjUwLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG1vY2tUcmFjZXIuc3RhcnRTcGFuLm1vY2suY2FsbHNbMF1bMV0uYXR0cmlidXRlcztcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydkdXJhdGlvbi5tcyddKS50b0JlKDI1MCk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snZXhlY3V0aW9uLnN1Y2Nlc3MnXSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgYXRyaWJ1dG9zIGRlIGVycm8nLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ2Vycm9yLW9wZXJhdGlvbicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnZXJyb3Itc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgdHlwZTogJ1ZhbGlkYXRpb25FcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgaW5wdXQnLFxuICAgICAgICAgIHN0YWNrOiAnRXJyb3Igc3RhY2sgdHJhY2UnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2NrVHJhY2VyLnN0YXJ0U3Bhbi5tb2NrLmNhbGxzWzBdWzFdLmF0dHJpYnV0ZXM7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snZXJyb3IudHlwZSddKS50b0JlKCdWYWxpZGF0aW9uRXJyb3InKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydlcnJvci5tZXNzYWdlJ10pLnRvQmUoJ0ludmFsaWQgaW5wdXQnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydlcnJvci5zdGFjayddKS50b0JlKCdFcnJvciBzdGFjayB0cmFjZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgY3VzdG9taXphZG9zJywgKCkgPT4ge1xuICAgICAgc3RhbmRhcmRUcmFjZXIuc3RhcnRTcGFuKHtcbiAgICAgICAgc3Bhbk5hbWU6ICdjdXN0b20tb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdjdXN0b20tc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAnY3VzdG9tLmZpZWxkJzogJ3ZhbHVlJyxcbiAgICAgICAgICAnY3VzdG9tLmNvdW50JzogNDIsXG4gICAgICAgICAgJ2N1c3RvbS5lbmFibGVkJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9ja1RyYWNlci5zdGFydFNwYW4ubW9jay5jYWxsc1swXVsxXS5hdHRyaWJ1dGVzO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2N1c3RvbS5maWVsZCddKS50b0JlKCd2YWx1ZScpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2N1c3RvbS5jb3VudCddKS50b0JlKDQyKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydjdXN0b20uZW5hYmxlZCddKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgZmlsdHJhciB2YWxvcmVzIHVuZGVmaW5lZCBlIG51bGwnLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ2ZpbHRlci10ZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdmaWx0ZXItc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIGludm9jYXRpb25JZDogdW5kZWZpbmVkLFxuICAgICAgICAgIGF3c1JlcXVlc3RJZDogbnVsbCBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICB2YWxpZDogJ3ZhbHVlJyxcbiAgICAgICAgICBpbnZhbGlkOiB1bmRlZmluZWQgYXMgYW55LFxuICAgICAgICAgIG51bGxWYWx1ZTogbnVsbCBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG1vY2tUcmFjZXIuc3RhcnRTcGFuLm1vY2suY2FsbHNbMF1bMV0uYXR0cmlidXRlcztcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydmdW5jdGlvbi5uYW1lJ10pLnRvQmUoJ3Rlc3QnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJ10pLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydhd3MucmVxdWVzdC5pZCddKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1sndmFsaWQnXSkudG9CZSgndmFsdWUnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydpbnZhbGlkJ10pLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydudWxsVmFsdWUnXSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU3RhbmRhcmRTcGFuUmVzdWx0JywgKCkgPT4ge1xuICAgIGxldCBzcGFuUmVzdWx0OiBhbnk7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHNwYW5SZXN1bHQgPSBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3Rlc3Qtc3BhbicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2VuZCcsICgpID0+IHtcbiAgICAgIGl0KCdkZXZlIGZpbmFsaXphciBvIHNwYW4nLCAoKSA9PiB7XG4gICAgICAgIHNwYW5SZXN1bHQuZW5kKCk7XG5cbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLmVuZCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2V0U3VjY2VzcycsICgpID0+IHtcbiAgICAgIGl0KCdkZXZlIG1hcmNhciBzcGFuIGNvbW8gc3VjZXNzbycsICgpID0+IHtcbiAgICAgICAgc3BhblJlc3VsdC5zZXRTdWNjZXNzKHRydWUpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdleGVjdXRpb24uc3VjY2VzcycsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0U3RhdHVzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuT0ssXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkZXZlIG1hcmNhciBzcGFuIGNvbW8gZmFsaGEnLCAoKSA9PiB7XG4gICAgICAgIHNwYW5SZXN1bHQuc2V0U3VjY2VzcyhmYWxzZSk7XG5cbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgJ2V4ZWN1dGlvbi5zdWNjZXNzJyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0U3RhdHVzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2V0RXJyb3InLCAoKSA9PiB7XG4gICAgICBpdCgnZGV2ZSByZWdpc3RyYXIgZXJybyBubyBzcGFuJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignVGVzdCBlcnJvcicpO1xuXG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgJ2Vycm9yLnR5cGUnLFxuICAgICAgICAgICdFcnJvcidcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnLFxuICAgICAgICAgICdUZXN0IGVycm9yJ1xuICAgICAgICApO1xuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgICAnZXhlY3V0aW9uLnN1Y2Nlc3MnLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRTdGF0dXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgICBjb2RlOiBTcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiAnVGVzdCBlcnJvcicsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkZXZlIGluY2x1aXIgc3RhY2sgdHJhY2UgcXVhbmRvIGRpc3BvbsOtdmVsJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignRXJyb3Igd2l0aCBzdGFjaycpO1xuICAgICAgICBlcnJvci5zdGFjayA9ICdFcnJvcjogRXJyb3Igd2l0aCBzdGFja1xcbiAgYXQgdGVzdC50czoxOjEnO1xuXG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdlcnJvci5zdGFjaycsXG4gICAgICAgICAgZXJyb3Iuc3RhY2tcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGV2ZSBmdW5jaW9uYXIgY29tIGVycm8gY3VzdG9taXphZG8nLCAoKSA9PiB7XG4gICAgICAgIGNsYXNzIEN1c3RvbUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgICAgICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnQ3VzdG9tRXJyb3InO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN1c3RvbUVycm9yKCdDdXN0b20gZXJyb3IgbWVzc2FnZScpO1xuXG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdlcnJvci50eXBlJyxcbiAgICAgICAgICAnQ3VzdG9tRXJyb3InXG4gICAgICAgICk7XG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdlcnJvci5tZXNzYWdlJyxcbiAgICAgICAgICAnQ3VzdG9tIGVycm9yIG1lc3NhZ2UnXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzZXRBdHRyaWJ1dGUnLCAoKSA9PiB7XG4gICAgICBpdCgnZGV2ZSBhZGljaW9uYXIgYXRyaWJ1dG8gc3RyaW5nJywgKCkgPT4ge1xuICAgICAgICBzcGFuUmVzdWx0LnNldEF0dHJpYnV0ZSgnY3VzdG9tLmtleScsICdjdXN0b20gdmFsdWUnKTtcblxuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgICAnY3VzdG9tLmtleScsXG4gICAgICAgICAgJ2N1c3RvbSB2YWx1ZSdcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGV2ZSBhZGljaW9uYXIgYXRyaWJ1dG8gbnVtw6lyaWNvJywgKCkgPT4ge1xuICAgICAgICBzcGFuUmVzdWx0LnNldEF0dHJpYnV0ZSgnY3VzdG9tLmNvdW50JywgMTIzKTtcblxuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY3VzdG9tLmNvdW50JywgMTIzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGV2ZSBhZGljaW9uYXIgYXRyaWJ1dG8gYm9vbGVhbm8nLCAoKSA9PiB7XG4gICAgICAgIHNwYW5SZXN1bHQuc2V0QXR0cmlidXRlKCdjdXN0b20uZW5hYmxlZCcsIHRydWUpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdjdXN0b20uZW5hYmxlZCcsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZWNvcmRFeGNlcHRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgcmVnaXN0cmFyIGV4Y2XDp8OjbyBjb20gdG9kb3Mgb3MgYXRyaWJ1dG9zJywgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ0V4Y2VwdGlvbiB0ZXN0Jyk7XG4gICAgICBlcnJvci5zdGFjayA9ICdFcnJvciBzdGFjayB0cmFjZSBoZXJlJztcblxuICAgICAgc3RhbmRhcmRUcmFjZXIucmVjb3JkRXhjZXB0aW9uKG1vY2tTcGFuLCBlcnJvcik7XG5cbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdlcnJvci50eXBlJywgJ0Vycm9yJyk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnLFxuICAgICAgICAnRXhjZXB0aW9uIHRlc3QnXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICdlcnJvci5zdGFjaycsXG4gICAgICAgICdFcnJvciBzdGFjayB0cmFjZSBoZXJlJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGZ1bmNpb25hciBzZW0gc3RhY2sgdHJhY2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignTm8gc3RhY2snKTtcbiAgICAgIGRlbGV0ZSBlcnJvci5zdGFjaztcblxuICAgICAgc3RhbmRhcmRUcmFjZXIucmVjb3JkRXhjZXB0aW9uKG1vY2tTcGFuLCBlcnJvcik7XG5cbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdlcnJvci50eXBlJywgJ0Vycm9yJyk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnLFxuICAgICAgICAnTm8gc3RhY2snXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpOyAvLyBBcGVuYXMgdHlwZSBlIG1lc3NhZ2VcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NlbsOhcmlvcyBkZSB1c28gY29tcGxldG9zJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGdlcmVuY2lhciBmbHV4byBkZSBzdWNlc3NvIGNvbXBsZXRvJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BhblJlc3VsdCA9IHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAnY29tcGxldGUtb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdjb21wbGV0ZS1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiAncHJvY2Vzc0RhdGEnLFxuICAgICAgICAgIHJlcXVlc3RJZDogJ3JlcS0xMjMnLFxuICAgICAgICB9LFxuICAgICAgICBodHRwOiB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL2RhdGEnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHNwYW5SZXN1bHQuc2V0QXR0cmlidXRlKCdjdXN0b20uc3RlcCcsICdwcm9jZXNzaW5nJyk7XG4gICAgICBzcGFuUmVzdWx0LnNldFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuXG4gICAgICBleHBlY3QobW9ja1RyYWNlci5zdGFydFNwYW4pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAnY3VzdG9tLnN0ZXAnLFxuICAgICAgICAncHJvY2Vzc2luZydcbiAgICAgICk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgJ2V4ZWN1dGlvbi5zdWNjZXNzJyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRTdGF0dXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuT0ssXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5lbmQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGdlcmVuY2lhciBmbHV4byBkZSBlcnJvIGNvbXBsZXRvJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BhblJlc3VsdCA9IHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAnZXJyb3Itb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdlcnJvci1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgdXNlcjoge1xuICAgICAgICAgIGFjY291bnRVc2VyVWlkOiAndXNlci0xMjMnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdPcGVyYXRpb24gZmFpbGVkJyk7XG5cbiAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgc3BhblJlc3VsdC5lbmQoKTtcblxuICAgICAgZXhwZWN0KG1vY2tTcGFuLnJlY29yZEV4Y2VwdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXJyb3IpO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICdleGVjdXRpb24uc3VjY2VzcycsXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldFN0YXR1cykudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICBjb2RlOiBTcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ09wZXJhdGlvbiBmYWlsZWQnLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uZW5kKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9fX3Rlc3RzX18vdHJhY2VyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBOEQ7QUFDOUQsc0NBQTJDO0FBQzNDLDRDQUE4RDtBQUU5RCxJQUFBLGlCQUFRLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO0lBQzlCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksUUFBYSxDQUFDO0lBQ2xCLElBQUksY0FBOEIsQ0FBQztJQUVuQyxJQUFBLG1CQUFVLEVBQUMsR0FBRyxFQUFFO1FBQ2QsUUFBUSxHQUFHO1lBQ1QsR0FBRyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDWixZQUFZLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQixTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQixlQUFlLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtTQUN6QixDQUFDO1FBRUYsVUFBVSxHQUFHO1lBQ1gsU0FBUyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO1NBQzdDLENBQUM7UUFFRixjQUFjLEdBQUcsSUFBSSx1QkFBYyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEsaUJBQVEsRUFBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLElBQUEsV0FBRSxFQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO2dCQUMxQyxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixXQUFXLEVBQUUsWUFBWTtnQkFDekIsV0FBVyxFQUFFLFlBQVk7YUFDMUIsQ0FBQyxDQUFDO1lBRUgsSUFBQSxlQUFNLEVBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLG9C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QyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBpdCwgZXhwZWN0LCB2aSwgYmVmb3JlRWFjaCB9IGZyb20gJ3ZpdGVzdCc7XG5pbXBvcnQgeyBTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4uL3RyYWNlcic7XG5pbXBvcnQgeyBTcGFuU3RhdHVzQ29kZSwgU3BhbktpbmQgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuXG5kZXNjcmliZSgnU3RhbmRhcmRUcmFjZXInLCAoKSA9PiB7XG4gIGxldCBtb2NrVHJhY2VyOiBhbnk7XG4gIGxldCBtb2NrU3BhbjogYW55O1xuICBsZXQgc3RhbmRhcmRUcmFjZXI6IFN0YW5kYXJkVHJhY2VyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG1vY2tTcGFuID0ge1xuICAgICAgZW5kOiB2aS5mbigpLFxuICAgICAgc2V0QXR0cmlidXRlOiB2aS5mbigpLFxuICAgICAgc2V0U3RhdHVzOiB2aS5mbigpLFxuICAgICAgcmVjb3JkRXhjZXB0aW9uOiB2aS5mbigpLFxuICAgIH07XG5cbiAgICBtb2NrVHJhY2VyID0ge1xuICAgICAgc3RhcnRTcGFuOiB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZShtb2NrU3BhbiksXG4gICAgfTtcblxuICAgIHN0YW5kYXJkVHJhY2VyID0gbmV3IFN0YW5kYXJkVHJhY2VyKG1vY2tUcmFjZXIsICd0ZXN0LXNlcnZpY2UnKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3N0YXJ0U3BhbicsICgpID0+IHtcbiAgICBpdCgnZGV2ZSBjcmlhciBzcGFuIGNvbSBub21lIGUgYXRyaWJ1dG9zIGLDoXNpY29zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BhblJlc3VsdCA9IHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAndGVzdC1vcGVyYXRpb24nLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ215LXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChtb2NrVHJhY2VyLnN0YXJ0U3BhbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3Rlc3Qtb3BlcmF0aW9uJywge1xuICAgICAgICBraW5kOiBTcGFuS2luZC5TRVJWRVIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAnc2VydmljZS5uYW1lJzogJ215LXNlcnZpY2UnLFxuICAgICAgICAgICdkZXBsb3ltZW50LmVudmlyb25tZW50Lm5hbWUnOiAncHJvZHVjdGlvbicsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHNwYW5SZXN1bHQuc3BhbikudG9CZShtb2NrU3Bhbik7XG4gICAgICBleHBlY3Qoc3BhblJlc3VsdC5lbmQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3BhblJlc3VsdC5zZXRTdWNjZXNzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHNwYW5SZXN1bHQuc2V0RXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3BhblJlc3VsdC5zZXRBdHRyaWJ1dGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSB1c2FyIGRlZmF1bHRTZXJ2aWNlTmFtZSBxdWFuZG8gc2VydmljZU5hbWUgbsOjbyBmb3JuZWNpZG8nLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3Rlc3Qtb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICcnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Rlc3QnLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2NrVHJhY2VyLnN0YXJ0U3Bhbi5tb2NrLmNhbGxzWzBdWzFdLmF0dHJpYnV0ZXM7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snc2VydmljZS5uYW1lJ10pLnRvQmUoJ3Rlc3Qtc2VydmljZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgZGUgZXhlY3XDp8OjbycsICgpID0+IHtcbiAgICAgIHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAncHJvY2Vzcy1yZXF1ZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdhcGktc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogJ3Byb2Nlc3NQYXltZW50JyxcbiAgICAgICAgICBpbnZvY2F0aW9uSWQ6ICdpbnYtMTIzJyxcbiAgICAgICAgICBhd3NSZXF1ZXN0SWQ6ICdhd3MtNDU2JyxcbiAgICAgICAgICByZXF1ZXN0SWQ6ICdyZXEtNzg5JyxcbiAgICAgICAgICBjb250cm9sbGVyOiAnUGF5bWVudENvbnRyb2xsZXInLFxuICAgICAgICAgIGNvbnRyb2xsZXJNZXRob2Q6ICdwcm9jZXNzJyxcbiAgICAgICAgICBvcmlnaW46ICdtb2JpbGUnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2NrVHJhY2VyLnN0YXJ0U3Bhbi5tb2NrLmNhbGxzWzBdWzFdLmF0dHJpYnV0ZXM7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snZnVuY3Rpb24ubmFtZSddKS50b0JlKCdwcm9jZXNzUGF5bWVudCcpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2Z1bmN0aW9uLmludm9jYXRpb25faWQnXSkudG9CZSgnaW52LTEyMycpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2F3cy5yZXF1ZXN0LmlkJ10pLnRvQmUoJ2F3cy00NTYnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydyZXF1ZXN0LmlkJ10pLnRvQmUoJ3JlcS03ODknKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydjb250cm9sbGVyLm5hbWUnXSkudG9CZSgnUGF5bWVudENvbnRyb2xsZXInKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydjb250cm9sbGVyLm1ldGhvZCddKS50b0JlKCdwcm9jZXNzJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snb3JpZ2luJ10pLnRvQmUoJ21vYmlsZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgSFRUUCcsICgpID0+IHtcbiAgICAgIHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAnaHR0cC1yZXF1ZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd3ZWItc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGh0dHA6IHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5leGFtcGxlLmNvbS9vcmRlcnMnLFxuICAgICAgICAgIGVuZHBvaW50OiAnL29yZGVycycsXG4gICAgICAgICAgc3RhdHVzQ29kZTogMjAxLFxuICAgICAgICAgIHNjaGVtZTogJ2h0dHBzJyxcbiAgICAgICAgICBob3N0OiAnYXBpLmV4YW1wbGUuY29tJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9ja1RyYWNlci5zdGFydFNwYW4ubW9jay5jYWxsc1swXVsxXS5hdHRyaWJ1dGVzO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2h0dHAubWV0aG9kJ10pLnRvQmUoJ1BPU1QnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydodHRwLnVybCddKS50b0JlKCdodHRwczovL2FwaS5leGFtcGxlLmNvbS9vcmRlcnMnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydodHRwLnRhcmdldCddKS50b0JlKCcvb3JkZXJzJyk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snaHR0cC5zdGF0dXNfY29kZSddKS50b0JlKDIwMSk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snaHR0cC5zY2hlbWUnXSkudG9CZSgnaHR0cHMnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydodHRwLmhvc3QnXSkudG9CZSgnYXBpLmV4YW1wbGUuY29tJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGV2ZSBpbmNsdWlyIGF0cmlidXRvcyBkZSB1c3XDoXJpbycsICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB7XG4gICAgICAgIHVpZDogJ3VzZXItMTIzJyxcbiAgICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAgICAgIH07XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3VzZXItb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICd1c2VyLXNlcnZpY2UnLFxuICAgICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nLFxuICAgICAgICB1c2VyLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2NrVHJhY2VyLnN0YXJ0U3Bhbi5tb2NrLmNhbGxzWzBdWzFdLmF0dHJpYnV0ZXM7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1sndXNlci51aWQnXSkudG9CZSh1c2VyLnVpZCk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1sndXNlci5lbWFpbCddKS50b0JlKHVzZXIuZW1haWwpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgZGUgcGVyZm9ybWFuY2UnLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3BlcmZvcm1hbmNlLXRlc3QnLFxuICAgICAgICBzZXJ2aWNlTmFtZTogJ3BlcmYtc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAndGVzdCcsXG4gICAgICAgIHBlcmZvcm1hbmNlOiB7XG4gICAgICAgICAgZHVyYXRpb25NczogMjUwLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG1vY2tUcmFjZXIuc3RhcnRTcGFuLm1vY2suY2FsbHNbMF1bMV0uYXR0cmlidXRlcztcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydkdXJhdGlvbi5tcyddKS50b0JlKDI1MCk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snZXhlY3V0aW9uLnN1Y2Nlc3MnXSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGluY2x1aXIgYXRyaWJ1dG9zIGRlIGVycm8nLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ2Vycm9yLW9wZXJhdGlvbicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAnZXJyb3Itc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgdHlwZTogJ1ZhbGlkYXRpb25FcnJvcicsXG4gICAgICAgICAgbWVzc2FnZTogJ0ludmFsaWQgaW5wdXQnLFxuICAgICAgICAgIHN0YWNrOiAnRXJyb3Igc3RhY2sgdHJhY2UnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBtb2NrVHJhY2VyLnN0YXJ0U3Bhbi5tb2NrLmNhbGxzWzBdWzFdLmF0dHJpYnV0ZXM7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1snZXJyb3IudHlwZSddKS50b0JlKCdWYWxpZGF0aW9uRXJyb3InKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydlcnJvci5tZXNzYWdlJ10pLnRvQmUoJ0ludmFsaWQgaW5wdXQnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydlcnJvci5zdGFjayddKS50b0JlKCdFcnJvciBzdGFjayB0cmFjZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgaW5jbHVpciBhdHJpYnV0b3MgY3VzdG9taXphZG9zJywgKCkgPT4ge1xuICAgICAgc3RhbmRhcmRUcmFjZXIuc3RhcnRTcGFuKHtcbiAgICAgICAgc3Bhbk5hbWU6ICdjdXN0b20tb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdjdXN0b20tc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAnY3VzdG9tLmZpZWxkJzogJ3ZhbHVlJyxcbiAgICAgICAgICAnY3VzdG9tLmNvdW50JzogNDIsXG4gICAgICAgICAgJ2N1c3RvbS5lbmFibGVkJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9ja1RyYWNlci5zdGFydFNwYW4ubW9jay5jYWxsc1swXVsxXS5hdHRyaWJ1dGVzO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2N1c3RvbS5maWVsZCddKS50b0JlKCd2YWx1ZScpO1xuICAgICAgZXhwZWN0KGF0dHJpYnV0ZXNbJ2N1c3RvbS5jb3VudCddKS50b0JlKDQyKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydjdXN0b20uZW5hYmxlZCddKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RldmUgZmlsdHJhciB2YWxvcmVzIHVuZGVmaW5lZCBlIG51bGwnLCAoKSA9PiB7XG4gICAgICBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ2ZpbHRlci10ZXN0JyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdmaWx0ZXItc2VydmljZScsXG4gICAgICAgIGVudmlyb25tZW50OiAncHJvZHVjdGlvbicsXG4gICAgICAgIGV4ZWN1dGlvbjoge1xuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIGludm9jYXRpb25JZDogdW5kZWZpbmVkLFxuICAgICAgICAgIGF3c1JlcXVlc3RJZDogbnVsbCBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICB2YWxpZDogJ3ZhbHVlJyxcbiAgICAgICAgICBpbnZhbGlkOiB1bmRlZmluZWQgYXMgYW55LFxuICAgICAgICAgIG51bGxWYWx1ZTogbnVsbCBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IG1vY2tUcmFjZXIuc3RhcnRTcGFuLm1vY2suY2FsbHNbMF1bMV0uYXR0cmlidXRlcztcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydmdW5jdGlvbi5uYW1lJ10pLnRvQmUoJ3Rlc3QnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJ10pLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydhd3MucmVxdWVzdC5pZCddKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXR0cmlidXRlc1sndmFsaWQnXSkudG9CZSgndmFsdWUnKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydpbnZhbGlkJ10pLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhdHRyaWJ1dGVzWydudWxsVmFsdWUnXSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU3RhbmRhcmRTcGFuUmVzdWx0JywgKCkgPT4ge1xuICAgIGxldCBzcGFuUmVzdWx0OiBhbnk7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHNwYW5SZXN1bHQgPSBzdGFuZGFyZFRyYWNlci5zdGFydFNwYW4oe1xuICAgICAgICBzcGFuTmFtZTogJ3Rlc3Qtc3BhbicsXG4gICAgICAgIHNlcnZpY2VOYW1lOiAndGVzdC1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2VuZCcsICgpID0+IHtcbiAgICAgIGl0KCdkZXZlIGZpbmFsaXphciBvIHNwYW4nLCAoKSA9PiB7XG4gICAgICAgIHNwYW5SZXN1bHQuZW5kKCk7XG5cbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLmVuZCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2V0U3VjY2VzcycsICgpID0+IHtcbiAgICAgIGl0KCdkZXZlIG1hcmNhciBzcGFuIGNvbW8gc3VjZXNzbycsICgpID0+IHtcbiAgICAgICAgc3BhblJlc3VsdC5zZXRTdWNjZXNzKHRydWUpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdleGVjdXRpb24uc3VjY2VzcycsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0U3RhdHVzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuT0ssXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkZXZlIG1hcmNhciBzcGFuIGNvbW8gZmFsaGEnLCAoKSA9PiB7XG4gICAgICAgIHNwYW5SZXN1bHQuc2V0U3VjY2VzcyhmYWxzZSk7XG5cbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgJ2V4ZWN1dGlvbi5zdWNjZXNzJyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0U3RhdHVzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2V0RXJyb3InLCAoKSA9PiB7XG4gICAgICBpdCgnZGV2ZSByZWdpc3RyYXIgZXJybyBubyBzcGFuJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignVGVzdCBlcnJvcicpO1xuXG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgJ2Vycm9yLnR5cGUnLFxuICAgICAgICAgICdFcnJvcidcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnLFxuICAgICAgICAgICdUZXN0IGVycm9yJ1xuICAgICAgICApO1xuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgICAnZXhlY3V0aW9uLnN1Y2Nlc3MnLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRTdGF0dXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgICBjb2RlOiBTcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICBtZXNzYWdlOiAnVGVzdCBlcnJvcicsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkZXZlIGluY2x1aXIgc3RhY2sgdHJhY2UgcXVhbmRvIGRpc3BvbsOtdmVsJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignRXJyb3Igd2l0aCBzdGFjaycpO1xuICAgICAgICBlcnJvci5zdGFjayA9ICdFcnJvcjogRXJyb3Igd2l0aCBzdGFja1xcbiAgYXQgdGVzdC50czoxOjEnO1xuXG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdlcnJvci5zdGFjaycsXG4gICAgICAgICAgZXJyb3Iuc3RhY2tcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGV2ZSBmdW5jaW9uYXIgY29tIGVycm8gY3VzdG9taXphZG8nLCAoKSA9PiB7XG4gICAgICAgIGNsYXNzIEN1c3RvbUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgICAgICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnQ3VzdG9tRXJyb3InO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN1c3RvbUVycm9yKCdDdXN0b20gZXJyb3IgbWVzc2FnZScpO1xuXG4gICAgICAgIHNwYW5SZXN1bHQuc2V0RXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdlcnJvci50eXBlJyxcbiAgICAgICAgICAnQ3VzdG9tRXJyb3InXG4gICAgICAgICk7XG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdlcnJvci5tZXNzYWdlJyxcbiAgICAgICAgICAnQ3VzdG9tIGVycm9yIG1lc3NhZ2UnXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzZXRBdHRyaWJ1dGUnLCAoKSA9PiB7XG4gICAgICBpdCgnZGV2ZSBhZGljaW9uYXIgYXRyaWJ1dG8gc3RyaW5nJywgKCkgPT4ge1xuICAgICAgICBzcGFuUmVzdWx0LnNldEF0dHJpYnV0ZSgnY3VzdG9tLmtleScsICdjdXN0b20gdmFsdWUnKTtcblxuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgICAnY3VzdG9tLmtleScsXG4gICAgICAgICAgJ2N1c3RvbSB2YWx1ZSdcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGV2ZSBhZGljaW9uYXIgYXRyaWJ1dG8gbnVtw6lyaWNvJywgKCkgPT4ge1xuICAgICAgICBzcGFuUmVzdWx0LnNldEF0dHJpYnV0ZSgnY3VzdG9tLmNvdW50JywgMTIzKTtcblxuICAgICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY3VzdG9tLmNvdW50JywgMTIzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGV2ZSBhZGljaW9uYXIgYXRyaWJ1dG8gYm9vbGVhbm8nLCAoKSA9PiB7XG4gICAgICAgIHNwYW5SZXN1bHQuc2V0QXR0cmlidXRlKCdjdXN0b20uZW5hYmxlZCcsIHRydWUpO1xuXG4gICAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAgICdjdXN0b20uZW5hYmxlZCcsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZWNvcmRFeGNlcHRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2RldmUgcmVnaXN0cmFyIGV4Y2XDp8OjbyBjb20gdG9kb3Mgb3MgYXRyaWJ1dG9zJywgKCkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ0V4Y2VwdGlvbiB0ZXN0Jyk7XG4gICAgICBlcnJvci5zdGFjayA9ICdFcnJvciBzdGFjayB0cmFjZSBoZXJlJztcblxuICAgICAgc3RhbmRhcmRUcmFjZXIucmVjb3JkRXhjZXB0aW9uKG1vY2tTcGFuLCBlcnJvcik7XG5cbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdlcnJvci50eXBlJywgJ0Vycm9yJyk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnLFxuICAgICAgICAnRXhjZXB0aW9uIHRlc3QnXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgICdlcnJvci5zdGFjaycsXG4gICAgICAgICdFcnJvciBzdGFjayB0cmFjZSBoZXJlJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGZ1bmNpb25hciBzZW0gc3RhY2sgdHJhY2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignTm8gc3RhY2snKTtcbiAgICAgIGRlbGV0ZSBlcnJvci5zdGFjaztcblxuICAgICAgc3RhbmRhcmRUcmFjZXIucmVjb3JkRXhjZXB0aW9uKG1vY2tTcGFuLCBlcnJvcik7XG5cbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdlcnJvci50eXBlJywgJ0Vycm9yJyk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgJ2Vycm9yLm1lc3NhZ2UnLFxuICAgICAgICAnTm8gc3RhY2snXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLnNldEF0dHJpYnV0ZSkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpOyAvLyBBcGVuYXMgdHlwZSBlIG1lc3NhZ2VcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NlbsOhcmlvcyBkZSB1c28gY29tcGxldG9zJywgKCkgPT4ge1xuICAgIGl0KCdkZXZlIGdlcmVuY2lhciBmbHV4byBkZSBzdWNlc3NvIGNvbXBsZXRvJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BhblJlc3VsdCA9IHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAnY29tcGxldGUtb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdjb21wbGV0ZS1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgZXhlY3V0aW9uOiB7XG4gICAgICAgICAgZnVuY3Rpb25OYW1lOiAncHJvY2Vzc0RhdGEnLFxuICAgICAgICAgIHJlcXVlc3RJZDogJ3JlcS0xMjMnLFxuICAgICAgICB9LFxuICAgICAgICBodHRwOiB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL2RhdGEnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHNwYW5SZXN1bHQuc2V0QXR0cmlidXRlKCdjdXN0b20uc3RlcCcsICdwcm9jZXNzaW5nJyk7XG4gICAgICBzcGFuUmVzdWx0LnNldFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICBzcGFuUmVzdWx0LmVuZCgpO1xuXG4gICAgICBleHBlY3QobW9ja1RyYWNlci5zdGFydFNwYW4pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAnY3VzdG9tLnN0ZXAnLFxuICAgICAgICAncHJvY2Vzc2luZydcbiAgICAgICk7XG4gICAgICBleHBlY3QobW9ja1NwYW4uc2V0QXR0cmlidXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgJ2V4ZWN1dGlvbi5zdWNjZXNzJyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRTdGF0dXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuT0ssXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5lbmQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkZXZlIGdlcmVuY2lhciBmbHV4byBkZSBlcnJvIGNvbXBsZXRvJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3BhblJlc3VsdCA9IHN0YW5kYXJkVHJhY2VyLnN0YXJ0U3Bhbih7XG4gICAgICAgIHNwYW5OYW1lOiAnZXJyb3Itb3BlcmF0aW9uJyxcbiAgICAgICAgc2VydmljZU5hbWU6ICdlcnJvci1zZXJ2aWNlJyxcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignT3BlcmF0aW9uIGZhaWxlZCcpO1xuXG4gICAgICBzcGFuUmVzdWx0LnNldEVycm9yKGVycm9yKTtcbiAgICAgIHNwYW5SZXN1bHQuZW5kKCk7XG5cbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5yZWNvcmRFeGNlcHRpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGVycm9yKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRBdHRyaWJ1dGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICAnZXhlY3V0aW9uLnN1Y2Nlc3MnLFxuICAgICAgICBmYWxzZVxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtb2NrU3Bhbi5zZXRTdGF0dXMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdPcGVyYXRpb24gZmFpbGVkJyxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KG1vY2tTcGFuLmVuZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1 @@
1
+ export declare function getEnvironmentStage(): string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnvironmentStage = getEnvironmentStage;
4
+ function getEnvironmentStage() {
5
+ let stage = process.env.STAGE || 'development';
6
+ if (stage === 'prod')
7
+ stage = 'production';
8
+ return stage;
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtEQUlDO0FBSkQsU0FBZ0IsbUJBQW1CO0lBQ2pDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQztJQUMvQyxJQUFJLEtBQUssS0FBSyxNQUFNO1FBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQztJQUMzQyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0RW52aXJvbm1lbnRTdGFnZSgpOiBzdHJpbmcge1xuICBsZXQgc3RhZ2UgPSBwcm9jZXNzLmVudi5TVEFHRSB8fCAnZGV2ZWxvcG1lbnQnO1xuICBpZiAoc3RhZ2UgPT09ICdwcm9kJykgc3RhZ2UgPSAncHJvZHVjdGlvbic7XG4gIHJldHVybiBzdGFnZTtcbn1cbiJdfQ==
@@ -2,3 +2,4 @@ export { StandardLogger } from './logger';
2
2
  export { IStandardLogger, StandardLogData } from './logger-types';
3
3
  export { StandardTracer } from './tracer';
4
4
  export { IStandardTracer, StandardTraceData, StandardSpanResult, } from './tracer-types';
5
+ export { getEnvironmentStage } from './environment';
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StandardTracer = exports.StandardLogger = void 0;
3
+ exports.getEnvironmentStage = exports.StandardTracer = exports.StandardLogger = void 0;
4
4
  var logger_1 = require("./logger");
5
5
  Object.defineProperty(exports, "StandardLogger", { enumerable: true, get: function () { return logger_1.StandardLogger; } });
6
6
  var tracer_1 = require("./tracer");
7
7
  Object.defineProperty(exports, "StandardTracer", { enumerable: true, get: function () { return tracer_1.StandardTracer; } });
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMEM7QUFBakMsd0dBQUEsY0FBYyxPQUFBO0FBRXZCLG1DQUEwQztBQUFqQyx3R0FBQSxjQUFjLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTdGFuZGFyZExvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmV4cG9ydCB7IElTdGFuZGFyZExvZ2dlciwgU3RhbmRhcmRMb2dEYXRhIH0gZnJvbSAnLi9sb2dnZXItdHlwZXMnO1xuZXhwb3J0IHsgU3RhbmRhcmRUcmFjZXIgfSBmcm9tICcuL3RyYWNlcic7XG5leHBvcnQge1xuICBJU3RhbmRhcmRUcmFjZXIsXG4gIFN0YW5kYXJkVHJhY2VEYXRhLFxuICBTdGFuZGFyZFNwYW5SZXN1bHQsXG59IGZyb20gJy4vdHJhY2VyLXR5cGVzJztcbiJdfQ==
8
+ var environment_1 = require("./environment");
9
+ Object.defineProperty(exports, "getEnvironmentStage", { enumerable: true, get: function () { return environment_1.getEnvironmentStage; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMEM7QUFBakMsd0dBQUEsY0FBYyxPQUFBO0FBRXZCLG1DQUEwQztBQUFqQyx3R0FBQSxjQUFjLE9BQUE7QUFPdkIsNkNBQW9EO0FBQTNDLGtIQUFBLG1CQUFtQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU3RhbmRhcmRMb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5leHBvcnQgeyBJU3RhbmRhcmRMb2dnZXIsIFN0YW5kYXJkTG9nRGF0YSB9IGZyb20gJy4vbG9nZ2VyLXR5cGVzJztcbmV4cG9ydCB7IFN0YW5kYXJkVHJhY2VyIH0gZnJvbSAnLi90cmFjZXInO1xuZXhwb3J0IHtcbiAgSVN0YW5kYXJkVHJhY2VyLFxuICBTdGFuZGFyZFRyYWNlRGF0YSxcbiAgU3RhbmRhcmRTcGFuUmVzdWx0LFxufSBmcm9tICcuL3RyYWNlci10eXBlcyc7XG5cbmV4cG9ydCB7IGdldEVudmlyb25tZW50U3RhZ2UgfSBmcm9tICcuL2Vudmlyb25tZW50JztcbiJdfQ==
@@ -13,11 +13,11 @@ export interface StandardLogData {
13
13
  body?: any;
14
14
  params?: Record<string, any>;
15
15
  query?: Record<string, any>;
16
+ agent?: string;
16
17
  };
17
18
  user?: {
18
- accountUserUid?: string;
19
- accountUid?: string;
20
- applicationUid?: string;
19
+ uid?: string;
20
+ email?: string;
21
21
  };
22
22
  execution?: {
23
23
  requestId?: string;
@@ -27,6 +27,11 @@ export interface StandardLogData {
27
27
  controller?: string;
28
28
  controllerMethod?: string;
29
29
  origin?: string;
30
+ routeKey?: string;
31
+ loggedUser?: {
32
+ uid?: string;
33
+ email?: string;
34
+ };
30
35
  };
31
36
  performance?: {
32
37
  durationMs?: number;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvbG9nZ2VyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVyZmFjZSBwYWRyw6NvIHBhcmEgbG9ncyBlc3RydXR1cmFkb3MgZW0gdG9kYSBhIGFwbGljYcOnw6NvLlxuICogQ29tYmluYSBjYW1wb3MgaW1wb3J0YW50ZXMgZGUgYW1iYXMgaW1wbGVtZW50YcOnw7VlcyAoVHNlZCBlIFNTVCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRMb2dEYXRhIHtcbiAgLy8gSW5mb3JtYcOnw7VlcyBkbyBlcnJvL2V2ZW50b1xuICBzZXZlcml0eTogJ0VSUk9SJyB8ICdXQVJOJyB8ICdJTkZPJyB8ICdERUJVRyc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3I/OiBFcnJvcjtcblxuICAvLyBJZGVudGlmaWNhw6fDo28gZG8gc2VydmnDp29cbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZzsgLy8gZGV2ZWxvcG1lbnQsIHN0YWdpbmcsIHByb2R1Y3Rpb25cblxuICAvLyBDb250ZXh0byBkYSByZXF1aXNpw6fDo28gSFRUUFxuICBodHRwPzoge1xuICAgIG1ldGhvZD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBib2R5PzogYW55O1xuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB9O1xuXG4gIC8vIElkZW50aWZpY2HDp8OjbyBkbyB1c3XDoXJpby9jb250YVxuICB1c2VyPzoge1xuICAgIGFjY291bnRVc2VyVWlkPzogc3RyaW5nO1xuICAgIGFjY291bnRVaWQ/OiBzdHJpbmc7XG4gICAgYXBwbGljYXRpb25VaWQ/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQ29udGV4dG8gZGEgZXhlY3XDp8Ojb1xuICBleGVjdXRpb24/OiB7XG4gICAgcmVxdWVzdElkPzogc3RyaW5nO1xuICAgIGF3c1JlcXVlc3RJZD86IHN0cmluZztcbiAgICBmdW5jdGlvbk5hbWU/OiBzdHJpbmc7XG4gICAgaW52b2NhdGlvbklkPzogc3RyaW5nO1xuICAgIGNvbnRyb2xsZXI/OiBzdHJpbmc7XG4gICAgY29udHJvbGxlck1ldGhvZD86IHN0cmluZztcbiAgICBvcmlnaW4/OiBzdHJpbmc7IC8vIG9yaWdlbSBkYSByZXF1aXNpw6fDo28gKGV4OiB3ZWIsIG1vYmlsZSlcbiAgfTtcblxuICAvLyBQZXJmb3JtYW5jZVxuICBwZXJmb3JtYW5jZT86IHtcbiAgICBkdXJhdGlvbk1zPzogbnVtYmVyO1xuICAgIHN1Y2Nlc3M/OiBib29sZWFuO1xuICB9O1xuXG4gIC8vIENvbnRleHRvIGFkaWNpb25hbCBsaXZyZVxuICBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICAvLyBUaW1lc3RhbXBcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHBhcmEgbyBsb2dnZXIgY29yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdGFuZGFyZExvZ2dlciB7XG4gIGxvZ0Vycm9yKFxuICAgIGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+XG4gICk6IFByb21pc2U8dm9pZD47XG4gIGxvZ0luZm8oZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICdzZXZlcml0eScgfCAndGltZXN0YW1wJz4pOiBQcm9taXNlPHZvaWQ+O1xuICBsb2dXYXJuKGRhdGE6IE9taXQ8U3RhbmRhcmRMb2dEYXRhLCAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCc+KTogUHJvbWlzZTx2b2lkPjtcbiAgbG9nRGVidWcoXG4gICAgZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICdzZXZlcml0eScgfCAndGltZXN0YW1wJz5cbiAgKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvbG9nZ2VyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVyZmFjZSBwYWRyw6NvIHBhcmEgbG9ncyBlc3RydXR1cmFkb3MgZW0gdG9kYSBhIGFwbGljYcOnw6NvLlxuICogQ29tYmluYSBjYW1wb3MgaW1wb3J0YW50ZXMgZGUgYW1iYXMgaW1wbGVtZW50YcOnw7VlcyAoVHNlZCBlIFNTVCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRMb2dEYXRhIHtcbiAgLy8gSW5mb3JtYcOnw7VlcyBkbyBlcnJvL2V2ZW50b1xuICBzZXZlcml0eTogJ0VSUk9SJyB8ICdXQVJOJyB8ICdJTkZPJyB8ICdERUJVRyc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3I/OiBFcnJvcjtcblxuICAvLyBJZGVudGlmaWNhw6fDo28gZG8gc2VydmnDp29cbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZzsgLy8gZGV2ZWxvcG1lbnQsIHN0YWdpbmcsIHByb2R1Y3Rpb25cblxuICAvLyBDb250ZXh0byBkYSByZXF1aXNpw6fDo28gSFRUUFxuICBodHRwPzoge1xuICAgIG1ldGhvZD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBib2R5PzogYW55O1xuICAgIHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGFnZW50Pzogc3RyaW5nO1xuICB9O1xuXG4gIC8vIElkZW50aWZpY2HDp8OjbyBkbyB1c3XDoXJpby9jb250YVxuICB1c2VyPzoge1xuICAgIHVpZD86IHN0cmluZztcbiAgICBlbWFpbD86IHN0cmluZztcbiAgfTtcblxuICAvLyBDb250ZXh0byBkYSBleGVjdcOnw6NvXG4gIGV4ZWN1dGlvbj86IHtcbiAgICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gICAgYXdzUmVxdWVzdElkPzogc3RyaW5nO1xuICAgIGZ1bmN0aW9uTmFtZT86IHN0cmluZztcbiAgICBpbnZvY2F0aW9uSWQ/OiBzdHJpbmc7XG4gICAgY29udHJvbGxlcj86IHN0cmluZztcbiAgICBjb250cm9sbGVyTWV0aG9kPzogc3RyaW5nO1xuICAgIG9yaWdpbj86IHN0cmluZzsgLy8gb3JpZ2VtIGRhIHJlcXVpc2nDp8OjbyAoZXg6IHdlYiwgbW9iaWxlKVxuICAgIHJvdXRlS2V5Pzogc3RyaW5nO1xuICAgIGxvZ2dlZFVzZXI/OiB7XG4gICAgICB1aWQ/OiBzdHJpbmc7XG4gICAgICBlbWFpbD86IHN0cmluZztcbiAgICB9O1xuICB9O1xuXG4gIC8vIFBlcmZvcm1hbmNlXG4gIHBlcmZvcm1hbmNlPzoge1xuICAgIGR1cmF0aW9uTXM/OiBudW1iZXI7XG4gICAgc3VjY2Vzcz86IGJvb2xlYW47XG4gIH07XG5cbiAgLy8gQ29udGV4dG8gYWRpY2lvbmFsIGxpdnJlXG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8vIFRpbWVzdGFtcFxuICB0aW1lc3RhbXA6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcGFyYSBvIGxvZ2dlciBjb3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0YW5kYXJkTG9nZ2VyIHtcbiAgbG9nRXJyb3IoXG4gICAgZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICdzZXZlcml0eScgfCAndGltZXN0YW1wJz5cbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgbG9nSW5mbyhkYXRhOiBPbWl0PFN0YW5kYXJkTG9nRGF0YSwgJ3NldmVyaXR5JyB8ICd0aW1lc3RhbXAnPik6IFByb21pc2U8dm9pZD47XG4gIGxvZ1dhcm4oZGF0YTogT21pdDxTdGFuZGFyZExvZ0RhdGEsICdzZXZlcml0eScgfCAndGltZXN0YW1wJz4pOiBQcm9taXNlPHZvaWQ+O1xuICBsb2dEZWJ1ZyhcbiAgICBkYXRhOiBPbWl0PFN0YW5kYXJkTG9nRGF0YSwgJ3NldmVyaXR5JyB8ICd0aW1lc3RhbXAnPlxuICApOiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
@@ -10,8 +10,8 @@ export declare class StandardLogger implements IStandardLogger {
10
10
  private readonly tracer;
11
11
  private readonly defaultAttributes;
12
12
  private readonly spanContext;
13
- private readonly defaultServiceName;
14
13
  private readonly environment;
14
+ private defaultServiceName;
15
15
  constructor(logger: Logger, tracer: IStandardTracer, scopeAttributes?: Attributes);
16
16
  logError(data: LogParams): Promise<void>;
17
17
  logInfo(data: LogParams): Promise<void>;
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.StandardLogger = void 0;
13
13
  const api_logs_1 = require("@opentelemetry/api-logs");
14
+ const environment_1 = require("./environment");
14
15
  class StandardLogger {
15
16
  constructor(logger, tracer, scopeAttributes) {
16
17
  this.defaultAttributes = {};
@@ -26,34 +27,31 @@ class StandardLogger {
26
27
  'function.name': (scopeAttributes === null || scopeAttributes === void 0 ? void 0 : scopeAttributes['function.name']) || 'unknown-function',
27
28
  'function.invocation_id': (scopeAttributes === null || scopeAttributes === void 0 ? void 0 : scopeAttributes['function.invocation_id']) || 'unknown-invocation-id',
28
29
  };
29
- let stage = process.env.STAGE || 'development';
30
- if (stage === 'prod')
31
- stage = 'production';
32
- this.environment = stage;
30
+ this.environment = (0, environment_1.getEnvironmentStage)();
33
31
  }
34
32
  logError(data) {
35
33
  return __awaiter(this, void 0, void 0, function* () {
36
- yield this.log(Object.assign(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), this.defaultAttributes), { severity: 'ERROR' }));
34
+ yield this.log(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), { severity: 'ERROR' }));
37
35
  });
38
36
  }
39
37
  logInfo(data) {
40
38
  return __awaiter(this, void 0, void 0, function* () {
41
- yield this.log(Object.assign(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), this.defaultAttributes), { severity: 'INFO' }));
39
+ yield this.log(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), { severity: 'INFO' }));
42
40
  });
43
41
  }
44
42
  logWarn(data) {
45
43
  return __awaiter(this, void 0, void 0, function* () {
46
- yield this.log(Object.assign(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), this.defaultAttributes), { severity: 'WARN' }));
44
+ yield this.log(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), { severity: 'WARN' }));
47
45
  });
48
46
  }
49
47
  logDebug(data) {
50
48
  return __awaiter(this, void 0, void 0, function* () {
51
- yield this.log(Object.assign(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), this.defaultAttributes), { severity: 'DEBUG' }));
49
+ yield this.log(Object.assign(Object.assign({ serviceName: this.defaultServiceName, environment: this.environment }, data), { severity: 'DEBUG' }));
52
50
  });
53
51
  }
54
52
  log(data) {
55
53
  return __awaiter(this, void 0, void 0, function* () {
56
- const fullData = Object.assign(Object.assign(Object.assign({}, data), this.defaultAttributes), { serviceName: data.serviceName || this.defaultServiceName, timestamp: new Date().toISOString() });
54
+ const fullData = Object.assign(Object.assign({}, data), { serviceName: data.serviceName || this.defaultServiceName, timestamp: new Date().toISOString() });
57
55
  const severityMap = {
58
56
  ERROR: api_logs_1.SeverityNumber.ERROR,
59
57
  WARN: api_logs_1.SeverityNumber.WARN,
@@ -97,14 +95,14 @@ class StandardLogger {
97
95
  attributes['http.params'] = JSON.stringify(data.http.params);
98
96
  if (data.http.query)
99
97
  attributes['http.query'] = JSON.stringify(data.http.query);
98
+ if (data.http.agent)
99
+ attributes['http.user_agent'] = data.http.agent;
100
100
  }
101
101
  if (data.user) {
102
- if (data.user.accountUserUid)
103
- attributes['accountUser.uid'] = data.user.accountUserUid;
104
- if (data.user.accountUid)
105
- attributes['account.uid'] = data.user.accountUid;
106
- if (data.user.applicationUid)
107
- attributes['application.uid'] = data.user.applicationUid;
102
+ if (data.user.uid)
103
+ attributes['user.uid'] = data.user.uid;
104
+ if (data.user.email)
105
+ attributes['user.email'] = data.user.email;
108
106
  }
109
107
  if (data.execution) {
110
108
  if (data.execution.requestId)
@@ -113,14 +111,19 @@ class StandardLogger {
113
111
  attributes['aws.request.id'] = data.execution.awsRequestId;
114
112
  if (data.execution.functionName)
115
113
  attributes['function.name'] = data.execution.functionName;
114
+ this.defaultAttributes['function.name'] = data.execution.functionName;
116
115
  if (data.execution.invocationId)
117
116
  attributes['function.invocation_id'] = data.execution.invocationId;
117
+ this.defaultAttributes['function.invocation_id'] =
118
+ data.execution.invocationId;
118
119
  if (data.execution.controller)
119
120
  attributes['controller.name'] = data.execution.controller;
120
121
  if (data.execution.controllerMethod)
121
122
  attributes['controller.method'] = data.execution.controllerMethod;
122
123
  if (data.execution.origin)
123
124
  attributes['origin'] = data.execution.origin;
125
+ if (data.execution.routeKey)
126
+ attributes['route.key'] = data.execution.routeKey;
124
127
  }
125
128
  if (data.performance) {
126
129
  if (data.performance.durationMs)
@@ -131,8 +134,8 @@ class StandardLogger {
131
134
  if (data.context) {
132
135
  attributes['context'] = JSON.stringify(data.context);
133
136
  }
134
- return Object.fromEntries(Object.entries(Object.assign(Object.assign({}, attributes), this.defaultAttributes)).filter(([, value]) => value !== undefined && value !== null));
137
+ return Object.fromEntries(Object.entries(Object.assign(Object.assign({}, this.defaultAttributes), attributes)).filter(([, value]) => value !== undefined && value !== null));
135
138
  }
136
139
  }
137
140
  exports.StandardLogger = StandardLogger;
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFpRTtBQWVqRSxNQUFhLGNBQWM7SUFRekIsWUFDRSxNQUFjLEVBQ2QsTUFBdUIsRUFDdkIsZUFBNEI7UUFSYixzQkFBaUIsR0FBd0IsRUFBRSxDQUFDO1FBVTNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWTtZQUNoRCxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZO1lBQzFCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUV0QixJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTztZQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNO1lBQ2hELGVBQWUsRUFBRSxDQUFBLGVBQWUsYUFBZixlQUFlLHVCQUFmLGVBQWUsQ0FBRyxlQUFlLENBQUMsS0FBSSxrQkFBa0I7WUFDekUsd0JBQXdCLEVBQ3RCLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFHLHdCQUF3QixDQUFDLEtBQUksdUJBQXVCO1NBQ3pFLENBQUM7UUFFRixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUM7UUFDL0MsSUFBSSxLQUFLLEtBQUssTUFBTTtZQUFFLEtBQUssR0FB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QUFVLENBQUM7WUFDNUQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtnQkFDakMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNwRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDMUUsQ0FBQztRQUdELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO2dCQUM3QixVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDMUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUN4QyxVQUFVLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUMvRCxDQUFDO1FBR0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFHRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLE1BQU0sQ0FBQyxPQUFPLGlDQUFNLFVBQVUsR0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUcsQ0FBQyxNQUFNLENBQ2pFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQ3JELENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJMRCx3Q0FxTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXZlcml0eU51bWJlciwgTG9nZ2VyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpLWxvZ3MnO1xuaW1wb3J0IHsgSVN0YW5kYXJkTG9nZ2VyLCBTdGFuZGFyZExvZ0RhdGEgfSBmcm9tICcuL2xvZ2dlci10eXBlcyc7XG5pbXBvcnQgeyBJU3RhbmRhcmRUcmFjZXIgfSBmcm9tICcuL3RyYWNlci10eXBlcyc7XG5pbXBvcnQgeyBBdHRyaWJ1dGVzLCBTcGFuIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcblxuaW50ZXJmYWNlIExvZ1BhcmFtcyBleHRlbmRzIE9taXQ8XG4gIFN0YW5kYXJkTG9nRGF0YSxcbiAgJ3NldmVyaXR5JyB8ICd0aW1lc3RhbXAnIHwgJ3NlcnZpY2VOYW1lJyB8ICdlbnZpcm9ubWVudCdcbj4ge1xuICBlbnZpcm9ubWVudD86IFN0YW5kYXJkTG9nRGF0YVsnZW52aXJvbm1lbnQnXTtcbn1cbi8qKlxuICogTG9nZ2VyIGNvcmUgcXVlIGltcGxlbWVudGEgbyBwYWRyw6NvIGRlIGxvZ3MgZXN0cnV0dXJhZG9zLlxuICogUmVjZWJlIHVtIExvZ2dlclByb3ZpZGVyIGRvIE9wZW5UZWxlbWV0cnkgcGFyYSBlbWl0aXIgb3MgbG9ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkTG9nZ2VyIGltcGxlbWVudHMgSVN0YW5kYXJkTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFjZXI6IElTdGFuZGFyZFRyYWNlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IHNwYW5Db250ZXh0OiBTcGFuO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGVudmlyb25tZW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9nZ2VyOiBMb2dnZXIsXG4gICAgdHJhY2VyOiBJU3RhbmRhcmRUcmFjZXIsXG4gICAgc2NvcGVBdHRyaWJ1dGVzPzogQXR0cmlidXRlc1xuICApIHtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLnRyYWNlciA9IHRyYWNlcjtcbiAgICB0aGlzLnNwYW5Db250ZXh0ID0gdGhpcy50cmFjZXIuZ2V0VHJhY2VyKCkuc3RhcnRTcGFuKCdpbml0LWxvZ2dlcicpO1xuICAgIHRoaXMuZGVmYXVsdFNlcnZpY2VOYW1lID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FXG4gICAgICA/IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRVxuICAgICAgOiAndW5rbm93bi1zZXJ2aWNlJztcblxuICAgIHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMgPSB7XG4gICAgICAndHJhY2UuaWQnOiB0aGlzLnNwYW5Db250ZXh0LnNwYW5Db250ZXh0KCkudHJhY2VJZCxcbiAgICAgICdzcGFuLmlkJzogdGhpcy5zcGFuQ29udGV4dC5zcGFuQ29udGV4dCgpLnNwYW5JZCxcbiAgICAgICdmdW5jdGlvbi5uYW1lJzogc2NvcGVBdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uLm5hbWUnXSB8fCAndW5rbm93bi1mdW5jdGlvbicsXG4gICAgICAnZnVuY3Rpb24uaW52b2NhdGlvbl9pZCc6XG4gICAgICAgIHNjb3BlQXR0cmlidXRlcz8uWydmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJ10gfHwgJ3Vua25vd24taW52b2NhdGlvbi1pZCcsXG4gICAgfTtcblxuICAgIGxldCBzdGFnZSA9IHByb2Nlc3MuZW52LlNUQUdFIHx8ICdkZXZlbG9wbWVudCc7XG4gICAgaWYgKHN0YWdlID09PSAncHJvZCcpIHN0YWdlID0gJ3Byb2R1Y3Rpb24nO1xuXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHN0YWdlO1xuICB9XG5cbiAgYXN5bmMgbG9nRXJyb3IoZGF0YTogTG9nUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sb2coe1xuICAgICAgc2VydmljZU5hbWU6IHRoaXMuZGVmYXVsdFNlcnZpY2VOYW1lLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnQsXG4gICAgICAuLi5kYXRhLFxuICAgICAgLi4udGhpcy5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgIHNldmVyaXR5OiAnRVJST1InLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9nSW5mbyhkYXRhOiBMb2dQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZyh7XG4gICAgICBzZXJ2aWNlTmFtZTogdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgIC4uLmRhdGEsXG4gICAgICAuLi50aGlzLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgc2V2ZXJpdHk6ICdJTkZPJyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxvZ1dhcm4oZGF0YTogTG9nUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sb2coe1xuICAgICAgc2VydmljZU5hbWU6IHRoaXMuZGVmYXVsdFNlcnZpY2VOYW1lLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnQsXG4gICAgICAuLi5kYXRhLFxuICAgICAgLi4udGhpcy5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgIHNldmVyaXR5OiAnV0FSTicsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsb2dEZWJ1ZyhkYXRhOiBMb2dQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZyh7XG4gICAgICBzZXJ2aWNlTmFtZTogdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgIC4uLmRhdGEsXG4gICAgICAuLi50aGlzLmRlZmF1bHRBdHRyaWJ1dGVzLFxuICAgICAgc2V2ZXJpdHk6ICdERUJVRycsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZyhcbiAgICBkYXRhOiBPbWl0PFN0YW5kYXJkTG9nRGF0YSwgJ3RpbWVzdGFtcCc+ICYge1xuICAgICAgc2V2ZXJpdHk6IFN0YW5kYXJkTG9nRGF0YVsnc2V2ZXJpdHknXTtcbiAgICB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZ1bGxEYXRhOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLi4udGhpcy5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgIHNlcnZpY2VOYW1lOiBkYXRhLnNlcnZpY2VOYW1lIHx8IHRoaXMuZGVmYXVsdFNlcnZpY2VOYW1lLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGNvbnN0IHNldmVyaXR5TWFwID0ge1xuICAgICAgRVJST1I6IFNldmVyaXR5TnVtYmVyLkVSUk9SLFxuICAgICAgV0FSTjogU2V2ZXJpdHlOdW1iZXIuV0FSTixcbiAgICAgIElORk86IFNldmVyaXR5TnVtYmVyLklORk8sXG4gICAgICBERUJVRzogU2V2ZXJpdHlOdW1iZXIuREVCVUcsXG4gICAgfTtcblxuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHNldmVyaXR5TnVtYmVyOiBzZXZlcml0eU1hcFtmdWxsRGF0YS5zZXZlcml0eV0sXG4gICAgICBzZXZlcml0eVRleHQ6IGZ1bGxEYXRhLnNldmVyaXR5LFxuICAgICAgYm9keTogZnVsbERhdGEubWVzc2FnZSxcbiAgICAgIGF0dHJpYnV0ZXM6IHRoaXMuYnVpbGRBdHRyaWJ1dGVzKGZ1bGxEYXRhKSxcbiAgICB9O1xuXG4gICAgdGhpcy5sb2dnZXIuZW1pdChsb2dSZWNvcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEF0dHJpYnV0ZXMoZGF0YTogU3RhbmRhcmRMb2dEYXRhKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIHRpbWVzdGFtcDogZGF0YS50aW1lc3RhbXAsXG4gICAgICAnc2VydmljZS5uYW1lJzogZGF0YS5zZXJ2aWNlTmFtZSxcbiAgICAgICdkZXBsb3ltZW50LmVudmlyb25tZW50Lm5hbWUnOiBkYXRhLmVudmlyb25tZW50LFxuICAgIH07XG5cbiAgICAvLyBJbmZvcm1hw6fDtWVzIGRvIGVycm9cbiAgICBpZiAoZGF0YS5lcnJvcikge1xuICAgICAgYXR0cmlidXRlc1snZXJyb3IudHlwZSddID0gZGF0YS5lcnJvci5uYW1lO1xuICAgICAgYXR0cmlidXRlc1snZXJyb3IubWVzc2FnZSddID0gZGF0YS5lcnJvci5tZXNzYWdlO1xuICAgICAgYXR0cmlidXRlc1snZXJyb3Iuc3RhY2snXSA9IGRhdGEuZXJyb3Iuc3RhY2sgfHwgJyc7XG4gICAgfVxuXG4gICAgLy8gSFRUUFxuICAgIGlmIChkYXRhLmh0dHApIHtcbiAgICAgIGlmIChkYXRhLmh0dHAubWV0aG9kKSBhdHRyaWJ1dGVzWydodHRwLm1ldGhvZCddID0gZGF0YS5odHRwLm1ldGhvZDtcbiAgICAgIGlmIChkYXRhLmh0dHAudXJsKSBhdHRyaWJ1dGVzWydodHRwLnVybCddID0gZGF0YS5odHRwLnVybDtcbiAgICAgIGlmIChkYXRhLmh0dHAuZW5kcG9pbnQpIGF0dHJpYnV0ZXNbJ2h0dHAuZW5kcG9pbnQnXSA9IGRhdGEuaHR0cC5lbmRwb2ludDtcbiAgICAgIGlmIChkYXRhLmh0dHAuc3RhdHVzQ29kZSlcbiAgICAgICAgYXR0cmlidXRlc1snaHR0cC5zdGF0dXNfY29kZSddID0gZGF0YS5odHRwLnN0YXR1c0NvZGU7XG4gICAgICBpZiAoZGF0YS5odHRwLmhlYWRlcnMpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAuaGVhZGVycyddID0gSlNPTi5zdHJpbmdpZnkoZGF0YS5odHRwLmhlYWRlcnMpO1xuICAgICAgaWYgKGRhdGEuaHR0cC5ib2R5KVxuICAgICAgICBhdHRyaWJ1dGVzWydodHRwLmJvZHknXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEuaHR0cC5ib2R5KTtcbiAgICAgIGlmIChkYXRhLmh0dHAucGFyYW1zKVxuICAgICAgICBhdHRyaWJ1dGVzWydodHRwLnBhcmFtcyddID0gSlNPTi5zdHJpbmdpZnkoZGF0YS5odHRwLnBhcmFtcyk7XG4gICAgICBpZiAoZGF0YS5odHRwLnF1ZXJ5KVxuICAgICAgICBhdHRyaWJ1dGVzWydodHRwLnF1ZXJ5J10gPSBKU09OLnN0cmluZ2lmeShkYXRhLmh0dHAucXVlcnkpO1xuICAgIH1cblxuICAgIC8vIFVzdcOhcmlvXG4gICAgaWYgKGRhdGEudXNlcikge1xuICAgICAgaWYgKGRhdGEudXNlci5hY2NvdW50VXNlclVpZClcbiAgICAgICAgYXR0cmlidXRlc1snYWNjb3VudFVzZXIudWlkJ10gPSBkYXRhLnVzZXIuYWNjb3VudFVzZXJVaWQ7XG4gICAgICBpZiAoZGF0YS51c2VyLmFjY291bnRVaWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2FjY291bnQudWlkJ10gPSBkYXRhLnVzZXIuYWNjb3VudFVpZDtcbiAgICAgIGlmIChkYXRhLnVzZXIuYXBwbGljYXRpb25VaWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2FwcGxpY2F0aW9uLnVpZCddID0gZGF0YS51c2VyLmFwcGxpY2F0aW9uVWlkO1xuICAgIH1cblxuICAgIC8vIEV4ZWN1w6fDo29cbiAgICBpZiAoZGF0YS5leGVjdXRpb24pIHtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5yZXF1ZXN0SWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ3JlcXVlc3QuaWQnXSA9IGRhdGEuZXhlY3V0aW9uLnJlcXVlc3RJZDtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5hd3NSZXF1ZXN0SWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2F3cy5yZXF1ZXN0LmlkJ10gPSBkYXRhLmV4ZWN1dGlvbi5hd3NSZXF1ZXN0SWQ7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uZnVuY3Rpb25OYW1lKVxuICAgICAgICBhdHRyaWJ1dGVzWydmdW5jdGlvbi5uYW1lJ10gPSBkYXRhLmV4ZWN1dGlvbi5mdW5jdGlvbk5hbWU7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uaW52b2NhdGlvbklkKVxuICAgICAgICBhdHRyaWJ1dGVzWydmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJ10gPSBkYXRhLmV4ZWN1dGlvbi5pbnZvY2F0aW9uSWQ7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uY29udHJvbGxlcilcbiAgICAgICAgYXR0cmlidXRlc1snY29udHJvbGxlci5uYW1lJ10gPSBkYXRhLmV4ZWN1dGlvbi5jb250cm9sbGVyO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXJNZXRob2QpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2NvbnRyb2xsZXIubWV0aG9kJ10gPSBkYXRhLmV4ZWN1dGlvbi5jb250cm9sbGVyTWV0aG9kO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLm9yaWdpbikgYXR0cmlidXRlc1snb3JpZ2luJ10gPSBkYXRhLmV4ZWN1dGlvbi5vcmlnaW47XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybWFuY2VcbiAgICBpZiAoZGF0YS5wZXJmb3JtYW5jZSkge1xuICAgICAgaWYgKGRhdGEucGVyZm9ybWFuY2UuZHVyYXRpb25NcylcbiAgICAgICAgYXR0cmlidXRlc1snZHVyYXRpb24ubXMnXSA9IGRhdGEucGVyZm9ybWFuY2UuZHVyYXRpb25NcztcbiAgICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlLnN1Y2Nlc3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgYXR0cmlidXRlc1snZXhlY3V0aW9uLnN1Y2Nlc3MnXSA9IGRhdGEucGVyZm9ybWFuY2Uuc3VjY2VzcztcbiAgICB9XG5cbiAgICAvLyBDb250ZXh0byBhZGljaW9uYWxcbiAgICBpZiAoZGF0YS5jb250ZXh0KSB7XG4gICAgICBhdHRyaWJ1dGVzWydjb250ZXh0J10gPSBKU09OLnN0cmluZ2lmeShkYXRhLmNvbnRleHQpO1xuICAgIH1cblxuICAgIC8vIEZpbHRyYXIgdmFsb3JlcyB1bmRlZmluZWQvbnVsbFxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyh7IC4uLmF0dHJpYnV0ZXMsIC4uLnRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMgfSkuZmlsdGVyKFxuICAgICAgICAoWywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFpRTtBQUlqRSwrQ0FBb0Q7QUFZcEQsTUFBYSxjQUFjO0lBUXpCLFlBQ0UsTUFBYyxFQUNkLE1BQXVCLEVBQ3ZCLGVBQTRCO1FBUmIsc0JBQWlCLEdBQXdCLEVBQUUsQ0FBQztRQVUzRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7WUFDaEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWTtZQUMxQixDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFFdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU87WUFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTTtZQUNoRCxlQUFlLEVBQUUsQ0FBQSxlQUFlLGFBQWYsZUFBZSx1QkFBZixlQUFlLENBQUcsZUFBZSxDQUFDLEtBQUksa0JBQWtCO1lBQ3pFLHdCQUF3QixFQUN0QixDQUFBLGVBQWUsYUFBZixlQUFlLHVCQUFmLGVBQWUsQ0FBRyx3QkFBd0IsQ0FBQyxLQUFJLHVCQUF1QjtTQUN6RSxDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFBLGlDQUFtQixHQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVLLFFBQVEsQ0FBQyxJQUFlOztZQUM1QixN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LCBMb2dnZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGktbG9ncyc7XG5pbXBvcnQgeyBJU3RhbmRhcmRMb2dnZXIsIFN0YW5kYXJkTG9nRGF0YSB9IGZyb20gJy4vbG9nZ2VyLXR5cGVzJztcbmltcG9ydCB7IElTdGFuZGFyZFRyYWNlciB9IGZyb20gJy4vdHJhY2VyLXR5cGVzJztcbmltcG9ydCB7IEF0dHJpYnV0ZXMsIFNwYW4gfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHsgZ2V0RW52aXJvbm1lbnRTdGFnZSB9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuXG5pbnRlcmZhY2UgTG9nUGFyYW1zIGV4dGVuZHMgT21pdDxcbiAgU3RhbmRhcmRMb2dEYXRhLFxuICAnc2V2ZXJpdHknIHwgJ3RpbWVzdGFtcCcgfCAnc2VydmljZU5hbWUnIHwgJ2Vudmlyb25tZW50J1xuPiB7XG4gIGVudmlyb25tZW50PzogU3RhbmRhcmRMb2dEYXRhWydlbnZpcm9ubWVudCddO1xufVxuLyoqXG4gKiBMb2dnZXIgY29yZSBxdWUgaW1wbGVtZW50YSBvIHBhZHLDo28gZGUgbG9ncyBlc3RydXR1cmFkb3MuXG4gKiBSZWNlYmUgdW0gTG9nZ2VyUHJvdmlkZXIgZG8gT3BlblRlbGVtZXRyeSBwYXJhIGVtaXRpciBvcyBsb2dzLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRMb2dnZXIgaW1wbGVtZW50cyBJU3RhbmRhcmRMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYWNlcjogSVN0YW5kYXJkVHJhY2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgc3BhbkNvbnRleHQ6IFNwYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2dnZXI6IExvZ2dlcixcbiAgICB0cmFjZXI6IElTdGFuZGFyZFRyYWNlcixcbiAgICBzY29wZUF0dHJpYnV0ZXM/OiBBdHRyaWJ1dGVzXG4gICkge1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMudHJhY2VyID0gdHJhY2VyO1xuICAgIHRoaXMuc3BhbkNvbnRleHQgPSB0aGlzLnRyYWNlci5nZXRUcmFjZXIoKS5zdGFydFNwYW4oJ2luaXQtbG9nZ2VyJyk7XG4gICAgdGhpcy5kZWZhdWx0U2VydmljZU5hbWUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUVcbiAgICAgID8gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FXG4gICAgICA6ICd1bmtub3duLXNlcnZpY2UnO1xuXG4gICAgdGhpcy5kZWZhdWx0QXR0cmlidXRlcyA9IHtcbiAgICAgICd0cmFjZS5pZCc6IHRoaXMuc3BhbkNvbnRleHQuc3BhbkNvbnRleHQoKS50cmFjZUlkLFxuICAgICAgJ3NwYW4uaWQnOiB0aGlzLnNwYW5Db250ZXh0LnNwYW5Db250ZXh0KCkuc3BhbklkLFxuICAgICAgJ2Z1bmN0aW9uLm5hbWUnOiBzY29wZUF0dHJpYnV0ZXM/LlsnZnVuY3Rpb24ubmFtZSddIHx8ICd1bmtub3duLWZ1bmN0aW9uJyxcbiAgICAgICdmdW5jdGlvbi5pbnZvY2F0aW9uX2lkJzpcbiAgICAgICAgc2NvcGVBdHRyaWJ1dGVzPy5bJ2Z1bmN0aW9uLmludm9jYXRpb25faWQnXSB8fCAndW5rbm93bi1pbnZvY2F0aW9uLWlkJyxcbiAgICB9O1xuXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGdldEVudmlyb25tZW50U3RhZ2UoKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ0Vycm9yKGRhdGE6IExvZ1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubG9nKHtcbiAgICAgIHNlcnZpY2VOYW1lOiB0aGlzLmRlZmF1bHRTZXJ2aWNlTmFtZSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmVudmlyb25tZW50LFxuICAgICAgLi4uZGF0YSxcbiAgICAgIHNldmVyaXR5OiAnRVJST1InLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9nSW5mbyhkYXRhOiBMb2dQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZyh7XG4gICAgICBzZXJ2aWNlTmFtZTogdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgIC4uLmRhdGEsXG4gICAgICBzZXZlcml0eTogJ0lORk8nLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9nV2FybihkYXRhOiBMb2dQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxvZyh7XG4gICAgICBzZXJ2aWNlTmFtZTogdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgIC4uLmRhdGEsXG4gICAgICBzZXZlcml0eTogJ1dBUk4nLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9nRGVidWcoZGF0YTogTG9nUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sb2coe1xuICAgICAgc2VydmljZU5hbWU6IHRoaXMuZGVmYXVsdFNlcnZpY2VOYW1lLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnQsXG4gICAgICAuLi5kYXRhLFxuICAgICAgc2V2ZXJpdHk6ICdERUJVRycsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvZyhcbiAgICBkYXRhOiBPbWl0PFN0YW5kYXJkTG9nRGF0YSwgJ3RpbWVzdGFtcCc+ICYge1xuICAgICAgc2V2ZXJpdHk6IFN0YW5kYXJkTG9nRGF0YVsnc2V2ZXJpdHknXTtcbiAgICB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZ1bGxEYXRhOiBTdGFuZGFyZExvZ0RhdGEgPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgc2VydmljZU5hbWU6IGRhdGEuc2VydmljZU5hbWUgfHwgdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2V2ZXJpdHlNYXAgPSB7XG4gICAgICBFUlJPUjogU2V2ZXJpdHlOdW1iZXIuRVJST1IsXG4gICAgICBXQVJOOiBTZXZlcml0eU51bWJlci5XQVJOLFxuICAgICAgSU5GTzogU2V2ZXJpdHlOdW1iZXIuSU5GTyxcbiAgICAgIERFQlVHOiBTZXZlcml0eU51bWJlci5ERUJVRyxcbiAgICB9O1xuXG4gICAgY29uc3QgbG9nUmVjb3JkID0ge1xuICAgICAgc2V2ZXJpdHlOdW1iZXI6IHNldmVyaXR5TWFwW2Z1bGxEYXRhLnNldmVyaXR5XSxcbiAgICAgIHNldmVyaXR5VGV4dDogZnVsbERhdGEuc2V2ZXJpdHksXG4gICAgICBib2R5OiBmdWxsRGF0YS5tZXNzYWdlLFxuICAgICAgYXR0cmlidXRlczogdGhpcy5idWlsZEF0dHJpYnV0ZXMoZnVsbERhdGEpLFxuICAgIH07XG5cbiAgICB0aGlzLmxvZ2dlci5lbWl0KGxvZ1JlY29yZCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQXR0cmlidXRlcyhkYXRhOiBTdGFuZGFyZExvZ0RhdGEpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgdGltZXN0YW1wOiBkYXRhLnRpbWVzdGFtcCxcbiAgICAgICdzZXJ2aWNlLm5hbWUnOiBkYXRhLnNlcnZpY2VOYW1lLFxuICAgICAgJ2RlcGxveW1lbnQuZW52aXJvbm1lbnQubmFtZSc6IGRhdGEuZW52aXJvbm1lbnQsXG4gICAgfTtcblxuICAgIC8vIEluZm9ybWHDp8O1ZXMgZG8gZXJyb1xuICAgIGlmIChkYXRhLmVycm9yKSB7XG4gICAgICBhdHRyaWJ1dGVzWydlcnJvci50eXBlJ10gPSBkYXRhLmVycm9yLm5hbWU7XG4gICAgICBhdHRyaWJ1dGVzWydlcnJvci5tZXNzYWdlJ10gPSBkYXRhLmVycm9yLm1lc3NhZ2U7XG4gICAgICBhdHRyaWJ1dGVzWydlcnJvci5zdGFjayddID0gZGF0YS5lcnJvci5zdGFjayB8fCAnJztcbiAgICB9XG5cbiAgICAvLyBIVFRQXG4gICAgaWYgKGRhdGEuaHR0cCkge1xuICAgICAgaWYgKGRhdGEuaHR0cC5tZXRob2QpIGF0dHJpYnV0ZXNbJ2h0dHAubWV0aG9kJ10gPSBkYXRhLmh0dHAubWV0aG9kO1xuICAgICAgaWYgKGRhdGEuaHR0cC51cmwpIGF0dHJpYnV0ZXNbJ2h0dHAudXJsJ10gPSBkYXRhLmh0dHAudXJsO1xuICAgICAgaWYgKGRhdGEuaHR0cC5lbmRwb2ludCkgYXR0cmlidXRlc1snaHR0cC5lbmRwb2ludCddID0gZGF0YS5odHRwLmVuZHBvaW50O1xuICAgICAgaWYgKGRhdGEuaHR0cC5zdGF0dXNDb2RlKVxuICAgICAgICBhdHRyaWJ1dGVzWydodHRwLnN0YXR1c19jb2RlJ10gPSBkYXRhLmh0dHAuc3RhdHVzQ29kZTtcbiAgICAgIGlmIChkYXRhLmh0dHAuaGVhZGVycylcbiAgICAgICAgYXR0cmlidXRlc1snaHR0cC5oZWFkZXJzJ10gPSBKU09OLnN0cmluZ2lmeShkYXRhLmh0dHAuaGVhZGVycyk7XG4gICAgICBpZiAoZGF0YS5odHRwLmJvZHkpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAuYm9keSddID0gSlNPTi5zdHJpbmdpZnkoZGF0YS5odHRwLmJvZHkpO1xuICAgICAgaWYgKGRhdGEuaHR0cC5wYXJhbXMpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAucGFyYW1zJ10gPSBKU09OLnN0cmluZ2lmeShkYXRhLmh0dHAucGFyYW1zKTtcbiAgICAgIGlmIChkYXRhLmh0dHAucXVlcnkpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAucXVlcnknXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEuaHR0cC5xdWVyeSk7XG4gICAgICBpZiAoZGF0YS5odHRwLmFnZW50KSBhdHRyaWJ1dGVzWydodHRwLnVzZXJfYWdlbnQnXSA9IGRhdGEuaHR0cC5hZ2VudDtcbiAgICB9XG5cbiAgICAvLyBVc3XDoXJpb1xuICAgIGlmIChkYXRhLnVzZXIpIHtcbiAgICAgIGlmIChkYXRhLnVzZXIudWlkKSBhdHRyaWJ1dGVzWyd1c2VyLnVpZCddID0gZGF0YS51c2VyLnVpZDtcbiAgICAgIGlmIChkYXRhLnVzZXIuZW1haWwpIGF0dHJpYnV0ZXNbJ3VzZXIuZW1haWwnXSA9IGRhdGEudXNlci5lbWFpbDtcbiAgICB9XG5cbiAgICAvLyBFeGVjdcOnw6NvXG4gICAgaWYgKGRhdGEuZXhlY3V0aW9uKSB7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24ucmVxdWVzdElkKVxuICAgICAgICBhdHRyaWJ1dGVzWydyZXF1ZXN0LmlkJ10gPSBkYXRhLmV4ZWN1dGlvbi5yZXF1ZXN0SWQ7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uYXdzUmVxdWVzdElkKVxuICAgICAgICBhdHRyaWJ1dGVzWydhd3MucmVxdWVzdC5pZCddID0gZGF0YS5leGVjdXRpb24uYXdzUmVxdWVzdElkO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmZ1bmN0aW9uTmFtZSlcbiAgICAgICAgYXR0cmlidXRlc1snZnVuY3Rpb24ubmFtZSddID0gZGF0YS5leGVjdXRpb24uZnVuY3Rpb25OYW1lO1xuICAgICAgdGhpcy5kZWZhdWx0QXR0cmlidXRlc1snZnVuY3Rpb24ubmFtZSddID0gZGF0YS5leGVjdXRpb24uZnVuY3Rpb25OYW1lO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmludm9jYXRpb25JZClcbiAgICAgICAgYXR0cmlidXRlc1snZnVuY3Rpb24uaW52b2NhdGlvbl9pZCddID0gZGF0YS5leGVjdXRpb24uaW52b2NhdGlvbklkO1xuICAgICAgdGhpcy5kZWZhdWx0QXR0cmlidXRlc1snZnVuY3Rpb24uaW52b2NhdGlvbl9pZCddID1cbiAgICAgICAgZGF0YS5leGVjdXRpb24uaW52b2NhdGlvbklkO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXIpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2NvbnRyb2xsZXIubmFtZSddID0gZGF0YS5leGVjdXRpb24uY29udHJvbGxlcjtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5jb250cm9sbGVyTWV0aG9kKVxuICAgICAgICBhdHRyaWJ1dGVzWydjb250cm9sbGVyLm1ldGhvZCddID0gZGF0YS5leGVjdXRpb24uY29udHJvbGxlck1ldGhvZDtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5vcmlnaW4pIGF0dHJpYnV0ZXNbJ29yaWdpbiddID0gZGF0YS5leGVjdXRpb24ub3JpZ2luO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLnJvdXRlS2V5KVxuICAgICAgICBhdHRyaWJ1dGVzWydyb3V0ZS5rZXknXSA9IGRhdGEuZXhlY3V0aW9uLnJvdXRlS2V5O1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1hbmNlXG4gICAgaWYgKGRhdGEucGVyZm9ybWFuY2UpIHtcbiAgICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlLmR1cmF0aW9uTXMpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2R1cmF0aW9uLm1zJ10gPSBkYXRhLnBlcmZvcm1hbmNlLmR1cmF0aW9uTXM7XG4gICAgICBpZiAoZGF0YS5wZXJmb3JtYW5jZS5zdWNjZXNzICE9PSB1bmRlZmluZWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2V4ZWN1dGlvbi5zdWNjZXNzJ10gPSBkYXRhLnBlcmZvcm1hbmNlLnN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgLy8gQ29udGV4dG8gYWRpY2lvbmFsXG4gICAgaWYgKGRhdGEuY29udGV4dCkge1xuICAgICAgYXR0cmlidXRlc1snY29udGV4dCddID0gSlNPTi5zdHJpbmdpZnkoZGF0YS5jb250ZXh0KTtcbiAgICB9XG5cbiAgICAvLyBGaWx0cmFyIHZhbG9yZXMgdW5kZWZpbmVkL251bGxcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoeyAuLi50aGlzLmRlZmF1bHRBdHRyaWJ1dGVzLCAuLi5hdHRyaWJ1dGVzIH0pLmZpbHRlcihcbiAgICAgICAgKFssIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -11,6 +11,11 @@ export interface StandardTraceData {
11
11
  controller?: string;
12
12
  controllerMethod?: string;
13
13
  origin?: string;
14
+ routeKey?: string;
15
+ loggedUser?: {
16
+ email?: string;
17
+ uid?: string;
18
+ };
14
19
  };
15
20
  http?: {
16
21
  method?: string;
@@ -20,11 +25,13 @@ export interface StandardTraceData {
20
25
  target?: string;
21
26
  scheme?: string;
22
27
  host?: string;
28
+ agent?: string;
29
+ params?: Record<string, string>;
30
+ query?: Record<string, string>;
23
31
  };
24
32
  user?: {
25
- accountUserUid?: string;
26
- accountUid?: string;
27
- applicationUid?: string;
33
+ email?: string;
34
+ uid?: string;
28
35
  };
29
36
  performance?: {
30
37
  durationMs?: number;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvdHJhY2VyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcGFuLCBUcmFjZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuXG4vKipcbiAqIEludGVyZmFjZSBwYWRyw6NvIHBhcmEgZGFkb3MgZGUgdHJhY2VzIGVtIHRvZGEgYSBhcGxpY2HDp8Ojby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFRyYWNlRGF0YSB7XG4gIC8vIElkZW50aWZpY2HDp8OjbyBkbyBzcGFuXG4gIHNwYW5OYW1lOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG5cbiAgLy8gQ29udGV4dG8gZGEgZXhlY3XDp8Ojb1xuICBleGVjdXRpb24/OiB7XG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xuICAgIGludm9jYXRpb25JZD86IHN0cmluZztcbiAgICBhd3NSZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gICAgcmVxdWVzdElkPzogc3RyaW5nO1xuICAgIGNvbnRyb2xsZXI/OiBzdHJpbmc7XG4gICAgY29udHJvbGxlck1ldGhvZD86IHN0cmluZztcbiAgICBvcmlnaW4/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQ29udGV4dG8gSFRUUFxuICBodHRwPzoge1xuICAgIG1ldGhvZD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgc2NoZW1lPzogc3RyaW5nO1xuICAgIGhvc3Q/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gSWRlbnRpZmljYcOnw6NvIGRvIHVzdcOhcmlvXG4gIHVzZXI/OiB7XG4gICAgYWNjb3VudFVzZXJVaWQ/OiBzdHJpbmc7XG4gICAgYWNjb3VudFVpZD86IHN0cmluZztcbiAgICBhcHBsaWNhdGlvblVpZD86IHN0cmluZztcbiAgfTtcblxuICAvLyBQZXJmb3JtYW5jZVxuICBwZXJmb3JtYW5jZT86IHtcbiAgICBkdXJhdGlvbk1zPzogbnVtYmVyO1xuICAgIHN1Y2Nlc3M/OiBib29sZWFuO1xuICB9O1xuXG4gIC8vIEluZm9ybWHDp8O1ZXMgZGUgZXJyb1xuICBlcnJvcj86IHtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQXRyaWJ1dG9zIGN1c3RvbWl6YWRvcyBhZGljaW9uYWlzXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgcGFyYSByZXN1bHRhZG8gZGUgc3BhbiBjcmlhZG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFNwYW5SZXN1bHQge1xuICBzcGFuOiBTcGFuO1xuICBlbmQ6ICgpID0+IHZvaWQ7XG4gIHNldFN1Y2Nlc3M6IChzdWNjZXNzOiBib29sZWFuKSA9PiB2b2lkO1xuICBzZXRFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgc2V0QXR0cmlidXRlOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBwYXJhIG8gdHJhY2VyIHBhZHJvbml6YWRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN0YW5kYXJkVHJhY2VyIHtcbiAgc3RhcnRTcGFuKGRhdGE6IFN0YW5kYXJkVHJhY2VEYXRhKTogU3RhbmRhcmRTcGFuUmVzdWx0O1xuICByZWNvcmRFeGNlcHRpb24oc3BhbjogU3BhbiwgZXJyb3I6IEVycm9yKTogdm9pZDtcbiAgZ2V0VHJhY2VyKCk6IFRyYWNlcjtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvdHJhY2VyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcGFuLCBUcmFjZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuXG4vKipcbiAqIEludGVyZmFjZSBwYWRyw6NvIHBhcmEgZGFkb3MgZGUgdHJhY2VzIGVtIHRvZGEgYSBhcGxpY2HDp8Ojby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFRyYWNlRGF0YSB7XG4gIC8vIElkZW50aWZpY2HDp8OjbyBkbyBzcGFuXG4gIHNwYW5OYW1lOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG5cbiAgLy8gQ29udGV4dG8gZGEgZXhlY3XDp8Ojb1xuICBleGVjdXRpb24/OiB7XG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xuICAgIGludm9jYXRpb25JZD86IHN0cmluZztcbiAgICBhd3NSZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gICAgcmVxdWVzdElkPzogc3RyaW5nO1xuICAgIGNvbnRyb2xsZXI/OiBzdHJpbmc7XG4gICAgY29udHJvbGxlck1ldGhvZD86IHN0cmluZztcbiAgICBvcmlnaW4/OiBzdHJpbmc7XG4gICAgcm91dGVLZXk/OiBzdHJpbmc7XG4gICAgbG9nZ2VkVXNlcj86IHtcbiAgICAgIGVtYWlsPzogc3RyaW5nO1xuICAgICAgdWlkPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG5cbiAgLy8gQ29udGV4dG8gSFRUUFxuICBodHRwPzoge1xuICAgIG1ldGhvZD86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgc2NoZW1lPzogc3RyaW5nO1xuICAgIGhvc3Q/OiBzdHJpbmc7XG4gICAgYWdlbnQ/OiBzdHJpbmc7XG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIH07XG5cbiAgLy8gSWRlbnRpZmljYcOnw6NvIGRvIHVzdcOhcmlvXG4gIHVzZXI/OiB7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgdWlkPzogc3RyaW5nO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1hbmNlXG4gIHBlcmZvcm1hbmNlPzoge1xuICAgIGR1cmF0aW9uTXM/OiBudW1iZXI7XG4gICAgc3VjY2Vzcz86IGJvb2xlYW47XG4gIH07XG5cbiAgLy8gSW5mb3JtYcOnw7VlcyBkZSBlcnJvXG4gIGVycm9yPzoge1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgfTtcblxuICAvLyBBdHJpYnV0b3MgY3VzdG9taXphZG9zIGFkaWNpb25haXNcbiAgYXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBwYXJhIHJlc3VsdGFkbyBkZSBzcGFuIGNyaWFkb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkU3BhblJlc3VsdCB7XG4gIHNwYW46IFNwYW47XG4gIGVuZDogKCkgPT4gdm9pZDtcbiAgc2V0U3VjY2VzczogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHNldEVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBzZXRBdHRyaWJ1dGU6IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHBhcmEgbyB0cmFjZXIgcGFkcm9uaXphZG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3RhbmRhcmRUcmFjZXIge1xuICBzdGFydFNwYW4oZGF0YTogU3RhbmRhcmRUcmFjZURhdGEpOiBTdGFuZGFyZFNwYW5SZXN1bHQ7XG4gIHJlY29yZEV4Y2VwdGlvbihzcGFuOiBTcGFuLCBlcnJvcjogRXJyb3IpOiB2b2lkO1xuICBnZXRUcmFjZXIoKTogVHJhY2VyO1xufVxuIl19
@@ -82,14 +82,18 @@ class StandardTracer {
82
82
  attributes['http.scheme'] = data.http.scheme;
83
83
  if (data.http.host)
84
84
  attributes['http.host'] = data.http.host;
85
+ if (data.http.agent)
86
+ attributes['http.user_agent'] = data.http.agent;
87
+ if (data.http.params)
88
+ attributes['http.path_parameters'] = data.http.params;
89
+ if (data.http.query)
90
+ attributes['http.query_string_parameters'] = data.http.query;
85
91
  }
86
92
  if (data.user) {
87
- if (data.user.accountUserUid)
88
- attributes['accountUser.uid'] = data.user.accountUserUid;
89
- if (data.user.accountUid)
90
- attributes['account.uid'] = data.user.accountUid;
91
- if (data.user.applicationUid)
92
- attributes['application.uid'] = data.user.applicationUid;
93
+ if (data.user.uid)
94
+ attributes['user.uid'] = data.user.uid;
95
+ if (data.user.email)
96
+ attributes['user.email'] = data.user.email;
93
97
  }
94
98
  if (data.performance) {
95
99
  if (data.performance.durationMs)
@@ -116,4 +120,4 @@ class StandardTracer {
116
120
  }
117
121
  }
118
122
  exports.StandardTracer = StandardTracer;
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvdHJhY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUE0RTtBQVc1RSxNQUFhLGNBQWM7SUFDekIsWUFDbUIsTUFBYyxFQUNkLHFCQUE2QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7UUFDcEUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWTtRQUMxQixDQUFDLENBQUMsaUJBQWlCO1FBSEosV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FFZDtJQUNwQixDQUFDO0lBRUosU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBS0QsU0FBUyxDQUFDLElBQXVCO1FBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLEVBQUUsY0FBUSxDQUFDLE1BQU07WUFDckIsVUFBVTtTQUNYLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxJQUFJO1lBQ0osR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckIsVUFBVSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNiLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBYyxDQUFDLEtBQUs7aUJBQ3pELENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxL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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcGFuLCBTcGFuU3RhdHVzQ29kZSwgVHJhY2VyLCBTcGFuS2luZCB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2FwaSc7XG5pbXBvcnQge1xuICBJU3RhbmRhcmRUcmFjZXIsXG4gIFN0YW5kYXJkVHJhY2VEYXRhLFxuICBTdGFuZGFyZFNwYW5SZXN1bHQsXG59IGZyb20gJy4vdHJhY2VyLXR5cGVzJztcblxuLyoqXG4gKiBUcmFjZXIgcGFkcm9uaXphZG8gcXVlIGdhcmFudGUgY29uc2lzdMOqbmNpYSBub3MgdHJhY2VzLlxuICogQ29tcGxlbWVudGEgbyBTdGFuZGFyZExvZ2dlciBwYXJhIG9ic2VydmFiaWxpZGFkZSBjb21wbGV0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkVHJhY2VyIGltcGxlbWVudHMgSVN0YW5kYXJkVHJhY2VyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFjZXI6IFRyYWNlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTZXJ2aWNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FXG4gICAgICA/IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRVxuICAgICAgOiAndW5rbm93bi1zZXJ2aWNlJ1xuICApIHt9XG5cbiAgZ2V0VHJhY2VyKCk6IFRyYWNlciB7XG4gICAgcmV0dXJuIHRoaXMudHJhY2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaWNpYSB1bSBub3ZvIHNwYW4gY29tIGF0cmlidXRvcyBwYWRyb25pemFkb3NcbiAgICovXG4gIHN0YXJ0U3BhbihkYXRhOiBTdGFuZGFyZFRyYWNlRGF0YSk6IFN0YW5kYXJkU3BhblJlc3VsdCB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYnVpbGRBdHRyaWJ1dGVzKGRhdGEpO1xuXG4gICAgY29uc3Qgc3BhbiA9IHRoaXMudHJhY2VyLnN0YXJ0U3BhbihkYXRhLnNwYW5OYW1lLCB7XG4gICAgICBraW5kOiBTcGFuS2luZC5TRVJWRVIsXG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNwYW4sXG4gICAgICBlbmQ6ICgpID0+IHNwYW4uZW5kKCksXG4gICAgICBzZXRTdWNjZXNzOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXhlY3V0aW9uLnN1Y2Nlc3MnLCBzdWNjZXNzKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgIGNvZGU6IHN1Y2Nlc3MgPyBTcGFuU3RhdHVzQ29kZS5PSyA6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBzZXRFcnJvcjogKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnJlY29yZEV4Y2VwdGlvbihzcGFuLCBlcnJvcik7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdleGVjdXRpb24uc3VjY2VzcycsIGZhbHNlKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgIGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHNldEF0dHJpYnV0ZTogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikgPT4ge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1bWEgZXhjZcOnw6NvIG5vIHNwYW5cbiAgICovXG4gIHJlY29yZEV4Y2VwdGlvbihzcGFuOiBTcGFuLCBlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Vycm9yLnR5cGUnLCBlcnJvci5uYW1lKTtcbiAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXJyb3IubWVzc2FnZScsIGVycm9yLm1lc3NhZ2UpO1xuICAgIGlmIChlcnJvci5zdGFjaykge1xuICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Vycm9yLnN0YWNrJywgZXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHLDs2kgYXRyaWJ1dG9zIHBhZHJvbml6YWRvcyBwYXJhIG8gc3BhblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEF0dHJpYnV0ZXMoZGF0YTogU3RhbmRhcmRUcmFjZURhdGEpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgJ3NlcnZpY2UubmFtZSc6IGRhdGEuc2VydmljZU5hbWUgfHwgdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZGF0YS5lbnZpcm9ubWVudCxcbiAgICB9O1xuXG4gICAgLy8gRXhlY3XDp8Ojb1xuICAgIGlmIChkYXRhLmV4ZWN1dGlvbikge1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmZ1bmN0aW9uTmFtZSlcbiAgICAgICAgYXR0cmlidXRlc1snZnVuY3Rpb24ubmFtZSddID0gZGF0YS5leGVjdXRpb24uZnVuY3Rpb25OYW1lO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmludm9jYXRpb25JZClcbiAgICAgICAgYXR0cmlidXRlc1snZnVuY3Rpb24uaW52b2NhdGlvbl9pZCddID0gZGF0YS5leGVjdXRpb24uaW52b2NhdGlvbklkO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmF3c1JlcXVlc3RJZClcbiAgICAgICAgYXR0cmlidXRlc1snYXdzLnJlcXVlc3QuaWQnXSA9IGRhdGEuZXhlY3V0aW9uLmF3c1JlcXVlc3RJZDtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5yZXF1ZXN0SWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ3JlcXVlc3QuaWQnXSA9IGRhdGEuZXhlY3V0aW9uLnJlcXVlc3RJZDtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5jb250cm9sbGVyKVxuICAgICAgICBhdHRyaWJ1dGVzWydjb250cm9sbGVyLm5hbWUnXSA9IGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXI7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uY29udHJvbGxlck1ldGhvZClcbiAgICAgICAgYXR0cmlidXRlc1snY29udHJvbGxlci5tZXRob2QnXSA9IGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXJNZXRob2Q7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24ub3JpZ2luKSBhdHRyaWJ1dGVzWydvcmlnaW4nXSA9IGRhdGEuZXhlY3V0aW9uLm9yaWdpbjtcbiAgICB9XG5cbiAgICAvLyBIVFRQXG4gICAgaWYgKGRhdGEuaHR0cCkge1xuICAgICAgaWYgKGRhdGEuaHR0cC5tZXRob2QpIGF0dHJpYnV0ZXNbJ2h0dHAubWV0aG9kJ10gPSBkYXRhLmh0dHAubWV0aG9kO1xuICAgICAgaWYgKGRhdGEuaHR0cC51cmwpIGF0dHJpYnV0ZXNbJ2h0dHAudXJsJ10gPSBkYXRhLmh0dHAudXJsO1xuICAgICAgaWYgKGRhdGEuaHR0cC5lbmRwb2ludCkgYXR0cmlidXRlc1snaHR0cC50YXJnZXQnXSA9IGRhdGEuaHR0cC5lbmRwb2ludDtcbiAgICAgIGlmIChkYXRhLmh0dHAuc3RhdHVzQ29kZSlcbiAgICAgICAgYXR0cmlidXRlc1snaHR0cC5zdGF0dXNfY29kZSddID0gZGF0YS5odHRwLnN0YXR1c0NvZGU7XG4gICAgICBpZiAoZGF0YS5odHRwLnNjaGVtZSkgYXR0cmlidXRlc1snaHR0cC5zY2hlbWUnXSA9IGRhdGEuaHR0cC5zY2hlbWU7XG4gICAgICBpZiAoZGF0YS5odHRwLmhvc3QpIGF0dHJpYnV0ZXNbJ2h0dHAuaG9zdCddID0gZGF0YS5odHRwLmhvc3Q7XG4gICAgfVxuXG4gICAgLy8gVXN1w6FyaW9cbiAgICBpZiAoZGF0YS51c2VyKSB7XG4gICAgICBpZiAoZGF0YS51c2VyLmFjY291bnRVc2VyVWlkKVxuICAgICAgICBhdHRyaWJ1dGVzWydhY2NvdW50VXNlci51aWQnXSA9IGRhdGEudXNlci5hY2NvdW50VXNlclVpZDtcbiAgICAgIGlmIChkYXRhLnVzZXIuYWNjb3VudFVpZClcbiAgICAgICAgYXR0cmlidXRlc1snYWNjb3VudC51aWQnXSA9IGRhdGEudXNlci5hY2NvdW50VWlkO1xuICAgICAgaWYgKGRhdGEudXNlci5hcHBsaWNhdGlvblVpZClcbiAgICAgICAgYXR0cmlidXRlc1snYXBwbGljYXRpb24udWlkJ10gPSBkYXRhLnVzZXIuYXBwbGljYXRpb25VaWQ7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybWFuY2VcbiAgICBpZiAoZGF0YS5wZXJmb3JtYW5jZSkge1xuICAgICAgaWYgKGRhdGEucGVyZm9ybWFuY2UuZHVyYXRpb25NcylcbiAgICAgICAgYXR0cmlidXRlc1snZHVyYXRpb24ubXMnXSA9IGRhdGEucGVyZm9ybWFuY2UuZHVyYXRpb25NcztcbiAgICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlLnN1Y2Nlc3MgIT09IHVuZGVmaW5lZClcbiAgICAgICAgYXR0cmlidXRlc1snZXhlY3V0aW9uLnN1Y2Nlc3MnXSA9IGRhdGEucGVyZm9ybWFuY2Uuc3VjY2VzcztcbiAgICB9XG5cbiAgICAvLyBFcnJvXG4gICAgaWYgKGRhdGEuZXJyb3IpIHtcbiAgICAgIGlmIChkYXRhLmVycm9yLnR5cGUpIGF0dHJpYnV0ZXNbJ2Vycm9yLnR5cGUnXSA9IGRhdGEuZXJyb3IudHlwZTtcbiAgICAgIGlmIChkYXRhLmVycm9yLm1lc3NhZ2UpIGF0dHJpYnV0ZXNbJ2Vycm9yLm1lc3NhZ2UnXSA9IGRhdGEuZXJyb3IubWVzc2FnZTtcbiAgICAgIGlmIChkYXRhLmVycm9yLnN0YWNrKSBhdHRyaWJ1dGVzWydlcnJvci5zdGFjayddID0gZGF0YS5lcnJvci5zdGFjaztcbiAgICB9XG5cbiAgICAvLyBBdHJpYnV0b3MgY3VzdG9taXphZG9zXG4gICAgaWYgKGRhdGEuYXR0cmlidXRlcykge1xuICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YS5hdHRyaWJ1dGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRmlsdHJhciB2YWxvcmVzIHVuZGVmaW5lZC9udWxsXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLmZpbHRlcihcbiAgICAgICAgKFssIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvdHJhY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUE0RTtBQVc1RSxNQUFhLGNBQWM7SUFDekIsWUFDbUIsTUFBYyxFQUNkLHFCQUE2QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVk7UUFDcEUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWTtRQUMxQixDQUFDLENBQUMsaUJBQWlCO1FBSEosV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FFZDtJQUNwQixDQUFDO0lBRUosU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBS0QsU0FBUyxDQUFDLElBQXVCO1FBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLEVBQUUsY0FBUSxDQUFDLE1BQU07WUFDckIsVUFBVTtTQUNYLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxJQUFJO1lBQ0osR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckIsVUFBVSxFQUFFLENBQUMsT0FBZ0IsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNiLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBYyxDQUFDLEtBQUs7aUJBQ3pELENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxL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LE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQy9CLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQ3JELENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXpJRCx3Q0F5SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTcGFuLCBTcGFuU3RhdHVzQ29kZSwgVHJhY2VyLCBTcGFuS2luZCB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2FwaSc7XG5pbXBvcnQge1xuICBJU3RhbmRhcmRUcmFjZXIsXG4gIFN0YW5kYXJkVHJhY2VEYXRhLFxuICBTdGFuZGFyZFNwYW5SZXN1bHQsXG59IGZyb20gJy4vdHJhY2VyLXR5cGVzJztcblxuLyoqXG4gKiBUcmFjZXIgcGFkcm9uaXphZG8gcXVlIGdhcmFudGUgY29uc2lzdMOqbmNpYSBub3MgdHJhY2VzLlxuICogQ29tcGxlbWVudGEgbyBTdGFuZGFyZExvZ2dlciBwYXJhIG9ic2VydmFiaWxpZGFkZSBjb21wbGV0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkVHJhY2VyIGltcGxlbWVudHMgSVN0YW5kYXJkVHJhY2VyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFjZXI6IFRyYWNlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTZXJ2aWNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FXG4gICAgICA/IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRVxuICAgICAgOiAndW5rbm93bi1zZXJ2aWNlJ1xuICApIHt9XG5cbiAgZ2V0VHJhY2VyKCk6IFRyYWNlciB7XG4gICAgcmV0dXJuIHRoaXMudHJhY2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaWNpYSB1bSBub3ZvIHNwYW4gY29tIGF0cmlidXRvcyBwYWRyb25pemFkb3NcbiAgICovXG4gIHN0YXJ0U3BhbihkYXRhOiBTdGFuZGFyZFRyYWNlRGF0YSk6IFN0YW5kYXJkU3BhblJlc3VsdCB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYnVpbGRBdHRyaWJ1dGVzKGRhdGEpO1xuXG4gICAgY29uc3Qgc3BhbiA9IHRoaXMudHJhY2VyLnN0YXJ0U3BhbihkYXRhLnNwYW5OYW1lLCB7XG4gICAgICBraW5kOiBTcGFuS2luZC5TRVJWRVIsXG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNwYW4sXG4gICAgICBlbmQ6ICgpID0+IHNwYW4uZW5kKCksXG4gICAgICBzZXRTdWNjZXNzOiAoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXhlY3V0aW9uLnN1Y2Nlc3MnLCBzdWNjZXNzKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgIGNvZGU6IHN1Y2Nlc3MgPyBTcGFuU3RhdHVzQ29kZS5PSyA6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBzZXRFcnJvcjogKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnJlY29yZEV4Y2VwdGlvbihzcGFuLCBlcnJvcik7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdleGVjdXRpb24uc3VjY2VzcycsIGZhbHNlKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgIGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHNldEF0dHJpYnV0ZTogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikgPT4ge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSB1bWEgZXhjZcOnw6NvIG5vIHNwYW5cbiAgICovXG4gIHJlY29yZEV4Y2VwdGlvbihzcGFuOiBTcGFuLCBlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvcik7XG4gICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Vycm9yLnR5cGUnLCBlcnJvci5uYW1lKTtcbiAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZXJyb3IubWVzc2FnZScsIGVycm9yLm1lc3NhZ2UpO1xuICAgIGlmIChlcnJvci5zdGFjaykge1xuICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2Vycm9yLnN0YWNrJywgZXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHLDs2kgYXRyaWJ1dG9zIHBhZHJvbml6YWRvcyBwYXJhIG8gc3BhblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEF0dHJpYnV0ZXMoZGF0YTogU3RhbmRhcmRUcmFjZURhdGEpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgJ3NlcnZpY2UubmFtZSc6IGRhdGEuc2VydmljZU5hbWUgfHwgdGhpcy5kZWZhdWx0U2VydmljZU5hbWUsXG4gICAgICAnZGVwbG95bWVudC5lbnZpcm9ubWVudC5uYW1lJzogZGF0YS5lbnZpcm9ubWVudCxcbiAgICB9O1xuXG4gICAgLy8gRXhlY3XDp8Ojb1xuICAgIGlmIChkYXRhLmV4ZWN1dGlvbikge1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmZ1bmN0aW9uTmFtZSlcbiAgICAgICAgYXR0cmlidXRlc1snZnVuY3Rpb24ubmFtZSddID0gZGF0YS5leGVjdXRpb24uZnVuY3Rpb25OYW1lO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmludm9jYXRpb25JZClcbiAgICAgICAgYXR0cmlidXRlc1snZnVuY3Rpb24uaW52b2NhdGlvbl9pZCddID0gZGF0YS5leGVjdXRpb24uaW52b2NhdGlvbklkO1xuICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uLmF3c1JlcXVlc3RJZClcbiAgICAgICAgYXR0cmlidXRlc1snYXdzLnJlcXVlc3QuaWQnXSA9IGRhdGEuZXhlY3V0aW9uLmF3c1JlcXVlc3RJZDtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5yZXF1ZXN0SWQpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ3JlcXVlc3QuaWQnXSA9IGRhdGEuZXhlY3V0aW9uLnJlcXVlc3RJZDtcbiAgICAgIGlmIChkYXRhLmV4ZWN1dGlvbi5jb250cm9sbGVyKVxuICAgICAgICBhdHRyaWJ1dGVzWydjb250cm9sbGVyLm5hbWUnXSA9IGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXI7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24uY29udHJvbGxlck1ldGhvZClcbiAgICAgICAgYXR0cmlidXRlc1snY29udHJvbGxlci5tZXRob2QnXSA9IGRhdGEuZXhlY3V0aW9uLmNvbnRyb2xsZXJNZXRob2Q7XG4gICAgICBpZiAoZGF0YS5leGVjdXRpb24ub3JpZ2luKSBhdHRyaWJ1dGVzWydvcmlnaW4nXSA9IGRhdGEuZXhlY3V0aW9uLm9yaWdpbjtcbiAgICB9XG5cbiAgICAvLyBIVFRQXG4gICAgaWYgKGRhdGEuaHR0cCkge1xuICAgICAgaWYgKGRhdGEuaHR0cC5tZXRob2QpIGF0dHJpYnV0ZXNbJ2h0dHAubWV0aG9kJ10gPSBkYXRhLmh0dHAubWV0aG9kO1xuICAgICAgaWYgKGRhdGEuaHR0cC51cmwpIGF0dHJpYnV0ZXNbJ2h0dHAudXJsJ10gPSBkYXRhLmh0dHAudXJsO1xuICAgICAgaWYgKGRhdGEuaHR0cC5lbmRwb2ludCkgYXR0cmlidXRlc1snaHR0cC50YXJnZXQnXSA9IGRhdGEuaHR0cC5lbmRwb2ludDtcbiAgICAgIGlmIChkYXRhLmh0dHAuc3RhdHVzQ29kZSlcbiAgICAgICAgYXR0cmlidXRlc1snaHR0cC5zdGF0dXNfY29kZSddID0gZGF0YS5odHRwLnN0YXR1c0NvZGU7XG4gICAgICBpZiAoZGF0YS5odHRwLnNjaGVtZSkgYXR0cmlidXRlc1snaHR0cC5zY2hlbWUnXSA9IGRhdGEuaHR0cC5zY2hlbWU7XG4gICAgICBpZiAoZGF0YS5odHRwLmhvc3QpIGF0dHJpYnV0ZXNbJ2h0dHAuaG9zdCddID0gZGF0YS5odHRwLmhvc3Q7XG4gICAgICBpZiAoZGF0YS5odHRwLmFnZW50KSBhdHRyaWJ1dGVzWydodHRwLnVzZXJfYWdlbnQnXSA9IGRhdGEuaHR0cC5hZ2VudDtcbiAgICAgIGlmIChkYXRhLmh0dHAucGFyYW1zKVxuICAgICAgICBhdHRyaWJ1dGVzWydodHRwLnBhdGhfcGFyYW1ldGVycyddID0gZGF0YS5odHRwLnBhcmFtcztcbiAgICAgIGlmIChkYXRhLmh0dHAucXVlcnkpXG4gICAgICAgIGF0dHJpYnV0ZXNbJ2h0dHAucXVlcnlfc3RyaW5nX3BhcmFtZXRlcnMnXSA9IGRhdGEuaHR0cC5xdWVyeTtcbiAgICB9XG5cbiAgICAvLyBVc3XDoXJpb1xuICAgIGlmIChkYXRhLnVzZXIpIHtcbiAgICAgIGlmIChkYXRhLnVzZXIudWlkKSBhdHRyaWJ1dGVzWyd1c2VyLnVpZCddID0gZGF0YS51c2VyLnVpZDtcbiAgICAgIGlmIChkYXRhLnVzZXIuZW1haWwpIGF0dHJpYnV0ZXNbJ3VzZXIuZW1haWwnXSA9IGRhdGEudXNlci5lbWFpbDtcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtYW5jZVxuICAgIGlmIChkYXRhLnBlcmZvcm1hbmNlKSB7XG4gICAgICBpZiAoZGF0YS5wZXJmb3JtYW5jZS5kdXJhdGlvbk1zKVxuICAgICAgICBhdHRyaWJ1dGVzWydkdXJhdGlvbi5tcyddID0gZGF0YS5wZXJmb3JtYW5jZS5kdXJhdGlvbk1zO1xuICAgICAgaWYgKGRhdGEucGVyZm9ybWFuY2Uuc3VjY2VzcyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICBhdHRyaWJ1dGVzWydleGVjdXRpb24uc3VjY2VzcyddID0gZGF0YS5wZXJmb3JtYW5jZS5zdWNjZXNzO1xuICAgIH1cblxuICAgIC8vIEVycm9cbiAgICBpZiAoZGF0YS5lcnJvcikge1xuICAgICAgaWYgKGRhdGEuZXJyb3IudHlwZSkgYXR0cmlidXRlc1snZXJyb3IudHlwZSddID0gZGF0YS5lcnJvci50eXBlO1xuICAgICAgaWYgKGRhdGEuZXJyb3IubWVzc2FnZSkgYXR0cmlidXRlc1snZXJyb3IubWVzc2FnZSddID0gZGF0YS5lcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGRhdGEuZXJyb3Iuc3RhY2spIGF0dHJpYnV0ZXNbJ2Vycm9yLnN0YWNrJ10gPSBkYXRhLmVycm9yLnN0YWNrO1xuICAgIH1cblxuICAgIC8vIEF0cmlidXRvcyBjdXN0b21pemFkb3NcbiAgICBpZiAoZGF0YS5hdHRyaWJ1dGVzKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhkYXRhLmF0dHJpYnV0ZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBGaWx0cmFyIHZhbG9yZXMgdW5kZWZpbmVkL251bGxcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykuZmlsdGVyKFxuICAgICAgICAoWywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19