@serve.zone/dcrouter 11.0.39 → 11.0.40
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_serve/bundle.js +1 -1
- package/dist_ts/errors/base.errors.js +320 -0
- package/dist_ts/errors/error.codes.d.ts +115 -0
- package/dist_ts/errors/error.codes.js +136 -0
- package/dist_ts/monitoring/classes.metricsmanager.d.ts +178 -0
- package/dist_ts/monitoring/classes.metricsmanager.js +642 -0
- package/dist_ts/monitoring/index.d.ts +1 -0
- package/dist_ts/monitoring/index.js +2 -0
- package/dist_ts/opsserver/classes.opsserver.d.ts +37 -0
- package/dist_ts/opsserver/classes.opsserver.js +85 -0
- package/dist_ts/opsserver/handlers/api-token.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/api-token.handler.js +62 -0
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +32 -0
- package/dist_ts/opsserver/handlers/certificate.handler.js +421 -0
- package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +30 -0
- package/dist_ts/opsserver/handlers/email-ops.handler.js +227 -0
- package/dist_ts/opsserver/handlers/index.d.ts +11 -0
- package/dist_ts/opsserver/handlers/index.js +12 -0
- package/dist_ts/opsserver/handlers/radius.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/radius.handler.js +295 -0
- package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +6 -0
- package/dist_ts/opsserver/handlers/remoteingress.handler.js +156 -0
- package/dist_ts/opsserver/handlers/route-management.handler.d.ts +14 -0
- package/dist_ts/opsserver/handlers/route-management.handler.js +117 -0
- package/dist_ts/opsserver/handlers/security.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/security.handler.js +231 -0
- package/dist_ts/opsserver/handlers/stats.handler.d.ts +11 -0
- package/dist_ts/opsserver/handlers/stats.handler.js +399 -0
- package/dist_ts/opsserver/helpers/guards.d.ts +27 -0
- package/dist_ts/opsserver/helpers/guards.js +43 -0
- package/dist_ts/opsserver/index.d.ts +1 -0
- package/dist_ts/opsserver/index.js +2 -0
- package/dist_ts/radius/classes.accounting.manager.d.ts +218 -0
- package/dist_ts/radius/classes.accounting.manager.js +417 -0
- package/dist_ts/radius/classes.radius.server.d.ts +171 -0
- package/dist_ts/radius/classes.radius.server.js +385 -0
- package/dist_ts/radius/classes.vlan.manager.d.ts +128 -0
- package/dist_ts/radius/classes.vlan.manager.js +279 -0
- package/dist_ts/radius/index.d.ts +13 -0
- package/dist_ts/radius/index.js +14 -0
- package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +82 -0
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +227 -0
- package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +59 -0
- package/dist_ts/remoteingress/classes.tunnel-manager.js +165 -0
- package/dist_ts/remoteingress/index.d.ts +2 -0
- package/dist_ts/remoteingress/index.js +3 -0
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
package/dist_serve/bundle.js
CHANGED
|
@@ -39328,4 +39328,4 @@ ibantools/jsnext/ibantools.js:
|
|
|
39328
39328
|
* @preferred
|
|
39329
39329
|
*)
|
|
39330
39330
|
*/
|
|
39331
|
-
//# sourceMappingURL=bundle-
|
|
39331
|
+
//# sourceMappingURL=bundle-1772723999370.js.map
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { ErrorSeverity, ErrorCategory, ErrorRecoverability } from './error.codes.js';
|
|
2
|
+
import { logger } from '../logger.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all errors in the Platform Service
|
|
5
|
+
* Adds structured error information, logging, and error tracking
|
|
6
|
+
*/
|
|
7
|
+
export class PlatformError extends Error {
|
|
8
|
+
/** Error code identifying the specific error type */
|
|
9
|
+
code;
|
|
10
|
+
/** Error severity level */
|
|
11
|
+
severity;
|
|
12
|
+
/** Error category for grouping related errors */
|
|
13
|
+
category;
|
|
14
|
+
/** Whether the error can be recovered from automatically */
|
|
15
|
+
recoverability;
|
|
16
|
+
/** Additional context information */
|
|
17
|
+
context;
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new PlatformError
|
|
20
|
+
*
|
|
21
|
+
* @param message Error message
|
|
22
|
+
* @param code Error code from error.codes.ts
|
|
23
|
+
* @param severity Error severity level
|
|
24
|
+
* @param category Error category
|
|
25
|
+
* @param recoverability Error recoverability indication
|
|
26
|
+
* @param context Additional context information
|
|
27
|
+
*/
|
|
28
|
+
constructor(message, code, severity = ErrorSeverity.MEDIUM, category = ErrorCategory.OTHER, recoverability = ErrorRecoverability.NON_RECOVERABLE, context = {}) {
|
|
29
|
+
super(message);
|
|
30
|
+
// Set error metadata
|
|
31
|
+
this.name = this.constructor.name;
|
|
32
|
+
this.code = code;
|
|
33
|
+
this.severity = severity;
|
|
34
|
+
this.category = category;
|
|
35
|
+
this.recoverability = recoverability;
|
|
36
|
+
// Add timestamp if not provided
|
|
37
|
+
this.context = {
|
|
38
|
+
...context,
|
|
39
|
+
timestamp: context.timestamp || Date.now(),
|
|
40
|
+
};
|
|
41
|
+
// Capture stack trace
|
|
42
|
+
Error.captureStackTrace(this, this.constructor);
|
|
43
|
+
// Log the error automatically unless explicitly disabled
|
|
44
|
+
if (!context.data?.skipLogging) {
|
|
45
|
+
this.logError();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Logs the error using the platform logger
|
|
50
|
+
*/
|
|
51
|
+
logError() {
|
|
52
|
+
const logLevel = this.getLogLevelFromSeverity();
|
|
53
|
+
// Construct structured log entry
|
|
54
|
+
const logData = {
|
|
55
|
+
error_code: this.code,
|
|
56
|
+
error_name: this.name,
|
|
57
|
+
severity: this.severity,
|
|
58
|
+
category: this.category,
|
|
59
|
+
recoverability: this.recoverability,
|
|
60
|
+
...this.context
|
|
61
|
+
};
|
|
62
|
+
// Log with appropriate level
|
|
63
|
+
logger.log(logLevel, this.message, logData);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Maps severity levels to log levels
|
|
67
|
+
*/
|
|
68
|
+
getLogLevelFromSeverity() {
|
|
69
|
+
switch (this.severity) {
|
|
70
|
+
case ErrorSeverity.CRITICAL:
|
|
71
|
+
case ErrorSeverity.HIGH:
|
|
72
|
+
return 'error';
|
|
73
|
+
case ErrorSeverity.MEDIUM:
|
|
74
|
+
return 'warn';
|
|
75
|
+
case ErrorSeverity.LOW:
|
|
76
|
+
return 'info';
|
|
77
|
+
case ErrorSeverity.INFO:
|
|
78
|
+
return 'debug';
|
|
79
|
+
default:
|
|
80
|
+
return 'error';
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns a JSON representation of the error
|
|
85
|
+
*/
|
|
86
|
+
toJSON() {
|
|
87
|
+
return {
|
|
88
|
+
name: this.name,
|
|
89
|
+
message: this.message,
|
|
90
|
+
code: this.code,
|
|
91
|
+
severity: this.severity,
|
|
92
|
+
category: this.category,
|
|
93
|
+
recoverability: this.recoverability,
|
|
94
|
+
context: this.context,
|
|
95
|
+
stack: process.env.NODE_ENV !== 'production' ? this.stack : undefined
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Creates an instance with retry information
|
|
100
|
+
*
|
|
101
|
+
* @param maxRetries Maximum number of retries
|
|
102
|
+
* @param currentRetry Current retry count
|
|
103
|
+
* @param retryDelay Delay between retries in ms
|
|
104
|
+
*/
|
|
105
|
+
withRetry(maxRetries, currentRetry = 0, retryDelay = 1000) {
|
|
106
|
+
const nextRetryAt = Date.now() + retryDelay;
|
|
107
|
+
// Clone the error with updated context
|
|
108
|
+
const newContext = {
|
|
109
|
+
...this.context,
|
|
110
|
+
retry: {
|
|
111
|
+
maxRetries,
|
|
112
|
+
currentRetry,
|
|
113
|
+
nextRetryAt,
|
|
114
|
+
retryDelay
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
// Create a new instance using the protected method that subclasses can override
|
|
118
|
+
const newError = this.createWithContext(newContext);
|
|
119
|
+
// Update recoverability if we can retry
|
|
120
|
+
if (currentRetry < maxRetries && newError.recoverability === ErrorRecoverability.NON_RECOVERABLE) {
|
|
121
|
+
newError.recoverability = ErrorRecoverability.MAYBE_RECOVERABLE;
|
|
122
|
+
}
|
|
123
|
+
return newError;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Protected method to create a new instance with updated context
|
|
127
|
+
* Subclasses can override this to handle their own constructor signatures
|
|
128
|
+
*/
|
|
129
|
+
createWithContext(context) {
|
|
130
|
+
// Default implementation for PlatformError
|
|
131
|
+
return new this.constructor(this.message, this.code, this.severity, this.category, this.recoverability, context);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Checks if the error should be retried based on retry information
|
|
135
|
+
*/
|
|
136
|
+
shouldRetry() {
|
|
137
|
+
const { retry } = this.context;
|
|
138
|
+
if (!retry)
|
|
139
|
+
return false;
|
|
140
|
+
return retry.currentRetry < retry.maxRetries;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Returns a user-friendly message that is safe to display to end users
|
|
144
|
+
*/
|
|
145
|
+
getUserMessage() {
|
|
146
|
+
return this.context.userMessage || 'An unexpected error occurred.';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Error class for validation errors
|
|
151
|
+
*/
|
|
152
|
+
export class ValidationError extends PlatformError {
|
|
153
|
+
/**
|
|
154
|
+
* Creates a new validation error
|
|
155
|
+
*
|
|
156
|
+
* @param message Error message
|
|
157
|
+
* @param code Error code
|
|
158
|
+
* @param context Additional context
|
|
159
|
+
*/
|
|
160
|
+
constructor(message, code, context = {}) {
|
|
161
|
+
super(message, code, ErrorSeverity.LOW, ErrorCategory.VALIDATION, ErrorRecoverability.NON_RECOVERABLE, context);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Creates a new instance with updated context
|
|
165
|
+
* Overrides the base implementation to handle ValidationError's constructor signature
|
|
166
|
+
*/
|
|
167
|
+
createWithContext(context) {
|
|
168
|
+
return new this.constructor(this.message, this.code, context);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Error class for configuration errors
|
|
173
|
+
*/
|
|
174
|
+
export class ConfigurationError extends PlatformError {
|
|
175
|
+
/**
|
|
176
|
+
* Creates a new configuration error
|
|
177
|
+
*
|
|
178
|
+
* @param message Error message
|
|
179
|
+
* @param code Error code
|
|
180
|
+
* @param context Additional context
|
|
181
|
+
*/
|
|
182
|
+
constructor(message, code, context = {}) {
|
|
183
|
+
super(message, code, ErrorSeverity.MEDIUM, ErrorCategory.CONFIGURATION, ErrorRecoverability.NON_RECOVERABLE, context);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Creates a new instance with updated context
|
|
187
|
+
* Overrides the base implementation to handle ConfigurationError's constructor signature
|
|
188
|
+
*/
|
|
189
|
+
createWithContext(context) {
|
|
190
|
+
return new this.constructor(this.message, this.code, context);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Error class for network-related errors
|
|
195
|
+
*/
|
|
196
|
+
export class NetworkError extends PlatformError {
|
|
197
|
+
/**
|
|
198
|
+
* Creates a new network error
|
|
199
|
+
*
|
|
200
|
+
* @param message Error message
|
|
201
|
+
* @param code Error code
|
|
202
|
+
* @param context Additional context
|
|
203
|
+
*/
|
|
204
|
+
constructor(message, code, context = {}) {
|
|
205
|
+
super(message, code, ErrorSeverity.MEDIUM, ErrorCategory.CONNECTIVITY, ErrorRecoverability.MAYBE_RECOVERABLE, context);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Creates a new instance with updated context
|
|
209
|
+
* Overrides the base implementation to handle NetworkError's constructor signature
|
|
210
|
+
*/
|
|
211
|
+
createWithContext(context) {
|
|
212
|
+
return new this.constructor(this.message, this.code, context);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Error class for resource availability errors (rate limits, quotas)
|
|
217
|
+
*/
|
|
218
|
+
export class ResourceError extends PlatformError {
|
|
219
|
+
/**
|
|
220
|
+
* Creates a new resource error
|
|
221
|
+
*
|
|
222
|
+
* @param message Error message
|
|
223
|
+
* @param code Error code
|
|
224
|
+
* @param context Additional context
|
|
225
|
+
*/
|
|
226
|
+
constructor(message, code, context = {}) {
|
|
227
|
+
super(message, code, ErrorSeverity.MEDIUM, ErrorCategory.RESOURCE, ErrorRecoverability.MAYBE_RECOVERABLE, context);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Creates a new instance with updated context
|
|
231
|
+
* Overrides the base implementation to handle ResourceError's constructor signature
|
|
232
|
+
*/
|
|
233
|
+
createWithContext(context) {
|
|
234
|
+
return new this.constructor(this.message, this.code, context);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Error class for authentication/authorization errors
|
|
239
|
+
*/
|
|
240
|
+
export class AuthenticationError extends PlatformError {
|
|
241
|
+
/**
|
|
242
|
+
* Creates a new authentication error
|
|
243
|
+
*
|
|
244
|
+
* @param message Error message
|
|
245
|
+
* @param code Error code
|
|
246
|
+
* @param context Additional context
|
|
247
|
+
*/
|
|
248
|
+
constructor(message, code, context = {}) {
|
|
249
|
+
super(message, code, ErrorSeverity.HIGH, ErrorCategory.AUTHENTICATION, ErrorRecoverability.NON_RECOVERABLE, context);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Creates a new instance with updated context
|
|
253
|
+
* Overrides the base implementation to handle AuthenticationError's constructor signature
|
|
254
|
+
*/
|
|
255
|
+
createWithContext(context) {
|
|
256
|
+
return new this.constructor(this.message, this.code, context);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Error class for operation errors (API calls, processing)
|
|
261
|
+
*/
|
|
262
|
+
export class OperationError extends PlatformError {
|
|
263
|
+
/**
|
|
264
|
+
* Creates a new operation error
|
|
265
|
+
*
|
|
266
|
+
* @param message Error message
|
|
267
|
+
* @param code Error code
|
|
268
|
+
* @param context Additional context
|
|
269
|
+
*/
|
|
270
|
+
constructor(message, code, context = {}) {
|
|
271
|
+
super(message, code, ErrorSeverity.MEDIUM, ErrorCategory.OPERATION, ErrorRecoverability.MAYBE_RECOVERABLE, context);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Creates a new instance with updated context
|
|
275
|
+
* Overrides the base implementation to handle OperationError's constructor signature
|
|
276
|
+
*/
|
|
277
|
+
createWithContext(context) {
|
|
278
|
+
return new this.constructor(this.message, this.code, context);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Error class for critical system errors
|
|
283
|
+
*/
|
|
284
|
+
export class SystemError extends PlatformError {
|
|
285
|
+
/**
|
|
286
|
+
* Creates a new system error
|
|
287
|
+
*
|
|
288
|
+
* @param message Error message
|
|
289
|
+
* @param code Error code
|
|
290
|
+
* @param context Additional context
|
|
291
|
+
*/
|
|
292
|
+
constructor(message, code, context = {}) {
|
|
293
|
+
super(message, code, ErrorSeverity.CRITICAL, ErrorCategory.OTHER, ErrorRecoverability.NON_RECOVERABLE, context);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Helper to get the appropriate error class based on error category
|
|
298
|
+
*
|
|
299
|
+
* @param category Error category
|
|
300
|
+
* @returns The appropriate error class
|
|
301
|
+
*/
|
|
302
|
+
export function getErrorClassForCategory(category) {
|
|
303
|
+
switch (category) {
|
|
304
|
+
case ErrorCategory.VALIDATION:
|
|
305
|
+
return ValidationError;
|
|
306
|
+
case ErrorCategory.CONFIGURATION:
|
|
307
|
+
return ConfigurationError;
|
|
308
|
+
case ErrorCategory.CONNECTIVITY:
|
|
309
|
+
return NetworkError;
|
|
310
|
+
case ErrorCategory.RESOURCE:
|
|
311
|
+
return ResourceError;
|
|
312
|
+
case ErrorCategory.AUTHENTICATION:
|
|
313
|
+
return AuthenticationError;
|
|
314
|
+
case ErrorCategory.OPERATION:
|
|
315
|
+
return OperationError;
|
|
316
|
+
default:
|
|
317
|
+
return PlatformError;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9lcnJvcnMvYmFzZS5lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBb0R0Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFDdEMscURBQXFEO0lBQ3JDLElBQUksQ0FBUztJQUU3QiwyQkFBMkI7SUFDWCxRQUFRLENBQWdCO0lBRXhDLGlEQUFpRDtJQUNqQyxRQUFRLENBQWdCO0lBRXhDLDREQUE0RDtJQUM1QyxjQUFjLENBQXNCO0lBRXBELHFDQUFxQztJQUNyQixPQUFPLENBQWdCO0lBRXZDOzs7Ozs7Ozs7T0FTRztJQUNILFlBQ0UsT0FBZSxFQUNmLElBQVksRUFDWixXQUEwQixhQUFhLENBQUMsTUFBTSxFQUM5QyxXQUEwQixhQUFhLENBQUMsS0FBSyxFQUM3QyxpQkFBc0MsbUJBQW1CLENBQUMsZUFBZSxFQUN6RSxVQUF5QixFQUFFO1FBRTNCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBRXJDLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxPQUFPO1lBQ1YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFB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
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Service Error Codes
|
|
3
|
+
*
|
|
4
|
+
* This file contains all error codes used across the platform service.
|
|
5
|
+
*
|
|
6
|
+
* Format: PREFIX_ERROR_TYPE
|
|
7
|
+
* - PREFIX: Component/domain prefix (e.g., EMAIL, MTA, SMS)
|
|
8
|
+
* - ERROR_TYPE: Specific error type within the domain
|
|
9
|
+
*/
|
|
10
|
+
export declare const PLATFORM_INITIALIZATION_ERROR = "PLATFORM_INITIALIZATION_ERROR";
|
|
11
|
+
export declare const PLATFORM_CONFIGURATION_ERROR = "PLATFORM_CONFIGURATION_ERROR";
|
|
12
|
+
export declare const PLATFORM_OPERATION_ERROR = "PLATFORM_OPERATION_ERROR";
|
|
13
|
+
export declare const PLATFORM_NOT_IMPLEMENTED = "PLATFORM_NOT_IMPLEMENTED";
|
|
14
|
+
export declare const PLATFORM_NOT_SUPPORTED = "PLATFORM_NOT_SUPPORTED";
|
|
15
|
+
export declare const PLATFORM_SERVICE_UNAVAILABLE = "PLATFORM_SERVICE_UNAVAILABLE";
|
|
16
|
+
export declare const EMAIL_SERVICE_ERROR = "EMAIL_SERVICE_ERROR";
|
|
17
|
+
export declare const EMAIL_TEMPLATE_ERROR = "EMAIL_TEMPLATE_ERROR";
|
|
18
|
+
export declare const EMAIL_VALIDATION_ERROR = "EMAIL_VALIDATION_ERROR";
|
|
19
|
+
export declare const EMAIL_SEND_ERROR = "EMAIL_SEND_ERROR";
|
|
20
|
+
export declare const EMAIL_RECEIVE_ERROR = "EMAIL_RECEIVE_ERROR";
|
|
21
|
+
export declare const EMAIL_ATTACHMENT_ERROR = "EMAIL_ATTACHMENT_ERROR";
|
|
22
|
+
export declare const EMAIL_PARSE_ERROR = "EMAIL_PARSE_ERROR";
|
|
23
|
+
export declare const EMAIL_RATE_LIMIT_EXCEEDED = "EMAIL_RATE_LIMIT_EXCEEDED";
|
|
24
|
+
export declare const MTA_CONNECTION_ERROR = "MTA_CONNECTION_ERROR";
|
|
25
|
+
export declare const MTA_AUTHENTICATION_ERROR = "MTA_AUTHENTICATION_ERROR";
|
|
26
|
+
export declare const MTA_DELIVERY_ERROR = "MTA_DELIVERY_ERROR";
|
|
27
|
+
export declare const MTA_CONFIGURATION_ERROR = "MTA_CONFIGURATION_ERROR";
|
|
28
|
+
export declare const MTA_DNS_ERROR = "MTA_DNS_ERROR";
|
|
29
|
+
export declare const MTA_TIMEOUT_ERROR = "MTA_TIMEOUT_ERROR";
|
|
30
|
+
export declare const MTA_PROTOCOL_ERROR = "MTA_PROTOCOL_ERROR";
|
|
31
|
+
export declare const BOUNCE_PROCESSING_ERROR = "BOUNCE_PROCESSING_ERROR";
|
|
32
|
+
export declare const BOUNCE_STORAGE_ERROR = "BOUNCE_STORAGE_ERROR";
|
|
33
|
+
export declare const BOUNCE_CLASSIFICATION_ERROR = "BOUNCE_CLASSIFICATION_ERROR";
|
|
34
|
+
export declare const AUTH_SPF_ERROR = "AUTH_SPF_ERROR";
|
|
35
|
+
export declare const AUTH_DKIM_ERROR = "AUTH_DKIM_ERROR";
|
|
36
|
+
export declare const AUTH_DMARC_ERROR = "AUTH_DMARC_ERROR";
|
|
37
|
+
export declare const AUTH_KEY_ERROR = "AUTH_KEY_ERROR";
|
|
38
|
+
export declare const SCAN_ANALYSIS_ERROR = "SCAN_ANALYSIS_ERROR";
|
|
39
|
+
export declare const SCAN_MALWARE_DETECTED = "SCAN_MALWARE_DETECTED";
|
|
40
|
+
export declare const SCAN_PHISHING_DETECTED = "SCAN_PHISHING_DETECTED";
|
|
41
|
+
export declare const SCAN_CONTENT_REJECTED = "SCAN_CONTENT_REJECTED";
|
|
42
|
+
export declare const REPUTATION_CHECK_ERROR = "REPUTATION_CHECK_ERROR";
|
|
43
|
+
export declare const REPUTATION_DATA_ERROR = "REPUTATION_DATA_ERROR";
|
|
44
|
+
export declare const REPUTATION_BLOCKLIST_ERROR = "REPUTATION_BLOCKLIST_ERROR";
|
|
45
|
+
export declare const REPUTATION_UPDATE_ERROR = "REPUTATION_UPDATE_ERROR";
|
|
46
|
+
export declare const WARMUP_ALLOCATION_ERROR = "WARMUP_ALLOCATION_ERROR";
|
|
47
|
+
export declare const WARMUP_LIMIT_EXCEEDED = "WARMUP_LIMIT_EXCEEDED";
|
|
48
|
+
export declare const WARMUP_SCHEDULE_ERROR = "WARMUP_SCHEDULE_ERROR";
|
|
49
|
+
export declare const NETWORK_CONNECTION_ERROR = "NETWORK_CONNECTION_ERROR";
|
|
50
|
+
export declare const NETWORK_TIMEOUT = "NETWORK_TIMEOUT";
|
|
51
|
+
export declare const NETWORK_DNS_ERROR = "NETWORK_DNS_ERROR";
|
|
52
|
+
export declare const NETWORK_TLS_ERROR = "NETWORK_TLS_ERROR";
|
|
53
|
+
export declare const QUEUE_FULL_ERROR = "QUEUE_FULL_ERROR";
|
|
54
|
+
export declare const QUEUE_PROCESSING_ERROR = "QUEUE_PROCESSING_ERROR";
|
|
55
|
+
export declare const QUEUE_PERSISTENCE_ERROR = "QUEUE_PERSISTENCE_ERROR";
|
|
56
|
+
export declare const QUEUE_ITEM_NOT_FOUND = "QUEUE_ITEM_NOT_FOUND";
|
|
57
|
+
export declare const DCR_ROUTING_ERROR = "DCR_ROUTING_ERROR";
|
|
58
|
+
export declare const DCR_CONFIGURATION_ERROR = "DCR_CONFIGURATION_ERROR";
|
|
59
|
+
export declare const DCR_PROXY_ERROR = "DCR_PROXY_ERROR";
|
|
60
|
+
export declare const DCR_DOMAIN_ERROR = "DCR_DOMAIN_ERROR";
|
|
61
|
+
export declare const SMS_SERVICE_ERROR = "SMS_SERVICE_ERROR";
|
|
62
|
+
export declare const SMS_SEND_ERROR = "SMS_SEND_ERROR";
|
|
63
|
+
export declare const SMS_VALIDATION_ERROR = "SMS_VALIDATION_ERROR";
|
|
64
|
+
export declare const SMS_RATE_LIMIT_EXCEEDED = "SMS_RATE_LIMIT_EXCEEDED";
|
|
65
|
+
export declare const STORAGE_WRITE_ERROR = "STORAGE_WRITE_ERROR";
|
|
66
|
+
export declare const STORAGE_READ_ERROR = "STORAGE_READ_ERROR";
|
|
67
|
+
export declare const STORAGE_DELETE_ERROR = "STORAGE_DELETE_ERROR";
|
|
68
|
+
export declare const STORAGE_QUOTA_EXCEEDED = "STORAGE_QUOTA_EXCEEDED";
|
|
69
|
+
export declare const RULE_VALIDATION_ERROR = "RULE_VALIDATION_ERROR";
|
|
70
|
+
export declare const RULE_EXECUTION_ERROR = "RULE_EXECUTION_ERROR";
|
|
71
|
+
export declare const RULE_NOT_FOUND = "RULE_NOT_FOUND";
|
|
72
|
+
export declare enum ErrorSeverity {
|
|
73
|
+
/** Critical errors that require immediate attention */
|
|
74
|
+
CRITICAL = "CRITICAL",
|
|
75
|
+
/** High-impact errors that may affect service functioning */
|
|
76
|
+
HIGH = "HIGH",
|
|
77
|
+
/** Medium-impact errors that cause partial degradation */
|
|
78
|
+
MEDIUM = "MEDIUM",
|
|
79
|
+
/** Low-impact errors that have minimal or local impact */
|
|
80
|
+
LOW = "LOW",
|
|
81
|
+
/** Informational errors that are not problematic */
|
|
82
|
+
INFO = "INFO"
|
|
83
|
+
}
|
|
84
|
+
export declare enum ErrorCategory {
|
|
85
|
+
/** Errors related to configuration */
|
|
86
|
+
CONFIGURATION = "CONFIGURATION",
|
|
87
|
+
/** Errors related to network connectivity */
|
|
88
|
+
CONNECTIVITY = "CONNECTIVITY",
|
|
89
|
+
/** Errors related to authentication/authorization */
|
|
90
|
+
AUTHENTICATION = "AUTHENTICATION",
|
|
91
|
+
/** Errors related to data validation */
|
|
92
|
+
VALIDATION = "VALIDATION",
|
|
93
|
+
/** Errors related to resource availability */
|
|
94
|
+
RESOURCE = "RESOURCE",
|
|
95
|
+
/** Errors related to service operations */
|
|
96
|
+
OPERATION = "OPERATION",
|
|
97
|
+
/** Errors related to third-party integrations */
|
|
98
|
+
INTEGRATION = "INTEGRATION",
|
|
99
|
+
/** Errors related to security */
|
|
100
|
+
SECURITY = "SECURITY",
|
|
101
|
+
/** Errors related to data storage */
|
|
102
|
+
STORAGE = "STORAGE",
|
|
103
|
+
/** Errors that don't fit into other categories */
|
|
104
|
+
OTHER = "OTHER"
|
|
105
|
+
}
|
|
106
|
+
export declare enum ErrorRecoverability {
|
|
107
|
+
/** Error cannot be automatically recovered from */
|
|
108
|
+
NON_RECOVERABLE = "NON_RECOVERABLE",
|
|
109
|
+
/** Error might be recoverable with retry */
|
|
110
|
+
MAYBE_RECOVERABLE = "MAYBE_RECOVERABLE",
|
|
111
|
+
/** Error is definitely recoverable with retries */
|
|
112
|
+
RECOVERABLE = "RECOVERABLE",
|
|
113
|
+
/** Error is transient and should resolve without action */
|
|
114
|
+
TRANSIENT = "TRANSIENT"
|
|
115
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Service Error Codes
|
|
3
|
+
*
|
|
4
|
+
* This file contains all error codes used across the platform service.
|
|
5
|
+
*
|
|
6
|
+
* Format: PREFIX_ERROR_TYPE
|
|
7
|
+
* - PREFIX: Component/domain prefix (e.g., EMAIL, MTA, SMS)
|
|
8
|
+
* - ERROR_TYPE: Specific error type within the domain
|
|
9
|
+
*/
|
|
10
|
+
// General platform errors (PLATFORM_*)
|
|
11
|
+
export const PLATFORM_INITIALIZATION_ERROR = 'PLATFORM_INITIALIZATION_ERROR';
|
|
12
|
+
export const PLATFORM_CONFIGURATION_ERROR = 'PLATFORM_CONFIGURATION_ERROR';
|
|
13
|
+
export const PLATFORM_OPERATION_ERROR = 'PLATFORM_OPERATION_ERROR';
|
|
14
|
+
export const PLATFORM_NOT_IMPLEMENTED = 'PLATFORM_NOT_IMPLEMENTED';
|
|
15
|
+
export const PLATFORM_NOT_SUPPORTED = 'PLATFORM_NOT_SUPPORTED';
|
|
16
|
+
export const PLATFORM_SERVICE_UNAVAILABLE = 'PLATFORM_SERVICE_UNAVAILABLE';
|
|
17
|
+
// Email service errors (EMAIL_*)
|
|
18
|
+
export const EMAIL_SERVICE_ERROR = 'EMAIL_SERVICE_ERROR';
|
|
19
|
+
export const EMAIL_TEMPLATE_ERROR = 'EMAIL_TEMPLATE_ERROR';
|
|
20
|
+
export const EMAIL_VALIDATION_ERROR = 'EMAIL_VALIDATION_ERROR';
|
|
21
|
+
export const EMAIL_SEND_ERROR = 'EMAIL_SEND_ERROR';
|
|
22
|
+
export const EMAIL_RECEIVE_ERROR = 'EMAIL_RECEIVE_ERROR';
|
|
23
|
+
export const EMAIL_ATTACHMENT_ERROR = 'EMAIL_ATTACHMENT_ERROR';
|
|
24
|
+
export const EMAIL_PARSE_ERROR = 'EMAIL_PARSE_ERROR';
|
|
25
|
+
export const EMAIL_RATE_LIMIT_EXCEEDED = 'EMAIL_RATE_LIMIT_EXCEEDED';
|
|
26
|
+
// MTA-specific errors (MTA_*)
|
|
27
|
+
export const MTA_CONNECTION_ERROR = 'MTA_CONNECTION_ERROR';
|
|
28
|
+
export const MTA_AUTHENTICATION_ERROR = 'MTA_AUTHENTICATION_ERROR';
|
|
29
|
+
export const MTA_DELIVERY_ERROR = 'MTA_DELIVERY_ERROR';
|
|
30
|
+
export const MTA_CONFIGURATION_ERROR = 'MTA_CONFIGURATION_ERROR';
|
|
31
|
+
export const MTA_DNS_ERROR = 'MTA_DNS_ERROR';
|
|
32
|
+
export const MTA_TIMEOUT_ERROR = 'MTA_TIMEOUT_ERROR';
|
|
33
|
+
export const MTA_PROTOCOL_ERROR = 'MTA_PROTOCOL_ERROR';
|
|
34
|
+
// Bounce management errors (BOUNCE_*)
|
|
35
|
+
export const BOUNCE_PROCESSING_ERROR = 'BOUNCE_PROCESSING_ERROR';
|
|
36
|
+
export const BOUNCE_STORAGE_ERROR = 'BOUNCE_STORAGE_ERROR';
|
|
37
|
+
export const BOUNCE_CLASSIFICATION_ERROR = 'BOUNCE_CLASSIFICATION_ERROR';
|
|
38
|
+
// Email authentication errors (AUTH_*)
|
|
39
|
+
export const AUTH_SPF_ERROR = 'AUTH_SPF_ERROR';
|
|
40
|
+
export const AUTH_DKIM_ERROR = 'AUTH_DKIM_ERROR';
|
|
41
|
+
export const AUTH_DMARC_ERROR = 'AUTH_DMARC_ERROR';
|
|
42
|
+
export const AUTH_KEY_ERROR = 'AUTH_KEY_ERROR';
|
|
43
|
+
// Content scanning errors (SCAN_*)
|
|
44
|
+
export const SCAN_ANALYSIS_ERROR = 'SCAN_ANALYSIS_ERROR';
|
|
45
|
+
export const SCAN_MALWARE_DETECTED = 'SCAN_MALWARE_DETECTED';
|
|
46
|
+
export const SCAN_PHISHING_DETECTED = 'SCAN_PHISHING_DETECTED';
|
|
47
|
+
export const SCAN_CONTENT_REJECTED = 'SCAN_CONTENT_REJECTED';
|
|
48
|
+
// IP and reputation errors (REPUTATION_*)
|
|
49
|
+
export const REPUTATION_CHECK_ERROR = 'REPUTATION_CHECK_ERROR';
|
|
50
|
+
export const REPUTATION_DATA_ERROR = 'REPUTATION_DATA_ERROR';
|
|
51
|
+
export const REPUTATION_BLOCKLIST_ERROR = 'REPUTATION_BLOCKLIST_ERROR';
|
|
52
|
+
export const REPUTATION_UPDATE_ERROR = 'REPUTATION_UPDATE_ERROR';
|
|
53
|
+
// IP warmup errors (WARMUP_*)
|
|
54
|
+
export const WARMUP_ALLOCATION_ERROR = 'WARMUP_ALLOCATION_ERROR';
|
|
55
|
+
export const WARMUP_LIMIT_EXCEEDED = 'WARMUP_LIMIT_EXCEEDED';
|
|
56
|
+
export const WARMUP_SCHEDULE_ERROR = 'WARMUP_SCHEDULE_ERROR';
|
|
57
|
+
// Network and connectivity errors (NETWORK_*)
|
|
58
|
+
export const NETWORK_CONNECTION_ERROR = 'NETWORK_CONNECTION_ERROR';
|
|
59
|
+
export const NETWORK_TIMEOUT = 'NETWORK_TIMEOUT';
|
|
60
|
+
export const NETWORK_DNS_ERROR = 'NETWORK_DNS_ERROR';
|
|
61
|
+
export const NETWORK_TLS_ERROR = 'NETWORK_TLS_ERROR';
|
|
62
|
+
// Queue and processing errors (QUEUE_*)
|
|
63
|
+
export const QUEUE_FULL_ERROR = 'QUEUE_FULL_ERROR';
|
|
64
|
+
export const QUEUE_PROCESSING_ERROR = 'QUEUE_PROCESSING_ERROR';
|
|
65
|
+
export const QUEUE_PERSISTENCE_ERROR = 'QUEUE_PERSISTENCE_ERROR';
|
|
66
|
+
export const QUEUE_ITEM_NOT_FOUND = 'QUEUE_ITEM_NOT_FOUND';
|
|
67
|
+
// DcRouter errors (DCR_*)
|
|
68
|
+
export const DCR_ROUTING_ERROR = 'DCR_ROUTING_ERROR';
|
|
69
|
+
export const DCR_CONFIGURATION_ERROR = 'DCR_CONFIGURATION_ERROR';
|
|
70
|
+
export const DCR_PROXY_ERROR = 'DCR_PROXY_ERROR';
|
|
71
|
+
export const DCR_DOMAIN_ERROR = 'DCR_DOMAIN_ERROR';
|
|
72
|
+
// SMS service errors (SMS_*)
|
|
73
|
+
export const SMS_SERVICE_ERROR = 'SMS_SERVICE_ERROR';
|
|
74
|
+
export const SMS_SEND_ERROR = 'SMS_SEND_ERROR';
|
|
75
|
+
export const SMS_VALIDATION_ERROR = 'SMS_VALIDATION_ERROR';
|
|
76
|
+
export const SMS_RATE_LIMIT_EXCEEDED = 'SMS_RATE_LIMIT_EXCEEDED';
|
|
77
|
+
// Storage errors (STORAGE_*)
|
|
78
|
+
export const STORAGE_WRITE_ERROR = 'STORAGE_WRITE_ERROR';
|
|
79
|
+
export const STORAGE_READ_ERROR = 'STORAGE_READ_ERROR';
|
|
80
|
+
export const STORAGE_DELETE_ERROR = 'STORAGE_DELETE_ERROR';
|
|
81
|
+
export const STORAGE_QUOTA_EXCEEDED = 'STORAGE_QUOTA_EXCEEDED';
|
|
82
|
+
// Rule management errors (RULE_*)
|
|
83
|
+
export const RULE_VALIDATION_ERROR = 'RULE_VALIDATION_ERROR';
|
|
84
|
+
export const RULE_EXECUTION_ERROR = 'RULE_EXECUTION_ERROR';
|
|
85
|
+
export const RULE_NOT_FOUND = 'RULE_NOT_FOUND';
|
|
86
|
+
// Type definitions for error severity
|
|
87
|
+
export var ErrorSeverity;
|
|
88
|
+
(function (ErrorSeverity) {
|
|
89
|
+
/** Critical errors that require immediate attention */
|
|
90
|
+
ErrorSeverity["CRITICAL"] = "CRITICAL";
|
|
91
|
+
/** High-impact errors that may affect service functioning */
|
|
92
|
+
ErrorSeverity["HIGH"] = "HIGH";
|
|
93
|
+
/** Medium-impact errors that cause partial degradation */
|
|
94
|
+
ErrorSeverity["MEDIUM"] = "MEDIUM";
|
|
95
|
+
/** Low-impact errors that have minimal or local impact */
|
|
96
|
+
ErrorSeverity["LOW"] = "LOW";
|
|
97
|
+
/** Informational errors that are not problematic */
|
|
98
|
+
ErrorSeverity["INFO"] = "INFO";
|
|
99
|
+
})(ErrorSeverity || (ErrorSeverity = {}));
|
|
100
|
+
// Type definitions for error categories
|
|
101
|
+
export var ErrorCategory;
|
|
102
|
+
(function (ErrorCategory) {
|
|
103
|
+
/** Errors related to configuration */
|
|
104
|
+
ErrorCategory["CONFIGURATION"] = "CONFIGURATION";
|
|
105
|
+
/** Errors related to network connectivity */
|
|
106
|
+
ErrorCategory["CONNECTIVITY"] = "CONNECTIVITY";
|
|
107
|
+
/** Errors related to authentication/authorization */
|
|
108
|
+
ErrorCategory["AUTHENTICATION"] = "AUTHENTICATION";
|
|
109
|
+
/** Errors related to data validation */
|
|
110
|
+
ErrorCategory["VALIDATION"] = "VALIDATION";
|
|
111
|
+
/** Errors related to resource availability */
|
|
112
|
+
ErrorCategory["RESOURCE"] = "RESOURCE";
|
|
113
|
+
/** Errors related to service operations */
|
|
114
|
+
ErrorCategory["OPERATION"] = "OPERATION";
|
|
115
|
+
/** Errors related to third-party integrations */
|
|
116
|
+
ErrorCategory["INTEGRATION"] = "INTEGRATION";
|
|
117
|
+
/** Errors related to security */
|
|
118
|
+
ErrorCategory["SECURITY"] = "SECURITY";
|
|
119
|
+
/** Errors related to data storage */
|
|
120
|
+
ErrorCategory["STORAGE"] = "STORAGE";
|
|
121
|
+
/** Errors that don't fit into other categories */
|
|
122
|
+
ErrorCategory["OTHER"] = "OTHER";
|
|
123
|
+
})(ErrorCategory || (ErrorCategory = {}));
|
|
124
|
+
// Type definitions for error recoverability
|
|
125
|
+
export var ErrorRecoverability;
|
|
126
|
+
(function (ErrorRecoverability) {
|
|
127
|
+
/** Error cannot be automatically recovered from */
|
|
128
|
+
ErrorRecoverability["NON_RECOVERABLE"] = "NON_RECOVERABLE";
|
|
129
|
+
/** Error might be recoverable with retry */
|
|
130
|
+
ErrorRecoverability["MAYBE_RECOVERABLE"] = "MAYBE_RECOVERABLE";
|
|
131
|
+
/** Error is definitely recoverable with retries */
|
|
132
|
+
ErrorRecoverability["RECOVERABLE"] = "RECOVERABLE";
|
|
133
|
+
/** Error is transient and should resolve without action */
|
|
134
|
+
ErrorRecoverability["TRANSIENT"] = "TRANSIENT";
|
|
135
|
+
})(ErrorRecoverability || (ErrorRecoverability = {}));
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9lcnJvcnMvZXJyb3IuY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsK0JBQStCLENBQUM7QUFDN0UsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFDM0UsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsMEJBQTBCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsMEJBQTBCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsd0JBQXdCLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsOEJBQThCLENBQUM7QUFFM0UsaUNBQWlDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLDJCQUEyQixDQUFDO0FBRXJFLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztBQUNuRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyx5QkFBeUIsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDO0FBRXZELHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyx5QkFBeUIsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyw2QkFBNkIsQ0FBQztBQUV6RSx1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFFL0MsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLHdCQUF3QixDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBRTdELDBDQUEwQztBQUMxQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyw0QkFBNEIsQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyx5QkFBeUIsQ0FBQztBQUVqRSw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7QUFFN0QsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLDBCQUEwQixDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUVyRCx3Q0FBd0M7QUFDeEMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsd0JBQXdCLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUM7QUFFM0QsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLG1CQUFtQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHlCQUF5QixDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUVuRCw2QkFBNkI7QUFDN0IsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHlCQUF5QixDQUFDO0FBRWpFLDZCQUE2QjtBQUM3QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztBQUN2RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyx3QkFBd0IsQ0FBQztBQUUvRCxrQ0FBa0M7QUFDbEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBRS9DLHNDQUFzQztBQUN0QyxNQUFNLENBQU4sSUFBWSxhQWVYO0FBZkQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUF1RDtJQUN2RCxzQ0FBcUIsQ0FBQTtJQUVyQiw2REFBNkQ7SUFDN0QsOEJBQWEsQ0FBQTtJQUViLDBEQUEwRDtJQUMxRCxrQ0FBaUIsQ0FBQTtJQUVqQiwwREFBMEQ7SUFDMUQsNEJBQVcsQ0FBQTtJQUVYLG9EQUFvRDtJQUNwRCw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQWZXLGFBQWEsS0FBYixhQUFhLFFBZXhCO0FBRUQsd0NBQXdDO0FBQ3hDLE1BQU0sQ0FBTixJQUFZLGFBOEJYO0FBOUJELFdBQVksYUFBYTtJQUN2QixzQ0FBc0M7SUFDdEMsZ0RBQStCLENBQUE7SUFFL0IsNkNBQTZDO0lBQzdDLDhDQUE2QixDQUFBO0lBRTdCLHFEQUFxRDtJQUNyRCxrREFBaUMsQ0FBQTtJQUVqQyx3Q0FBd0M7SUFDeEMsMENBQXlCLENBQUE7SUFFekIsOENBQThDO0lBQzlDLHNDQUFxQixDQUFBO0lBRXJCLDJDQUEyQztJQUMzQyx3Q0FBdUIsQ0FBQTtJQUV2QixpREFBaUQ7SUFDakQsNENBQTJCLENBQUE7SUFFM0IsaUNBQWlDO0lBQ2pDLHNDQUFxQixDQUFBO0lBRXJCLHFDQUFxQztJQUNyQyxvQ0FBbUIsQ0FBQTtJQUVuQixrREFBa0Q7SUFDbEQsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBOUJXLGFBQWEsS0FBYixhQUFhLFFBOEJ4QjtBQUVELDRDQUE0QztBQUM1QyxNQUFNLENBQU4sSUFBWSxtQkFZWDtBQVpELFdBQVksbUJBQW1CO0lBQzdCLG1EQUFtRDtJQUNuRCwwREFBbUMsQ0FBQTtJQUVuQyw0Q0FBNEM7SUFDNUMsOERBQXVDLENBQUE7SUFFdkMsbURBQW1EO0lBQ25ELGtEQUEyQixDQUFBO0lBRTNCLDJEQUEyRDtJQUMzRCw4Q0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBWlcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVk5QiJ9
|