@hpcc-js/comms 2.89.0 → 2.91.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es6.js +956 -128
- package/dist/index.es6.js.map +1 -1
- package/dist/index.js +948 -119
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.node.js +948 -119
- package/dist/index.node.js.map +1 -1
- package/dist/index.node.min.js +1 -1
- package/dist/index.node.min.js.map +1 -1
- package/lib-es6/__package__.js +2 -2
- package/lib-es6/ecl/query.js +68 -0
- package/lib-es6/ecl/query.js.map +1 -1
- package/lib-es6/ecl/queryGraph.js +759 -0
- package/lib-es6/ecl/queryGraph.js.map +1 -0
- package/lib-es6/ecl/workunit.js +116 -102
- package/lib-es6/ecl/workunit.js.map +1 -1
- package/lib-es6/services/wsWorkunits.js +5 -1
- package/lib-es6/services/wsWorkunits.js.map +1 -1
- package/lib-es6/services/wsdl/WsWorkunits/v1.98/WsWorkunits.js +370 -0
- package/lib-es6/services/wsdl/WsWorkunits/v1.98/WsWorkunits.js.map +1 -0
- package/package.json +3 -3
- package/src/__package__.ts +2 -2
- package/src/ecl/query.ts +66 -1
- package/src/ecl/queryGraph.ts +809 -0
- package/src/ecl/workunit.ts +126 -103
- package/src/services/wsWorkunits.ts +8 -1
- package/src/services/wsdl/WsWorkunits/v1.98/WsWorkunits.ts +3182 -0
- package/types/__package__.d.ts +2 -2
- package/types/ecl/query.d.ts +12 -1
- package/types/ecl/query.d.ts.map +1 -1
- package/types/ecl/queryGraph.d.ts +101 -0
- package/types/ecl/queryGraph.d.ts.map +1 -0
- package/types/ecl/workunit.d.ts +8 -0
- package/types/ecl/workunit.d.ts.map +1 -1
- package/types/services/wsWorkunits.d.ts +3 -1
- package/types/services/wsWorkunits.d.ts.map +1 -1
- package/types/services/wsdl/WsWorkunits/v1.98/WsWorkunits.d.ts +2623 -0
- package/types/services/wsdl/WsWorkunits/v1.98/WsWorkunits.d.ts.map +1 -0
- package/types-3.4/__package__.d.ts +2 -2
- package/types-3.4/ecl/query.d.ts +12 -1
- package/types-3.4/ecl/queryGraph.d.ts +101 -0
- package/types-3.4/ecl/workunit.d.ts +8 -0
- package/types-3.4/services/wsWorkunits.d.ts +3 -1
- package/types-3.4/services/wsdl/WsWorkunits/v1.98/WsWorkunits.d.ts +2623 -0
package/dist/index.node.js
CHANGED
|
@@ -47,8 +47,8 @@ var tmp__namespace = /*#__PURE__*/_interopNamespace(tmp);
|
|
|
47
47
|
var trustwave = "\nTrustwave Secure Global Extended Validation CA, Level 1\nSecureTrust Corporation\n00F6F61CE4A3635BB0CA8AACEEFCB2D0F0\n-----BEGIN CERTIFICATE-----\nMIIE+DCCA+CgAwIBAgIRAPb2HOSjY1uwyoqs7vyy0PAwDQYJKoZIhvcNAQELBQAw\nSjELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRkwFwYDVQQDExBTZWN1cmUgR2xvYmFsIENBMB4XDTE1MDgxMjIwMTcyOVoXDTI1\nMDgwOTIwMTcyOVowgbgxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQ\nMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMUAwPgYDVQQDEzdUcnVzdHdhdmUgU2VjdXJlIEdsb2JhbCBFeHRlbmRlZCBW\nYWxpZGF0aW9uIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdh\ndmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6D45slgLGq8\n2G/NPFnuFscv7UM1eRoQyx3h0DdSTfoRvHkkNv4Gf6OudZDOXqwV86v/SjcNEP87\nnjMOEqQ7dKQPtiYzEkK0MOrjbRySFC5dvCTI9T8tnBgFpYA9YXwbpUqXxEi0Ayoq\nhA7UQhS7Q+YGrVwZaJ6LiWrQw+x8ACPLqEvPmMZhrxagKwrsKbylMsAQ1ljk8X74\nJ76TSxi/AZpxos7tHD0XbO8elXFZexfsgPLDRpMs6jREVeQj1jVCWLtg9twiXzcI\naUCchBsTSc92WGkKwBnH70dlL2N8kT/BNe3tAsXuBpZRILANY59jLrLnHEJNfado\nt6ZpougolQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\nFgQUx33qXRmrVNT6P+ZKc956sjwdbC4wDgYDVR0PAQH/BAQDAgGGMD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TR0NBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NHQ0EuY3J0MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr\nBgEFBQcDATAfBgNVHSMEGDAWgBSvRATCQX5Ig9tOOQLs7IR65s7JpDANBgkqhkiG\n9w0BAQsFAAOCAQEAkn/4wKQRLo41fDRkZtfF+3o8JtUmfQXf2zoo9Ll29hhCiz8k\nBOpIek9MrFd/cdNgUw1nckIi+J3udyFrbO5p64JBvtc0K4kAOPFSKpHssFcnRLPx\nFXgGxXq6ohD4Py+xaEApslYFfMy89N6DKs/v/10/+/xD831RFEUMUoQxBimsmmNf\n+cLoMwF5bpoSz9JcWqCmSlK0Nla1dPphaoA/MObLN2iQPpeM3yF5dTUm1tPxe39W\nOlr6nLU1xO+yRDrlGLXrVDP1l1/qGVuwi+xufIAcdFycLLBjSSNX7LOIK3tbva7A\nWctLUs+qhIlUrbPyFERm7YOY4SttWdozeYFNfg==\n-----END CERTIFICATE-----\n\nSecureTrust Domain Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E80B1BAF9870A7C4B6CBE401A32D68\n-----BEGIN CERTIFICATE-----\nMIIEfzCCA2egAwIBAgITBvHsAOgLG6+YcKfEtsvkAaMtaDANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfDEyMDAGA1UEAxMpU2VjdXJlVHJ1c3QgRG9tYWluIFZhbGlk\nYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQH\nEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjRHBw8iIivBBrfE6HqexQK0oMt2Y/\nx8jO3fN96KEazZwEoGidwloRBk2Q7VfVvZ0ZDk+qwJZGLZJLS1ntGaZLH4/Iel+r\nPnp36IVF7J5MNDB+K81a/y9svEMfDu0p3FdlBUyhHvizZ/zFNP3tolmQfZ7T0mGL\n7lutlNAzFYoVTUlVeF5cSC8Yca906TEKyizYXuXcY8Diee+t+fQRHmSI5Hk5kyXD\nYFWcf2tXEfdkuFlDjJ7HPdFyfJzrNjD+cbqt8R5rZKnK1GNVP1dXm0cIYS+BMlMa\nCC1yF18oygbnOZLw5fDv9bxs4MOgF8E/Iypw0hLQHVkuD8wAvxVgPsqvAgMBAAGj\nggEsMIIBKDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNV\nHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUYt6tehfefLfDfCMXo7Em5UbXOvQw\nHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYDVR0gBDowODA2BgRV\nHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2VjdXJldHJ1c3QuY29t\nL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9T\nVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHA6Ly9vY3Nw\nLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQAHXPYhl+++o//di2Qm\naWGmC1ijxbGbKA4jOSDRvQfxlWOVkqPF11Dpxz+V8Rxw7QFFVoJ5mHpfoXtQOijV\ntsCFknxTKgzQeArNkZrkXBNpYOJAcuc5v0eX0OllBWgVdIvZRl2TM5L/u1WFrlPr\nqwWdEYTkinQwgAHXVV/7WZi6c4StcqNnlw93mlvN6Vspzaf/mWtcYp+aqT9vrqHt\nyNR1k8Ri5eIRPIU0B8woiXTj3bifLg6/O217SY5cWwQKCMFsa6nGWoRVCJ0JJXa0\nZ+m3mPQD2OcW5YMrynhL2VWohyfZAjB8l/NZaeRT7M+vki56fxbx3Bk2lqy8Z1Zz\nWd5m\n-----END CERTIFICATE-----\n\nSecureTrust Extended Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E31E46D341B2B2633CE480D915F81D\n-----BEGIN CERTIFICATE-----\nMIIEizCCA3OgAwIBAgITBvHsAOMeRtNBsrJjPOSA2RX4HTANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfjE0MDIGA1UEAxMrU2VjdXJlVHJ1c3QgRXh0ZW5kZWQgVmFs\naWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNV\nBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS6vRtFpCJBJ7zJODH07Y3k54Qn\nVIBhnQmmWoqFqzCVMX97GAyAfzjcQrhl/TNiJiRCrVQWPI4n0R8eUd91Ab1Qzfsr\nnp+0NRbagVDa6+nF0KcNxbSZ6/iZQ7Ac3HyhCvJS2rH2CVYlzqdsrxDXcZk69jOO\ndPV8+w+7eNIn34BKpB/ZF7iXApDoAKG81kg1VtpGOxJhxTsKLuJmURT4pQjtZqF+\nF6rN64j5T2DOK0gOA4G7BLoTdOQuXkPS38LXKgZ43lKqEenjmiOaMF/XuLYzaHrW\nGYgCM2wJsykgdB9hCsTTEwsHRZzt2q9mLBDvYYWVhql1/kR4K/RN4JdESEECAwEA\nAaOCATYwggEyMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0G\nA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUA6uAxlUKKpWh\n4Nf+GubAynjMsJYwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYD\nVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2Vj\ndXJldHJ1c3QuY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9TVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQB1\nfzAmGGmtbJyIvOfjq2McCpUoYkXAq6JTN51+nb9NDAihhDoTKMde+801bC1/l54h\nxPPm4HImM6GK6LFckDew/FGwbdRbEznUOJ7uVL5ploNBIjte23kTBUZa9fx3+aXK\nhUTAipSyPtNjnOwVVBVXzrMynfMhdsyRRe7gLXNFYCXIxtks3IkIpuYnc86NAuV9\nnBLFlZzgmbAsW+tMc5QsNvQJ9pQ539K8cqZaM+HFCScreDERxmNtHHbMw+hCa2yL\nOj4ntekgWLO8KQbE0lPUNLIM17QK8aktJavj+GezBztKMmJJwhVYQy9nxS388ApX\nxcZsEgIzOCeH0SOWg4FA\n-----END CERTIFICATE-----\n\nSecureTrust Organization Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E58E9ADD372C871D25843FDAB852D9\n-----BEGIN CERTIFICATE-----\nMIIEkDCCA3igAwIBAgITBvHsAOWOmt03LIcdJYQ/2rhS2TANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowgYIxODA2BgNVBAMTL1NlY3VyZVRydXN0IE9yZ2FuaXphdGlv\nbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQ\nMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4QVBCdYToXFIfzd1SQfi\nTEgg1bwHXM2cE2VsyxwWK8NEFH8zMYdKy2hYOAjbfpm0xE6q4TQzS8KL2vAtCNyY\nVrwX7d3IvKR25H5s1LUDeQXSl1JBBZCtgJf2caJcwaYa6n2pZ0EKt3wBB+QteSFn\n57ENB37T13y7Nn8gCt9ZZaPYqRWxHcPaIWO3CVzQZ3tXjCLqzJMCV2KqhK85DZk3\nwo33Zb6cyYDkerDbWyric+10dJ/wdgE49dkfyZxVxEGpHg1SCSJdHjGb4z85Zx/u\neBpxBS6g3dfrkDjjT3MUxyNS4EaRTZp7o/2EqVCYDWJDM1HcOZL64kyWyi0d9jqA\n7wIDAQABo4IBNjCCATIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBR/QuNI\nbljpLrlhyGp3tPcDuM1qWjAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpD\nrzBBBgNVHSAEOjA4MDYGBFUdIAAwLjAsBggrBgEFBQcCARYgaHR0cHM6Ly9jZXJ0\ncy5zZWN1cmV0cnVzdC5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny\nbC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMDYGCCsGAQUFBwEBBCowKDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wDQYJKoZIhvcNAQELBQAD\nggEBAIwGM/ejz4Hbjf7Vc11gS8jzf+BwtZq9N4t1Nibj4rIDsW2G2jDE0S7fCN2m\nMhq76xkfnwfXhBbXDEKz6rj/M0G2u1kHw4Y8ZtKSzYEyRtgpeBFm4qU6voCSREpD\nFJXsL+Go2/YLRSE6xkWVSocklxppx4hi5o/RVdMMQept6ooOSFzBpH5XZYUoblKi\n99Yj0FUe8egIa9qSts42TObTpH1YVRMDnH3k2MNX3rcgPf9v/QO9Cf8W6RQ2+X3R\nCaYMPdL5OIKh4RGYjxXe3LpgiTKBWik/ZWTFL5sZSjetrJFl50NONzTc8E+BJtrx\nVCHAI2OcWyloxrYd4zMipw0YjDw=\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00DDEDF6F64298490E694C36EFA422C88F\n-----BEGIN CERTIFICATE-----\nMIIE7jCCA9agAwIBAgIRAN3t9vZCmEkOaUw276QiyI8wDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMDExOTIyMzJaFw0yNDA5\nMjgxOTIyMzJaMIGvMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE3MDUGA1UEAxMuVHJ1c3R3YXZlIERvbWFpbiBWYWxpZGF0aW9uIFNIQTI1NiBD\nQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNvbTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr4Z91k7AKM+Pz5XXWTIuVeMts\nPU2W/pI4WdEHG9Zab1EOWPLbthB6fzUJLLLBBk1wy2OM9yG1HywB/CwfGHcoKS8Z\n/efGV+ZKTzEpIestriUWx7wUnzxKzGML48Xv7sNuY1Crru5Hgce1Ax5uOfP7OB6t\norbMunvKQC10WcSrqFg6LapZ0UhgGmQzdjYguOBF6WZJR3QLghQaNrSUZuA6neXR\ncUsBgmzrxiEVHyzt+lmnYFMFvKVwGOyIZ2RU2LAFthS6UDDrSLGsJysxc1MK1Sti\n/VP8e8wj9rJdmiWNfA+lz6hDAPzRbv+WVJNoHEGbIx8rai+rVMiLy2HIbPsCAwEA\nAaOCAWkwggFlMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPQc4jqvtqTk\n2emd/u8cd6VjPe+IMA4GA1UdDwEB/wQEAwIBhjBIBgNVHSAEQTA/MD0GDysGAQQB\nge0YAwMDAwQFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TVENBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IB\nAQAjoDrTysopn7t+onDZ6rZSQW8rYlWZQpSiNHrq9xAAcMExrhcN0bQC9OQ+VRci\noMDascvwum7hVkyh2w2Ad7lC3Ir9gIuA8HycjqQJ4t1eSF3geYyf8lp259ztZ/TO\nxSAwJ9W0Szc8fslOA0SWlyA3lnRVcYVu54Idc1dPXXBxwlQ1NUCYgcsXZs+6QjLL\nYhYL85DhuitQSddoYemGpfVJnaYH9tBiWmwtzwc4qsVqTsKEJ/1zYAy2GrEAv8sB\nFKSfMNMopBmmDA8/aCIW/tH6KTD2DC15QQwL6yAUbSa5mhzFSA9O8zmF881YwBVG\nn+z3isMPClgpNw/eWSbaSLZ+\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n390A3F7EECA8FB4347DCAF701861662B\n-----BEGIN CERTIFICATE-----\nMIIE/zCCA+egAwIBAgIQOQo/fuyo+0NH3K9wGGFmKzANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzMloXDTI0MDky\nOTE0MzUzMlowga8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTcwNQYDVQQDEy5UcnVzdHdhdmUgRG9tYWluIFZhbGlkYXRpb24gU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs2vhn3WTsAoz4/PlddZMi5V4y2w9\nTZb+kjhZ0Qcb1lpvUQ5Y8tu2EHp/NQksssEGTXDLY4z3IbUfLAH8LB8YdygpLxn9\n58ZX5kpPMSkh6y2uJRbHvBSfPErMYwvjxe/uw25jUKuu7keBx7UDHm458/s4Hq2i\ntsy6e8pALXRZxKuoWDotqlnRSGAaZDN2NiC44EXpZklHdAuCFBo2tJRm4Dqd5dFx\nSwGCbOvGIRUfLO36WadgUwW8pXAY7IhnZFTYsAW2FLpQMOtIsawnKzFzUwrVK2L9\nU/x7zCP2sl2aJY18D6XPqEMA/NFu/5ZUk2gcQZsjHytqL6tUyIvLYchs+wIDAQAB\no4IBezCCAXcwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU9BziOq+2pOTZ\n6Z3+7xx3pWM974gwDgYDVR0PAQH/BAQDAgGGMDIGA1UdHwQrMCkwJ6AloCOGIWh0\ndHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9TVENBLmNybDA9BgNVHSAENjA0MDIGBFUd\nIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3YXZlLmNvbS9DQTBs\nBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRydXN0d2F2\nZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1\nZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIy\nthb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRydXN0d2F2ZS5jb20w\nDQYJKoZIhvcNAQELBQADggEBAFcdG0/3P/CkeGb76tz/mn1viDZiftD05i9Jw70k\nH9ulRwdCHgzhSZVN5zHvG919oHA9WHbxH04J+iAnVl1+FjoDNN+A+2icy2WXqH9w\ngaNUGyUwLdo0JCfgUeGbrCF6WUYCj47pS7zAY02CdGlstZZsqouXK3RnOMKOD3Dq\nf5kiSh56KvhW/F0OZY7PAbdV79LVAiSTiAFdoe/jMjmj8fqXOiCIjllqH/O9/DAm\nRwQStFpauwR+nBbFhq4sYwlZQvJ0NvIxN5JOTECTkMM+X21kf8mrwRdxBfw0YEPa\nUTeZhFr48Fwvnt4jpo7gqpJzt7jjsbWPd1FHtey2Q8zmSHY=\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00C1BD27B383958D0D8BCA5E4F08D009D9\n-----BEGIN CERTIFICATE-----\nMIIFGDCCBACgAwIBAgIRAMG9J7ODlY0Ni8peTwjQCdkwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMTMxODE3MzlaFw0yNDEw\nMTAxODE3MzlaMIGxMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE5MDcGA1UEAxMwVHJ1c3R3YXZlIEV4dGVuZGVkIFZhbGlkYXRpb24gU0hBMjU2\nIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAre9mHLqiv689FWIk7PaeQLuW\nos8ldRX4rNLHeD7/X7JrTfaXuIQaLfrUODtyRaZs0LtJsEHgpr7dUonDIH69PjBP\nrHg+hBLu7ob4udEx3J03NQSdnR/fqPY0ZMH2NP7e9TFSKKctZ/SmzA8jGclVmdiT\nGg1bTx6xgWuPWq9OprIQSgkP5NRe1GeTQ7U/E1zxLqaw6PeQWjESHPGeilyw0jr6\nqVyHM5ack9ps60sN3CKNGushyaQe3w2bYxRJ9RRH/sILCAmmTbjc/cXrGQMGdaYt\naiGnXbc45r39cqfbynZ71hPPNEtFbOdqk3C7I8vrhIHiKaAtFkTMRSWmHHk4HwID\nAQABo4IBkTCCAY0wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU5eQkWRUy\nJ8kgs0ICbLDvMt6bIFowDgYDVR0PAQH/BAQDAgGGMGYGA1UdIARfMF0wDAYKKwYB\nBAGB7RgDADAOBgxghkgBhv1kAQECBAEwPQYPKwYBBAGB7RgDAwMDBAMDMCowKAYI\nKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCsw\nKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMGwGCCsG\nAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3YXZlLmNv\nbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMv\nU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQY\nMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IBAQCly1p1\nrvcOlRS+ODBLb2kYHd4q+cXDl65X+IQ7hOlXg9dpa7CzSAGNNpzhyYMbE48mB/RE\nBXxbZkMzEhWPFj+4jdGNsmX0zjEWatJWsnNVxpA7hDR0iZssezu86oDQ/sbVoaXj\n0a5jB2cZsnMS5287CNDk5i+ImruhbMAYV9sadliXoDy3y01Sv+FLMx39C5UhYhWU\ngvoT9igbSCoc/DPOukEDqsnKMmDqTf3JzuFI1CbJcR6M8R1hAda4mZrxIdGcbT8R\nXp8JQ8Vuv/+plPMcAiZ2Bzed0hPVr5A1Mz8K8w9OyORGlRwjWS65jsr26bjMCcfj\npvuAANrc0Alu4nJC\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n35962F305C5A0BEC400D4E9877528C65\n-----BEGIN CERTIFICATE-----\nMIIFCzCCA/OgAwIBAgIQNZYvMFxaC+xADU6Yd1KMZTANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzNFoXDTI0MDky\nOTE0MzUzNFowgbExCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTkwNwYDVQQDEzBUcnVzdHdhdmUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYg\nQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNhQHRydXN0d2F2ZS5jb20wggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt72YcuqK/rz0VYiTs9p5Au5ai\nzyV1Ffis0sd4Pv9fsmtN9pe4hBot+tQ4O3JFpmzQu0mwQeCmvt1SicMgfr0+ME+s\neD6EEu7uhvi50THcnTc1BJ2dH9+o9jRkwfY0/t71MVIopy1n9KbMDyMZyVWZ2JMa\nDVtPHrGBa49ar06mshBKCQ/k1F7UZ5NDtT8TXPEuprDo95BaMRIc8Z6KXLDSOvqp\nXIczlpyT2mzrSw3cIo0a6yHJpB7fDZtjFEn1FEf+wgsICaZNuNz9xesZAwZ1pi1q\nIaddtzjmvf1yp9vKdnvWE880S0Vs52qTcLsjy+uEgeIpoC0WRMxFJaYceTgfAgMB\nAAGjggGFMIIBgTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTl5CRZFTIn\nySCzQgJssO8y3psgWjAOBgNVHQ8BAf8EBAMCAYYwMgYDVR0fBCswKTAnoCWgI4Yh\naHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMD0GA1UdIAQ2MDQwMgYE\nVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NB\nMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lz\nc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRy\ndXN0d2F2ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAGUMIDkrvlMJ0wHLuP3lkneC\nwGU6mZ3g17jyU2RJwhRinYctraryG7Jh20DQ9/ppTHoxTIADw2JDsC5ByplabteQ\nnLghrl17K1b6PO+rzWA/NFKVwo6u8Gh7Lz0iUuit7ZBD4eKcRedxRZcPQlnD9KTR\nIs94SRpootsuCv/Y5b+1FMPV1KrYtbco9yEVlaNEWLpmiEsqvLjxiWEmt71rzz+0\nS59OtA/ihnbGP9Xrnhe7wf1ybCNOO5gZQMKr/OszfLZ7oVKACGOPLlcSZRRW98gA\nszE+1ZvlHkdjamfTSs4yMvUorYn9NhXnjAWl28NuD9m3FPiE2O50ezEDnHTiaOQ=\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n4B2C6646F434775B67DF34A04DD504E6\n-----BEGIN CERTIFICATE-----\nMIIE/TCCA+WgAwIBAgIQSyxmRvQ0d1tn3zSgTdUE5jANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE0MTAwMTE5MjIzNloXDTI0MDky\nODE5MjIzNlowgbUxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMT0wOwYDVQQDEzRUcnVzdHdhdmUgT3JnYW5pemF0aW9uIFZhbGlkYXRpb24gU0hB\nMjU2IENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29t\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA49OohlJHBJ/juiQTmibO\nS28pHvCCp1bPOc6elQ62DCYE/A14JXUtI8yaUc9nFjh6dNzR7KjFPEq/qDplQl7f\n1Tvh5ifBNNP2wQ6e820TWlPO4HhR/5g4+3iFmJ1N7kFrxDp1/P8e3+9lcJsXckXC\ntfFkQ9slogJqnaCsipgdrH4gQhicFAL5YqHw2AKfctZLSPpxhI3xISMV/lIQwZPW\nI2221v9ALckokh5pW6dTK8x8yNUUye1zt5msWzqunfBjVYVUj5/LXu46hS99Mfxu\n80ARJRyHsXIuHbMzwVXGqKVPZfKAdHBl5e3ElCjNwNy+Hgi09vS7PoAUhjCf/wbO\nnQIDAQABo4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUys4d\nGAN3HhzzfFiymnCoCIAW9K4wDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYP\nKwYBBAGB7RgDAwMDBAQDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0\nd2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdh\ndmUuY29tL1NUQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50\ncnVzdHdhdmUuY29tL2lzc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUH\nAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0G\nCSqGSIb3DQEBCwUAA4IBAQBN/Qb6x5VSQHIt/FqvXAkjfCI7jwXGzRoxThavUqv0\npJr1azXKv2L2ye9Sl4OCqiDHZ8ZJZ/Z19Ae1yvGTpG++0O5dWTHZ8qy/JSj17Mg1\nvWiefVpJKtkYflzhC9B9/eB3QuKVTRKDqm1ZC9kbm3MWOwtnEOw4WURWS1X2v4Hv\n2AJaXe11ZRqjx7/c6U50tYp3eVpRDCw7bOIXRffLG0oibhjHiEu8dgq7KkTSrx9m\nQFS6T2x9GLiJKhj2mEfPuGr73TfBPyKsRBymOpG67LThKVnwoUfH3pghA6VkZp5Z\n1Vm6AcDm+eelf5XPvZtNve4evLVPYueA3TmGyxXh1m2d\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n0092B8744F71CED0E26C72A3D8D5D925B2\n-----BEGIN CERTIFICATE-----\nMIIFEDCCA/igAwIBAgIRAJK4dE9xztDibHKj2NXZJbIwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNjA5MDExNDM1MzVaFw0yNDA5\nMjkxNDM1MzVaMIG1MQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE9MDsGA1UEAxM0VHJ1c3R3YXZlIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIFNI\nQTI1NiBDQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPTqIZSRwSf47okE5om\nzktvKR7wgqdWzznOnpUOtgwmBPwNeCV1LSPMmlHPZxY4enTc0eyoxTxKv6g6ZUJe\n39U74eYnwTTT9sEOnvNtE1pTzuB4Uf+YOPt4hZidTe5Ba8Q6dfz/Ht/vZXCbF3JF\nwrXxZEPbJaICap2grIqYHax+IEIYnBQC+WKh8NgCn3LWS0j6cYSN8SEjFf5SEMGT\n1iNtttb/QC3JKJIeaVunUyvMfMjVFMntc7eZrFs6rp3wY1WFVI+fy17uOoUvfTH8\nbvNAESUch7FyLh2zM8FVxqilT2XygHRwZeXtxJQozcDcvh4ItPb0uz6AFIYwn/8G\nzp0CAwEAAaOCAYUwggGBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMrO\nHRgDdx4c83xYsppwqAiAFvSuMA4GA1UdDwEB/wQEAwIBhjAyBgNVHR8EKzApMCeg\nJaAjhiFodHRwOi8vY3JsLnRydXN0d2F2ZS5jb20vU1RDQS5jcmwwPQYDVR0gBDYw\nNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwbAYIKwYBBQUHAQEEYDBeMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC50\ncnVzdHdhdmUuY29tMDUGCCsGAQUFBzAChilodHRwOi8vc3NsLnRydXN0d2F2ZS5j\nb20vaXNzdWVycy9TVENBLmNydDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH\nAwEwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wGwYDVR0RBBQwEoEQ\nY2FAdHJ1c3R3YXZlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAC0OvN7/UJBcRDXch\nA4b2qJo7mBD05+XR96N7vucMaanz26CnUxs1o8DcBckpqyEXCxdOanIr+/UJNbBL\nXLJCzNLJEJcgV9TjbVu33eQR23yMuXD+cZsqLMF+L5IIM47W8dlwKJvMy0xs7Jb1\nS3NOIhcoVu+XPzRsgKv8Yi2B6l278RfzegiCx4vYJv0pBjFzizEiFH9bWTYIOlIJ\nJSM57hoICgjCTS8BoEgndwWIyc/nEmlYaUwmCo9QynY+UmW1WPWmVITEJPMdMK6A\nZqvvaWmuHJ6/vURaz+Hoc5D3z0yJDDCkv52bXV04ZoF6cbcWry7JvNA+djvay/4B\nRR4SZQ==\n-----END CERTIFICATE-----\n\nSecureTrust TWG Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C25181828DAC4F5F7DE4AFC87AD132\n-----BEGIN CERTIFICATE-----\nMIIG2zCCBMOgAwIBAgITBy8w6cJRgYKNrE9ffeSvyHrRMjANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMjAxMDA4MDY0OTQwWhcNMzAxMDA4MDY0ODQwWjBWMQswCQYDVQQGEwJVUzEUMBIG\nA1UEChMLU2VjdXJlVHJ1c3QxMTAvBgNVBAMTKFNlY3VyZVRydXN0IFRXRyBTZWN1\ncmUgRW1haWwgQ0EsIExldmVsIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCcD5Wc7H480gOv3ae6SELBls0oNOvpw1ZFjK55nLw+W6PhgqTGNEHlO/Ga\nWt13yS1iO1/WzRaUc2XsFRGcjv3QIfDZb+6UzhL1LL9ZE8zcs0B6fepn4smQg1yK\ngtAWGoD70Z9kEBtypkG23sO5xIiRACJWgRWVZ/891pQBBz+ElCxUnIyDGghHlWCD\nzn5dLoBIVic69Pfpi384uNoNfHV/WATUQEEnwY+5yMMUALAWrRD6Jeh5R4m9qKxG\nUlrO9ObDebK9mFEJvrCPtkTIWT1He4ZD58Lt0NIkaItQ7KsKF9wgwH7BTsRGwQXb\nP6/0LvfO8UDRKNE/4C39u9dwUw/Zpu2iNXTadVWBtaSDsrPFVb5rBu+pvn4l4Hw5\njtySyHAOWn4mhuxDXMuKBtaoTi/qF94d7N0CbqPdN9WSN79Cy2O0BexTGHSJVndX\nEbKyn96b5STPshKVpG9DmUekfnDtnHR9dmH74a05X/A8k/XeSJWXphM6NvyZap2A\nWiIkrS7MsfwnCdZlX+9WGY2qHxnm4Y6JdNah0qxozBbQHkqHsSN4k8O7zr2lfZhC\nuarm0Q1t6tjsmp7PUh26u6PCe0m+MctIrD6ZckUzZeuPduRb55K2p8MxjQSVNH1S\nJ2aaHp77qOYV+rvHXIL7le4OR5lDWyzYtXLc8u17/kLbUtgnmQIDAQABo4IBbTCC\nAWkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwQwHQYDVR0OBBYEFKpD9MNsQCriSoEcg6nez7XhG7bOMB8GA1Ud\nIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMEEGA1UdIAQ6MDgwNgYEVR0gADAu\nMCwGCCsGAQUFBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA1\nBgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dD\nQS5jcmwwdAYIKwYBBQUHAQEEaDBmMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5z\nZWN1cmV0cnVzdC5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8vY2VydHMuc2VjdXJl\ndHJ1c3QuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBb\ntCXryLFewOafyNENB3NzgAQVVztwaWSyvF5FYSqav95JKcoHZzy3wG7aKlTPtGnq\n1QzJst03qPmZJ3j63obz2AvfEEzLEMlsPmOTy3B9oIrNzd2QhpGW1oF6pIgGB/VP\n5zh7U2ibUC+zRLmihwt+j2+7NBbuLbPozgxDTWh2f9O4rJb5bv98Q8RdbGrypBb9\nhOhDvmNCCfjSe+Q8myqsvawEG5p7s8gsIK/V3xbyqDihXjsGc7xeEWNftlU91jBL\nKPRbrLmXhhWnHJjYs4y5IHu735HA3aAT4TqURS9dGHOMVDRumkFpLqR2W7ptpDki\nOtIFZjO5smU29OD4AlcNUXqQuKEFasyTtkRlORnWhU37c36HB8dc57xWQKOf8pMq\n7lK+ublO9G4mO1Aqr9mioTN4oMONFJG4W5dWwG9baNg682ZACkvPaw45MqSztL3A\nKb4s2cDTWu/D34hV3oafkTwu8B7B2mFZnWRJ9q4akPmZF45uw4RZx2ALaYGGGs67\n+r5qS300As9ONg8hxfVkFQSHOc00IiBkgi3OpoCofEKTgDwZwHVqOJyyPjk6H9Sh\nZANmUOT2mGDLwl86Ar5bTu8ipzlsyDYQMFjho7WaVs8I5OXyVdONXDYLIOtpITGT\n1fRcXFzxYHhrNuFwrdj2zBVyvVD4O6xV97/9nv2Eng==\n-----END CERTIFICATE-----\n\nTrustwave Global Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AD30465CF22697F246B101EC92953B\n-----BEGIN CERTIFICATE-----\nMIIHCDCCBPCgAwIBAgITBs6C2a0wRlzyJpfyRrEB7JKVOzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBjjE3MDUGA1UEAxMuVHJ1c3R3\nYXZlIEdsb2JhbCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UE\nChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGljYWdvMREw\nDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUA\nA4ICDwAwggIKAoICAQChh5brvvk/kFUZwhlUhqdsUmsMCBjzYqBBLnTyNrKPr4nd\nS9s2h2JvA+9TY7NnJc/Mq1eN5V6zqvbn/LN3c8W06f76xrVvFEKs5SzCefUS/V3Z\nC18dgwXXFrP+RgfK2kqfTHGIPrWoRSnUiLn3iUNEBtJ06oXjAqAMnAyL5AzD+eHm\nZzRK/yCw/gMPnVp2S7Dstka607fS4fW9Sl33mOMNwJRxEjQWHHR25PAb4muP6wjN\nvmoLMgiDMKseHSFVtC7SpmO89PsrUV6MahKJrZcAfquAyoO1zR2c2eGaCI/m8oSx\n3B7KiMZJ3NZims/siMp/5szemsutf36WJ31nmr7PqLJGJdVpoxbLckWIhZnNYSFm\n/pTutpNONqpyYC2gGSXdw5LuxU61913SbAPpk8DZiHi3WslHBo26ghXG++sgJUGj\nhtKZhiYlp8uD21WTP6/60wngpXyCtt9cpHxW1lXmqcxwe2J4/2S3xjHz1dC6BKxb\nr61HCPVrbTD90CZUpMI8JPdsVbz5eegv+SIyybHxZe4S0D9Kv5pgWfqdXf0BAiJC\nTbGwYmFr4uisKhkfMThyOgWEH+CRBzQqdZREQ5lTIlVyzi3jGPuu9Q6brAS9U9Ue\nQhUwX8TtY8Igfo8HlhjugDpy6WvDYQ9i+tG3AC6v8sJLdOOU83Lr+2C1LEF5ZwID\nAQABo4IBYTCCAV0wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYw\nEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFIaZQQzOP7aMcEnlkwfwhgcd\nLXqVMB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMD0GA1UdIAQ2MDQw\nMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29t\nL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9U\nV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzABhhpodHRwOi8vb2Nz\ncC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQAmn0jp\n+lNp188KxjKQZtpJ3mixLmuqGdH6SVpRs40BYQg/68xOPH3C6AJ17tqE6IwZMW9s\nlgiO4B7khR3ESA6Sct3zmkA8woR/KJVzzegjscHhtQUifQ+Eb9Gi0ORNnetGV+5g\n5vlrFZMptBRGUxXMo2xa+Z/NTyimpMopfXj7qCW/nQWQbzvkQGchK9IokyqV2wra\ntX68/P3zleG+LLwzoJd5AhHYSXWrIRJpClZHN+LQKkbI3MYW7+upo/1e9HEmFKxu\n5SFV3nuQm5wSOsz/ZtIL1AS8IoZYxcSe1Q/yuV9GjnxtL1jkPbzsBx4eBGxUrcIe\nsBat6SI8G58uHTpIPpqUxRYsg8w0FdjK3kNBB5QWDeXiDxzqIRzA0iE1kHeTXRZ3\n7qgGXUcce7ciW5KqeRApjQbD5BSZG2EKkQ7aaOhvxK0LiuxHZnjPW4/fdEcaCuku\nMT5qMDiF2U85V9BvanEy/xkYn4I2UeK4EdSXe7q6j+CIJz9WnoLQDbIS04GqIWe0\nVRQUlx3idUWYSJU/SG8KrEHhlJLmgSjshCwtT6qo4vHwT5WcWDLIbjMqgL1iQ6JS\n4gxXuOGia3d0I4/wec5x23EWwx9V8BtDJ8N7NDeRNmZ8RXOHSYJsVQYIQuFUEXE1\nv3WMSIxuyQMyR5FYSCG9xnKRFzNmiPngDil5IA==\n-----END CERTIFICATE-----\n\nTrustwave Global Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D99FB3B180C281020314A2D1C7640017\n-----BEGIN CERTIFICATE-----\nMIIHFDCCBPygAwIBAgITBs6C2Z+zsYDCgQIDFKLRx2QAFzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBkDE5MDcGA1UEAxMwVHJ1c3R3\nYXZlIEdsb2JhbCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYD\nVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28x\nETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBAMRO7orfWjfmz6Y6qoAmDp2lqCJcdvbRQ8w18rl1JE3j\nf/1CScZLrnLg4RDm8JiRcvFuvoMXn/XNUWy5ICG57tjG2nO7jvBuXfvbdkGA+foN\n3yJKMTX/PmmGlN4qpzFtsB0kLrP14/0TRGeJB7qDfAFH0ReFk0ftQobLBGBOpEca\n+bv+LhcTe40/uNUSK2yQ9GpIw200mcsD3B9c29Im4tSZFuA2o1vnEeizYW5M4sPX\nHu7p5ZCxjJrXVNqWUPM38rShhMUNL5uaVYWoi7TG5JXbg0Lmt2nq1k5nnig9Yp/W\nlAFooWXjKQzHf/z+XZ57bqPe7SzLW5pzpZdSmY2VRybAwEmzMjCXgHiP2ru3TpAD\n+giakPDoz3ZmbKjwYKZ5PmnOmXx0Z2GloO37MjamjPor/+fZohfyma7VAQE8znJt\nI9MVoRN3G3gW/tuT3jXfzYdFBlfGoO7OYyLN1LK5YBKH2qXrCHD8rG2DauBt7U+w\nfOvwfkp8FcdTnfQ92Xe65U3Xdu0eCgQJbChxZtWhhLnbY6xhmwAWyJ1my+Im72Kx\nGP/XcA8SH2sz6/k0782BjRckDuFpVVpTNYl9wqe/tuOrZhWPapOsRlfsDTuhgGu5\n2inM9sU3CAzmFE85zoRQFZQSof3kFN2rUZF20bmTak99cBNLli6/ja3+KntpZ08d\nAgMBAAGjggFrMIIBZzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFHM4IMZH\nbabGL3tQ4EDe3sedR958MB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6H\nMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50\ncnVzdHdhdmUuY29tL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9UV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzAB\nhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDov\nL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEB\nCwUAA4ICAQBwnSHECaf+hfGrm3Cg+aRr57ytoOSzI1DjlTNcM7k4uSt6kJRPHJ4c\nldIujMaETV52RgE6ykaMGkuIwQOIsLI6SXwjU1f5gXFUbDTS3KTWc/jwQeyLmdOe\nhvc+wBSFv8d10Sx/Qiti8mqsTqr0+N94Cx01+SkiWxWWoSZOAPkz8DMQGlD4yndK\nceTMGtQ03cLnD/36Mv6tz/Ds9l/OExrJGGxHD0tmYwYwBZpPHm7BBY2ZzycVxLcg\n+uuggcX1pg5MhJ1rDyod+7X+ilvTgH7ftHCmxvR7viMLwSUuytZ05zb2teRQgU+8\niWnPEHO/ADm5VD1Zb5Rx0579/YEENBJtGUPPJzo+JEpiZIOIlwZ69ETWWNCLZr0V\nvoi+SDl65cr+dgR9JreJ2I4W9FzS45ruxYEC8LGKEmV46sAk1YLbnIBmhehAKy9t\nP8RVz3QXYJ6rLOAuXF7R2eVV0SqfivW9bVzvBZTUTFsbdSMBAAF1BJjdRqYR63DI\ncQASY7CRoUiak1NTgPkzeV8VcNJmUt8c2eKJIifqBAjquH6+6UXs9Ol0aMPn6v0y\nB+TSuxhX2sSrpna9QcOh/QyoR5Hvcd81rZSbMc7yasKoUMXviotV1SfEqs3RU5Ts\nwnU4NHPn5ITRiuh5VMuvB/VnjnPC953u5uqAGtZ8BkC7X9cu5E0rMQ==\n-----END CERTIFICATE-----\n\nTrustwave Global Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A69703AEFE5D37D18858C74026B004\n-----BEGIN CERTIFICATE-----\nMIIHGDCCBQCgAwIBAgITBs6C2aaXA67+XTfRiFjHQCawBDANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBlDE9MDsGA1UEAxM0VHJ1c3R3\nYXZlIEdsb2JhbCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEh\nMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGlj\nYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3\nDQEBAQUAA4ICDwAwggIKAoICAQC8BzZtA3eWejFOGHc2DLgex6P471dLWIIHSlrF\nY4a2BCtzAd/VlpQ3gslWnTgthOmK2/hCc+WSaOLPVZzZf3lGnxbb0+Y87Kx+nS1m\nIfJ/4OR6o8XLMLoCTAI1jsWxggiB4NBMqsW2xXQ5VAvBb66KEQYbshNlRpTbtBFq\nEed4YIvCdjbnCUOy1zubgVHUVyCFHzN4XPjEQCtT5vZM576Lt10Je9COnqG0CtPU\nQNP2tjnSmOOYdWcVRZ0UqXUl2fMBfmSDHd8902foigjpP04AYYbq6AetqEgqdvQP\nxz5pVbZqzy8UrE/s/raJLFyTuIAYVt18M0whSgWzGgUWkq2xRqbfn7b1hd56dwRb\nR7pKc51FyTbeocnKlYLC+Dlzp7iKQ3Pb7WHRwLhaJB7u4CzwqhUxHc0xplMYsq92\nMbZ6WN5L5mI7hxY8gLMOR7vNX9CKz9XcYRS01iCDe5Y/9muW8bzGyNXLX1YaHAy4\n+6ncksb3Y3RUKj3f0+T4nbiRISmGazravJKSssBLP3kPa9h5aX+Vd00eL+Q7sXrh\nFO7xz+oWtOL5rfVszyc87JQvjw1sDHA710nViqzUE1bJZNe61EXdCb/RV+Wsu+rO\ncAMSr5x2j/wW875sh+U3EJmTzdEBUBxHnBD2mDTyonT7wL47TRXTEO1IaS4mVbnv\no0jWvQIDAQABo4IBazCCAWcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\nBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBS3\n/VNzOCaKcKuTyoupCOrH07fj/TAfBgNVHSMEGDAWgBSZ4BlnDWLbdrPaPbhb6P1C\n0jEOhzA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9z\nc2wudHJ1c3R3YXZlLmNvbS9DQTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js\nLnRydXN0d2F2ZS5jb20vVFdHQ0EuY3JsMG4GCCsGAQUFBwEBBGIwYDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wNgYIKwYBBQUHMAKGKmh0\ndHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR0NBLmNydDANBgkqhkiG\n9w0BAQsFAAOCAgEAFXwfmELpEGKUguzVTMix79XbUnkfLa7IXcqBOrwOWEF1V8F1\nxGY6jLlUTtoEXRYZwCpqOK/i4m4nmWCYE45O7URR8nqeFffceTi62t4Yvh6LkC9g\nUnj3aChLiO/Zdxilq6vfsXO0mKafrGtZXwjyskS250Pj9DsANs57QqvYN4hqbplJ\nzc95p09OUvEhPiyRyx6FyY28U+3X6+mSNMJWd4Nhr+3HtvmItLIXP2JCLxuYtu/K\n6nKcpFCFFKeF8K3PWpjsAb0hfXL4vc3WfyCYsQnvJeisyAh7yEuge2iDwl1/xXIo\nEOAyyYAxvy5UnzcAa0Z2lwjptve+jZ4gQ+A1ioYUavR3pSfBNzuJW30nZCWFadKc\nNXOPoAPkK8JLxgRBH3JboeBCXG6xgy/pXrTjyhW7/SS+Z+7eKkp9jgdTVQ12yUtc\nCiYWUuM4l240D/z+s03WOEcLTluESwFkJhzs3D9i5crTL72uSkDDmlh8HXoPAyYO\nl3Mn9cGWhd8M8IeQRXmb6O7gvvQZDoSXDVDbjBKcW1lFpi0wBxIBzLaOi4CX4OhI\nJHJ/H3duOMaltuzXLSLkc26jwHzMeq8seQRSXraXJi1t5oBKlmEWFEgq6xlH7mLW\n3TOqS19cuiSWl/CsnlLGaW8MH5YHmk+MJxQE1BcLBs6ciapvHlhLEd9EUpU=\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-256 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C4627001DECFEBF6BF5D3B1066D7E3\n-----BEGIN CERTIFICATE-----\nMIIDbTCCAxKgAwIBAgITBy8w6cRicAHez+v2v107EGbX4zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTI1NiBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAAT4KazLm94aiykBGkNQVkBrjmK77RlP627D2n3EwK3s\n49ljRkN6wiTWXHx3jPD5BBE/7mWhGWnphzGu1Deb6yzco4IBdTCCAXEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUH\nAwQwHQYDVR0OBBYEFHMQ2nwjQr8tFHfBImxM7ct8lbBYMB8GA1UdIwQYMBaAFKNB\nBqyQbdFK63WlShCZs7Ghi0r3MEEGA1UdIAQ6MDgwNgYEVR0gADAuMCwGCCsGAQUF\nBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA5BgNVHR8EMjAw\nMC6gLKAqhihodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dQMjU2Q0EuY3Js\nMHgGCCsGAQUFBwEBBGwwajAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Auc2VjdXJl\ndHJ1c3QuY29tLzA+BggrBgEFBQcwAoYyaHR0cDovL2NlcnRzLnNlY3VyZXRydXN0\nLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDSQAwRgIhAN8G\nPwKUpMgV3LZjq7fuKS96f15BrwBjmTlKhOwgX83BAiEA9WpWhzRRoKeJGAqqXrMk\nZ8RE9xRtOFBqYdv9H5CeTVk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AF531423847B85FB677932AAF80508\n-----BEGIN CERTIFICATE-----\nMIIDmDCCAz+gAwIBAgITBs6C2a9TFCOEe4X7Z3kyqvgFCDAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATWpfTIQFPkZIoXXMDN9utRU+AbLGcg\nBmLA06x2qqdcpCMlYFoJhuRWzYCiqz1mKrAvNlQYkgoHfemk92sf8iaro4IBaTCC\nAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwEwHQYDVR0OBBYEFA/DUGGZflb1xtmcOeiDWJAHuhq0MB8GA1Ud\nIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2MDQwMgYEVR0gADAq\nMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1Ud\nHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMjU2Q0Eu\nY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1\nc3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNv\nbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDRwAwRAIgICvA5ttD\n0oeUcd37iYvoQ7iMIpZINp4e1j5NrlI3UnYCIEZhimm9+1dUWAfx9ZkGmIu0HiHR\nzEZifAHbPM3SJbRu\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A20A3797CD878EB3DAA41D08680AF7\n-----BEGIN CERTIFICATE-----\nMIIDpjCCA0ugAwIBAgITBs6C2aIKN5fNh46z2qQdCGgK9zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKXHfFxFDVI6uYWZlWciFFKtYzuJ\n+IBhot3PQGikE3sjU8d9dARkZCkInqmDyP/+XiLzgrYPMy7NS8lZcRsE5p2jggFz\nMIIBbzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFAwlVqqzYgakv+7gGxtX\nzC8s9g1QMB8GA1UdIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9UV0dQMjU2Q0EuY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wu\ndHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwID\nSQAwRgIhALahroq1NScrFeCvG5uMgMKH/bo190D+Mkh2ZIojrUOfAiEAosFXFE73\n0WLRPjX2uOkLhXuA4cQEb1R1oeGDH4MNVOo=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A8B57C104843994DACD79E28633E5F\n-----BEGIN CERTIFICATE-----\nMIIDqDCCA0+gAwIBAgITBs6C2ai1fBBIQ5lNrNeeKGM+XzAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmHWo0mogvX1J61xysTqsn\n6qV06wxUH68/QJ2aDIka6beTrDoTZv3mIkyPxFTPy+9idjgSAERlBsDirgO2/NiY\no4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSv+Ju8XTSl3tA+\nFCldDY4lrbClhTAfBgNVHSMEGDAWgBSjQQaskG3RSut1pUoQmbOxoYtK9zA9BgNV\nHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9DQTA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLnRydXN0d2F2\nZS5jb20vVFdHUDI1NkNBLmNybDByBggrBgEFBQcBAQRmMGQwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8v\nc3NsLnRydXN0d2F2ZS5jb20vaXNzdWVycy9UV0dQMjU2Q0EuY3J0MAoGCCqGSM49\nBAMCA0cAMEQCIGa3JyBYlXxRN5GIIulLaDxnANNRnY4j1Et166CCC5h+AiAVUlzJ\nIJTfUDBU7jnSTKSw/F+bLIPvaC6frMZv0h+RTA==\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-384 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C58D91DEF98A7F9EB2666CFE7BE1EE\n-----BEGIN CERTIFICATE-----\nMIIDqjCCAy+gAwIBAgITBy8w6cWNkd75in+esmZs/nvh7jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTM4NCBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAAR4nTJ6MvtPBb7+L3tklhdDw0tr5FNY5Q1hsp6NR5OzZVeG\nx/X3VrCvkOsae1OEZHNqWCnnI1s/ix9qn/2+q0pPpXrT6wkN/HOQzpQaJWzCF7yX\nIfIB0o+x1Pr17UOX2qGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud\nDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4EFgQUJd3xyUp6\n6EP6L9hCmkRrWAcU2mwwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ymB07I552+gpAw\nQQYDVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMu\nc2VjdXJldHJ1c3QuY29tL0NBMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu\nc2VjdXJldHJ1c3QuY29tL1RXR1AzODRDQS5jcmwweAYIKwYBBQUHAQEEbDBqMCgG\nCCsGAQUFBzABhhxodHRwOi8vb2NzcC5zZWN1cmV0cnVzdC5jb20vMD4GCCsGAQUF\nBzAChjJodHRwOi8vY2VydHMuc2VjdXJldHJ1c3QuY29tL2lzc3VlcnMvVFdHUDM4\nNENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA8X5zwZHtdHjLIn60rwG3Z3NAa6cU\n6gOFxyF+ksTCXvWCUP0oFUqsRPMKMYE2mtdQAjEA2diuEHTPUgCQ0ynhLjged8BO\nFyzL3UlFieGGp90v58gUpfjoFq0BReAw7MPYo/Qa\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9B07A17CC5376157813389A2930A44A\n-----BEGIN CERTIFICATE-----\nMIID1TCCA1ygAwIBAgITBs6C2bB6F8xTdhV4EziaKTCkSjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAASxlBEflNumTKsypgdOscM2x6ZRpQGSyB4B\nhJScRQI81UhZvzYSwxPWcxNZwFQoV457HfqR51pviJnHltRS8MJhJ9Q9Rf1sSmy4\nW6SPsM9qnBjwfBRxghByIsEIaTW/PKyjggFpMIIBZTASBgNVHRMBAf8ECDAGAQH/\nAgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E\nFgQUp6etGGS1u/oGGEfIwJ68Zf9pAWAwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ym\nB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBz\nOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov\nL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYIKwYBBQUHAQEEZjBk\nMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA6BggrBgEF\nBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHUDM4NENB\nLmNydDAKBggqhkjOPQQDAwNnADBkAjA6fS1jRjt+DvnWSI58v4lX+8DCXbdEhDaB\nbBOS/rXwS/ntsFXqTf0B90GPv3AWlFMCMBbz6nXMwX0jKRkaFZOZx9tvwUapdq7M\n6jYpT/NnAzH68x1t3/7ysZ8lPuKIqAwdKQ==\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A331594530006781829387E40DBCB6\n-----BEGIN CERTIFICATE-----\nMIID4zCCA2igAwIBAgITBs6C2aMxWUUwAGeBgpOH5A28tjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABKcVGieqBjW3BuVza9VhkBlpGLHLZqQg\nI0GXaTpt5CogNWz6BmlZ1yAPjRnDUVfVwl57ATRtV7u+5TPFzKZ+RheFVc0iA8vl\nQ2JINGRz8XLDaivvuygQtFKSzCWn4e66cKOCAXMwggFvMBIGA1UdEwEB/wQIMAYB\nAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF\nBQcDATAdBgNVHQ4EFgQUMFfit09gayJACkNfT/oNzXO8JCcwHwYDVR0jBBgwFoAU\nVamEidLBMr0Yy2ymB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYB\nBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAs\noCqgKIYmaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYI\nKwYBBQUHAQEEZjBkMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUu\nY29tLzA6BggrBgEFBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3Vl\ncnMvVFdHUDM4NENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA6pScrGT+SruK7iON\n7iDJZfhQsjfQIhaq9sHiEXd89B8ibWOb57no/K265dPxeuALAjEA27NTMZM344eT\nX3df9B22dY5ZshsUMIiRcMo1K4B/GBO8SIA0jParkHS5g4WO5K7O\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A9D8E29837EF90BEAF59DC6551BED6\n-----BEGIN CERTIFICATE-----\nMIID5jCCA2ygAwIBAgITBs6C2anY4pg375C+r1ncZVG+1jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATvG09PrsO8UQZhH5Zw54rwgcUw\nKjC9D2V3myjD5WOa8uxdTL8PzdwPk4TCcSf6UUG1Tt74j/I+vBOi2tgMcDt68Zld\nvTj+jZT1BBYTQtYh6/dOUjmiapQU5XqoFMRNubGjggFzMIIBbzASBgNVHRMBAf8E\nCDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI\nKwYBBQUHAwEwHQYDVR0OBBYEFDoXwH5iO1eguEDKzDRHzZZ+/AmIMB8GA1UdIwQY\nMBaAFFWphInSwTK9GMtspgdOyOedvoKQMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgG\nCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1UdHwQw\nMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMzg0Q0EuY3Js\nMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9p\nc3N1ZXJzL1RXR1AzODRDQS5jcnQwCgYIKoZIzj0EAwMDaAAwZQIwMyHlVCVMacxP\nO0fC+uc4M7Eq1F9woaWBmLSSNC6EWe3nShMqsR9HrNWrOHBHucNWAjEArwrzEM8g\nJkR4iZxbyYNIn2sNEkNZt2pxqJn4G2cDDDFfOarykKVzP1aJ9OMdYUvs\n-----END CERTIFICATE-----\n\nTrustwave S/MIME SHA256 CA, Level 1\nXRamp Security Services Inc\n3A83B71EE02C3CCA1CE1A2643E9B66EA\n-----BEGIN CERTIFICATE-----\nMIIFHTCCBAWgAwIBAgIQOoO3HuAsPMoc4aJkPptm6jANBgkqhkiG9w0BAQsFADCB\ngjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk\nMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY\nUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQxMDAxMTky\nMjM4WhcNMjQwOTI4MTkyMjM4WjCBpDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCEls\nbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9s\nZGluZ3MsIEluYy4xLDAqBgNVBAMTI1RydXN0d2F2ZSBTL01JTUUgU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4c5I5giD0wEh+RuoLIJkD7a6mBlm\n+YzTtXSefGejVVYtpjclkUl4C4hEfQMCUcrBnU3ORHVprXi/Q82dKNFPac8FI9bj\n8mtq0cjdSDfXJKfdf52wPXnTjASwKyhJt+CoJik+Fz72KAkjxi+OUSpWdQBeAQra\ndbtu4UGFTgPcuU/cwpF8J0g4CGk/saVKkkJNpq5wqpfQRYl025FyKbzmRjqhB/Ta\npoHlbHMQ7aeoZ+qtDC+eWnE3AqTUHx14Z5fegjLQRmPWqqdeZafthouglbEuHt4A\neyzefTDNwyXjUiRD/n0kaNNW+lcsLpw7ouw1OU8mwQ0C7LoPJljpXRjvOwIDAQAB\no4IBaTCCAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUDDOjV6rjq9ZL\ncBs2nqPtYVDmr3QwDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYPKwYBBAGB\n7RgDAwMFBAMDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29t\nL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29j\nc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD\nVR0jBBgwFoAUxk+iPQZjhAmczmLkBKyNXLXpthswDQYJKoZIhvcNAQELBQADggEB\nAIdGLHufUegzFKVBQVWs3YAIFqCcJvdak14TMRImxJsnQWLz+jIW0olC0JATY6Ng\nxAbjIJA4wtW/tA+rgE6WcA5y3bLN3bRMQVDSu6X26hkVjvwo4/VYykOp3e9Cqlfe\ngJAsrqBQKXkUpEbYEmmorXxj6/74e//xwXTz0XS0BS9cXhONlTQffyJnMeLaunzQ\nS1x/MvALfPCHCZCTOfLDmwylKtHHu+V2Ks0HV+ZrzCBRR5W3MhGTU7PpNEMQwyGF\n+MG5eZTd0jyxOSOjaXQm7iDh0tG/iKZZegn5AhNdaHE74QEHTjK+teLQlo60QGBk\necyzakgVYZ/Ezalz8nQwhCA=\n-----END CERTIFICATE-----\n\nTrustwave XRamp Global Extended Validation CA, Level 1\nXRamp Security Services Inc\n00D3D519C2B2EB5C7040F64CBC957BBD2C\n-----BEGIN CERTIFICATE-----\nMIIFMDCCBBigAwIBAgIRANPVGcKy61xwQPZMvJV7vSwwDQYJKoZIhvcNAQELBQAw\ngYIxCzAJBgNVBAYTAlVTMR4wHAYDVQQLExV3d3cueHJhbXBzZWN1cml0eS5jb20x\nJDAiBgNVBAoTG1hSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYzEtMCsGA1UEAxMk\nWFJhbXAgR2xvYmFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDgxMjIw\nMTczMVoXDTI1MDgwOTIwMTczMVowgbcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJ\nbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhv\nbGRpbmdzLCBJbmMuMT8wPQYDVQQDEzZUcnVzdHdhdmUgWFJhbXAgR2xvYmFsIEV4\ndGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNh\nQHRydXN0d2F2ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9\nAAbj9SknrNJT9pDatGvlR386KRi0SkqIOGr+C5W91+8E8PqydEHwjrnrWt/MTLGO\n+2kfEO3TEJlWxQQqbHy8SdhjCANefLzOT1cfTfjroWBIS9yiHpBIQytAaz/td95Y\n+JKrRBVCnIR/wB5qMMQ982RWwqggD763XLma0c1AIndsZL+dXp1zET4KBreoxn3q\nRYzMIsZIL2mAJoiCOTYuOGrOMVuaQn0HSu3K7bU+CpkdLQ/j+ikcQiI10IL9oOcO\nU9Gnt/hRyUX66Gk91RIpYXhla2tIYrg7ezrAnFoZIZCb891JjFtbSEOvAAK9F5d6\nfkkjPx0432o/v1c5GRFPAgMBAAGjggFoMIIBZDASBgNVHRMBAf8ECDAGAQH/AgEA\nMB0GA1UdDgQWBBTFzrk7QkXAzQnlaOhIOoNdbI6rGDAOBgNVHQ8BAf8EBAMCAYYw\nPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRy\ndXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVz\ndHdhdmUuY29tL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZ\naHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3Nz\nbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwHQYDVR0lBBYwFAYIKwYB\nBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMZPoj0GY4QJnM5i5ASsjVy16bYb\nMA0GCSqGSIb3DQEBCwUAA4IBAQCA2N/WVTGYRGNTuvF2qKWPrQUx0/6pKmGqELl6\nNXs1bwRXCci98SkeNjiaa2dHEwcGR43/M1Y0nekXP8QCEFVqGOwaY0pnTb8wL+CI\n/HTp1zfmoCYNvtzt1fIq/+9ynLYEjX8rsrf51HIEjJJK8K3k/Ub3cFT+yJKNN2YN\nJS0IvJYlbpqS6VbcInwLcW7WvJmXUuL7t0Vtt0d2q1h5UdnJQP+skiOmN/B0zPut\nbRC4v5pNGJJmwbk58UlOSeviH2qzDGutamOJ6dFNWqQFoZorAT7fUsr3WDA4HKtx\neraYdCIRJX7weW9xpdMNsVO7Wy/Ma7Fz9fzKnOH5mnInBOof\n-----END CERTIFICATE-----\n\nSecure Global CA\nSecureTrust Corporation\n075622A4E8D48A894DF413C8F0F8EAA5\n-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx\nMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg\nQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ\niQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa\n/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ\njnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI\nHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7\nsFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w\ngZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw\nKaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG\nAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L\nURYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO\nH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm\nI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY\niNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\n-----END CERTIFICATE-----\n\nSecureTrust CA\nSecureTrust Corporation\n0CF08E5C0816A5AD427FF0EB271859D0\n-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz\nMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv\ncnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz\nZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO\n0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao\nwW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj\n7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS\n8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT\nBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg\nJYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC\nNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3\n6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/\n3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm\nD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS\nCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\n-----END CERTIFICATE-----\n\nTrustwave Global Certification Authority\nTrustwave Holdings, Inc.\n05F70E86DA49F346352EBAB2\n-----BEGIN CERTIFICATE-----\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw\nCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x\nITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1\nc3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx\nOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI\nSWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn\nswuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu\n7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8\n1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW\n80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP\nJqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l\nRtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw\nhI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10\ncoos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc\nBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n\ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud\nDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W\n0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe\nuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q\nlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB\naCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE\nsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT\nMaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe\nqu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh\nVicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8\nh6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9\nEEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK\nyeC2nOnOcXHebD8WpHk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P256 Certification Authority\nTrustwave Holdings, Inc.\n0D6A5F083F285C3E5195DF5D\n-----BEGIN CERTIFICATE-----\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN\nFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w\nDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw\nCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh\nDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P384 Certification Authority\nTrustwave Holdings, Inc.\n08BD85976C9927A48068473B\n-----BEGIN CERTIFICATE-----\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ\nj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF\n1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\nA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3\nAZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC\nMGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu\nSw==\n-----END CERTIFICATE-----\n";
|
|
48
48
|
|
|
49
49
|
var PKG_NAME = "@hpcc-js/comms";
|
|
50
|
-
var PKG_VERSION = "2.
|
|
51
|
-
var BUILD_VERSION = "2.104.
|
|
50
|
+
var PKG_VERSION = "2.91.0";
|
|
51
|
+
var BUILD_VERSION = "2.104.42";
|
|
52
52
|
|
|
53
53
|
/******************************************************************************
|
|
54
54
|
Copyright (c) Microsoft Corporation.
|
|
@@ -2199,7 +2199,7 @@ var TopologyService = /** @class */ (function (_super) {
|
|
|
2199
2199
|
return TopologyService;
|
|
2200
2200
|
}(TopologyServiceBase));
|
|
2201
2201
|
|
|
2202
|
-
|
|
2202
|
+
exports.WsWorkunits = void 0;
|
|
2203
2203
|
(function (WsWorkunits) {
|
|
2204
2204
|
(function (ECLWUActions) {
|
|
2205
2205
|
ECLWUActions["Abort"] = "Abort";
|
|
@@ -2215,6 +2215,26 @@ var WsWorkunits;
|
|
|
2215
2215
|
ECLWUActions["SetToFailed"] = "SetToFailed";
|
|
2216
2216
|
ECLWUActions["Archive"] = "Archive";
|
|
2217
2217
|
})(WsWorkunits.ECLWUActions || (WsWorkunits.ECLWUActions = {}));
|
|
2218
|
+
(function (LogSelectColumnMode) {
|
|
2219
|
+
LogSelectColumnMode[LogSelectColumnMode["MIN"] = 0] = "MIN";
|
|
2220
|
+
LogSelectColumnMode[LogSelectColumnMode["DEFAULT"] = 1] = "DEFAULT";
|
|
2221
|
+
LogSelectColumnMode[LogSelectColumnMode["ALL"] = 2] = "ALL";
|
|
2222
|
+
LogSelectColumnMode[LogSelectColumnMode["CUSTOM"] = 3] = "CUSTOM";
|
|
2223
|
+
})(WsWorkunits.LogSelectColumnMode || (WsWorkunits.LogSelectColumnMode = {}));
|
|
2224
|
+
(function (SortDirection) {
|
|
2225
|
+
SortDirection[SortDirection["ASC"] = 0] = "ASC";
|
|
2226
|
+
SortDirection[SortDirection["DSC"] = 1] = "DSC";
|
|
2227
|
+
})(WsWorkunits.SortDirection || (WsWorkunits.SortDirection = {}));
|
|
2228
|
+
(function (LogEventClass) {
|
|
2229
|
+
LogEventClass["ALL"] = "ALL";
|
|
2230
|
+
LogEventClass["DIS"] = "DIS";
|
|
2231
|
+
LogEventClass["ERR"] = "ERR";
|
|
2232
|
+
LogEventClass["WRN"] = "WRN";
|
|
2233
|
+
LogEventClass["INF"] = "INF";
|
|
2234
|
+
LogEventClass["PRO"] = "PRO";
|
|
2235
|
+
LogEventClass["MET"] = "MET";
|
|
2236
|
+
LogEventClass["EVT"] = "EVT";
|
|
2237
|
+
})(WsWorkunits.LogEventClass || (WsWorkunits.LogEventClass = {}));
|
|
2218
2238
|
(function (EclDefinitionActions) {
|
|
2219
2239
|
EclDefinitionActions["SyntaxCheck"] = "SyntaxCheck";
|
|
2220
2240
|
EclDefinitionActions["Deploy"] = "Deploy";
|
|
@@ -2225,12 +2245,6 @@ var WsWorkunits;
|
|
|
2225
2245
|
ErrorMessageFormat["json"] = "json";
|
|
2226
2246
|
ErrorMessageFormat["text"] = "text";
|
|
2227
2247
|
})(WsWorkunits.ErrorMessageFormat || (WsWorkunits.ErrorMessageFormat = {}));
|
|
2228
|
-
(function (LogSelectColumnMode) {
|
|
2229
|
-
LogSelectColumnMode[LogSelectColumnMode["MIN"] = 0] = "MIN";
|
|
2230
|
-
LogSelectColumnMode[LogSelectColumnMode["DEFAULT"] = 1] = "DEFAULT";
|
|
2231
|
-
LogSelectColumnMode[LogSelectColumnMode["ALL"] = 2] = "ALL";
|
|
2232
|
-
LogSelectColumnMode[LogSelectColumnMode["CUSTOM"] = 3] = "CUSTOM";
|
|
2233
|
-
})(WsWorkunits.LogSelectColumnMode || (WsWorkunits.LogSelectColumnMode = {}));
|
|
2234
2248
|
(function (LogAccessLogFormat) {
|
|
2235
2249
|
LogAccessLogFormat[LogAccessLogFormat["XML"] = 0] = "XML";
|
|
2236
2250
|
LogAccessLogFormat[LogAccessLogFormat["JSON"] = 1] = "JSON";
|
|
@@ -2285,11 +2299,11 @@ var WsWorkunits;
|
|
|
2285
2299
|
WUQueryActivationMode[WUQueryActivationMode["ActivateQuerySuspendPrevious"] = 2] = "ActivateQuerySuspendPrevious";
|
|
2286
2300
|
WUQueryActivationMode[WUQueryActivationMode["ActivateQueryDeletePrevious"] = 3] = "ActivateQueryDeletePrevious";
|
|
2287
2301
|
})(WsWorkunits.WUQueryActivationMode || (WsWorkunits.WUQueryActivationMode = {}));
|
|
2288
|
-
})(WsWorkunits || (WsWorkunits = {}));
|
|
2302
|
+
})(exports.WsWorkunits || (exports.WsWorkunits = {}));
|
|
2289
2303
|
var WorkunitsServiceBase = /** @class */ (function (_super) {
|
|
2290
2304
|
__extends(WorkunitsServiceBase, _super);
|
|
2291
2305
|
function WorkunitsServiceBase(optsConnection) {
|
|
2292
|
-
return _super.call(this, optsConnection, "WsWorkunits", "1.
|
|
2306
|
+
return _super.call(this, optsConnection, "WsWorkunits", "1.98") || this;
|
|
2293
2307
|
}
|
|
2294
2308
|
WorkunitsServiceBase.prototype.GVCAjaxGraph = function (request) {
|
|
2295
2309
|
return this._connection.send("GVCAjaxGraph", request, "json", false, undefined, "GVCAjaxGraphResponse");
|
|
@@ -2537,12 +2551,6 @@ var WorkunitsServiceBase = /** @class */ (function (_super) {
|
|
|
2537
2551
|
return WorkunitsServiceBase;
|
|
2538
2552
|
}(Service));
|
|
2539
2553
|
|
|
2540
|
-
/*
|
|
2541
|
-
Response structures generated via:
|
|
2542
|
-
* http://localhost:8010/WsWorkunits/WUInfo?reqjson_
|
|
2543
|
-
* http://localhost:8010/WsWorkunits/WUInfo?respjson_
|
|
2544
|
-
* http://json2ts.com/
|
|
2545
|
-
*/
|
|
2546
2554
|
exports.WUStateID = void 0;
|
|
2547
2555
|
(function (WUStateID) {
|
|
2548
2556
|
WUStateID[WUStateID["Unknown"] = 0] = "Unknown";
|
|
@@ -2705,6 +2713,9 @@ var WorkunitsServiceEx = /** @class */ (function (_super) {
|
|
|
2705
2713
|
function WorkunitsServiceEx() {
|
|
2706
2714
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2707
2715
|
}
|
|
2716
|
+
WorkunitsServiceEx.prototype.WUPublishWorkunitEx = function (request) {
|
|
2717
|
+
return this._connection.send("WUPublishWorkunit", request);
|
|
2718
|
+
};
|
|
2708
2719
|
return WorkunitsServiceEx;
|
|
2709
2720
|
}(WorkunitsServiceBase));
|
|
2710
2721
|
|
|
@@ -5126,6 +5137,13 @@ function formatNum(num) {
|
|
|
5126
5137
|
}
|
|
5127
5138
|
return num;
|
|
5128
5139
|
}
|
|
5140
|
+
function safeDelete(obj, key, prop) {
|
|
5141
|
+
if (obj[key] === undefined || obj[key][prop] === undefined)
|
|
5142
|
+
return;
|
|
5143
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype")
|
|
5144
|
+
return;
|
|
5145
|
+
delete obj[key][prop];
|
|
5146
|
+
}
|
|
5129
5147
|
var DEFINITION_LIST = "DefinitionList";
|
|
5130
5148
|
var definitionRegex = /([a-zA-Z]:)?(.*[\\\/])(.*)(\((\d+),(\d+)\))/;
|
|
5131
5149
|
var PropertyType = ["Avg", "Min", "Max", "Delta", "StdDev"];
|
|
@@ -6016,115 +6034,117 @@ var Workunit = /** @class */ (function (_super) {
|
|
|
6016
6034
|
if (request === void 0) { request = {}; }
|
|
6017
6035
|
return this.WUDetails(request).then(function (response) { return response.Scopes.Scope; });
|
|
6018
6036
|
};
|
|
6019
|
-
Workunit.prototype.
|
|
6020
|
-
|
|
6021
|
-
|
|
6022
|
-
|
|
6023
|
-
|
|
6024
|
-
|
|
6025
|
-
|
|
6026
|
-
|
|
6027
|
-
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
};
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6040
|
-
|
|
6041
|
-
for (var key in scope.Properties.Property) {
|
|
6042
|
-
var scopeProperty = scope.Properties.Property[key];
|
|
6043
|
-
if (scopeProperty.Measure === "ns") {
|
|
6044
|
-
scopeProperty.Measure = "s";
|
|
6045
|
-
}
|
|
6046
|
-
columns[scopeProperty.Name] = __assign({}, scopeProperty);
|
|
6047
|
-
delete columns[scopeProperty.Name].RawValue;
|
|
6048
|
-
delete columns[scopeProperty.Name].Formatted;
|
|
6049
|
-
switch (scopeProperty.Measure) {
|
|
6050
|
-
case "bool":
|
|
6051
|
-
props[scopeProperty.Name] = !!+scopeProperty.RawValue;
|
|
6052
|
-
break;
|
|
6053
|
-
case "sz":
|
|
6054
|
-
props[scopeProperty.Name] = +scopeProperty.RawValue;
|
|
6055
|
-
break;
|
|
6056
|
-
case "s":
|
|
6057
|
-
props[scopeProperty.Name] = +scopeProperty.RawValue / 1000000000;
|
|
6058
|
-
break;
|
|
6059
|
-
case "ns":
|
|
6060
|
-
props[scopeProperty.Name] = +scopeProperty.RawValue;
|
|
6061
|
-
break;
|
|
6062
|
-
case "ts":
|
|
6063
|
-
props[scopeProperty.Name] = new Date(+scopeProperty.RawValue / 1000).toISOString();
|
|
6064
|
-
break;
|
|
6065
|
-
case "cnt":
|
|
6066
|
-
props[scopeProperty.Name] = +scopeProperty.RawValue;
|
|
6067
|
-
break;
|
|
6068
|
-
case "cost":
|
|
6069
|
-
props[scopeProperty.Name] = +scopeProperty.RawValue / 1000000;
|
|
6070
|
-
break;
|
|
6071
|
-
case "cpu":
|
|
6072
|
-
case "skw":
|
|
6073
|
-
case "node":
|
|
6074
|
-
case "ppm":
|
|
6075
|
-
case "ip":
|
|
6076
|
-
case "cy":
|
|
6077
|
-
case "en":
|
|
6078
|
-
case "txt":
|
|
6079
|
-
case "id":
|
|
6080
|
-
case "fname":
|
|
6081
|
-
default:
|
|
6082
|
-
props[scopeProperty.Name] = scopeProperty.RawValue;
|
|
6083
|
-
}
|
|
6084
|
-
formattedProps[scopeProperty.Name] = formatNum((_a = scopeProperty.Formatted) !== null && _a !== void 0 ? _a : props[scopeProperty.Name]);
|
|
6085
|
-
}
|
|
6086
|
-
// Other properties ---
|
|
6087
|
-
}
|
|
6088
|
-
var normalizedScope = __assign({ id: scope.Id, name: scope.ScopeName, type: scope.ScopeType, Kind: scope["Kind"], Label: scope["Label"], __formattedProps: formattedProps, __groupedProps: {} }, props);
|
|
6089
|
-
if (normalizedScope[DEFINITION_LIST]) {
|
|
6090
|
-
try {
|
|
6091
|
-
var definitionList = JSON.parse(normalizedScope[DEFINITION_LIST].split("\\").join("\\\\"));
|
|
6092
|
-
normalizedScope[DEFINITION_LIST] = [];
|
|
6093
|
-
definitionList.forEach(function (definition, idx) {
|
|
6094
|
-
var _a;
|
|
6095
|
-
var matches = definition.match(definitionRegex);
|
|
6096
|
-
if (matches) {
|
|
6097
|
-
var filePath = ((_a = matches[1]) !== null && _a !== void 0 ? _a : "") + matches[2] + matches[3];
|
|
6098
|
-
var line = parseInt(matches[5]);
|
|
6099
|
-
var col = parseInt(matches[6]);
|
|
6100
|
-
normalizedScope[DEFINITION_LIST].push({ filePath: filePath, line: line, col: col });
|
|
6101
|
-
}
|
|
6102
|
-
});
|
|
6037
|
+
Workunit.prototype.normalizeDetails = function (meta, scopes) {
|
|
6038
|
+
var _a;
|
|
6039
|
+
var columns = {
|
|
6040
|
+
id: {
|
|
6041
|
+
Measure: "label"
|
|
6042
|
+
},
|
|
6043
|
+
name: {
|
|
6044
|
+
Measure: "label"
|
|
6045
|
+
},
|
|
6046
|
+
type: {
|
|
6047
|
+
Measure: "label"
|
|
6048
|
+
}
|
|
6049
|
+
};
|
|
6050
|
+
var data = [];
|
|
6051
|
+
var _loop_1 = function (scope) {
|
|
6052
|
+
var props = {};
|
|
6053
|
+
var formattedProps = {};
|
|
6054
|
+
if (scope && scope.Id && scope.Properties && scope.Properties.Property) {
|
|
6055
|
+
for (var key in scope.Properties.Property) {
|
|
6056
|
+
var scopeProperty = scope.Properties.Property[key];
|
|
6057
|
+
if (scopeProperty.Measure === "ns") {
|
|
6058
|
+
scopeProperty.Measure = "s";
|
|
6103
6059
|
}
|
|
6104
|
-
|
|
6105
|
-
|
|
6060
|
+
columns[scopeProperty.Name] = __assign({}, scopeProperty);
|
|
6061
|
+
safeDelete(columns, scopeProperty.Name, "RawValue");
|
|
6062
|
+
safeDelete(columns, scopeProperty.Name, "Formatted");
|
|
6063
|
+
switch (scopeProperty.Measure) {
|
|
6064
|
+
case "bool":
|
|
6065
|
+
props[scopeProperty.Name] = !!+scopeProperty.RawValue;
|
|
6066
|
+
break;
|
|
6067
|
+
case "sz":
|
|
6068
|
+
props[scopeProperty.Name] = +scopeProperty.RawValue;
|
|
6069
|
+
break;
|
|
6070
|
+
case "s":
|
|
6071
|
+
props[scopeProperty.Name] = +scopeProperty.RawValue / 1000000000;
|
|
6072
|
+
break;
|
|
6073
|
+
case "ns":
|
|
6074
|
+
props[scopeProperty.Name] = +scopeProperty.RawValue;
|
|
6075
|
+
break;
|
|
6076
|
+
case "ts":
|
|
6077
|
+
props[scopeProperty.Name] = new Date(+scopeProperty.RawValue / 1000).toISOString();
|
|
6078
|
+
break;
|
|
6079
|
+
case "cnt":
|
|
6080
|
+
props[scopeProperty.Name] = +scopeProperty.RawValue;
|
|
6081
|
+
break;
|
|
6082
|
+
case "cost":
|
|
6083
|
+
props[scopeProperty.Name] = +scopeProperty.RawValue / 1000000;
|
|
6084
|
+
break;
|
|
6085
|
+
case "cpu":
|
|
6086
|
+
case "skw":
|
|
6087
|
+
case "node":
|
|
6088
|
+
case "ppm":
|
|
6089
|
+
case "ip":
|
|
6090
|
+
case "cy":
|
|
6091
|
+
case "en":
|
|
6092
|
+
case "txt":
|
|
6093
|
+
case "id":
|
|
6094
|
+
case "fname":
|
|
6095
|
+
default:
|
|
6096
|
+
props[scopeProperty.Name] = scopeProperty.RawValue;
|
|
6106
6097
|
}
|
|
6098
|
+
formattedProps[scopeProperty.Name] = formatNum((_a = scopeProperty.Formatted) !== null && _a !== void 0 ? _a : props[scopeProperty.Name]);
|
|
6107
6099
|
}
|
|
6108
|
-
|
|
6109
|
-
|
|
6110
|
-
|
|
6111
|
-
|
|
6112
|
-
|
|
6113
|
-
|
|
6100
|
+
// Other properties ---
|
|
6101
|
+
}
|
|
6102
|
+
var normalizedScope = __assign({ id: scope.Id, name: scope.ScopeName, type: scope.ScopeType, Kind: scope["Kind"], Label: scope["Label"], __formattedProps: formattedProps, __groupedProps: {} }, props);
|
|
6103
|
+
if (normalizedScope[DEFINITION_LIST]) {
|
|
6104
|
+
try {
|
|
6105
|
+
var definitionList = JSON.parse(normalizedScope[DEFINITION_LIST].split("\\").join("\\\\"));
|
|
6106
|
+
normalizedScope[DEFINITION_LIST] = [];
|
|
6107
|
+
definitionList.forEach(function (definition, idx) {
|
|
6108
|
+
var _a;
|
|
6109
|
+
var matches = definition.match(definitionRegex);
|
|
6110
|
+
if (matches) {
|
|
6111
|
+
var filePath = ((_a = matches[1]) !== null && _a !== void 0 ? _a : "") + matches[2] + matches[3];
|
|
6112
|
+
var line = parseInt(matches[5]);
|
|
6113
|
+
var col = parseInt(matches[6]);
|
|
6114
|
+
normalizedScope[DEFINITION_LIST].push({ filePath: filePath, line: line, col: col });
|
|
6114
6115
|
}
|
|
6116
|
+
});
|
|
6117
|
+
}
|
|
6118
|
+
catch (e) {
|
|
6119
|
+
logger$3.error("Unexpected \"DefinitionList\": ".concat(normalizedScope[DEFINITION_LIST]));
|
|
6120
|
+
}
|
|
6121
|
+
}
|
|
6122
|
+
var dedup = {};
|
|
6123
|
+
for (var key in normalizedScope) {
|
|
6124
|
+
if (key.indexOf("__") !== 0) {
|
|
6125
|
+
var row = formatValues(normalizedScope, key, dedup);
|
|
6126
|
+
if (row) {
|
|
6127
|
+
normalizedScope.__groupedProps[row.Key] = row;
|
|
6115
6128
|
}
|
|
6116
6129
|
}
|
|
6117
|
-
data.push(normalizedScope);
|
|
6118
|
-
};
|
|
6119
|
-
for (var _i = 0, scopes_1 = scopes; _i < scopes_1.length; _i++) {
|
|
6120
|
-
var scope = scopes_1[_i];
|
|
6121
|
-
_loop_1(scope);
|
|
6122
6130
|
}
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6131
|
+
data.push(normalizedScope);
|
|
6132
|
+
};
|
|
6133
|
+
for (var _i = 0, scopes_1 = scopes; _i < scopes_1.length; _i++) {
|
|
6134
|
+
var scope = scopes_1[_i];
|
|
6135
|
+
_loop_1(scope);
|
|
6136
|
+
}
|
|
6137
|
+
return {
|
|
6138
|
+
meta: meta,
|
|
6139
|
+
columns: columns,
|
|
6140
|
+
data: data
|
|
6141
|
+
};
|
|
6142
|
+
};
|
|
6143
|
+
Workunit.prototype.fetchDetailsNormalized = function (request) {
|
|
6144
|
+
var _this = this;
|
|
6145
|
+
if (request === void 0) { request = {}; }
|
|
6146
|
+
return Promise.all([this.fetchDetailsMeta(), this.fetchDetailsRaw(request)]).then(function (promises) {
|
|
6147
|
+
return _this.normalizeDetails(promises[0], promises[1]);
|
|
6128
6148
|
});
|
|
6129
6149
|
};
|
|
6130
6150
|
Workunit.prototype.fetchInfo = function (request) {
|
|
@@ -6456,6 +6476,11 @@ var Workunit = /** @class */ (function (_super) {
|
|
|
6456
6476
|
Wait: 5000
|
|
6457
6477
|
});
|
|
6458
6478
|
};
|
|
6479
|
+
Workunit.prototype.publishEx = function (request) {
|
|
6480
|
+
var service = new WorkunitsServiceEx({ baseUrl: "" });
|
|
6481
|
+
var publishRequest = __assign({ Wuid: this.Wuid, Cluster: this.Cluster, JobName: this.Jobname, AllowForeignFiles: true, Activate: 1, Wait: 5000 }, request);
|
|
6482
|
+
return service.WUPublishWorkunitEx(publishRequest);
|
|
6483
|
+
};
|
|
6459
6484
|
Workunit.prototype.WUCDebug = function (command, opts) {
|
|
6460
6485
|
if (opts === void 0) { opts = {}; }
|
|
6461
6486
|
var optsStr = "";
|
|
@@ -7636,7 +7661,750 @@ var Topology = /** @class */ (function (_super) {
|
|
|
7636
7661
|
return Topology;
|
|
7637
7662
|
}(util.StateObject));
|
|
7638
7663
|
|
|
7664
|
+
// Ported from: https://github.com/hpcc-systems/HPCC-Platform/blob/f0ed9dbeca49c39fb55aa28fec295c89407ac663/esp/src/src/ESPGraph.ts
|
|
7665
|
+
function safeAssign(obj, key, value) {
|
|
7666
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype")
|
|
7667
|
+
return;
|
|
7668
|
+
obj[key] = value;
|
|
7669
|
+
}
|
|
7670
|
+
function xmlEncode(str) {
|
|
7671
|
+
str = "" + str;
|
|
7672
|
+
return str.replace(/&/g, "&")
|
|
7673
|
+
.replace(/"/g, """)
|
|
7674
|
+
.replace(/'/g, "'")
|
|
7675
|
+
.replace(/</g, "<")
|
|
7676
|
+
.replace(/>/g, ">")
|
|
7677
|
+
.replace(/\n/g, " ")
|
|
7678
|
+
.replace(/\r/g, " ");
|
|
7679
|
+
}
|
|
7680
|
+
function espTime2Seconds(duration) {
|
|
7681
|
+
if (!duration) {
|
|
7682
|
+
return 0;
|
|
7683
|
+
}
|
|
7684
|
+
else if (!isNaN(+duration)) {
|
|
7685
|
+
return parseFloat(duration);
|
|
7686
|
+
}
|
|
7687
|
+
var re = /(?:(?:(\d+).days.)?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+\.\d+|\d+)s))|(?:(\d+\.\d+|\d+)ms|(\d+\.\d+|\d+)us|(\d+\.\d+|\d+)ns)/;
|
|
7688
|
+
var match = re.exec(duration);
|
|
7689
|
+
if (!match)
|
|
7690
|
+
return 0;
|
|
7691
|
+
var days = +match[1] || 0;
|
|
7692
|
+
var hours = +match[2] || 0;
|
|
7693
|
+
var mins = +match[3] || 0;
|
|
7694
|
+
var secs = +match[4] || 0;
|
|
7695
|
+
var ms = +match[5] || 0;
|
|
7696
|
+
var us = +match[6] || 0;
|
|
7697
|
+
var ns = +match[7] || 0;
|
|
7698
|
+
return (days * 24 * 60 * 60) + (hours * 60 * 60) + (mins * 60) + secs + ms / 1000 + us / 1000000 + ns / 1000000000;
|
|
7699
|
+
}
|
|
7700
|
+
function unitTest(size, unit) {
|
|
7701
|
+
var nsIndex = size.indexOf(unit);
|
|
7702
|
+
if (nsIndex !== -1) {
|
|
7703
|
+
return parseFloat(size.substring(0, nsIndex));
|
|
7704
|
+
}
|
|
7705
|
+
return -1;
|
|
7706
|
+
}
|
|
7707
|
+
function espSize2Bytes(size) {
|
|
7708
|
+
if (!size) {
|
|
7709
|
+
return 0;
|
|
7710
|
+
}
|
|
7711
|
+
else if (!isNaN(+size)) {
|
|
7712
|
+
return parseFloat(size);
|
|
7713
|
+
}
|
|
7714
|
+
var retVal = unitTest(size, "Kb");
|
|
7715
|
+
if (retVal >= 0) {
|
|
7716
|
+
return retVal * 1024;
|
|
7717
|
+
}
|
|
7718
|
+
retVal = unitTest(size, "Mb");
|
|
7719
|
+
if (retVal >= 0) {
|
|
7720
|
+
return retVal * Math.pow(1024, 2);
|
|
7721
|
+
}
|
|
7722
|
+
retVal = unitTest(size, "Gb");
|
|
7723
|
+
if (retVal >= 0) {
|
|
7724
|
+
return retVal * Math.pow(1024, 3);
|
|
7725
|
+
}
|
|
7726
|
+
retVal = unitTest(size, "Tb");
|
|
7727
|
+
if (retVal >= 0) {
|
|
7728
|
+
return retVal * Math.pow(1024, 4);
|
|
7729
|
+
}
|
|
7730
|
+
retVal = unitTest(size, "Pb");
|
|
7731
|
+
if (retVal >= 0) {
|
|
7732
|
+
return retVal * Math.pow(1024, 5);
|
|
7733
|
+
}
|
|
7734
|
+
retVal = unitTest(size, "Eb");
|
|
7735
|
+
if (retVal >= 0) {
|
|
7736
|
+
return retVal * Math.pow(1024, 6);
|
|
7737
|
+
}
|
|
7738
|
+
retVal = unitTest(size, "Zb");
|
|
7739
|
+
if (retVal >= 0) {
|
|
7740
|
+
return retVal * Math.pow(1024, 7);
|
|
7741
|
+
}
|
|
7742
|
+
retVal = unitTest(size, "b");
|
|
7743
|
+
if (retVal >= 0) {
|
|
7744
|
+
return retVal;
|
|
7745
|
+
}
|
|
7746
|
+
return 0;
|
|
7747
|
+
}
|
|
7748
|
+
function espSkew2Number(skew) {
|
|
7749
|
+
if (!skew) {
|
|
7750
|
+
return 0;
|
|
7751
|
+
}
|
|
7752
|
+
return parseFloat(skew);
|
|
7753
|
+
}
|
|
7754
|
+
var GRAPH_TYPE;
|
|
7755
|
+
(function (GRAPH_TYPE) {
|
|
7756
|
+
GRAPH_TYPE[GRAPH_TYPE["UNKNOWN"] = 0] = "UNKNOWN";
|
|
7757
|
+
GRAPH_TYPE[GRAPH_TYPE["GRAPH"] = 1] = "GRAPH";
|
|
7758
|
+
GRAPH_TYPE[GRAPH_TYPE["SUBGRAPH"] = 2] = "SUBGRAPH";
|
|
7759
|
+
GRAPH_TYPE[GRAPH_TYPE["VERTEX"] = 3] = "VERTEX";
|
|
7760
|
+
GRAPH_TYPE[GRAPH_TYPE["EDGE"] = 4] = "EDGE";
|
|
7761
|
+
GRAPH_TYPE[GRAPH_TYPE["LAST"] = 5] = "LAST";
|
|
7762
|
+
})(GRAPH_TYPE || (GRAPH_TYPE = {}));
|
|
7763
|
+
var GRAPH_TYPE_STRING;
|
|
7764
|
+
(function (GRAPH_TYPE_STRING) {
|
|
7765
|
+
GRAPH_TYPE_STRING["UNKNOWN"] = "Unknown";
|
|
7766
|
+
GRAPH_TYPE_STRING["GRAPH"] = "Graph";
|
|
7767
|
+
GRAPH_TYPE_STRING["SUBGRAPH"] = "Cluster";
|
|
7768
|
+
GRAPH_TYPE_STRING["VERTEX"] = "Vertex";
|
|
7769
|
+
GRAPH_TYPE_STRING["EDGE"] = "Edge";
|
|
7770
|
+
GRAPH_TYPE_STRING["LAST"] = "Last";
|
|
7771
|
+
})(GRAPH_TYPE_STRING || (GRAPH_TYPE_STRING = {}));
|
|
7772
|
+
var LocalisedXGMMLWriter = /** @class */ (function () {
|
|
7773
|
+
function LocalisedXGMMLWriter(graph) {
|
|
7774
|
+
this.graph = graph;
|
|
7775
|
+
this.m_xgmml = "";
|
|
7776
|
+
this.m_visibleSubgraphs = {};
|
|
7777
|
+
this.m_visibleVertices = {};
|
|
7778
|
+
this.m_semiVisibleVertices = {};
|
|
7779
|
+
this.m_visibleEdges = {};
|
|
7780
|
+
}
|
|
7781
|
+
LocalisedXGMMLWriter.prototype.calcVisibility = function (items, localisationDepth, localisationDistance, noSpills) {
|
|
7782
|
+
var _this = this;
|
|
7783
|
+
this.noSpills = noSpills;
|
|
7784
|
+
items.forEach(function (item) {
|
|
7785
|
+
if (_this.graph.isVertex(item)) {
|
|
7786
|
+
_this.calcInVertexVisibility(item, localisationDistance);
|
|
7787
|
+
_this.calcOutVertexVisibility(item, localisationDistance);
|
|
7788
|
+
}
|
|
7789
|
+
else if (_this.graph.isEdge(item)) {
|
|
7790
|
+
_this.calcInVertexVisibility(item.getSource(), localisationDistance - 1);
|
|
7791
|
+
_this.calcOutVertexVisibility(item.getTarget(), localisationDistance - 1);
|
|
7792
|
+
}
|
|
7793
|
+
else if (_this.graph.isSubgraph(item)) {
|
|
7794
|
+
_this.m_visibleSubgraphs[item.__hpcc_id] = item;
|
|
7795
|
+
_this.calcSubgraphVisibility(item, localisationDepth - 1);
|
|
7796
|
+
}
|
|
7797
|
+
});
|
|
7798
|
+
this.calcVisibility2();
|
|
7799
|
+
};
|
|
7800
|
+
LocalisedXGMMLWriter.prototype.calcInVertexVisibility = function (vertex, localisationDistance) {
|
|
7801
|
+
var _this = this;
|
|
7802
|
+
if (this.noSpills && vertex.isSpill()) {
|
|
7803
|
+
localisationDistance++;
|
|
7804
|
+
}
|
|
7805
|
+
this.m_visibleVertices[vertex.__hpcc_id] = vertex;
|
|
7806
|
+
if (localisationDistance > 0) {
|
|
7807
|
+
vertex.getInEdges().forEach(function (edge) {
|
|
7808
|
+
_this.calcInVertexVisibility(edge.getSource(), localisationDistance - 1);
|
|
7809
|
+
});
|
|
7810
|
+
}
|
|
7811
|
+
};
|
|
7812
|
+
LocalisedXGMMLWriter.prototype.calcOutVertexVisibility = function (vertex, localisationDistance) {
|
|
7813
|
+
var _this = this;
|
|
7814
|
+
if (this.noSpills && vertex.isSpill()) {
|
|
7815
|
+
localisationDistance++;
|
|
7816
|
+
}
|
|
7817
|
+
this.m_visibleVertices[vertex.__hpcc_id] = vertex;
|
|
7818
|
+
if (localisationDistance > 0) {
|
|
7819
|
+
vertex.getOutEdges().forEach(function (edge) {
|
|
7820
|
+
_this.calcOutVertexVisibility(edge.getTarget(), localisationDistance - 1);
|
|
7821
|
+
});
|
|
7822
|
+
}
|
|
7823
|
+
};
|
|
7824
|
+
LocalisedXGMMLWriter.prototype.calcSubgraphVisibility = function (subgraph, localisationDepth) {
|
|
7825
|
+
var _this = this;
|
|
7826
|
+
if (localisationDepth < 0) {
|
|
7827
|
+
return;
|
|
7828
|
+
}
|
|
7829
|
+
if (localisationDepth > 0) {
|
|
7830
|
+
subgraph.__hpcc_subgraphs.forEach(function (subgraph, idx) {
|
|
7831
|
+
_this.calcSubgraphVisibility(subgraph, localisationDepth - 1);
|
|
7832
|
+
});
|
|
7833
|
+
}
|
|
7834
|
+
subgraph.__hpcc_subgraphs.forEach(function (subgraph, idx) {
|
|
7835
|
+
_this.m_visibleSubgraphs[subgraph.__hpcc_id] = subgraph;
|
|
7836
|
+
});
|
|
7837
|
+
subgraph.__hpcc_vertices.forEach(function (vertex, idx) {
|
|
7838
|
+
_this.m_visibleVertices[vertex.__hpcc_id] = vertex;
|
|
7839
|
+
});
|
|
7840
|
+
// Calculate edges that pass through the subgraph ---
|
|
7841
|
+
var dedupEdges = {};
|
|
7842
|
+
this.graph.edges.forEach(function (edge, idx) {
|
|
7843
|
+
if (edge.getSource().__hpcc_parent !== edge.getTarget().__hpcc_parent && subgraph === _this.getCommonAncestor(edge)) {
|
|
7844
|
+
// Only include one unique edge between subgraphs ---
|
|
7845
|
+
if (!dedupEdges[edge.getSource().__hpcc_parent.__hpcc_id + "::" + edge.getTarget().__hpcc_parent.__hpcc_id]) {
|
|
7846
|
+
dedupEdges[edge.getSource().__hpcc_parent.__hpcc_id + "::" + edge.getTarget().__hpcc_parent.__hpcc_id] = true;
|
|
7847
|
+
_this.m_visibleEdges[edge.__hpcc_id] = edge;
|
|
7848
|
+
}
|
|
7849
|
+
}
|
|
7850
|
+
});
|
|
7851
|
+
};
|
|
7852
|
+
LocalisedXGMMLWriter.prototype.buildVertexString = function (vertex, isPoint) {
|
|
7853
|
+
var attrStr = "";
|
|
7854
|
+
var propsStr = "";
|
|
7855
|
+
var props = vertex.getProperties();
|
|
7856
|
+
for (var key in props) {
|
|
7857
|
+
if (isPoint && key.indexOf("_kind") >= 0) {
|
|
7858
|
+
propsStr += "<att name=\"_kind\" value=\"point\"/>";
|
|
7859
|
+
}
|
|
7860
|
+
else if (key === "id" || key === "label") {
|
|
7861
|
+
attrStr += " " + key + "=\"" + xmlEncode(props[key]) + "\"";
|
|
7862
|
+
}
|
|
7863
|
+
else {
|
|
7864
|
+
propsStr += "<att name=\"" + key + "\" value=\"" + xmlEncode(props[key]) + "\"/>";
|
|
7865
|
+
}
|
|
7866
|
+
}
|
|
7867
|
+
return "<node" + attrStr + ">" + propsStr + "</node>";
|
|
7868
|
+
};
|
|
7869
|
+
LocalisedXGMMLWriter.prototype.buildEdgeString = function (edge) {
|
|
7870
|
+
var attrStr = "";
|
|
7871
|
+
var propsStr = "";
|
|
7872
|
+
var props = edge.getProperties();
|
|
7873
|
+
for (var key in props) {
|
|
7874
|
+
if (key.toLowerCase() === "id" ||
|
|
7875
|
+
key.toLowerCase() === "label" ||
|
|
7876
|
+
key.toLowerCase() === "source" ||
|
|
7877
|
+
key.toLowerCase() === "target") {
|
|
7878
|
+
attrStr += " " + key + "=\"" + xmlEncode(props[key]) + "\"";
|
|
7879
|
+
}
|
|
7880
|
+
else {
|
|
7881
|
+
propsStr += "<att name=\"" + key + "\" value=\"" + xmlEncode(props[key]) + "\"/>";
|
|
7882
|
+
}
|
|
7883
|
+
}
|
|
7884
|
+
return "<edge" + attrStr + ">" + propsStr + "</edge>";
|
|
7885
|
+
};
|
|
7886
|
+
LocalisedXGMMLWriter.prototype.getAncestors = function (v, ancestors) {
|
|
7887
|
+
var parent = v.__hpcc_parent;
|
|
7888
|
+
while (parent) {
|
|
7889
|
+
ancestors.push(parent);
|
|
7890
|
+
parent = parent.__hpcc_parent;
|
|
7891
|
+
}
|
|
7892
|
+
};
|
|
7893
|
+
LocalisedXGMMLWriter.prototype.getCommonAncestorV = function (v1, v2) {
|
|
7894
|
+
var v1_ancestors = [];
|
|
7895
|
+
var v2_ancestors = [];
|
|
7896
|
+
this.getAncestors(v1, v1_ancestors);
|
|
7897
|
+
this.getAncestors(v2, v2_ancestors);
|
|
7898
|
+
var finger1 = v1_ancestors.length - 1;
|
|
7899
|
+
var finger2 = v2_ancestors.length - 1;
|
|
7900
|
+
var retVal = null;
|
|
7901
|
+
while (finger1 >= 0 && finger2 >= 0 && v1_ancestors[finger1] === v2_ancestors[finger2]) {
|
|
7902
|
+
retVal = v1_ancestors[finger1];
|
|
7903
|
+
--finger1;
|
|
7904
|
+
--finger2;
|
|
7905
|
+
}
|
|
7906
|
+
return retVal;
|
|
7907
|
+
};
|
|
7908
|
+
LocalisedXGMMLWriter.prototype.getCommonAncestor = function (e) {
|
|
7909
|
+
return this.getCommonAncestorV(e.getSource(), e.getTarget());
|
|
7910
|
+
};
|
|
7911
|
+
LocalisedXGMMLWriter.prototype.calcAncestorVisibility = function (vertex) {
|
|
7912
|
+
var _this = this;
|
|
7913
|
+
var ancestors = [];
|
|
7914
|
+
this.getAncestors(vertex, ancestors);
|
|
7915
|
+
ancestors.forEach(function (item, idx) {
|
|
7916
|
+
_this.m_visibleSubgraphs[item.__hpcc_id] = item;
|
|
7917
|
+
});
|
|
7918
|
+
};
|
|
7919
|
+
LocalisedXGMMLWriter.prototype.calcVisibility2 = function () {
|
|
7920
|
+
var _this = this;
|
|
7921
|
+
for (var key in this.m_visibleVertices) {
|
|
7922
|
+
var vertex = this.m_visibleVertices[key];
|
|
7923
|
+
vertex.getInEdges().forEach(function (edge, idx) {
|
|
7924
|
+
_this.m_visibleEdges[edge.__hpcc_id] = edge;
|
|
7925
|
+
});
|
|
7926
|
+
vertex.getOutEdges().forEach(function (edge, idx) {
|
|
7927
|
+
_this.m_visibleEdges[edge.__hpcc_id] = edge;
|
|
7928
|
+
});
|
|
7929
|
+
this.calcAncestorVisibility(vertex);
|
|
7930
|
+
}
|
|
7931
|
+
this.calcSemiVisibleVertices();
|
|
7932
|
+
};
|
|
7933
|
+
LocalisedXGMMLWriter.prototype.addSemiVisibleEdge = function (edge) {
|
|
7934
|
+
if (edge && !this.m_visibleEdges[edge.__hpcc_id]) {
|
|
7935
|
+
this.m_visibleEdges[edge.__hpcc_id] = edge;
|
|
7936
|
+
}
|
|
7937
|
+
};
|
|
7938
|
+
LocalisedXGMMLWriter.prototype.addSemiVisibleVertex = function (vertex) {
|
|
7939
|
+
if (!this.m_visibleVertices[vertex.__hpcc_id]) {
|
|
7940
|
+
this.m_semiVisibleVertices[vertex.__hpcc_id] = vertex;
|
|
7941
|
+
this.calcAncestorVisibility(vertex);
|
|
7942
|
+
}
|
|
7943
|
+
};
|
|
7944
|
+
LocalisedXGMMLWriter.prototype.calcSemiVisibleVertices = function () {
|
|
7945
|
+
for (var key in this.m_visibleEdges) {
|
|
7946
|
+
var edge = this.m_visibleEdges[key];
|
|
7947
|
+
var source = edge.getSource();
|
|
7948
|
+
this.addSemiVisibleVertex(source);
|
|
7949
|
+
while (this.noSpills && source.isSpill()) {
|
|
7950
|
+
var inEdges = source.getInEdges();
|
|
7951
|
+
if (inEdges.length) {
|
|
7952
|
+
this.addSemiVisibleEdge(inEdges[0]);
|
|
7953
|
+
source = inEdges[0].getSource();
|
|
7954
|
+
this.addSemiVisibleVertex(source);
|
|
7955
|
+
}
|
|
7956
|
+
else {
|
|
7957
|
+
break;
|
|
7958
|
+
}
|
|
7959
|
+
}
|
|
7960
|
+
var target = edge.getTarget();
|
|
7961
|
+
this.addSemiVisibleVertex(target);
|
|
7962
|
+
while (this.noSpills && target.isSpill()) {
|
|
7963
|
+
var outEdges = target.getOutEdges();
|
|
7964
|
+
if (outEdges.length) {
|
|
7965
|
+
this.addSemiVisibleEdge(outEdges[0]);
|
|
7966
|
+
target = outEdges[0].getTarget();
|
|
7967
|
+
this.addSemiVisibleVertex(target);
|
|
7968
|
+
}
|
|
7969
|
+
else {
|
|
7970
|
+
break;
|
|
7971
|
+
}
|
|
7972
|
+
}
|
|
7973
|
+
}
|
|
7974
|
+
};
|
|
7975
|
+
LocalisedXGMMLWriter.prototype.writeXgmml = function () {
|
|
7976
|
+
var _this = this;
|
|
7977
|
+
this.subgraphVisited(this.graph.subgraphs[0], true);
|
|
7978
|
+
this.graph.edges.forEach(function (edge, idx) {
|
|
7979
|
+
_this.edgeVisited(edge);
|
|
7980
|
+
});
|
|
7981
|
+
};
|
|
7982
|
+
LocalisedXGMMLWriter.prototype.subgraphVisited = function (subgraph, root) {
|
|
7983
|
+
if (root === void 0) { root = false; }
|
|
7984
|
+
if (this.m_visibleSubgraphs[subgraph.__hpcc_id]) {
|
|
7985
|
+
var propsStr = "";
|
|
7986
|
+
this.m_xgmml += root ? "" : "<node id=\"" + subgraph.__hpcc_id + "\"><att><graph>";
|
|
7987
|
+
var xgmmlLen = this.m_xgmml.length;
|
|
7988
|
+
subgraph.walkSubgraphs(this);
|
|
7989
|
+
subgraph.walkVertices(this);
|
|
7990
|
+
if (xgmmlLen === this.m_xgmml.length) {
|
|
7991
|
+
// Add at least one child otherwise subgraphs will render as a vertex ---
|
|
7992
|
+
var vertex = subgraph.__hpcc_vertices[0];
|
|
7993
|
+
if (vertex) {
|
|
7994
|
+
this.m_xgmml += this.buildVertexString(vertex, true);
|
|
7995
|
+
}
|
|
7996
|
+
}
|
|
7997
|
+
var props = subgraph.getProperties();
|
|
7998
|
+
for (var key in props) {
|
|
7999
|
+
propsStr += "<att name=\"" + key + "\" value=\"" + xmlEncode(props[key]) + "\"/>";
|
|
8000
|
+
}
|
|
8001
|
+
this.m_xgmml += root ? "" : "</graph></att>" + propsStr + "</node>";
|
|
8002
|
+
}
|
|
8003
|
+
return false;
|
|
8004
|
+
};
|
|
8005
|
+
LocalisedXGMMLWriter.prototype.vertexVisited = function (vertex) {
|
|
8006
|
+
if (this.m_visibleVertices[vertex.__hpcc_id]) {
|
|
8007
|
+
this.m_xgmml += this.buildVertexString(vertex, false);
|
|
8008
|
+
}
|
|
8009
|
+
else if (this.m_semiVisibleVertices[vertex.__hpcc_id]) {
|
|
8010
|
+
this.m_xgmml += this.buildVertexString(vertex, true);
|
|
8011
|
+
}
|
|
8012
|
+
};
|
|
8013
|
+
LocalisedXGMMLWriter.prototype.edgeVisited = function (edge) {
|
|
8014
|
+
if (this.m_visibleEdges[edge.__hpcc_id]) {
|
|
8015
|
+
this.m_xgmml += this.buildEdgeString(edge);
|
|
8016
|
+
}
|
|
8017
|
+
};
|
|
8018
|
+
return LocalisedXGMMLWriter;
|
|
8019
|
+
}());
|
|
8020
|
+
var GraphItem = /** @class */ (function () {
|
|
8021
|
+
function GraphItem(graph, id) {
|
|
8022
|
+
this.__hpcc_graph = graph;
|
|
8023
|
+
this.__hpcc_id = id;
|
|
8024
|
+
this._globalID = id;
|
|
8025
|
+
}
|
|
8026
|
+
GraphItem.prototype.getProperties = function () {
|
|
8027
|
+
var retVal = {};
|
|
8028
|
+
for (var key in this) {
|
|
8029
|
+
if (key.indexOf("__") !== 0 && this.hasOwnProperty(key)) {
|
|
8030
|
+
retVal[key] = this[key];
|
|
8031
|
+
}
|
|
8032
|
+
}
|
|
8033
|
+
return retVal;
|
|
8034
|
+
};
|
|
8035
|
+
return GraphItem;
|
|
8036
|
+
}());
|
|
8037
|
+
var Subgraph = /** @class */ (function (_super) {
|
|
8038
|
+
__extends(Subgraph, _super);
|
|
8039
|
+
function Subgraph(graph, id) {
|
|
8040
|
+
var _this = _super.call(this, graph, id) || this;
|
|
8041
|
+
_this._globalType = id === "0" ? "Graph" : "Cluster";
|
|
8042
|
+
_this.__hpcc_subgraphs = [];
|
|
8043
|
+
_this.__hpcc_vertices = [];
|
|
8044
|
+
_this.__hpcc_edges = [];
|
|
8045
|
+
_this.id = id;
|
|
8046
|
+
return _this;
|
|
8047
|
+
}
|
|
8048
|
+
Subgraph.prototype.addSubgraph = function (subgraph) {
|
|
8049
|
+
subgraph.__hpcc_parent = this;
|
|
8050
|
+
if (!this.__hpcc_subgraphs.some(function (subgraph2) { return subgraph === subgraph2; })) {
|
|
8051
|
+
this.__hpcc_subgraphs.push(subgraph);
|
|
8052
|
+
}
|
|
8053
|
+
};
|
|
8054
|
+
Subgraph.prototype.addVertex = function (vertex) {
|
|
8055
|
+
vertex.__hpcc_parent = this;
|
|
8056
|
+
if (!this.__hpcc_vertices.some(function (vertex2) { return vertex === vertex2; })) {
|
|
8057
|
+
this.__hpcc_vertices.push(vertex);
|
|
8058
|
+
}
|
|
8059
|
+
};
|
|
8060
|
+
Subgraph.prototype.removeVertex = function (vertex) {
|
|
8061
|
+
this.__hpcc_vertices = this.__hpcc_vertices.filter(function (vertex2) { return vertex !== vertex2; });
|
|
8062
|
+
};
|
|
8063
|
+
Subgraph.prototype.addEdge = function (edge) {
|
|
8064
|
+
edge.__hpcc_parent = this;
|
|
8065
|
+
if (!this.__hpcc_edges.some(function (edge2) { return edge === edge2; })) {
|
|
8066
|
+
this.__hpcc_edges.push(edge);
|
|
8067
|
+
}
|
|
8068
|
+
};
|
|
8069
|
+
Subgraph.prototype.removeEdge = function (edge) {
|
|
8070
|
+
this.__hpcc_edges = this.__hpcc_edges.filter(function (edge2) { return edge !== edge2; });
|
|
8071
|
+
};
|
|
8072
|
+
Subgraph.prototype.remove = function () {
|
|
8073
|
+
var _this = this;
|
|
8074
|
+
this.__hpcc_subgraphs.forEach(function (subgraph) { return subgraph.__hpcc_parent = _this.__hpcc_parent; });
|
|
8075
|
+
this.__hpcc_vertices.forEach(function (vertex) { return vertex.__hpcc_parent = _this.__hpcc_parent; });
|
|
8076
|
+
this.__hpcc_edges.forEach(function (edge) { return edge.__hpcc_parent = _this.__hpcc_parent; });
|
|
8077
|
+
delete this.__hpcc_parent;
|
|
8078
|
+
this.__hpcc_graph.removeItem(this);
|
|
8079
|
+
};
|
|
8080
|
+
Subgraph.prototype.walkSubgraphs = function (visitor) {
|
|
8081
|
+
this.__hpcc_subgraphs.forEach(function (subgraph, idx) {
|
|
8082
|
+
if (visitor.subgraphVisited(subgraph)) {
|
|
8083
|
+
subgraph.walkSubgraphs(visitor);
|
|
8084
|
+
}
|
|
8085
|
+
});
|
|
8086
|
+
};
|
|
8087
|
+
Subgraph.prototype.walkVertices = function (visitor) {
|
|
8088
|
+
this.__hpcc_vertices.forEach(function (vertex, idx) {
|
|
8089
|
+
visitor.vertexVisited(vertex);
|
|
8090
|
+
});
|
|
8091
|
+
};
|
|
8092
|
+
return Subgraph;
|
|
8093
|
+
}(GraphItem));
|
|
8094
|
+
var Vertex = /** @class */ (function (_super) {
|
|
8095
|
+
__extends(Vertex, _super);
|
|
8096
|
+
function Vertex(graph, id) {
|
|
8097
|
+
var _this = _super.call(this, graph, id) || this;
|
|
8098
|
+
_this._globalType = "Vertex";
|
|
8099
|
+
return _this;
|
|
8100
|
+
}
|
|
8101
|
+
Vertex.prototype.isSpill = function () {
|
|
8102
|
+
return this._isSpill;
|
|
8103
|
+
};
|
|
8104
|
+
Vertex.prototype.remove = function () {
|
|
8105
|
+
var _a;
|
|
8106
|
+
var inVertices = this.getInVertices();
|
|
8107
|
+
if (inVertices.length <= 1) {
|
|
8108
|
+
console.warn(this.__hpcc_id + ": remove only supports single or zero inputs activities...");
|
|
8109
|
+
}
|
|
8110
|
+
this.getInEdges().forEach(function (edge) {
|
|
8111
|
+
edge.remove();
|
|
8112
|
+
});
|
|
8113
|
+
this.getOutEdges().forEach(function (edge) {
|
|
8114
|
+
edge.setSource(inVertices[0]);
|
|
8115
|
+
});
|
|
8116
|
+
(_a = this.__hpcc_parent) === null || _a === void 0 ? void 0 : _a.removeVertex(this);
|
|
8117
|
+
this.__hpcc_graph.removeItem(this);
|
|
8118
|
+
};
|
|
8119
|
+
Vertex.prototype.getInVertices = function () {
|
|
8120
|
+
return this.getInEdges().map(function (edge) {
|
|
8121
|
+
return edge.getSource();
|
|
8122
|
+
});
|
|
8123
|
+
};
|
|
8124
|
+
Vertex.prototype.getInEdges = function () {
|
|
8125
|
+
var _this = this;
|
|
8126
|
+
return this.__hpcc_graph.edges.filter(function (edge) {
|
|
8127
|
+
return edge.getTarget() === _this;
|
|
8128
|
+
});
|
|
8129
|
+
};
|
|
8130
|
+
Vertex.prototype.getOutVertices = function () {
|
|
8131
|
+
return this.getOutEdges().map(function (edge) {
|
|
8132
|
+
return edge.getTarget();
|
|
8133
|
+
});
|
|
8134
|
+
};
|
|
8135
|
+
Vertex.prototype.getOutEdges = function () {
|
|
8136
|
+
var _this = this;
|
|
8137
|
+
return this.__hpcc_graph.edges.filter(function (edge) {
|
|
8138
|
+
return edge.getSource() === _this;
|
|
8139
|
+
});
|
|
8140
|
+
};
|
|
8141
|
+
return Vertex;
|
|
8142
|
+
}(GraphItem));
|
|
8143
|
+
var Edge = /** @class */ (function (_super) {
|
|
8144
|
+
__extends(Edge, _super);
|
|
8145
|
+
function Edge(graph, id) {
|
|
8146
|
+
var _this = _super.call(this, graph, id) || this;
|
|
8147
|
+
_this._globalType = "Edge";
|
|
8148
|
+
_this._globalType = "Edge";
|
|
8149
|
+
return _this;
|
|
8150
|
+
}
|
|
8151
|
+
Edge.prototype.remove = function () {
|
|
8152
|
+
var _this = this;
|
|
8153
|
+
this.__hpcc_graph.subgraphs.forEach(function (subgraph) {
|
|
8154
|
+
subgraph.removeEdge(_this);
|
|
8155
|
+
});
|
|
8156
|
+
this.__hpcc_graph.removeItem(this);
|
|
8157
|
+
};
|
|
8158
|
+
Edge.prototype.getSource = function () {
|
|
8159
|
+
return this.__hpcc_graph.idx[this._sourceActivity || this.source];
|
|
8160
|
+
};
|
|
8161
|
+
Edge.prototype.setSource = function (source) {
|
|
8162
|
+
if (this._sourceActivity) {
|
|
8163
|
+
this._sourceActivity = source.__hpcc_id;
|
|
8164
|
+
}
|
|
8165
|
+
else if (this.source) {
|
|
8166
|
+
this.source = source.__hpcc_id;
|
|
8167
|
+
}
|
|
8168
|
+
if (this.__widget) {
|
|
8169
|
+
this.__widget.setSource(this.getSource().__widget);
|
|
8170
|
+
}
|
|
8171
|
+
};
|
|
8172
|
+
Edge.prototype.getTarget = function () {
|
|
8173
|
+
return this.__hpcc_graph.idx[this._targetActivity || this.target];
|
|
8174
|
+
};
|
|
8175
|
+
return Edge;
|
|
8176
|
+
}(GraphItem));
|
|
8177
|
+
var QueryGraph = /** @class */ (function () {
|
|
8178
|
+
function QueryGraph() {
|
|
8179
|
+
this.idx = {};
|
|
8180
|
+
this.subgraphs = [];
|
|
8181
|
+
this.vertices = [];
|
|
8182
|
+
this.edges = [];
|
|
8183
|
+
this.xgmml = "";
|
|
8184
|
+
this.clear();
|
|
8185
|
+
}
|
|
8186
|
+
QueryGraph.prototype.clear = function () {
|
|
8187
|
+
this.xgmml = "";
|
|
8188
|
+
this.idx = {};
|
|
8189
|
+
this.subgraphs = [];
|
|
8190
|
+
this.vertices = [];
|
|
8191
|
+
this.edges = [];
|
|
8192
|
+
};
|
|
8193
|
+
QueryGraph.prototype.load = function (xgmml) {
|
|
8194
|
+
this.clear();
|
|
8195
|
+
this.merge(xgmml);
|
|
8196
|
+
};
|
|
8197
|
+
QueryGraph.prototype.merge = function (xgmml) {
|
|
8198
|
+
this.xgmml = xgmml;
|
|
8199
|
+
var parser = new DOMParser();
|
|
8200
|
+
var dom = parser.parseFromString(xgmml, "text/xml");
|
|
8201
|
+
this.walkDocument(dom.documentElement, "0");
|
|
8202
|
+
};
|
|
8203
|
+
QueryGraph.prototype.isSubgraph = function (item) {
|
|
8204
|
+
return item instanceof Subgraph;
|
|
8205
|
+
};
|
|
8206
|
+
QueryGraph.prototype.isVertex = function (item) {
|
|
8207
|
+
return item instanceof Vertex;
|
|
8208
|
+
};
|
|
8209
|
+
QueryGraph.prototype.isEdge = function (item) {
|
|
8210
|
+
return item instanceof Edge;
|
|
8211
|
+
};
|
|
8212
|
+
QueryGraph.prototype.getGlobalType = function (item) {
|
|
8213
|
+
if (item instanceof Vertex) {
|
|
8214
|
+
return GRAPH_TYPE.VERTEX;
|
|
8215
|
+
}
|
|
8216
|
+
else if (item instanceof Edge) {
|
|
8217
|
+
return GRAPH_TYPE.EDGE;
|
|
8218
|
+
}
|
|
8219
|
+
else if (item instanceof Subgraph) {
|
|
8220
|
+
return GRAPH_TYPE.SUBGRAPH;
|
|
8221
|
+
}
|
|
8222
|
+
else if (item instanceof QueryGraph) {
|
|
8223
|
+
return GRAPH_TYPE.GRAPH;
|
|
8224
|
+
}
|
|
8225
|
+
return GRAPH_TYPE.UNKNOWN;
|
|
8226
|
+
};
|
|
8227
|
+
QueryGraph.prototype.getGlobalTypeString = function (item) {
|
|
8228
|
+
if (item instanceof Vertex) {
|
|
8229
|
+
return GRAPH_TYPE_STRING.VERTEX;
|
|
8230
|
+
}
|
|
8231
|
+
else if (item instanceof Edge) {
|
|
8232
|
+
return GRAPH_TYPE_STRING.EDGE;
|
|
8233
|
+
}
|
|
8234
|
+
else if (item instanceof Subgraph) {
|
|
8235
|
+
return GRAPH_TYPE_STRING.SUBGRAPH;
|
|
8236
|
+
}
|
|
8237
|
+
else if (item instanceof QueryGraph) {
|
|
8238
|
+
return GRAPH_TYPE_STRING.GRAPH;
|
|
8239
|
+
}
|
|
8240
|
+
return GRAPH_TYPE_STRING.UNKNOWN;
|
|
8241
|
+
};
|
|
8242
|
+
QueryGraph.prototype.getItem = function (docNode, id) {
|
|
8243
|
+
if (!this.idx[id]) {
|
|
8244
|
+
switch (docNode.tagName) {
|
|
8245
|
+
case "graph":
|
|
8246
|
+
var subgraph = new Subgraph(this, id);
|
|
8247
|
+
this.subgraphs.push(subgraph);
|
|
8248
|
+
this.idx[id] = subgraph;
|
|
8249
|
+
break;
|
|
8250
|
+
case "node":
|
|
8251
|
+
var vertex = new Vertex(this, id);
|
|
8252
|
+
this.vertices.push(vertex);
|
|
8253
|
+
this.idx[id] = vertex;
|
|
8254
|
+
break;
|
|
8255
|
+
case "edge":
|
|
8256
|
+
var edge = new Edge(this, id);
|
|
8257
|
+
this.edges.push(edge);
|
|
8258
|
+
this.idx[id] = edge;
|
|
8259
|
+
break;
|
|
8260
|
+
default:
|
|
8261
|
+
console.warn("Graph.getItem - Unknown Node Type!");
|
|
8262
|
+
break;
|
|
8263
|
+
}
|
|
8264
|
+
}
|
|
8265
|
+
var retVal = this.idx[id];
|
|
8266
|
+
Array.from(docNode.attributes).forEach(function (attr) {
|
|
8267
|
+
safeAssign(retVal, attr.name, attr.value);
|
|
8268
|
+
});
|
|
8269
|
+
return retVal;
|
|
8270
|
+
};
|
|
8271
|
+
QueryGraph.prototype.removeItem = function (item) {
|
|
8272
|
+
delete this.idx[item.__hpcc_id];
|
|
8273
|
+
if (item instanceof Subgraph) {
|
|
8274
|
+
this.subgraphs = this.subgraphs.filter(function (subgraph) {
|
|
8275
|
+
return item !== subgraph;
|
|
8276
|
+
});
|
|
8277
|
+
}
|
|
8278
|
+
else if (item instanceof Vertex) {
|
|
8279
|
+
this.vertices = this.vertices.filter(function (vertex) {
|
|
8280
|
+
return item !== vertex;
|
|
8281
|
+
});
|
|
8282
|
+
}
|
|
8283
|
+
else if (item instanceof Edge) {
|
|
8284
|
+
this.edges = this.edges.filter(function (edge) {
|
|
8285
|
+
return item !== edge;
|
|
8286
|
+
});
|
|
8287
|
+
}
|
|
8288
|
+
};
|
|
8289
|
+
QueryGraph.prototype.getChildByTagName = function (docNode, tagName) {
|
|
8290
|
+
var retVal = null;
|
|
8291
|
+
Array.from(docNode.childNodes).some(function (childNode, idx) {
|
|
8292
|
+
if (childNode.tagName === tagName) {
|
|
8293
|
+
retVal = childNode;
|
|
8294
|
+
return true;
|
|
8295
|
+
}
|
|
8296
|
+
});
|
|
8297
|
+
return retVal;
|
|
8298
|
+
};
|
|
8299
|
+
QueryGraph.prototype.walkDocument = function (docNode, id) {
|
|
8300
|
+
var _this = this;
|
|
8301
|
+
var retVal = this.getItem(docNode, id);
|
|
8302
|
+
docNode.childNodes.forEach(function (childNode, idx) {
|
|
8303
|
+
switch (childNode.nodeType) {
|
|
8304
|
+
case 1: // ELEMENT_NODE
|
|
8305
|
+
switch (childNode.tagName) {
|
|
8306
|
+
case "graph":
|
|
8307
|
+
break;
|
|
8308
|
+
case "node":
|
|
8309
|
+
var isSubgraph = false;
|
|
8310
|
+
var attNode = _this.getChildByTagName(childNode, "att");
|
|
8311
|
+
if (attNode) {
|
|
8312
|
+
var graphNode = _this.getChildByTagName(attNode, "graph");
|
|
8313
|
+
if (graphNode) {
|
|
8314
|
+
isSubgraph = true;
|
|
8315
|
+
var subgraph = _this.walkDocument(graphNode, childNode.getAttribute("id"));
|
|
8316
|
+
retVal.addSubgraph(subgraph);
|
|
8317
|
+
}
|
|
8318
|
+
}
|
|
8319
|
+
if (!isSubgraph) {
|
|
8320
|
+
var vertex = _this.walkDocument(childNode, childNode.getAttribute("id"));
|
|
8321
|
+
retVal.addVertex(vertex);
|
|
8322
|
+
}
|
|
8323
|
+
break;
|
|
8324
|
+
case "att":
|
|
8325
|
+
var name_1 = childNode.getAttribute("name");
|
|
8326
|
+
var uname = "_" + name_1;
|
|
8327
|
+
var value = childNode.getAttribute("value");
|
|
8328
|
+
if (name_1.indexOf("Time") === 0) {
|
|
8329
|
+
safeAssign(retVal, uname, value);
|
|
8330
|
+
safeAssign(retVal, name_1, "" + espTime2Seconds(value));
|
|
8331
|
+
}
|
|
8332
|
+
else if (name_1.indexOf("Size") === 0) {
|
|
8333
|
+
safeAssign(retVal, uname, value);
|
|
8334
|
+
safeAssign(retVal, name_1, "" + espSize2Bytes(value));
|
|
8335
|
+
}
|
|
8336
|
+
else if (name_1.indexOf("Skew") === 0) {
|
|
8337
|
+
safeAssign(retVal, uname, value);
|
|
8338
|
+
safeAssign(retVal, name_1, "" + espSkew2Number(value));
|
|
8339
|
+
}
|
|
8340
|
+
else {
|
|
8341
|
+
safeAssign(retVal, name_1, value);
|
|
8342
|
+
}
|
|
8343
|
+
break;
|
|
8344
|
+
case "edge":
|
|
8345
|
+
var edge = _this.walkDocument(childNode, childNode.getAttribute("id"));
|
|
8346
|
+
if (edge.NumRowsProcessed !== undefined) {
|
|
8347
|
+
edge._eclwatchCount = edge.NumRowsProcessed.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
8348
|
+
}
|
|
8349
|
+
else if (edge.Count !== undefined) {
|
|
8350
|
+
edge._eclwatchCount = edge.Count.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
8351
|
+
}
|
|
8352
|
+
else if (edge.count !== undefined) {
|
|
8353
|
+
edge._eclwatchCount = edge.count.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
8354
|
+
}
|
|
8355
|
+
if (edge.inputProgress) {
|
|
8356
|
+
edge._eclwatchInputProgress = "[" + edge.inputProgress.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "]";
|
|
8357
|
+
}
|
|
8358
|
+
if (edge.SkewMaxRowsProcessed && edge.SkewMinRowsProcessed) {
|
|
8359
|
+
edge._eclwatchSkew = "+" + edge.SkewMaxRowsProcessed + ", " + edge.SkewMinRowsProcessed;
|
|
8360
|
+
}
|
|
8361
|
+
if (edge._dependsOn) ;
|
|
8362
|
+
else if (edge._childGraph) ;
|
|
8363
|
+
else if (edge._sourceActivity || edge._targetActivity) {
|
|
8364
|
+
edge._isSpill = true;
|
|
8365
|
+
var source = edge.getSource();
|
|
8366
|
+
source._isSpill = true;
|
|
8367
|
+
var target = edge.getTarget();
|
|
8368
|
+
target._isSpill = true;
|
|
8369
|
+
}
|
|
8370
|
+
retVal.addEdge(edge);
|
|
8371
|
+
break;
|
|
8372
|
+
}
|
|
8373
|
+
break;
|
|
8374
|
+
}
|
|
8375
|
+
});
|
|
8376
|
+
return retVal;
|
|
8377
|
+
};
|
|
8378
|
+
QueryGraph.prototype.removeSubgraphs = function () {
|
|
8379
|
+
var subgraphs = __spreadArray([], this.subgraphs, true);
|
|
8380
|
+
subgraphs.forEach(function (subgraph) {
|
|
8381
|
+
if (subgraph.__hpcc_parent instanceof Subgraph) {
|
|
8382
|
+
subgraph.remove();
|
|
8383
|
+
}
|
|
8384
|
+
});
|
|
8385
|
+
};
|
|
8386
|
+
QueryGraph.prototype.removeSpillVertices = function () {
|
|
8387
|
+
var vertices = __spreadArray([], this.vertices, true);
|
|
8388
|
+
vertices.forEach(function (vertex) {
|
|
8389
|
+
if (vertex.isSpill()) {
|
|
8390
|
+
vertex.remove();
|
|
8391
|
+
}
|
|
8392
|
+
});
|
|
8393
|
+
};
|
|
8394
|
+
QueryGraph.prototype.getLocalisedXGMML = function (items, localisationDepth, localisationDistance, noSpills) {
|
|
8395
|
+
var xgmmlWriter = new LocalisedXGMMLWriter(this);
|
|
8396
|
+
xgmmlWriter.calcVisibility(items, localisationDepth, localisationDistance, noSpills);
|
|
8397
|
+
xgmmlWriter.writeXgmml();
|
|
8398
|
+
return "<graph>" + xgmmlWriter.m_xgmml + "</graph>";
|
|
8399
|
+
};
|
|
8400
|
+
return QueryGraph;
|
|
8401
|
+
}());
|
|
8402
|
+
|
|
7639
8403
|
var logger$2 = util.scopedLogger("@hpcc-js/comms/ecl/query.ts");
|
|
8404
|
+
var siFormatter = format("~s");
|
|
8405
|
+
function isNumber(n) {
|
|
8406
|
+
return !isNaN(parseFloat(n)) && !isNaN(n - 0);
|
|
8407
|
+
}
|
|
7640
8408
|
var QueryCache = /** @class */ (function (_super) {
|
|
7641
8409
|
__extends(QueryCache, _super);
|
|
7642
8410
|
function QueryCache() {
|
|
@@ -7912,6 +8680,66 @@ var Query = /** @class */ (function (_super) {
|
|
|
7912
8680
|
Query.prototype.fetchSummaryStats = function () {
|
|
7913
8681
|
return this.wsWorkunitsService.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });
|
|
7914
8682
|
};
|
|
8683
|
+
Query.prototype.fetchGraph = function (GraphName, SubGraphId) {
|
|
8684
|
+
if (GraphName === void 0) { GraphName = ""; }
|
|
8685
|
+
if (SubGraphId === void 0) { SubGraphId = ""; }
|
|
8686
|
+
return this.wsWorkunitsService.WUQueryGetGraph({ Target: this.QuerySet, QueryId: this.QueryId, GraphName: GraphName, SubGraphId: SubGraphId }).then(function (response) {
|
|
8687
|
+
var _a;
|
|
8688
|
+
var graph = new QueryGraph();
|
|
8689
|
+
var first = true;
|
|
8690
|
+
for (var _i = 0, _b = ((_a = response === null || response === void 0 ? void 0 : response.Graphs) === null || _a === void 0 ? void 0 : _a.ECLGraphEx) || []; _i < _b.length; _i++) {
|
|
8691
|
+
var graphItem = _b[_i];
|
|
8692
|
+
if (first) {
|
|
8693
|
+
graph.load(graphItem.Graph);
|
|
8694
|
+
first = false;
|
|
8695
|
+
}
|
|
8696
|
+
else {
|
|
8697
|
+
graph.merge(graphItem.Graph);
|
|
8698
|
+
}
|
|
8699
|
+
}
|
|
8700
|
+
return graph;
|
|
8701
|
+
});
|
|
8702
|
+
};
|
|
8703
|
+
Query.prototype.fetchDetailsNormalized = function (request) {
|
|
8704
|
+
if (request === void 0) { request = {}; }
|
|
8705
|
+
var wu = Workunit.attach(this.wsWorkunitsService, this.Wuid);
|
|
8706
|
+
if (wu) {
|
|
8707
|
+
return Promise.all([this.fetchGraph(), wu.fetchDetailsMeta(), wu.fetchDetailsRaw(request)]).then(function (promises) {
|
|
8708
|
+
var graph = promises[0];
|
|
8709
|
+
var meta = promises[1];
|
|
8710
|
+
var metrics = promises[2];
|
|
8711
|
+
var data = metrics.map(function (metric) {
|
|
8712
|
+
if (metric.Id[0] === "a" || metric.Id[0] === "e") {
|
|
8713
|
+
var item = graph.idx[metric.Id.substring(1)];
|
|
8714
|
+
var _loop_1 = function (key) {
|
|
8715
|
+
if (key.charAt(0) !== "_" && key.charAt(0) === key.charAt(0).toUpperCase() && (typeof item[key] === "string" || typeof item[key] === "number" || typeof item[key] === "boolean")) {
|
|
8716
|
+
if (!metric.Properties.Property.some(function (row) { return row.Name === key; })) {
|
|
8717
|
+
var isNum = isNumber(item[key]);
|
|
8718
|
+
var rawValue = isNum ? parseFloat(item[key]) : item[key];
|
|
8719
|
+
var formatted = item[key];
|
|
8720
|
+
if (key.indexOf("Time") >= 0) {
|
|
8721
|
+
rawValue = rawValue / 1000000000;
|
|
8722
|
+
formatted = siFormatter(rawValue) + "s";
|
|
8723
|
+
}
|
|
8724
|
+
metric.Properties.Property.push({
|
|
8725
|
+
Name: key,
|
|
8726
|
+
RawValue: rawValue,
|
|
8727
|
+
Formatted: formatted
|
|
8728
|
+
});
|
|
8729
|
+
}
|
|
8730
|
+
}
|
|
8731
|
+
};
|
|
8732
|
+
for (var key in item) {
|
|
8733
|
+
_loop_1(key);
|
|
8734
|
+
}
|
|
8735
|
+
}
|
|
8736
|
+
return metric;
|
|
8737
|
+
});
|
|
8738
|
+
return wu.normalizeDetails(meta, data);
|
|
8739
|
+
});
|
|
8740
|
+
}
|
|
8741
|
+
return Promise.resolve({ meta: undefined, columns: undefined, data: undefined });
|
|
8742
|
+
};
|
|
7915
8743
|
Query.prototype.submit = function (request) {
|
|
7916
8744
|
var _a;
|
|
7917
8745
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -9808,6 +10636,7 @@ exports.PKG_VERSION = PKG_VERSION;
|
|
|
9808
10636
|
exports.PackageProcessService = PackageProcessService;
|
|
9809
10637
|
exports.PropertyType = PropertyType;
|
|
9810
10638
|
exports.Query = Query;
|
|
10639
|
+
exports.QueryGraph = QueryGraph;
|
|
9811
10640
|
exports.RelatedProperty = RelatedProperty;
|
|
9812
10641
|
exports.Resource = Resource;
|
|
9813
10642
|
exports.ResourcesService = ResourcesService;
|