fiscalapi 1.0.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.
Files changed (116) hide show
  1. package/LICENSE.txt +373 -0
  2. package/README.md +388 -0
  3. package/dist/cjs/abstractions/api-key-service.interface.js +3 -0
  4. package/dist/cjs/abstractions/catalog-service.interface.js +3 -0
  5. package/dist/cjs/abstractions/fiscalapi-client.interface.js +3 -0
  6. package/dist/cjs/abstractions/fiscalapi-service.interface.js +3 -0
  7. package/dist/cjs/abstractions/invoice-service.interface.js +3 -0
  8. package/dist/cjs/abstractions/person-service.interface.js +3 -0
  9. package/dist/cjs/abstractions/product-service.interface.js +3 -0
  10. package/dist/cjs/abstractions/tax-file-service.interface.js +3 -0
  11. package/dist/cjs/common/api-response.js +3 -0
  12. package/dist/cjs/common/auditable-dto.js +11 -0
  13. package/dist/cjs/common/base-dto.js +11 -0
  14. package/dist/cjs/common/catalog-dto.js +8 -0
  15. package/dist/cjs/common/file-response.js +3 -0
  16. package/dist/cjs/common/fiscalapi-settings.js +3 -0
  17. package/dist/cjs/common/paged-list.js +18 -0
  18. package/dist/cjs/common/serializable-dto.js +37 -0
  19. package/dist/cjs/http/fiscalapi-http-client-factory.js +66 -0
  20. package/dist/cjs/http/fiscalapi-http-client.interface.js +3 -0
  21. package/dist/cjs/http/fiscalapi-http-client.js +306 -0
  22. package/dist/cjs/index.js +31 -0
  23. package/dist/cjs/models/api-key.js +3 -0
  24. package/dist/cjs/models/invoice.js +3 -0
  25. package/dist/cjs/models/person.js +3 -0
  26. package/dist/cjs/models/product.js +3 -0
  27. package/dist/cjs/models/tax-file.js +3 -0
  28. package/dist/cjs/sdk-constants.js +25 -0
  29. package/dist/cjs/services/api-key-service.js +19 -0
  30. package/dist/cjs/services/base-fiscalapi-service.js +170 -0
  31. package/dist/cjs/services/catalog-service.js +51 -0
  32. package/dist/cjs/services/fiscalapi-client.js +67 -0
  33. package/dist/cjs/services/invoice-service.js +116 -0
  34. package/dist/cjs/services/person-service.js +19 -0
  35. package/dist/cjs/services/product-service.js +19 -0
  36. package/dist/cjs/services/tax-file-service.js +43 -0
  37. package/dist/cjs/utils/date-utils.js +36 -0
  38. package/dist/cjs/utils/encoding-utils.js +21 -0
  39. package/dist/cjs/utils/validation-utils.js +40 -0
  40. package/dist/esm/abstractions/api-key-service.interface.js +2 -0
  41. package/dist/esm/abstractions/catalog-service.interface.js +2 -0
  42. package/dist/esm/abstractions/fiscalapi-client.interface.js +2 -0
  43. package/dist/esm/abstractions/fiscalapi-service.interface.js +2 -0
  44. package/dist/esm/abstractions/invoice-service.interface.js +2 -0
  45. package/dist/esm/abstractions/person-service.interface.js +2 -0
  46. package/dist/esm/abstractions/product-service.interface.js +2 -0
  47. package/dist/esm/abstractions/tax-file-service.interface.js +2 -0
  48. package/dist/esm/common/api-response.js +2 -0
  49. package/dist/esm/common/auditable-dto.js +7 -0
  50. package/dist/esm/common/base-dto.js +7 -0
  51. package/dist/esm/common/catalog-dto.js +4 -0
  52. package/dist/esm/common/file-response.js +2 -0
  53. package/dist/esm/common/fiscalapi-settings.js +2 -0
  54. package/dist/esm/common/paged-list.js +14 -0
  55. package/dist/esm/common/serializable-dto.js +33 -0
  56. package/dist/esm/http/fiscalapi-http-client-factory.js +59 -0
  57. package/dist/esm/http/fiscalapi-http-client.interface.js +2 -0
  58. package/dist/esm/http/fiscalapi-http-client.js +302 -0
  59. package/dist/esm/index.js +13 -0
  60. package/dist/esm/models/api-key.js +2 -0
  61. package/dist/esm/models/invoice.js +2 -0
  62. package/dist/esm/models/person.js +2 -0
  63. package/dist/esm/models/product.js +2 -0
  64. package/dist/esm/models/tax-file.js +2 -0
  65. package/dist/esm/sdk-constants.js +22 -0
  66. package/dist/esm/services/api-key-service.js +15 -0
  67. package/dist/esm/services/base-fiscalapi-service.js +166 -0
  68. package/dist/esm/services/catalog-service.js +47 -0
  69. package/dist/esm/services/fiscalapi-client.js +63 -0
  70. package/dist/esm/services/invoice-service.js +112 -0
  71. package/dist/esm/services/person-service.js +15 -0
  72. package/dist/esm/services/product-service.js +15 -0
  73. package/dist/esm/services/tax-file-service.js +39 -0
  74. package/dist/esm/utils/date-utils.js +31 -0
  75. package/dist/esm/utils/encoding-utils.js +17 -0
  76. package/dist/esm/utils/validation-utils.js +34 -0
  77. package/dist/types/abstractions/api-key-service.interface.d.ts +7 -0
  78. package/dist/types/abstractions/catalog-service.interface.d.ts +27 -0
  79. package/dist/types/abstractions/fiscalapi-client.interface.d.ts +35 -0
  80. package/dist/types/abstractions/fiscalapi-service.interface.d.ts +94 -0
  81. package/dist/types/abstractions/invoice-service.interface.d.ts +39 -0
  82. package/dist/types/abstractions/person-service.interface.d.ts +7 -0
  83. package/dist/types/abstractions/product-service.interface.d.ts +7 -0
  84. package/dist/types/abstractions/tax-file-service.interface.d.ts +22 -0
  85. package/dist/types/common/api-response.d.ts +56 -0
  86. package/dist/types/common/auditable-dto.d.ts +9 -0
  87. package/dist/types/common/base-dto.d.ts +7 -0
  88. package/dist/types/common/catalog-dto.d.ts +8 -0
  89. package/dist/types/common/file-response.d.ts +18 -0
  90. package/dist/types/common/fiscalapi-settings.d.ts +30 -0
  91. package/dist/types/common/paged-list.d.ts +39 -0
  92. package/dist/types/common/serializable-dto.d.ts +10 -0
  93. package/dist/types/http/fiscalapi-http-client-factory.d.ts +22 -0
  94. package/dist/types/http/fiscalapi-http-client.d.ts +113 -0
  95. package/dist/types/http/fiscalapi-http-client.interface.d.ts +80 -0
  96. package/dist/types/index.d.ts +25 -0
  97. package/dist/types/models/api-key.d.ts +21 -0
  98. package/dist/types/models/invoice.d.ts +337 -0
  99. package/dist/types/models/person.d.ts +42 -0
  100. package/dist/types/models/product.d.ts +49 -0
  101. package/dist/types/models/tax-file.d.ts +23 -0
  102. package/dist/types/sdk-constants.d.ts +21 -0
  103. package/dist/types/services/api-key-service.d.ts +15 -0
  104. package/dist/types/services/base-fiscalapi-service.d.ts +72 -0
  105. package/dist/types/services/catalog-service.d.ts +34 -0
  106. package/dist/types/services/fiscalapi-client.d.ts +49 -0
  107. package/dist/types/services/invoice-service.d.ts +54 -0
  108. package/dist/types/services/person-service.d.ts +15 -0
  109. package/dist/types/services/product-service.d.ts +15 -0
  110. package/dist/types/services/tax-file-service.d.ts +30 -0
  111. package/dist/types/utils/date-utils.d.ts +17 -0
  112. package/dist/types/utils/encoding-utils.d.ts +12 -0
  113. package/dist/types/utils/validation-utils.d.ts +25 -0
  114. package/fiscalapi.ico +0 -0
  115. package/fiscalapi.png +0 -0
  116. package/package.json +64 -0
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Cliente HTTP para FiscalAPI
3
+ */
4
+ export class FiscalapiHttpClient {
5
+ /**
6
+ * Crea una nueva instancia del cliente HTTP para FiscalAPI
7
+ * @param {AxiosInstance} httpClient - Instancia de Axios configurada
8
+ * @param {FiscalapiSettings} settings - Configuración para el cliente FiscalAPI
9
+ */
10
+ constructor(httpClient, settings) {
11
+ this.httpClient = httpClient;
12
+ this.settings = settings;
13
+ // Configurar interceptores para el logging en modo debug
14
+ if (this.settings.debug) {
15
+ this.setupDebugInterceptors();
16
+ }
17
+ }
18
+ /**
19
+ * Configura los interceptores para logear las peticiones y respuestas en modo debug
20
+ * @private
21
+ */
22
+ setupDebugInterceptors() {
23
+ // Interceptor para peticiones
24
+ this.httpClient.interceptors.request.use((config) => {
25
+ this.logRequest(config);
26
+ return config;
27
+ });
28
+ // Interceptor para respuestas
29
+ this.httpClient.interceptors.response.use((response) => {
30
+ this.logResponse(response);
31
+ return response;
32
+ }, (error) => {
33
+ if (error.response) {
34
+ this.logResponse(error.response);
35
+ }
36
+ return Promise.reject(error);
37
+ });
38
+ }
39
+ /**
40
+ * Logea los detalles de una petición HTTP cuando el modo debug está activado
41
+ * @param {InternalAxiosRequestConfig} config - Configuración de la petición
42
+ * @private
43
+ */
44
+ logRequest(config) {
45
+ var _a;
46
+ if (this.settings.debug) {
47
+ console.log('');
48
+ console.log('********************** Raw Request **************************');
49
+ console.log('Method: ', (_a = config.method) === null || _a === void 0 ? void 0 : _a.toUpperCase());
50
+ console.log('BaseURL: ', config.baseURL);
51
+ console.log('PathURL: ', config.url);
52
+ const resource = `${config.baseURL || ''}/${config.url || ''}`;
53
+ console.log('FullURL: ', resource);
54
+ if (config.data) {
55
+ console.log('Body:', typeof config.data === 'string' ? config.data : JSON.stringify(config.data, null, 2));
56
+ }
57
+ console.log('');
58
+ if (config.params) {
59
+ console.log('Params:', config.params);
60
+ }
61
+ console.log('');
62
+ }
63
+ }
64
+ /**
65
+ * Logea los detalles de una respuesta HTTP cuando el modo debug está activado
66
+ * @param {AxiosResponse} response - Respuesta de la petición
67
+ * @private
68
+ */
69
+ logResponse(response) {
70
+ if (this.settings.debug) {
71
+ console.log('');
72
+ console.log('********************** Raw Response **************************');
73
+ console.log('');
74
+ console.log('Status:', response.status, response.statusText);
75
+ //console.log('Headers:', response.headers);
76
+ console.log('Data:', JSON.stringify(response.data, null, 2));
77
+ console.log('');
78
+ console.log('*************************************************************');
79
+ console.log('');
80
+ }
81
+ }
82
+ /**
83
+ * Ejecuta una petición HTTP genérica con control completo sobre los parámetros
84
+ * @param {HttpMethod} method - Método HTTP a utilizar
85
+ * @param {string} endpoint - Punto final de la API
86
+ * @param {RequestOptions<TData>} options - Opciones de la petición
87
+ * @returns {Promise<ApiResponse<TResult>>} Respuesta de la API
88
+ * @template TResult - Tipo de datos esperado en la respuesta
89
+ * @template TData - Tipo de datos a enviar en la petición (opcional)
90
+ */
91
+ async executeRequest(method, endpoint, options = {}) {
92
+ try {
93
+ // Extraer opciones
94
+ const { data, queryParams, config = {}, responseTransformer } = options;
95
+ // Construir configuración de la petición
96
+ const requestConfig = {
97
+ ...config,
98
+ method,
99
+ url: endpoint
100
+ };
101
+ // Añadir parámetros de consulta si existen
102
+ if (queryParams && Object.keys(queryParams).length > 0) {
103
+ requestConfig.params = {
104
+ ...(requestConfig.params || {}),
105
+ ...queryParams
106
+ };
107
+ }
108
+ // Ejecutar la petición según el método
109
+ let response;
110
+ // Los métodos que no aceptan cuerpo en la petición
111
+ if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {
112
+ // Para DELETE podríamos querer enviar datos en el cuerpo si es necesario
113
+ if (method === 'DELETE' && data) {
114
+ // Aunque no es estándar, algunas APIs aceptan body en DELETE
115
+ requestConfig.data = data;
116
+ }
117
+ response = await this.httpClient.request(requestConfig);
118
+ }
119
+ else {
120
+ // Métodos que aceptan cuerpo (POST, PUT, PATCH)
121
+ requestConfig.data = data;
122
+ response = await this.httpClient.request(requestConfig);
123
+ }
124
+ // Procesar la respuesta
125
+ let processedResponse = await this.processResponse(response);
126
+ // Aplicar transformador personalizado si se proporciona
127
+ if (responseTransformer && processedResponse.succeeded) {
128
+ try {
129
+ const transformedData = responseTransformer(processedResponse.data);
130
+ processedResponse = {
131
+ ...processedResponse,
132
+ data: transformedData
133
+ };
134
+ }
135
+ catch (transformError) {
136
+ return {
137
+ data: {},
138
+ succeeded: false,
139
+ message: `Error al transformar la respuesta: ${transformError instanceof Error ? transformError.message : 'Error desconocido'}`,
140
+ details: transformError instanceof Error ? transformError.stack || '' : '',
141
+ httpStatusCode: processedResponse.httpStatusCode
142
+ };
143
+ }
144
+ }
145
+ return processedResponse;
146
+ }
147
+ catch (error) {
148
+ return this.handleRequestError(error);
149
+ }
150
+ }
151
+ /**
152
+ * Procesa la respuesta HTTP y la convierte en ApiResponse
153
+ * @param {AxiosResponse} response - Respuesta HTTP original
154
+ * @returns {ApiResponse<T>} Respuesta procesada
155
+ * @template T - Tipo de datos esperado
156
+ * @private
157
+ */
158
+ async processResponse(response) {
159
+ // Si la respuesta ya es un ApiResponse, lo retornamos con el tipo correcto
160
+ if (response.data &&
161
+ typeof response.data === 'object' &&
162
+ 'succeeded' in response.data &&
163
+ 'data' in response.data) {
164
+ // La respuesta es un ApiResponse<T>
165
+ const apiResponse = response.data;
166
+ // Aseguramos que el httpStatusCode refleje el status de la respuesta HTTP
167
+ return {
168
+ ...apiResponse,
169
+ httpStatusCode: response.status
170
+ };
171
+ }
172
+ // La respuesta no es un ApiResponse, la encapsulamos
173
+ return {
174
+ data: response.data,
175
+ succeeded: true,
176
+ message: '',
177
+ details: '',
178
+ httpStatusCode: response.status
179
+ };
180
+ }
181
+ /**
182
+ * Maneja los errores de las peticiones HTTP
183
+ * @param {unknown} error - Error capturado
184
+ * @returns {ApiResponse<T>} Respuesta de error estandarizada
185
+ * @template T - Tipo de datos esperado
186
+ * @private
187
+ */
188
+ handleRequestError(error) {
189
+ var _a, _b, _c, _d;
190
+ const axiosError = error;
191
+ // Extraer datos de respuesta
192
+ const responseData = (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.data;
193
+ // Revisar si es un ProblemDetails según RFC 9457
194
+ if (responseData &&
195
+ typeof responseData === 'object' &&
196
+ 'type' in responseData &&
197
+ 'title' in responseData &&
198
+ 'status' in responseData) {
199
+ const problemDetails = responseData;
200
+ return {
201
+ data: {},
202
+ succeeded: false,
203
+ message: problemDetails.title,
204
+ details: problemDetails.detail || JSON.stringify(problemDetails),
205
+ httpStatusCode: ((_b = axiosError.response) === null || _b === void 0 ? void 0 : _b.status) || 500
206
+ };
207
+ }
208
+ // Revisar si es un ApiResponse<ValidationFailure[]> para errores 400
209
+ if (((_c = axiosError.response) === null || _c === void 0 ? void 0 : _c.status) === 400 &&
210
+ responseData &&
211
+ typeof responseData === 'object' &&
212
+ 'data' in responseData &&
213
+ Array.isArray(responseData.data)) {
214
+ const apiResponse = responseData;
215
+ // Si hay errores de validación, extraer el primer mensaje
216
+ if (apiResponse.data && apiResponse.data.length > 0) {
217
+ const firstFailure = apiResponse.data[0];
218
+ return {
219
+ data: {},
220
+ succeeded: false,
221
+ message: firstFailure.errorMessage,
222
+ details: JSON.stringify(apiResponse.data),
223
+ httpStatusCode: 400
224
+ };
225
+ }
226
+ }
227
+ // Respuesta de error genérica
228
+ return {
229
+ data: {},
230
+ succeeded: false,
231
+ message: axiosError.message || 'Ocurrió un error en la comunicación con el servidor',
232
+ details: JSON.stringify(responseData || {}),
233
+ httpStatusCode: ((_d = axiosError.response) === null || _d === void 0 ? void 0 : _d.status) || 500
234
+ };
235
+ }
236
+ /**
237
+ * Realiza una petición GET a la API
238
+ * @param {string} endpoint - Punto final de la API
239
+ * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición
240
+ * @returns {Promise<ApiResponse<T>>} Respuesta de la API
241
+ * @template T - Tipo de datos esperado en la respuesta
242
+ */
243
+ async getAsync(endpoint, config) {
244
+ return this.executeRequest('GET', endpoint, { config });
245
+ }
246
+ /**
247
+ * Realiza una petición GET por ID a la API
248
+ * @param {string} endpoint - Punto final de la API con ID
249
+ * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición
250
+ * @returns {Promise<ApiResponse<T>>} Respuesta de la API
251
+ * @template T - Tipo de datos esperado en la respuesta
252
+ */
253
+ async getByIdAsync(endpoint, config) {
254
+ return this.executeRequest('GET', endpoint, { config });
255
+ }
256
+ /**
257
+ * Realiza una petición POST a la API
258
+ * @param {string} endpoint - Punto final de la API
259
+ * @param {TData} data - Datos a enviar en la petición
260
+ * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición
261
+ * @returns {Promise<ApiResponse<T>>} Respuesta de la API
262
+ * @template T - Tipo de datos esperado en la respuesta
263
+ * @template TData - Tipo de datos a enviar en la petición
264
+ */
265
+ async postAsync(endpoint, data, config) {
266
+ return this.executeRequest('POST', endpoint, { data, config });
267
+ }
268
+ /**
269
+ * Realiza una petición PUT a la API
270
+ * @param {string} endpoint - Punto final de la API
271
+ * @param {TData} data - Datos a enviar en la petición
272
+ * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición
273
+ * @returns {Promise<ApiResponse<T>>} Respuesta de la API
274
+ * @template T - Tipo de datos esperado en la respuesta
275
+ * @template TData - Tipo de datos a enviar en la petición
276
+ */
277
+ async putAsync(endpoint, data, config) {
278
+ return this.executeRequest('PUT', endpoint, { data, config });
279
+ }
280
+ /**
281
+ * Realiza una petición DELETE a la API
282
+ * @param {string} endpoint - Punto final de la API
283
+ * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición
284
+ * @returns {Promise<ApiResponse<boolean>>} Respuesta de la API
285
+ */
286
+ async deleteAsync(endpoint, config) {
287
+ return this.executeRequest('DELETE', endpoint, { config });
288
+ }
289
+ /**
290
+ * Realiza una petición PATCH a la API
291
+ * @param {string} endpoint - Punto final de la API
292
+ * @param {TData} data - Datos a enviar en la petición
293
+ * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición
294
+ * @returns {Promise<ApiResponse<T>>} Respuesta de la API
295
+ * @template T - Tipo de datos esperado en la respuesta
296
+ * @template TData - Tipo de datos a enviar en la petición
297
+ */
298
+ async patchAsync(endpoint, data, config) {
299
+ return this.executeRequest('PATCH', endpoint, { data, config });
300
+ }
301
+ }
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlzY2FsYXBpLWh0dHAtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUk5Qjs7OztPQUlHO0lBQ0gsWUFBWSxVQUF5QixFQUFFLFFBQTJCO1FBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0I7UUFDNUIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFrQyxFQUFFLEVBQUU7WUFDOUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUN2QyxDQUFDLFFBQXVCLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUNwQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE9BQU8sT0FB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RUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FDYixRQUFnQixFQUNoQixJQUFXLEVBQ1gsTUFBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFXLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUNaLFFBQWdCLEVBQ2hCLElBQVcsRUFDWCxNQUEyQjtRQUUzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQVcsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQ2YsUUFBZ0IsRUFDaEIsTUFBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFVLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQ2QsUUFBZ0IsRUFDaEIsSUFBVyxFQUNYLE1BQTJCO1FBRTNCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBVyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXG4gIEF4aW9zSW5zdGFuY2UsIFxuICBBeGlvc0Vycm9yLCBcbiAgQXhpb3NSZXNwb25zZSwgXG4gIEF4aW9zUmVxdWVzdENvbmZpZyxcbiAgSW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWdcbn0gZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgRmlzY2FsYXBpU2V0dGluZ3MgfSBmcm9tICcuLy4uL2NvbW1vbi9maXNjYWxhcGktc2V0dGluZ3MnO1xuaW1wb3J0IHsgSUZpc2NhbGFwaUh0dHBDbGllbnQsIEh0dHBNZXRob2QsIFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9maXNjYWxhcGktaHR0cC1jbGllbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlLCBQcm9ibGVtRGV0YWlscywgVmFsaWRhdGlvbkZhaWx1cmUgfSBmcm9tICcuLi9jb21tb24vYXBpLXJlc3BvbnNlJztcblxuLyoqXG4gKiBDbGllbnRlIEhUVFAgcGFyYSBGaXNjYWxBUElcbiAqL1xuZXhwb3J0IGNsYXNzIEZpc2NhbGFwaUh0dHBDbGllbnQgaW1wbGVtZW50cyBJRmlzY2FsYXBpSHR0cENsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogQXhpb3NJbnN0YW5jZTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXR0aW5nczogRmlzY2FsYXBpU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGluc3RhbmNpYSBkZWwgY2xpZW50ZSBIVFRQIHBhcmEgRmlzY2FsQVBJXG4gICAqIEBwYXJhbSB7QXhpb3NJbnN0YW5jZX0gaHR0cENsaWVudCAtIEluc3RhbmNpYSBkZSBBeGlvcyBjb25maWd1cmFkYVxuICAgKiBAcGFyYW0ge0Zpc2NhbGFwaVNldHRpbmdzfSBzZXR0aW5ncyAtIENvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgY2xpZW50ZSBGaXNjYWxBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IEF4aW9zSW5zdGFuY2UsIHNldHRpbmdzOiBGaXNjYWxhcGlTZXR0aW5ncykge1xuICAgIHRoaXMuaHR0cENsaWVudCA9IGh0dHBDbGllbnQ7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuXG4gICAgLy8gQ29uZmlndXJhciBpbnRlcmNlcHRvcmVzIHBhcmEgZWwgbG9nZ2luZyBlbiBtb2RvIGRlYnVnXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIHRoaXMuc2V0dXBEZWJ1Z0ludGVyY2VwdG9ycygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmEgbG9zIGludGVyY2VwdG9yZXMgcGFyYSBsb2dlYXIgbGFzIHBldGljaW9uZXMgeSByZXNwdWVzdGFzIGVuIG1vZG8gZGVidWdcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0dXBEZWJ1Z0ludGVyY2VwdG9ycygpOiB2b2lkIHtcbiAgICAvLyBJbnRlcmNlcHRvciBwYXJhIHBldGljaW9uZXNcbiAgICB0aGlzLmh0dHBDbGllbnQuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChjb25maWc6IEludGVybmFsQXhpb3NSZXF1ZXN0Q29uZmlnKSA9PiB7XG4gICAgICB0aGlzLmxvZ1JlcXVlc3QoY29uZmlnKTtcbiAgICAgIHJldHVybiBjb25maWc7XG4gICAgfSk7XG5cbiAgICAvLyBJbnRlcmNlcHRvciBwYXJhIHJlc3B1ZXN0YXNcbiAgICB0aGlzLmh0dHBDbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcbiAgICAgIChyZXNwb25zZTogQXhpb3NSZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmxvZ1Jlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogQXhpb3NFcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLmxvZ1Jlc3BvbnNlKGVycm9yLnJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9nZWEgbG9zIGRldGFsbGVzIGRlIHVuYSBwZXRpY2nDs24gSFRUUCBjdWFuZG8gZWwgbW9kbyBkZWJ1ZyBlc3TDoSBhY3RpdmFkb1xuICAgKiBAcGFyYW0ge0ludGVybmFsQXhpb3NSZXF1ZXN0Q29uZmlnfSBjb25maWcgLSBDb25maWd1cmFjacOzbiBkZSBsYSBwZXRpY2nDs25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgbG9nUmVxdWVzdChjb25maWc6IEludGVybmFsQXhpb3NSZXF1ZXN0Q29uZmlnKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIGNvbnNvbGUubG9nKCcqKioqKioqKioqKioqKioqKioqKioqIFJhdyBSZXF1ZXN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqJyk7XG4gICAgICBcbiAgICAgIGNvbnNvbGUubG9nKCdNZXRob2Q6ICcsICBjb25maWcubWV0aG9kPy50b1VwcGVyQ2FzZSgpKTtcbiAgICAgIGNvbnNvbGUubG9nKCdCYXNlVVJMOiAnLCBjb25maWcuYmFzZVVSTCk7XG4gICAgICBjb25zb2xlLmxvZygnUGF0aFVSTDogJywgY29uZmlnLnVybCk7XG4gICAgICBjb25zdCByZXNvdXJjZSA9IGAke2NvbmZpZy5iYXNlVVJMIHx8ICcnfS8ke2NvbmZpZy51cmwgfHwgJyd9YDtcbiAgICAgIGNvbnNvbGUubG9nKCdGdWxsVVJMOiAnLCByZXNvdXJjZSk7XG4gICAgICBcbiAgICAgIGlmIChjb25maWcuZGF0YSkge1xuICAgICAgICBjb25zb2xlLmxvZygnQm9keTonLCB0eXBlb2YgY29uZmlnLmRhdGEgPT09ICdzdHJpbmcnID8gY29uZmlnLmRhdGEgOiBKU09OLnN0cmluZ2lmeShjb25maWcuZGF0YSwgbnVsbCwgMikpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBcbiAgICAgIGlmIChjb25maWcucGFyYW1zKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJhbXM6JywgY29uZmlnLnBhcmFtcyk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9nZWEgbG9zIGRldGFsbGVzIGRlIHVuYSByZXNwdWVzdGEgSFRUUCBjdWFuZG8gZWwgbW9kbyBkZWJ1ZyBlc3TDoSBhY3RpdmFkb1xuICAgKiBAcGFyYW0ge0F4aW9zUmVzcG9uc2V9IHJlc3BvbnNlIC0gUmVzcHVlc3RhIGRlIGxhIHBldGljacOzblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBsb2dSZXNwb25zZShyZXNwb25zZTogQXhpb3NSZXNwb25zZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBjb25zb2xlLmxvZygnKioqKioqKioqKioqKioqKioqKioqKiBSYXcgUmVzcG9uc2UgKioqKioqKioqKioqKioqKioqKioqKioqKionKTtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdTdGF0dXM6JywgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgICAgIC8vY29uc29sZS5sb2coJ0hlYWRlcnM6JywgcmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICBjb25zb2xlLmxvZygnRGF0YTonLCBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhLCBudWxsLCAyKSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIGNvbnNvbGUubG9nKCcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqJyk7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVqZWN1dGEgdW5hIHBldGljacOzbiBIVFRQIGdlbsOpcmljYSBjb24gY29udHJvbCBjb21wbGV0byBzb2JyZSBsb3MgcGFyw6FtZXRyb3NcbiAgICogQHBhcmFtIHtIdHRwTWV0aG9kfSBtZXRob2QgLSBNw6l0b2RvIEhUVFAgYSB1dGlsaXphclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnQgLSBQdW50byBmaW5hbCBkZSBsYSBBUElcbiAgICogQHBhcmFtIHtSZXF1ZXN0T3B0aW9uczxURGF0YT59IG9wdGlvbnMgLSBPcGNpb25lcyBkZSBsYSBwZXRpY2nDs25cbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8VFJlc3VsdD4+fSBSZXNwdWVzdGEgZGUgbGEgQVBJXG4gICAqIEB0ZW1wbGF0ZSBUUmVzdWx0IC0gVGlwbyBkZSBkYXRvcyBlc3BlcmFkbyBlbiBsYSByZXNwdWVzdGFcbiAgICogQHRlbXBsYXRlIFREYXRhIC0gVGlwbyBkZSBkYXRvcyBhIGVudmlhciBlbiBsYSBwZXRpY2nDs24gKG9wY2lvbmFsKVxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZVJlcXVlc3Q8VFJlc3VsdCwgVERhdGEgPSBhbnk+KFxuICAgIG1ldGhvZDogSHR0cE1ldGhvZCxcbiAgICBlbmRwb2ludDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zPFREYXRhPiA9IHt9XG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8VFJlc3VsdD4+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRXh0cmFlciBvcGNpb25lc1xuICAgICAgY29uc3QgeyBkYXRhLCBxdWVyeVBhcmFtcywgY29uZmlnID0ge30sIHJlc3BvbnNlVHJhbnNmb3JtZXIgfSA9IG9wdGlvbnM7XG4gICAgICBcbiAgICAgIC8vIENvbnN0cnVpciBjb25maWd1cmFjacOzbiBkZSBsYSBwZXRpY2nDs25cbiAgICAgIGNvbnN0IHJlcXVlc3RDb25maWc6IEF4aW9zUmVxdWVzdENvbmZpZyA9IHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgIH07XG4gICAgICBcbiAgICAgIC8vIEHDsWFkaXIgcGFyw6FtZXRyb3MgZGUgY29uc3VsdGEgc2kgZXhpc3RlblxuICAgICAgaWYgKHF1ZXJ5UGFyYW1zICYmIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlcXVlc3RDb25maWcucGFyYW1zID0ge1xuICAgICAgICAgIC4uLihyZXF1ZXN0Q29uZmlnLnBhcmFtcyB8fCB7fSksXG4gICAgICAgICAgLi4ucXVlcnlQYXJhbXNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRWplY3V0YXIgbGEgcGV0aWNpw7NuIHNlZ8O6biBlbCBtw6l0b2RvXG4gICAgICBsZXQgcmVzcG9uc2U6IEF4aW9zUmVzcG9uc2U7XG4gICAgICBcbiAgICAgIC8vIExvcyBtw6l0b2RvcyBxdWUgbm8gYWNlcHRhbiBjdWVycG8gZW4gbGEgcGV0aWNpw7NuXG4gICAgICBpZiAobWV0aG9kID09PSAnR0VUJyB8fCBtZXRob2QgPT09ICdIRUFEJyB8fCBtZXRob2QgPT09ICdPUFRJT05TJyB8fCBtZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICAgIC8vIFBhcmEgREVMRVRFIHBvZHLDrWFtb3MgcXVlcmVyIGVudmlhciBkYXRvcyBlbiBlbCBjdWVycG8gc2kgZXMgbmVjZXNhcmlvXG4gICAgICAgIGlmIChtZXRob2QgPT09ICdERUxFVEUnICYmIGRhdGEpIHtcbiAgICAgICAgICAvLyBBdW5xdWUgbm8gZXMgZXN0w6FuZGFyLCBhbGd1bmFzIEFQSXMgYWNlcHRhbiBib2R5IGVuIERFTEVURVxuICAgICAgICAgIHJlcXVlc3RDb25maWcuZGF0YSA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQucmVxdWVzdChyZXF1ZXN0Q29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE3DqXRvZG9zIHF1ZSBhY2VwdGFuIGN1ZXJwbyAoUE9TVCwgUFVULCBQQVRDSClcbiAgICAgICAgcmVxdWVzdENvbmZpZy5kYXRhID0gZGF0YTtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQucmVxdWVzdChyZXF1ZXN0Q29uZmlnKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gUHJvY2VzYXIgbGEgcmVzcHVlc3RhXG4gICAgICBsZXQgcHJvY2Vzc2VkUmVzcG9uc2UgPSBhd2FpdCB0aGlzLnByb2Nlc3NSZXNwb25zZTxUUmVzdWx0PihyZXNwb25zZSk7XG4gICAgICBcbiAgICAgIC8vIEFwbGljYXIgdHJhbnNmb3JtYWRvciBwZXJzb25hbGl6YWRvIHNpIHNlIHByb3BvcmNpb25hXG4gICAgICBpZiAocmVzcG9uc2VUcmFuc2Zvcm1lciAmJiBwcm9jZXNzZWRSZXNwb25zZS5zdWNjZWVkZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGEgPSByZXNwb25zZVRyYW5zZm9ybWVyKHByb2Nlc3NlZFJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIHByb2Nlc3NlZFJlc3BvbnNlID0ge1xuICAgICAgICAgICAgLi4ucHJvY2Vzc2VkUmVzcG9uc2UsXG4gICAgICAgICAgICBkYXRhOiB0cmFuc2Zvcm1lZERhdGEgYXMgVFJlc3VsdFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKHRyYW5zZm9ybUVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHt9IGFzIFRSZXN1bHQsXG4gICAgICAgICAgICBzdWNjZWVkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogYEVycm9yIGFsIHRyYW5zZm9ybWFyIGxhIHJlc3B1ZXN0YTogJHt0cmFuc2Zvcm1FcnJvciBpbnN0YW5jZW9mIEVycm9yID8gdHJhbnNmb3JtRXJyb3IubWVzc2FnZSA6ICdFcnJvciBkZXNjb25vY2lkbyd9YCxcbiAgICAgICAgICAgIGRldGFpbHM6IHRyYW5zZm9ybUVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyB0cmFuc2Zvcm1FcnJvci5zdGFjayB8fCAnJyA6ICcnLFxuICAgICAgICAgICAgaHR0cFN0YXR1c0NvZGU6IHByb2Nlc3NlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4gcHJvY2Vzc2VkUmVzcG9uc2U7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcjxUUmVzdWx0PihlcnJvcik7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogUHJvY2VzYSBsYSByZXNwdWVzdGEgSFRUUCB5IGxhIGNvbnZpZXJ0ZSBlbiBBcGlSZXNwb25zZVxuICAgKiBAcGFyYW0ge0F4aW9zUmVzcG9uc2V9IHJlc3BvbnNlIC0gUmVzcHVlc3RhIEhUVFAgb3JpZ2luYWxcbiAgICogQHJldHVybnMge0FwaVJlc3BvbnNlPFQ+fSBSZXNwdWVzdGEgcHJvY2VzYWRhXG4gICAqIEB0ZW1wbGF0ZSBUIC0gVGlwbyBkZSBkYXRvcyBlc3BlcmFkb1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzUmVzcG9uc2U8VD4ocmVzcG9uc2U6IEF4aW9zUmVzcG9uc2UpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgLy8gU2kgbGEgcmVzcHVlc3RhIHlhIGVzIHVuIEFwaVJlc3BvbnNlLCBsbyByZXRvcm5hbW9zIGNvbiBlbCB0aXBvIGNvcnJlY3RvXG4gICAgaWYgKFxuICAgICAgcmVzcG9uc2UuZGF0YSAmJiBcbiAgICAgIHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0JyAmJiBcbiAgICAgICdzdWNjZWVkZWQnIGluIHJlc3BvbnNlLmRhdGEgJiYgXG4gICAgICAnZGF0YScgaW4gcmVzcG9uc2UuZGF0YVxuICAgICkge1xuICAgICAgLy8gTGEgcmVzcHVlc3RhIGVzIHVuIEFwaVJlc3BvbnNlPFQ+XG4gICAgICBjb25zdCBhcGlSZXNwb25zZSA9IHJlc3BvbnNlLmRhdGEgYXMgdW5rbm93biBhcyBBcGlSZXNwb25zZTxUPjtcbiAgICAgIFxuICAgICAgLy8gQXNlZ3VyYW1vcyBxdWUgZWwgaHR0cFN0YXR1c0NvZGUgcmVmbGVqZSBlbCBzdGF0dXMgZGUgbGEgcmVzcHVlc3RhIEhUVFBcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFwaVJlc3BvbnNlLFxuICAgICAgICBodHRwU3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICAvLyBMYSByZXNwdWVzdGEgbm8gZXMgdW4gQXBpUmVzcG9uc2UsIGxhIGVuY2Fwc3VsYW1vc1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiByZXNwb25zZS5kYXRhIGFzIHVua25vd24gYXMgVCxcbiAgICAgIHN1Y2NlZWRlZDogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgZGV0YWlsczogJycsXG4gICAgICBodHRwU3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzXG4gICAgfTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIE1hbmVqYSBsb3MgZXJyb3JlcyBkZSBsYXMgcGV0aWNpb25lcyBIVFRQXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gZXJyb3IgLSBFcnJvciBjYXB0dXJhZG9cbiAgICogQHJldHVybnMge0FwaVJlc3BvbnNlPFQ+fSBSZXNwdWVzdGEgZGUgZXJyb3IgZXN0YW5kYXJpemFkYVxuICAgKiBAdGVtcGxhdGUgVCAtIFRpcG8gZGUgZGF0b3MgZXNwZXJhZG9cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUmVxdWVzdEVycm9yPFQ+KGVycm9yOiB1bmtub3duKTogQXBpUmVzcG9uc2U8VD4ge1xuICAgIGNvbnN0IGF4aW9zRXJyb3IgPSBlcnJvciBhcyBBeGlvc0Vycm9yO1xuICAgIFxuICAgIC8vIEV4dHJhZXIgZGF0b3MgZGUgcmVzcHVlc3RhXG4gICAgY29uc3QgcmVzcG9uc2VEYXRhID0gYXhpb3NFcnJvci5yZXNwb25zZT8uZGF0YTtcbiAgICBcbiAgICAvLyBSZXZpc2FyIHNpIGVzIHVuIFByb2JsZW1EZXRhaWxzIHNlZ8O6biBSRkMgOTQ1N1xuICAgIGlmIChcbiAgICAgIHJlc3BvbnNlRGF0YSAmJiBcbiAgICAgIHR5cGVvZiByZXNwb25zZURhdGEgPT09ICdvYmplY3QnICYmIFxuICAgICAgJ3R5cGUnIGluIHJlc3BvbnNlRGF0YSAmJiBcbiAgICAgICd0aXRsZScgaW4gcmVzcG9uc2VEYXRhICYmXG4gICAgICAnc3RhdHVzJyBpbiByZXNwb25zZURhdGFcbiAgICApIHtcbiAgICAgIGNvbnN0IHByb2JsZW1EZXRhaWxzID0gcmVzcG9uc2VEYXRhIGFzIFByb2JsZW1EZXRhaWxzO1xuICAgICAgXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiB7fSBhcyBULFxuICAgICAgICBzdWNjZWVkZWQ6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiBwcm9ibGVtRGV0YWlscy50aXRsZSxcbiAgICAgICAgZGV0YWlsczogcHJvYmxlbURldGFpbHMuZGV0YWlsIHx8IEpTT04uc3RyaW5naWZ5KHByb2JsZW1EZXRhaWxzKSxcbiAgICAgICAgaHR0cFN0YXR1c0NvZGU6IGF4aW9zRXJyb3IucmVzcG9uc2U/LnN0YXR1cyB8fCA1MDBcbiAgICAgIH07XG4gICAgfVxuICAgIFxuICAgIC8vIFJldmlzYXIgc2kgZXMgdW4gQXBpUmVzcG9uc2U8VmFsaWRhdGlvbkZhaWx1cmVbXT4gcGFyYSBlcnJvcmVzIDQwMFxuICAgIGlmIChcbiAgICAgIGF4aW9zRXJyb3IucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAwICYmXG4gICAgICByZXNwb25zZURhdGEgJiZcbiAgICAgIHR5cGVvZiByZXNwb25zZURhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAnZGF0YScgaW4gcmVzcG9uc2VEYXRhICYmXG4gICAgICBBcnJheS5pc0FycmF5KHJlc3BvbnNlRGF0YS5kYXRhKVxuICAgICkge1xuICAgICAgY29uc3QgYXBpUmVzcG9uc2UgPSByZXNwb25zZURhdGEgYXMgQXBpUmVzcG9uc2U8VmFsaWRhdGlvbkZhaWx1cmVbXT47XG4gICAgICBcbiAgICAgIC8vIFNpIGhheSBlcnJvcmVzIGRlIHZhbGlkYWNpw7NuLCBleHRyYWVyIGVsIHByaW1lciBtZW5zYWplXG4gICAgICBpZiAoYXBpUmVzcG9uc2UuZGF0YSAmJiBhcGlSZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZmlyc3RGYWlsdXJlID0gYXBpUmVzcG9uc2UuZGF0YVswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7fSBhcyBULFxuICAgICAgICAgIHN1Y2NlZWRlZDogZmFsc2UsXG4gICAgICAgICAgbWVzc2FnZTogZmlyc3RGYWlsdXJlLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICBkZXRhaWxzOiBKU09OLnN0cmluZ2lmeShhcGlSZXNwb25zZS5kYXRhKSxcbiAgICAgICAgICBodHRwU3RhdHVzQ29kZTogNDAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFJlc3B1ZXN0YSBkZSBlcnJvciBnZW7DqXJpY2FcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YToge30gYXMgVCxcbiAgICAgIHN1Y2NlZWRlZDogZmFsc2UsXG4gICAgICBtZXNzYWdlOiBheGlvc0Vycm9yLm1lc3NhZ2UgfHwgJ09jdXJyacOzIHVuIGVycm9yIGVuIGxhIGNvbXVuaWNhY2nDs24gY29uIGVsIHNlcnZpZG9yJyxcbiAgICAgIGRldGFpbHM6IEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlRGF0YSB8fCB7fSksXG4gICAgICBodHRwU3RhdHVzQ29kZTogYXhpb3NFcnJvci5yZXNwb25zZT8uc3RhdHVzIHx8IDUwMFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVhbGl6YSB1bmEgcGV0aWNpw7NuIEdFVCBhIGxhIEFQSVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnQgLSBQdW50byBmaW5hbCBkZSBsYSBBUElcbiAgICogQHBhcmFtIHtBeGlvc1JlcXVlc3RDb25maWd9IFtjb25maWddIC0gQ29uZmlndXJhY2nDs24gYWRpY2lvbmFsIHBhcmEgbGEgcGV0aWNpw7NuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPFQ+Pn0gUmVzcHVlc3RhIGRlIGxhIEFQSVxuICAgKiBAdGVtcGxhdGUgVCAtIFRpcG8gZGUgZGF0b3MgZXNwZXJhZG8gZW4gbGEgcmVzcHVlc3RhXG4gICAqL1xuICBhc3luYyBnZXRBc3luYzxUPihlbmRwb2ludDogc3RyaW5nLCBjb25maWc/OiBBeGlvc1JlcXVlc3RDb25maWcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8VD4oJ0dFVCcsIGVuZHBvaW50LCB7IGNvbmZpZyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFsaXphIHVuYSBwZXRpY2nDs24gR0VUIHBvciBJRCBhIGxhIEFQSVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnQgLSBQdW50byBmaW5hbCBkZSBsYSBBUEkgY29uIElEXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSBbY29uZmlnXSAtIENvbmZpZ3VyYWNpw7NuIGFkaWNpb25hbCBwYXJhIGxhIHBldGljacOzblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxUPj59IFJlc3B1ZXN0YSBkZSBsYSBBUElcbiAgICogQHRlbXBsYXRlIFQgLSBUaXBvIGRlIGRhdG9zIGVzcGVyYWRvIGVuIGxhIHJlc3B1ZXN0YVxuICAgKi9cbiAgYXN5bmMgZ2V0QnlJZEFzeW5jPFQ+KGVuZHBvaW50OiBzdHJpbmcsIGNvbmZpZz86IEF4aW9zUmVxdWVzdENvbmZpZyk6IFByb21pc2U8QXBpUmVzcG9uc2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdDxUPignR0VUJywgZW5kcG9pbnQsIHsgY29uZmlnIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWxpemEgdW5hIHBldGljacOzbiBQT1NUIGEgbGEgQVBJXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbmRwb2ludCAtIFB1bnRvIGZpbmFsIGRlIGxhIEFQSVxuICAgKiBAcGFyYW0ge1REYXRhfSBkYXRhIC0gRGF0b3MgYSBlbnZpYXIgZW4gbGEgcGV0aWNpw7NuXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSBbY29uZmlnXSAtIENvbmZpZ3VyYWNpw7NuIGFkaWNpb25hbCBwYXJhIGxhIHBldGljacOzblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxUPj59IFJlc3B1ZXN0YSBkZSBsYSBBUElcbiAgICogQHRlbXBsYXRlIFQgLSBUaXBvIGRlIGRhdG9zIGVzcGVyYWRvIGVuIGxhIHJlc3B1ZXN0YVxuICAgKiBAdGVtcGxhdGUgVERhdGEgLSBUaXBvIGRlIGRhdG9zIGEgZW52aWFyIGVuIGxhIHBldGljacOzblxuICAgKi9cbiAgYXN5bmMgcG9zdEFzeW5jPFQsIFREYXRhID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIGVuZHBvaW50OiBzdHJpbmcsIFxuICAgIGRhdGE6IFREYXRhLCBcbiAgICBjb25maWc/OiBBeGlvc1JlcXVlc3RDb25maWdcbiAgKTogUHJvbWlzZTxBcGlSZXNwb25zZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSZXF1ZXN0PFQsIFREYXRhPignUE9TVCcsIGVuZHBvaW50LCB7IGRhdGEsIGNvbmZpZyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFsaXphIHVuYSBwZXRpY2nDs24gUFVUIGEgbGEgQVBJXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbmRwb2ludCAtIFB1bnRvIGZpbmFsIGRlIGxhIEFQSVxuICAgKiBAcGFyYW0ge1REYXRhfSBkYXRhIC0gRGF0b3MgYSBlbnZpYXIgZW4gbGEgcGV0aWNpw7NuXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSBbY29uZmlnXSAtIENvbmZpZ3VyYWNpw7NuIGFkaWNpb25hbCBwYXJhIGxhIHBldGljacOzblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxUPj59IFJlc3B1ZXN0YSBkZSBsYSBBUElcbiAgICogQHRlbXBsYXRlIFQgLSBUaXBvIGRlIGRhdG9zIGVzcGVyYWRvIGVuIGxhIHJlc3B1ZXN0YVxuICAgKiBAdGVtcGxhdGUgVERhdGEgLSBUaXBvIGRlIGRhdG9zIGEgZW52aWFyIGVuIGxhIHBldGljacOzblxuICAgKi9cbiAgYXN5bmMgcHV0QXN5bmM8VCwgVERhdGEgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgZW5kcG9pbnQ6IHN0cmluZywgXG4gICAgZGF0YTogVERhdGEsIFxuICAgIGNvbmZpZz86IEF4aW9zUmVxdWVzdENvbmZpZ1xuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8VCwgVERhdGE+KCdQVVQnLCBlbmRwb2ludCwgeyBkYXRhLCBjb25maWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhbGl6YSB1bmEgcGV0aWNpw7NuIERFTEVURSBhIGxhIEFQSVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnQgLSBQdW50byBmaW5hbCBkZSBsYSBBUElcbiAgICogQHBhcmFtIHtBeGlvc1JlcXVlc3RDb25maWd9IFtjb25maWddIC0gQ29uZmlndXJhY2nDs24gYWRpY2lvbmFsIHBhcmEgbGEgcGV0aWNpw7NuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFwaVJlc3BvbnNlPGJvb2xlYW4+Pn0gUmVzcHVlc3RhIGRlIGxhIEFQSVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQXN5bmMoXG4gICAgZW5kcG9pbnQ6IHN0cmluZywgXG4gICAgY29uZmlnPzogQXhpb3NSZXF1ZXN0Q29uZmlnXG4gICk6IFByb21pc2U8QXBpUmVzcG9uc2U8Ym9vbGVhbj4+IHtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdDxib29sZWFuPignREVMRVRFJywgZW5kcG9pbnQsIHsgY29uZmlnIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWxpemEgdW5hIHBldGljacOzbiBQQVRDSCBhIGxhIEFQSVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW5kcG9pbnQgLSBQdW50byBmaW5hbCBkZSBsYSBBUElcbiAgICogQHBhcmFtIHtURGF0YX0gZGF0YSAtIERhdG9zIGEgZW52aWFyIGVuIGxhIHBldGljacOzblxuICAgKiBAcGFyYW0ge0F4aW9zUmVxdWVzdENvbmZpZ30gW2NvbmZpZ10gLSBDb25maWd1cmFjacOzbiBhZGljaW9uYWwgcGFyYSBsYSBwZXRpY2nDs25cbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8VD4+fSBSZXNwdWVzdGEgZGUgbGEgQVBJXG4gICAqIEB0ZW1wbGF0ZSBUIC0gVGlwbyBkZSBkYXRvcyBlc3BlcmFkbyBlbiBsYSByZXNwdWVzdGFcbiAgICogQHRlbXBsYXRlIFREYXRhIC0gVGlwbyBkZSBkYXRvcyBhIGVudmlhciBlbiBsYSBwZXRpY2nDs25cbiAgICovXG4gIGFzeW5jIHBhdGNoQXN5bmM8VCwgVERhdGEgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gICAgZW5kcG9pbnQ6IHN0cmluZywgXG4gICAgZGF0YTogVERhdGEsIFxuICAgIGNvbmZpZz86IEF4aW9zUmVxdWVzdENvbmZpZ1xuICApOiBQcm9taXNlPEFwaVJlc3BvbnNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3Q8VCwgVERhdGE+KCdQQVRDSCcsIGVuZHBvaW50LCB7IGRhdGEsIGNvbmZpZyB9KTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,13 @@
1
+ // Exportar API pública
2
+ // Cliente principal
3
+ export { FiscalapiClient } from './services/fiscalapi-client';
4
+ export { PagedList } from './common/paged-list';
5
+ export { BaseDto } from './common/base-dto';
6
+ export { AuditableDto } from './common/auditable-dto';
7
+ export { SerializableDto } from './common/serializable-dto';
8
+ export { CatalogDto } from './common/catalog-dto';
9
+ // Utilidades
10
+ export { formatSatDate, parseSatDate, SAT_DATE_FORMAT } from './utils/date-utils';
11
+ export { encodeToBase64, decodeFromBase64 } from './utils/encoding-utils';
12
+ export { isNullOrUndefined, isNullOrEmpty, isArrayNullOrEmpty, isObjectEmpty } from './utils/validation-utils';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0MsdUJBQXVCO0FBRXhCLG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUF5QzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsYUFBYTtBQUNiLE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGVBQWUsRUFDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNqQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixhQUFhLEVBQ2QsTUFBTSwwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGVSZXNwb25zZSB9IGZyb20gJy4vY29tbW9uL2ZpbGUtcmVzcG9uc2UnO1xuIC8vIEV4cG9ydGFyIEFQSSBww7pibGljYVxuXG4vLyBDbGllbnRlIHByaW5jaXBhbFxuZXhwb3J0IHsgRmlzY2FsYXBpQ2xpZW50IH0gZnJvbSAnLi9zZXJ2aWNlcy9maXNjYWxhcGktY2xpZW50JztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0IHsgSUZpc2NhbGFwaUNsaWVudCB9IGZyb20gJy4vYWJzdHJhY3Rpb25zL2Zpc2NhbGFwaS1jbGllbnQuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElGaXNjYWxhcGlTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdGlvbnMvZmlzY2FsYXBpLXNlcnZpY2UuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElBcGlLZXlTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdGlvbnMvYXBpLWtleS1zZXJ2aWNlLmludGVyZmFjZSc7XG5leHBvcnQgeyBJQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuL2Fic3RyYWN0aW9ucy9jYXRhbG9nLXNlcnZpY2UuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElJbnZvaWNlU2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3Rpb25zL2ludm9pY2Utc2VydmljZS5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgSVBlcnNvblNlcnZpY2UgfSBmcm9tICcuL2Fic3RyYWN0aW9ucy9wZXJzb24tc2VydmljZS5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgSVByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdGlvbnMvcHJvZHVjdC1zZXJ2aWNlLmludGVyZmFjZSc7XG5leHBvcnQgeyBJVGF4RmlsZVNlcnZpY2UgfSBmcm9tICcuL2Fic3RyYWN0aW9ucy90YXgtZmlsZS1zZXJ2aWNlLmludGVyZmFjZSc7XG5cbi8vIE1vZGVsb3NcbmV4cG9ydCB7IEFwaUtleSB9IGZyb20gJy4vbW9kZWxzL2FwaS1rZXknO1xuZXhwb3J0IHsgUGVyc29uIH0gZnJvbSAnLi9tb2RlbHMvcGVyc29uJztcbmV4cG9ydCB7IFByb2R1Y3QsIFByb2R1Y3RUYXggfSBmcm9tICcuL21vZGVscy9wcm9kdWN0JztcbmV4cG9ydCB7IFRheEZpbGUgfSBmcm9tICcuL21vZGVscy90YXgtZmlsZSc7XG5leHBvcnQge1xuICBJbnZvaWNlLFxuICBJbnZvaWNlSXNzdWVyLFxuICBJbnZvaWNlUmVjaXBpZW50LFxuICBJbnZvaWNlSXRlbSxcbiAgSW52b2ljZVJlc3BvbnNlLFxuICBUYXhDcmVkZW50aWFsLFxuICBSZWxhdGVkSW52b2ljZSxcbiAgR2xvYmFsSW5mb3JtYXRpb24sXG4gIEl0ZW1UYXgsXG4gIEludm9pY2VQYXltZW50LFxuICBQYWlkSW52b2ljZSxcbiAgUGFpZEludm9pY2VUYXgsXG4gIENhbmNlbEludm9pY2VSZXF1ZXN0LFxuICBDYW5jZWxJbnZvaWNlUmVzcG9uc2UsXG4gIEludm9pY2VTdGF0dXNSZXF1ZXN0LFxuICBJbnZvaWNlU3RhdHVzUmVzcG9uc2UsXG4gIENyZWF0ZVBkZlJlcXVlc3QsXG4gIFNlbmRJbnZvaWNlUmVxdWVzdFxufSBmcm9tICcuL21vZGVscy9pbnZvaWNlJztcblxuLy8gQ29tw7puXG5leHBvcnQgeyBGaXNjYWxhcGlTZXR0aW5ncyB9IGZyb20gJy4vY29tbW9uL2Zpc2NhbGFwaS1zZXR0aW5ncyc7XG5leHBvcnQgeyBBcGlSZXNwb25zZSwgVmFsaWRhdGlvbkZhaWx1cmUgfSBmcm9tICcuL2NvbW1vbi9hcGktcmVzcG9uc2UnO1xuZXhwb3J0IHsgUGFnZWRMaXN0IH0gZnJvbSAnLi9jb21tb24vcGFnZWQtbGlzdCc7XG5leHBvcnQgeyBGaWxlUmVzcG9uc2UgfSBmcm9tICcuL2NvbW1vbi9maWxlLXJlc3BvbnNlJztcbmV4cG9ydCB7IEJhc2VEdG8gfSBmcm9tICcuL2NvbW1vbi9iYXNlLWR0byc7XG5leHBvcnQgeyBBdWRpdGFibGVEdG8gfSBmcm9tICcuL2NvbW1vbi9hdWRpdGFibGUtZHRvJztcbmV4cG9ydCB7IFNlcmlhbGl6YWJsZUR0byB9IGZyb20gJy4vY29tbW9uL3NlcmlhbGl6YWJsZS1kdG8nO1xuZXhwb3J0IHsgQ2F0YWxvZ0R0byB9IGZyb20gJy4vY29tbW9uL2NhdGFsb2ctZHRvJztcblxuLy8gVXRpbGlkYWRlc1xuZXhwb3J0IHtcbiAgZm9ybWF0U2F0RGF0ZSxcbiAgcGFyc2VTYXREYXRlLFxuICBTQVRfREFURV9GT1JNQVRcbn0gZnJvbSAnLi91dGlscy9kYXRlLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgZW5jb2RlVG9CYXNlNjQsXG4gIGRlY29kZUZyb21CYXNlNjRcbn0gZnJvbSAnLi91dGlscy9lbmNvZGluZy11dGlscyc7XG5cbmV4cG9ydCB7XG4gIGlzTnVsbE9yVW5kZWZpbmVkLFxuICBpc051bGxPckVtcHR5LFxuICBpc0FycmF5TnVsbE9yRW1wdHksXG4gIGlzT2JqZWN0RW1wdHlcbn0gZnJvbSAnLi91dGlscy92YWxpZGF0aW9uLXV0aWxzJzsiXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvYXBpLWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIFxuXG4vLyBzcmMvbW9kZWxzL2FwaS1rZXkudHNcbmltcG9ydCB7IEJhc2VEdG8gfSBmcm9tICcuLi9jb21tb24vYmFzZS1kdG8nO1xuXG4vKipcbiAqIE1vZGVsbyBBUEkgS2V5XG4gKiBSZXByZXNlbnRhIHVuYSBjbGF2ZSBkZSBhdXRlbnRpY2FjacOzbiBlbiBmaXNjYWxhcGlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlLZXkgIGV4dGVuZHMgQmFzZUR0byB7XG4gIC8qKiBFbCBpZGVudGlmaWNhZG9yIMO6bmljbyBkZSBsYSBBUEkga2V5ICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKiBFbCBlbnRvcm5vIGFsIHF1ZSBwZXJ0ZW5lY2UgbGEgQVBJIGtleSAqL1xuICBlbnZpcm9ubWVudD86IHN0cmluZztcblxuICAvKiogRWwgQVBJIGtleS4gRXN0ZSB2YWxvciBlcyBlbCBxdWUgc2UgdXRpbGl6YSBwYXJhIGF1dGVudGljYXIgbGFzIHNvbGljaXR1ZGVzICovXG4gIGFwaUtleVZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKiBFbCBpZGVudGlmaWNhZG9yIMO6bmljbyBkZSBsYSBwZXJzb25hIGEgbGEgcXVlIHBlcnRlbmVjZSBsYSBBUEkga2V5ICovXG4gIHBlcnNvbklkPzogc3RyaW5nO1xuXG4gIC8qKiBFbCBpZGVudGlmaWNhZG9yIMO6bmljbyBkZWwgdGVuYW50IGFsIHF1ZSBwZXJ0ZW5lY2UgbGEgQVBJIGtleSAqL1xuICB0ZW5hbnRJZD86IHN0cmluZztcblxuICAvKiogRWwgZXN0YWRvIGRlIGxhIEFQSSBrZXkuIFZhbG9yZXM6IFwiMCBEaXNhYmxlZCAgfCAxIEVuYWJsZWQgXCIgKi9cbiAgYXBpS2V5U3RhdHVzPzogbnVtYmVyO1xuXG4gIC8qKiBOb21icmUgbyBkZXNjcmlwY2nDs24gZGUgbGEgQVBJIGtleSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvaW52b2ljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG4gXG4vLyBzcmMvbW9kZWxzL2ludm9pY2UudHNcbmltcG9ydCB7IEJhc2VEdG8gfSBmcm9tICcuLi9jb21tb24vYmFzZS1kdG8nO1xuXG4vKipcbiAqIE1vZGVsbyBmYWN0dXJhXG4gKiBDb250aWVuZSB0b2RhIGxhIGluZm9ybWFjacOzbiBkZSB1bmEgZmFjdHVyYSwgY29tbyBkYXRvcyBkZWwgZW1pc29yLCByZWNlcHRvciwgXG4gKiBwcm9kdWN0b3Mvc2VydmljaW9zLCBpbXBvcnRlcywgbcOpdG9kbyBkZSBwYWdvLCBlbCB0aXBvIGRlIGZhY3R1cmEsIGVudHJlIG90cm9zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludm9pY2Uge1xuICAvKiogQ8OzZGlnbyBkZSBsYSB2ZXJzacOzbiBkZSBsYSBmYWN1cmEuIERlZmF1bHQ6IFwiNC4wXCIgKi9cbiAgdmVyc2lvbkNvZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEVzIGVsIG7Dum1lcm8gZGUgc2VyaWUgcXVlIHV0aWxpemEgZWwgY29udHJpYnV5ZW50ZSBwYXJhIGNvbnRyb2wgaW50ZXJubyBkZSBzdSBpbmZvcm1hY2nDs24gKi9cbiAgc2VyaWVzOiBzdHJpbmc7XG5cbiAgLyoqIEVzIGxhIGZlY2hhIHkgaG9yYSBkZSBleHBlZGljacOzbiBkZWwgY29tcHJvYmFudGUgZmlzY2FsLiBTZSBleHByZXNhIGVuIGxhIGZvcm1hIEFBQUEtTU0tRERUaGg6bW06c3MgKi9cbiAgZGF0ZTogRGF0ZVRpbWUgfCBzdHJpbmc7XG5cbiAgLyoqIENvbnNlY3V0aXZvIGRlIGZhY3R1cmFzIHBvciBjdWVudGEuIFNlIGluY3JlbWVudGEgY29uIGNhZGEgZmFjdHVyYSBnZW5lcmFkYSBlbiB0dSBjdWVudGEgZGUgRmlzY2FsYXBpICovXG4gIGNvbnNlY3V0aXZlPzogbnVtYmVyO1xuXG4gIC8qKiBDb25zZWN1dGl2byBkZSBmYWN0dXJhcyBwb3IgUkZDIGVtaXNvci4gU2UgaW5jcmVtZW50YSBwb3IgY2FkYSBmYWN0dXJhIGdlbmVyYWRhIHBvciBlbCBtaXNtbyBSRkMgZW1pc29yICovXG4gIG51bWJlcj86IG51bWJlcjtcblxuICAvKiogU3VidG90YWwgZGUgbGEgZmFjdHVyYS4gQ2FtcG8gZGUgc29sbyBsZWN0dXJhICovXG4gIHN1YnRvdGFsPzogbnVtYmVyO1xuXG4gIC8qKiBEZXNjdWVudG8gYXBsaWNhZG8gYSBsYSBmYWN0dXJhLiBDYW1wbyBkZSBzb2xvIGxlY3R1cmEgKi9cbiAgZGlzY291bnQ/OiBudW1iZXI7XG5cbiAgLyoqIFRvdGFsIGRlIGxhIGZhY3R1cmEuIENhbXBvIGRlIHNvbG8gbGVjdHVyYSAqL1xuICB0b3RhbD86IG51bWJlcjtcblxuICAvKiogVVVJRCBkZSBsYSBmYWN0dXJhLCBlcyBlbCBmb2xpbyBmaXNjYWwgYXNpZ25hZG8gcG9yIGVsIFNBVCBhbCBtb21lbnRvIGRlbCB0aW1icmFkbyAqL1xuICB1dWlkPzogc3RyaW5nO1xuXG4gIC8qKiBDw7NkaWdvIGRlIGxhIGZvcm1hIGRlIHBhZ28gcGFyYSBsYSBmYWN0dXJhLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0Zvcm1hUGFnbyAqL1xuICBwYXltZW50Rm9ybUNvZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgbGEgbW9uZWRhIHV0aWxpemFkYSBwYXJhIGV4cHJlc2FyIGxvcyBtb250b3MuIERlZmF1bHQ6IFwiTVhOXCIgKi9cbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgdGlwbyBkZSBmYWN0dXJhLiBDYXTDoWxvZ28gZGVsIFNBVCBjX1RpcG9EZUNvbXByb2JhbnRlICovXG4gIHR5cGVDb2RlOiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gcG9zdGFsIGRlbCBlbWlzb3IgKi9cbiAgZXhwZWRpdGlvblppcENvZGU6IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBxdWUgc2UgaWRlbnRpZmljYSBzaSBsYSBmYWN0dXJhIGFtcGFyYSB1bmEgb3BlcmFjacOzbiBkZSBleHBvcnRhY2nDs24uIERlZmF1bHQ6IFwiMDFcIiAqL1xuICBleHBvcnRDb2RlOiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgbcOpdG9kbyBwYXJhIGxhIGZhY3R1cmEgZGUgcGFnbyBkZWwgY2F0w6Fsb2dvIGRlbCBTQVQgY19NZXRvZG9QYWdvICovXG4gIHBheW1lbnRNZXRob2RDb2RlPzogc3RyaW5nO1xuXG4gIC8qKiBUaXBvIGRlIGNhbWJpbyBGSVggY29uZm9ybWUgYSBsYSBtb25lZGEgcmVnaXN0cmFkYSBlbiBsYSBmYWN0dXJhLiBEZWZhdWx0OiAxICovXG4gIGV4Y2hhbmdlUmF0ZT86IG51bWJlcjtcblxuICAvKiogRWwgZW1pc29yIGRlIGxhIGZhY3R1cmEgKi9cbiAgaXNzdWVyOiBJbnZvaWNlSXNzdWVyO1xuXG4gIC8qKiBSZWNlcHRvciBkZSBsYSBmYWN0dXJhICovXG4gIHJlY2lwaWVudDogSW52b2ljZVJlY2lwaWVudDtcblxuICAvKiogQ29uY2VwdG9zIGRlIGxhIGZhY3R1cmEgKHByb2R1Y3RvcyBvIHNlcnZpY2lvcykgKi9cbiAgaXRlbXM/OiBJbnZvaWNlSXRlbVtdO1xuXG4gIC8qKiBJbmZvcm1hY2lvbiBnbG9iYWwuIFV0aWxpemFkbyBjdWFuZG8gc2UgZ2VuZXJhIHVuYSBmYWN0dXJhIGdsb2JhbCAqL1xuICBnbG9iYWxJbmZvcm1hdGlvbj86IEdsb2JhbEluZm9ybWF0aW9uO1xuXG4gIC8qKiBGYWN0dXJhcyByZWxhY2lvbmFkYXMgKi9cbiAgcmVsYXRlZEludm9pY2VzPzogUmVsYXRlZEludm9pY2VbXTtcblxuICAvKiogUGFnbyBvIHBhZ29zIHJlY2liaWRvcyBwYXJhIGxpcXVpZGFyIHBhcmNpYWwgbyB0b3RhbG1lbnRlIHVuYSBmYWN0dXJhIGRlIGluZ3Jlc28gZW1pdGlkYSBwcmV2aWFtZW50ZSAqL1xuICBwYXltZW50cz86IEludm9pY2VQYXltZW50W107XG5cbiAgLyoqIFJlc3B1ZXN0YSBkZWwgU0FULiBDb250aWVuZSBsYSBpbmZvcm1hY2nDs24gZGVsIHRpbWJyYWRvLiAoU8OzbG8gbGVjdHVyYSkgKi9cbiAgcmVzcG9uc2VzPzogSW52b2ljZVJlc3BvbnNlW107XG59XG5cbi8qKlxuICogRW1pc29yIGRlIGxhIGZhY3R1cmFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZvaWNlSXNzdWVyIHtcbiAgLyoqIElEIGRlIGxhIHBlcnNvbmEgKGVtaXNvcmEpIGVuIGZpc2NhbGFwaSAqL1xuICBpZD86IHN0cmluZztcblxuICAvKiogUkZDIGRlbCBlbWlzb3IgKFRheCBJZGVudGlmaWNhdGlvbiBOdW1iZXIpICovXG4gIHRpbj86IHN0cmluZztcblxuICAvKiogUmF6w7NuIHNvY2lhbCBkZWwgZW1pc29yIHNpbiByZWdpbWVuIGRlIGNhcGl0YWwgKi9cbiAgbGVnYWxOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBDw7NkaWdvIGRlbCByw6lnaW1lbiBmaXNjYWwgZGVsIGVtaXNvci4gQ2F0w6Fsb2dvIGRlbCBTQVQgY19SZWdpbWVuRmlzY2FsICovXG4gIHRheFJlZ2ltZUNvZGU/OiBzdHJpbmc7XG5cbiAgLyoqIFNlbGxvcyBkZWwgZW1pc29yIChhcmNoaXZvcyAuY2VyIHkgLmtleSkgKi9cbiAgdGF4Q3JlZGVudGlhbHM/OiBUYXhDcmVkZW50aWFsW107XG59XG5cbi8qKlxuICogU2VsbG9zIGRlbCBlbWlzb3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXhDcmVkZW50aWFsIHtcbiAgLyoqIEFyY2hpdm8gZW4gZm9ybWF0byBiYXNlNjQgKi9cbiAgYmFzZTY0RmlsZTogc3RyaW5nO1xuXG4gIC8qKiBUaXBvIGRlIGFyY2hpdm8uIDA6IENldGlmaWFjZG8gQ1NEIChhcmNoaXZvIC5jZXIpLCAxOiBMbGF2ZSBwcml2YWRhIChhcmNoaXZvIC5rZXkpICovXG4gIGZpbGVUeXBlOiBudW1iZXI7XG5cbiAgLyoqIENvbnRyYXNlw7FhIGRlbCBhcmNoaXZvIC5rZXkuIERlYmUgc2VyIGxhIG1pc21hIGVuIGFtYm9zIG9iamV0b3MgKC5jZXIgeSAua2V5KSAqL1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlY2VwdG9yIGRlIGxhIGZhY3R1cmFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZvaWNlUmVjaXBpZW50IHtcbiAgLyoqIElEIGRlIGxhIHBlcnNvbmEgKHJlY2VwdG9yYSkgZW4gZmlzY2FsYXBpICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKiBSRkMgZGVsIHJlY2VwdG9yIChUYXggSWRlbnRpZmljYXRpb24gTnVtYmVyKSAqL1xuICB0aW4/OiBzdHJpbmc7XG5cbiAgLyoqIFJhesOzbiBzb2NpYWwgZGVsIHJlY2VwdG9yIHNpbiByZWdpbWVuIGRlIGNhcGl0YWwgKi9cbiAgbGVnYWxOYW1lPzogc3RyaW5nO1xuXG4gIC8qKiBDw7NkaWdvIGRlbCByw6lnaW1lbiBmaXNjYWwgZGVsIHJlY2VwdG9yLiBDYXTDoWxvZ28gZGVsIFNBVCBjX1JlZ2ltZW5GaXNjYWwgKi9cbiAgdGF4UmVnaW1lQ29kZT86IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBkZWwgdXNvIENGREkuIENhdMOhbG9nbyBkZWwgU0FUIGNfVXNvQ0ZESSAqL1xuICBjZmRpVXNlQ29kZT86IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBwb3N0YWwgZGVsIHJlY2VwdG9yICovXG4gIHppcENvZGU/OiBzdHJpbmc7XG5cbiAgLyoqIENvcnJlbyBlbGVjdHLDs25pY28gZGVsIHJlY2VwdG9yLiBQYXJhIGVudmlhciBsYSBmYWN0dXJhIGRlc2RlIGVsIGRhc2JvcmFyZCAqL1xuICBlbWFpbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25jZXB0b3MgZGUgbGEgZmFjdHVyYSAocHJvZHVjdG9zIG8gc2VydmljaW9zKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludm9pY2VJdGVtIHtcbiAgLyoqIElEIGRlbCBwcm9kdWN0byBlbiBmaXNjYWxhcGkgKi9cbiAgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGVsIHByb2R1Y3RvIG8gc2VydmljaW8gZGVsIGNhdMOhbG9nbyBjX0NsYXZlUHJvZFNlcnYgKi9cbiAgaXRlbUNvZGU/OiBzdHJpbmc7XG5cbiAgLyoqIENhbnRpZGFkIGRlbCBwcm9kdWN0byBvIHNlcnZpY2lvICovXG4gIHF1YW50aXR5OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqIENhbnRpZGFkIG1vbmV0YXJpYSBkZWwgZGVzY3VlbnRvIGFwbGljYWRvIGFsIHByb2R1Y3RvIG8gc2VydmljaW8gKi9cbiAgZGlzY291bnQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgbGEgdW5pZGFkIGRlIG1lZGlkYSBkZWwgcHJvZHVjdG8gbyBzZXJ2aWNpby4gQ2F0w6Fsb2dvIGNfQ2xhdmVVbmlkYWQgKi9cbiAgdW5pdE9mTWVhc3VyZW1lbnRDb2RlPzogc3RyaW5nO1xuXG4gIC8qKiBEZXNjcmlwY2nDs24gZGVsIHByb2R1Y3RvIG8gc2VydmljaW8gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqIFByZWNpbyB1bml0YXJpbyBkZWwgcHJvZHVjdG8gbyBzZXJ2aWNpby4gKFNpbiBpbXB1ZXN0b3MpICovXG4gIHVuaXRQcmljZT86IG51bWJlciB8IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBkZSBvYmxpZ2FjaW9uZXMgZGUgaW1wdWVzdG8gYXBsaWNhYmxlcyBhbCBwcm9kdWN0byBvIHNlcnZpY2lvLiBDYXTDoWxvZ28gY19PYmpldG9JbXAgKi9cbiAgdGF4T2JqZWN0Q29kZT86IHN0cmluZztcblxuICAvKiogU0tVIG8gY2xhdmUgZGVsIHNpc3RlbWEgZXh0ZXJubyBxdWUgaWRlbnRpZmljYSBhbCBwcm9kdWN0byBvIHNlcnZpY2lvICovXG4gIGl0ZW1Ta3U/OiBzdHJpbmc7XG5cbiAgLyoqIEltcHVlc3RvcyBhcGxpY2FibGVzIGFsIHByb2R1Y3RvIG8gc2VydmljaW8gKi9cbiAgaXRlbVRheGVzPzogSXRlbVRheFtdO1xufVxuXG4vKipcbiAqIEltcHVlc3RvcyBhcGxpY2FibGVzIGFsIHByb2R1Y3RvIG8gc2VydmljaW9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJdGVtVGF4IHtcbiAgLyoqIEPDs2RpZ28gZGVsIGltcHVlc3RvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0ltcHVlc3RvICovXG4gIHRheENvZGU6IHN0cmluZztcblxuICAvKiogVGlwbyBkZSBmYWN0b3IuIENhdMOhbG9nbyBkZWwgU0FUIGNfVGlwb0ZhY3RvciAqL1xuICB0YXhUeXBlQ29kZTogc3RyaW5nO1xuXG4gIC8qKiBUYXNhIGRlbCBpbXB1ZXN0by4gQ2F0w6Fsb2dvIGRlbCBTQVQgY19UYXNhT0N1b3RhICAqL1xuICB0YXhSYXRlPzogc3RyaW5nIHwgbnVtYmVyOyBcblxuICAvKiogQ8OzZGlnbyBxdWUgaW5kaWNhIGxhIG5hdHVyYWxlemEgZGVsIGltcHVlc3RvLiBcIlRcIjogSW1wdWVzdG8gVHJhc2xhZG8sIFwiUlwiOiBJbXB1ZXN0byBSZXRlbmlkbyAqL1xuICB0YXhGbGFnQ29kZTogc3RyaW5nO1xufVxuXG5cblxuLyoqXG4gKiBJbmZvcm1hY2lvbiBnbG9iYWwgcGFyYSBmYWN0dXJhIGdsb2JhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbEluZm9ybWF0aW9uIHtcbiAgLyoqIEPDs2RpZ28gZGUgbGEgcGVyaW9kaWNpZGFkIGRlIGxhIGZhY3R1cmEgZ2xvYmFsLiBDYXTDoWxvZ28gZGVsIFNBVCBjX1BlcmlvZGljaWRhZCAqL1xuICBwZXJpb2RpY2l0eUNvZGU6IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBkZWwgbWVzIGRlIGxhIGZhY3R1cmEgZ2xvYmFsLiBDYXTDoWxvZ28gZGVsIFNBVCBjX01lc2VzICovXG4gIG1vbnRoQ29kZTogc3RyaW5nO1xuXG4gIC8qKiBBw7FvIGRlIGxhIGZhY3R1cmEgZ2xvYmFsIGEgNCBkw61naXRvcyAqL1xuICB5ZWFyOiBudW1iZXI7XG59XG5cbi8qKlxuICogRmFjdHVyYXMgcmVsYWNpb25hZGFzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsYXRlZEludm9pY2Uge1xuICAvKiogQ8OzZGlnbyBkZSBsYSByZWxhY2nDs24gZGUgbGEgZmFjdHVyYSByZWxhY2lvbmFkYS4gQ2F0w6Fsb2dvIGRlbCBTQVQgY19UaXBvUmVsYWNpb24gKi9cbiAgcmVsYXRpb25zaGlwVHlwZUNvZGU6IHN0cmluZztcblxuICAvKiogVVVJRCBkZSBsYSBmYWN0dXJhIHJlbGFjaW9uYWRhICovXG4gIHV1aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYWdvIG8gcGFnb3MgcmVjaWJpZG9zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52b2ljZVBheW1lbnQge1xuICAvKiogRmVjaGEgZGUgcGFnby4gU2UgZXhwcmVzYSBlbiBsYSBmb3JtYSBBQUFBLU1NLUREVGhoOm1tOnNzICovXG4gIHBheW1lbnREYXRlOiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgbGEgZm9ybWEgZGUgcGFnbyBkZWwgcGFnbyByZWNpYmlkby4gQ2F0w6Fsb2dvIGRlbCBTQVQgY19Gb3JtYVBhZ28gKi9cbiAgcGF5bWVudEZvcm1Db2RlOiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgbGEgbW9uZWRhIHV0aWxpemFkYSBlbiBlbCBwYWdvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX01vbmVkYS4gRGVmYXVsdDogXCJNWE5cIiAqL1xuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcblxuICAvKiogVGlwbyBkZSBjYW1iaW8gRklYIGNvbmZvcm1lIGEgbGEgbW9uZWRhIHJlZ2lzdHJhZGEgZW4gbGEgZmFjdHVyYS4gRGVmYXVsdDogMSAqL1xuICBleGNoYW5nZVJhdGU/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqIE1vbnRvIGRlbCBwYWdvICovXG4gIGFtb3VudDogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKiBSRkMgZGVsIGJhbmNvIG9yaWdlbi4gKFJmYyBkZWwgYmFuY28gZW1pc29yIGRlbCBwYWdvKSAqL1xuICBzb3VyY2VCYW5rVGluOiBzdHJpbmc7XG5cbiAgLyoqIEN1ZW50YSBiYW5jYXJpYSBvcmlnZW4uIChDdWVudGEgYmFuY2FyaWEgZGVsIGJhbmNvIGVtaXNvciBkZWwgcGFnbykgKi9cbiAgc291cmNlQmFua0FjY291bnQ6IHN0cmluZztcblxuICAvKiogUkZDIGRlbCBiYW5jbyBkZXN0aW5vLiAoUmZjIGRlbCBiYW5jbyByZWNlcHRvciBkZWwgcGFnbykgKi9cbiAgdGFyZ2V0QmFua1Rpbjogc3RyaW5nO1xuXG4gIC8qKiBDdWVudGEgYmFuY2FyaWEgZGVzdGlubyAoQ3VlbnRhIGJhbmNhcmlhIGRlbCBiYW5jbyByZWNlcHRvciBkZWwgcGFnbykgKi9cbiAgdGFyZ2V0QmFua0FjY291bnQ6IHN0cmluZztcblxuICAvKiogRmFjdHVyYXMgcGFnYWRhcyBjb24gZWwgcGFnbyByZWNpYmlkbyAqL1xuICBwYWlkSW52b2ljZXM6IFBhaWRJbnZvaWNlW107XG59XG5cbi8qKlxuICogRmFjdHVyYXMgcGFnYWRhcyBjb24gZWwgcGFnbyByZWNpYmlkb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhaWRJbnZvaWNlIHtcbiAgLyoqIFVVSUQgZGUgbGEgZmFjdHVyYSBwYWdhZGEgKi9cbiAgdXVpZDogc3RyaW5nO1xuXG4gIC8qKiBTZXJpZSBkZSBsYSBmYWN0dXJhIHBhZ2FkYSAqL1xuICBzZXJpZXM6IHN0cmluZztcblxuICAvKiogTW9udG8gcGFnYWRvIHBhZ2FkbyBlbiBsYSBmYWN0dXJhICovXG4gIHBheW1lbnRBbW91bnQ6IG51bWJlciB8IHN0cmluZztcblxuICAvKiogRm9saW8gZGUgbGEgZmFjdHVyYSBwYWdhZGEgKi9cbiAgbnVtYmVyOiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgbGEgbW9uZWRhIHV0aWxpemFkYSBlbiBsYSBmYWN0dXJhIHBhZ2FkYS4gRGVmYXVsdDogXCJNWE5cIiAqL1xuICBjdXJyZW5jeUNvZGU6IHN0cmluZztcblxuICAvKiogTsO6bWVybyBkZSBwYXJjaWFsaWRhZCAqL1xuICBwYXJ0aWFsaXR5TnVtYmVyOiBudW1iZXIgO1xuXG4gIC8qKiBTdWJ0b3RhbCBkZSBsYSBmYWN0dXJhIHBhZ2FkYSAqL1xuICBzdWJUb3RhbDogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKiBTYWxkbyBhbnRlcmlvciBkZSBsYSBmYWN0dXJhIHBhZ2FkYSAqL1xuICBwcmV2aW91c0JhbGFuY2U6IG51bWJlciB8IHN0cmluZztcblxuICAvKiogU2FsZG8gcmVzdGFudGUgZGUgbGEgZmFjdHVyYSBwYWdhZGEgKi9cbiAgcmVtYWluaW5nQmFsYW5jZTogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKiBDw7NkaWdvIGRlIG9ibGlnYWNpb25lcyBkZSBpbXB1ZXN0byBhcGxpY2FibGVzIGEgbGEgZmFjdHVyYSBwYWdhZGEgKi9cbiAgdGF4T2JqZWN0Q29kZTogc3RyaW5nO1xuXG4gIC8qKiBFcXVpdmFsZW5jaWEgZGUgbGEgbW9uZWRhLiBEZWZhdWx0OiAxICovXG4gIGVxdWl2YWxlbmNlPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIC8qKiBJbXB1ZXN0b3MgYXBsaWNhYmxlcyBhIGxhIGZhY3R1cmEgcGFnYWRhICovXG4gIHBhaWRJbnZvaWNlVGF4ZXM6IFBhaWRJbnZvaWNlVGF4W107XG59XG5cbi8qKlxuICogSW1wdWVzdG9zIGFwbGljYWJsZXMgYSBsYSBmYWN0dXJhIHBhZ2FkYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhaWRJbnZvaWNlVGF4IHtcbiBcbiAgLyoqIEPDs2RpZ28gZGVsIGltcHVlc3RvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0ltcHVlc3RvICovXG4gIHRheENvZGU6IHN0cmluZztcblxuICAvKiogVGlwbyBkZSBmYWN0b3IuIENhdMOhbG9nbyBkZWwgU0FUIGNfVGlwb0ZhY3RvciAqL1xuICB0YXhUeXBlQ29kZTogc3RyaW5nO1xuXG4gIC8qKiBUYXNhIGRlbCBpbXB1ZXN0by4gQ2F0w6Fsb2dvIGRlbCBTQVQgY19UYXNhT0N1b3RhICovXG4gIHRheFJhdGU6IG51bWJlciB8IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBxdWUgaW5kaWNhIGxhIG5hdHVyYWxlemEgZGVsIGltcHVlc3RvLiBcIlRcIjogSW1wdWVzdG8gVHJhc2xhZG8sIFwiUlwiOiBJbXB1ZXN0byBSZXRlbmlkbyAqL1xuICB0YXhGbGFnQ29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3B1ZXN0YSBkZWwgU0FULiBDb250aWVuZSBsYSBpbmZvcm1hY2nDs24gZGVsIHRpbWJyYWRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52b2ljZVJlc3BvbnNlIHtcbiAgLyoqIElEIGRlIGxhIHJlc3B1ZXN0YSAqL1xuICBpZD86IHN0cmluZztcblxuICAvKiogSUQgZGUgbGEgZmFjdHVyYSBhIGxhIHF1ZSBwZXJ0ZW5lY2UgbGEgcmVzcHVlc3RhICovXG4gIGludm9pY2VJZD86IHN0cmluZztcblxuICAvKiogRm9saW8gRmlzY2FsIChVVUlEKSBwcm9wb3JjaW9uYWRvIHBvciBlbCBTQVQgdHJhcyBlbCB0aW1icmFkbyBkZSBsYSBmYWN0dXJhICovXG4gIGludm9pY2VVdWlkPzogc3RyaW5nO1xuXG4gIC8qKiBOw7ptZXJvIGRlIGNlcnRpZmljYWRvIGRlbCBlbWlzb3IgKi9cbiAgaW52b2ljZUNlcnRpZmljYXRlTnVtYmVyPzogc3RyaW5nO1xuXG4gIC8qKiBTZWxsbyBkaWdpdGFsIGRlbCBDRkRJIGVuIGZvcm1hdG8gQmFzZTY0ICovXG4gIGludm9pY2VCYXNlNjRTZWxsbz86IHN0cmluZztcblxuICAvKiogRmVjaGEgeSBob3JhIGRlIGxhIGZpcm1hIGVsZWN0csOzbmljYSBkZWwgQ0ZESSBwb3IgcGFydGUgZGVsIGVtaXNvciAqL1xuICBpbnZvaWNlU2lnbmF0dXJlRGF0ZT86IERhdGU7XG5cbiAgLyoqIEltYWdlbiBkZWwgY8OzZGlnbyBRUiBlbiBmb3JtYXRvIEJhc2U2NCAqL1xuICBpbnZvaWNlQmFzZTY0UXJDb2RlPzogc3RyaW5nO1xuXG4gIC8qKiBYTUwgZGUgbGEgZmFjdHVyYSBlbiBmb3JtYXRvIEJhc2U2NCAqL1xuICBpbnZvaWNlQmFzZTY0Pzogc3RyaW5nO1xuXG4gIC8qKiBTZWxsbyBkaWdpdGFsIGRlbCBTQVQgZW4gZm9ybWF0byBCYXNlNjQgKi9cbiAgc2F0QmFzZTY0U2VsbG8/OiBzdHJpbmc7XG5cbiAgLyoqIENhZGVuYSBvcmlnaW5hbCBkZSBsYSBmYWN0dXJhIGNvZGlmaWNhZG8gZW4gQmFzZTY0ICovXG4gIHNhdEJhc2U2NE9yaWdpbmFsU3RyaW5nPzogc3RyaW5nO1xuXG4gIC8qKiBOw7ptZXJvIGRlIGNlcnRpZmljYWRvIGRlbCBTQVQgKi9cbiAgc2F0Q2VydGlmaWNhdGVOdW1iZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTW9kZWxvIGRlIGNhbmNlbGFjacOzbiBkZSBmYWN0dXJhc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbEludm9pY2VSZXF1ZXN0IHtcbiAgLyoqIElEIGRlIGxhIGZhY3R1cmEgYSBjYW5jZWxhciAqL1xuICBpZD86IHN0cmluZztcblxuICAvKiogVVVJRCBkZSBsYSBmYWN0dXJhIGEgY2FuY2VsYXIgKi9cbiAgaW52b2ljZVV1aWQ/OiBzdHJpbmc7XG5cbiAgLyoqIFJGQyBkZWwgZW1pc29yIGRlIGxhIGZhY3R1cmEgKFRheCBJZGVudGlmaWNhdGlvbiBOdW1iZXIpICovXG4gIHRpbj86IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBkZWwgbW90aXZvIGRlIGNhbmNlbGFjacOzbiBkZSBsYSBmYWN0dXJhICovXG4gIGNhbmNlbGxhdGlvblJlYXNvbkNvZGU6IHN0cmluZztcblxuICAvKiogVVVJRCBkZSBsYSBmYWN0dXJhIHF1ZSBzdXN0aXR1eWUgYSBsYSBmYWN0dXJhIGNhbmNlbGFkYSAqL1xuICByZXBsYWNlbWVudFV1aWQ/OiBzdHJpbmc7XG5cbiAgLyoqIFNlbGxvcyBkZWwgZW1pc29yIChhcmNoaXZvcyAuY2VyIHkgLmtleSkgKi9cbiAgdGF4Q3JlZGVudGlhbHM/OiBUYXhDcmVkZW50aWFsW107XG59XG5cbi8qKlxuICogTW9kZWxvIGRlIHJlc3B1ZXN0YSBkZSBjYW5jZWxhY2nDs24gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxJbnZvaWNlUmVzcG9uc2Uge1xuICAvKiogQWN1c2UgZGUgY2FuY2VsYWNpw7NuIGVuIGZvcm1hdG8gYmFzZTY0ICovXG4gIGJhc2U2NENhbmNlbGxhdGlvbkFja25vd2xlZGdlbWVudD86IHN0cmluZztcblxuICAvKiogRGljY2lvbmFyaW8gZGUgVVVJRHMgZGUgZmFjdHVyYXMgY29uIHN1IHJlc3BlY3Rpdm8gY8OzZGlnbyBkZSBlc3RhdHVzIGRlIGNhbmNlbGFjacOzbiAqL1xuICBpbnZvaWNlVXVpZHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIE1vZGVsbyBkZSBnZW5lcmFjacOzbiBkZSBwZGZcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVQZGZSZXF1ZXN0IHtcbiAgLyoqIElEIGRlIGxhIGZhY3R1cmEgcGFyYSBsYSBjdWFsIHNlIGdlbmVyYXLDoSBlbCBQREYgKi9cbiAgaW52b2ljZUlkOiBzdHJpbmc7XG5cbiAgLyoqIENvbG9yIGRlIGxhIGJhbmRhIGRlbCBQREYgZW4gZm9ybWF0byBoZXhhZGVjaW1hbCAqL1xuICBiYW5kQ29sb3I/OiBzdHJpbmc7XG5cbiAgLyoqIENvbG9yIGRlIGxhIGZ1ZW50ZSBkZWwgdGV4dG8gc29icmUgbGEgYmFuZGEgZW4gZm9ybWF0byBoZXhhZGVjaW1hbCAqL1xuICBmb250Q29sb3I/OiBzdHJpbmc7XG5cbiAgLyoqIExvZ290aXBvIGVuIGZvcm1hdG8gYmFzZTY0IHF1ZSBzZSBtb3N0cmFyw6EgZW4gZWwgUERGICovXG4gIGJhc2U2NExvZ28/OiBzdHJpbmc7XG59XG5cblxuXG4vKipcbiAqIE1vZGVsbyBkZSBlbnbDrW8gZmFjdHVyYXMgcG9yIGNvcnJlb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRJbnZvaWNlUmVxdWVzdCB7XG4gIC8qKiBJRCBkZSBsYSBmYWN0dXJhIHBhcmEgbGEgY3VhbCBzZSBnZW5lcmFyw6EgZWwgUERGICovXG4gIGludm9pY2VJZDogc3RyaW5nO1xuXG4gIC8qKiBDb3JyZW8gZWxlY3Ryw7NuaWNvIGRlbCBkZXN0aW5hdGFyaW8gKi9cbiAgdG9FbWFpbDogc3RyaW5nO1xuXG4gIC8qKiBDb2xvciBkZSBsYSBiYW5kYSBkZWwgUERGIGVuIGZvcm1hdG8gaGV4YWRlY2ltYWwgKi9cbiAgYmFuZENvbG9yPzogc3RyaW5nO1xuXG4gIC8qKiBDb2xvciBkZSBsYSBmdWVudGUgZGVsIHRleHRvIHNvYnJlIGxhIGJhbmRhIGVuIGZvcm1hdG8gaGV4YWRlY2ltYWwgKi9cbiAgZm9udENvbG9yPzogc3RyaW5nO1xuXG4gIC8qKiBMb2dvdGlwbyBlbiBmb3JtYXRvIGJhc2U2NCBxdWUgc2UgbW9zdHJhcsOhIGVuIGVsIFBERiAqL1xuICBiYXNlNjRMb2dvPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1vZGVsbyBwYXJhIGNvbnN1bHRhciBlc3RhZG8gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZvaWNlU3RhdHVzUmVxdWVzdCB7XG4gIC8qKiBJZCBkZSBsYSBmYWN0dXJhIGEgY29uc3VsdGFyICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKiBSRkMgRW1pc29yIGxhIGZhY3R1cmEgKi9cbiAgaXNzdWVyVGluPzogc3RyaW5nO1xuXG4gIC8qKiBSRkMgUmVjZXB0b3IgZGUgbGEgZmFjdHVyYSAqL1xuICByZWNpcGllbnRUaW4/OiBzdHJpbmc7XG5cbiAgLyoqIFRvdGFsIGRlIGxhIGZhY3R1cmEgKi9cbiAgaW52b2ljZVRvdGFsPzogbnVtYmVyO1xuXG4gIC8qKiBGb2xpbyBmaXNjYWwgZmFjdHVyYSBhIGNvbnN1bHRhciAqL1xuICBpbnZvaWNlVXVpZD86IHN0cmluZztcblxuICAvKiogw5psdGltb3Mgb2NobyBjYXJhY3RlcmVzIGRlbCBzZWxsbyBkaWdpdGFsIGRlbCBlbWlzb3IgKi9cbiAgbGFzdDhEaWdpdHNJc3N1ZXJTaWduYXR1cmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTW9kZWxvIGRlIHJlc3B1ZXN0YSBkZSBjb25zdWx0YSBkZSBlc3RhZG8gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZvaWNlU3RhdHVzUmVzcG9uc2Uge1xuICAvKiogQ8OzZGlnbyBkZSBlc3RhdHVzIHJldG9ybmFkbyBwb3IgZWwgU0FUICovXG4gIHN0YXR1c0NvZGU6IHN0cmluZztcblxuICAvKiogRXN0YWRvIGFjdHVhbCBkZSBsYSBmYWN0dXJhLiBQb3NpYmxlcyB2YWxvcmVzOiAnVmlnZW50ZScgfCAnQ2FuY2VsYWRvJyB8ICdObyBFbmNvbnRyYWRvJyAqL1xuICBzdGF0dXM6IHN0cmluZztcblxuICAvKiogSW5kaWNhIHNpIGxhIGZhY3R1cmEgZXMgY2FuY2VsYWJsZS4gUG9zaWJsZXMgdmFsb3JlczogJ0NhbmNlbGFibGUgY29uIGFjZXB0YWNpw7NuJyB8ICdObyBjYW5jZWxhYmxlJyB8ICdDYW5jZWxhYmxlIHNpbiBhY2VwdGFjacOzbicgKi9cbiAgY2FuY2VsYWJsZVN0YXR1czogc3RyaW5nO1xuXG4gIC8qKiBEZXRhbGxlIGRlbCBlc3RhdHVzIGRlIGNhbmNlbGFjacOzbiAqL1xuICBjYW5jZWxsYXRpb25TdGF0dXM6IHN0cmluZztcblxuICAvKiogQ29kaWdvIHF1ZSBpbmRpY2Egc2kgZWwgUkZDIEVtaXNvciBzZSBlbmN1ZW50cmEgZGVudHJvIGRlIGxhIGxpc3RhIG5lZ3JhIGRlIEVGT1MgKi9cbiAgZWZvc1ZhbGlkYXRpb246IHN0cmluZztcbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVscy9wZXJzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIiBcbi8vIHNyYy9tb2RlbHMvcGVyc29uLnRzXG5pbXBvcnQgeyBCYXNlRHRvIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZHRvJztcbmltcG9ydCB7IENhdGFsb2dEdG8gfSBmcm9tICcuLi9jb21tb24vY2F0YWxvZy1kdG8nO1xuXG4vKipcbiAqIE1vZGVsbyBwZXJzb25hXG4gKiBDb250aWVuZSB0b2RhIGxhIGluZm9ybWFjacOzbiBkZSB1bmEgcGVyc29uYSBlbWlzb3IgbyByZWNlcHRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNvbiBleHRlbmRzIEJhc2VEdG8ge1xuICAvKiogUmF6w7NuIHNvY2lhbCBkZSBsYSBwZXJzb25hIHNpbiByw6lnaW1lbiBkZSBjYXBpdGFsICovXG4gIGxlZ2FsTmFtZT86IHN0cmluZztcblxuICAvKiogQ29ycmVvIGVsZWN0csOzbmljbyBkZSBsYSBwZXJzb25hICovXG4gIGVtYWlsPzogc3RyaW5nO1xuXG4gIC8qKiBDb250cmFzZcOxYSBwYXJhIGFjY2VkZXIgYWwgZGFzaGJvYXJkICovXG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuXG4gIC8qKiBSw6lnaW1lbiBkZSBjYXBpdGFsIGRlIGxhIHBlcnNvbmEgKi9cbiAgY2FwaXRhbFJlZ2ltZT86IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBkZWwgcsOpZ2ltZW4gZmlzY2FsIGRlbCBlbWlzb3IuIENhdMOhbG9nbyBkZWwgU0FUIGNfcsOpZ2ltZW5GaXNjYWwuIFZhbG9yZXM6IFwiNjAxXCIsIFwiNjAzXCIsIFwiNjA1XCIgKi9cbiAgc2F0VGF4UmVnaW1lSWQ/OiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGVsIHLDqWdpbWVuIGZpc2NhbCBkZWwgZW1pc29yIGV4cGFuZGlkbyAqL1xuICBzYXRUYXhSZWdpbWU/OiBDYXRhbG9nRHRvO1xuXG4gIC8qKiBDw7NkaWdvIGRlIHVzbyBkZWwgQ0ZESSBwb3IgZGVmZWN0byBjdWFuZG8gZXN0ZSBlbWlzb3IgYWN0w7plIGNvbW8gcmVjZXB0b3IuIENhdMOhbG9nbyBkZWwgU0FUIGNfVXNvQ0ZESS4gVmFsb3JlczogXCJHMDFcIiwgXCJHMDJcIiwgXCJHMDNcIiAqL1xuICBzYXRDZmRpVXNlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gZGUgdXNvIGRlbCBDRkRJIHBvciBkZWZlY3RvIGV4cGFuZGlkbyAqL1xuICBzYXRDZmRpVXNlPzogQ2F0YWxvZ0R0bztcblxuICAvKiogVGlwbyBkZSBwZXJzb25hLCBzb2xvIHRpZW5lIGZpbmVzIGluZm9ybWF0aXZvcy4gVmFsb3JlczogXCJUXCIsIFwiQ1wiLCBcIlVcIiAqL1xuICB1c2VyVHlwZUlkPzogc3RyaW5nO1xuXG4gIC8qKiBUaXBvIGRlIHBlcnNvbmEgZXhwYW5kaWRvICovXG4gIHVzZXJUeXBlPzogQ2F0YWxvZ0R0bztcblxuICAvKiogUkZDIGRlbCBlbWlzb3IgKFRheCBJZGVudGlmaWNhdGlvbiBOdW1iZXIpICovXG4gIHRpbj86IHN0cmluZztcblxuICAvKiogQ8OzZGlnbyBwb3N0YWwgZGVsIGVtaXNvci4gQ2F0w6Fsb2dvIGRlbCBTQVQgY19Db2RpZ29Qb3N0YWwgKi9cbiAgemlwQ29kZT86IHN0cmluZztcblxuICAvKiogRm90byBkZSBwZXJmaWwgZGVsIGVtaXNvciBlbiBmb3JtYXRvIGJhc2U2NCAqL1xuICBiYXNlNjRQaG90bz86IHN0cmluZztcblxuICAvKiogQ29udHJhc2XDsWEgZGUgbG9zIGNlcnRpZmljYWRvcyBDU0QgY3VhbmRvIGVzIHVuIGVtaXNvciAqL1xuICB0YXhQYXNzd29yZD86IHN0cmluZztcblxuICAvKiogU2FsZG8gZGlzcG9uaWJsZSBlbiBsYSBjdWVudGEgZGVsIGVtaXNvci4gQXRyaWJ1dG8gZGUgc8OzbG8gbGVjdHVyYSAqL1xuICBhdmFpbGFibGVCYWxhbmNlPzogbnVtYmVyO1xuXG4gIC8qKiBTYWxkbyBlbiB0csOhbnNpdG8uIEF0cmlidXRvIGRlIHPDs2xvIGxlY3R1cmEgKi9cbiAgY29tbWl0dGVkQmFsYW5jZT86IG51bWJlcjtcblxuICAvKiogSUQgZGVsIHRlbmFudCBhbCBxdWUgcGVydGVuZWNlIGVsIGVtaXNvci4gQXRyaWJ1dG8gZGUgc8OzbG8gbGVjdHVyYSAqL1xuICB0ZW5hbnRJZD86IHN0cmluZztcbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvcHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIFxuLy8gc3JjL21vZGVscy9wcm9kdWN0LnRzXG5pbXBvcnQgeyBCYXNlRHRvIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZHRvJztcbmltcG9ydCB7IENhdGFsb2dEdG8gfSBmcm9tICcuLi9jb21tb24vY2F0YWxvZy1kdG8nO1xuXG4vKipcbiAqIE1vZGVsbyBwcm9kdWN0b1xuICogQ29udGllbmUgdG9kYSBsYSBpbmZvcm1hY2nDs24gc29icmUgdW4gcHJvZHVjdG8gbyBzZXJ2aWNpb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3QgZXh0ZW5kcyBCYXNlRHRvIHtcbiAgLyoqIElkZW50aWZpY2Fkb3Igw7puaWNvIGRlbCBwcm9kdWN0byAqL1xuICBpZD86IHN0cmluZztcblxuICAvKiogRGVzY3JpcGNpw7NuIG8gbm9tYnJlIGRlbCBwcm9kdWN0byAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKiogUHJlY2lvIHVuaXRhcmlvIGRlbCBwcm9kdWN0byBzaW4gaW1wdWVzdG9zICovXG4gIHVuaXRQcmljZT86IG51bWJlcjtcblxuICAvKiogQ8OzZGlnbyBkZSBsYSB1bmlkYWQgZGUgbWVkaWRhLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0NsYXZlVW5pZGFkLiBEZWZhdWx0OiBcIkg4N1wiICovXG4gIHNhdFVuaXRNZWFzdXJlbWVudElkPzogc3RyaW5nO1xuXG4gIC8qKiBDw7NkaWdvIGRlIGxhIHVuaWRhZCBkZSBtZWRpZGEuIENhdMOhbG9nbyBkZWwgU0FUIGNfQ2xhdmVVbmlkYWQgZXhwYW5kaWRvICovXG4gIHNhdFVuaXRNZWFzdXJlbWVudD86IENhdGFsb2dEdG87XG5cbiAgLyoqIEPDs2RpZ28gcXVlIGlkZW50aWZpY2EgbGFzIG9ibGlnYWNpb25lcyBmaXNjYWxlcyBkZWwgcHJvZHVjdG8uIENhdMOhbG9nbyBkZWwgU0FUIGNfT2JqZXRvSW1wLiBEZWZhdWx0OiBcIjAyXCIgKi9cbiAgc2F0VGF4T2JqZWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqIEPDs2RpZ28gcXVlIGlkZW50aWZpY2EgbGFzIG9ibGlnYWNpb25lcyBmaXNjYWxlcyBkZWwgcHJvZHVjdG8uIENhdMOhbG9nbyBkZWwgU0FUIGNfT2JqZXRvSW1wIGV4cGFuZGlkbyAqL1xuICBzYXRUYXhPYmplY3Q/OiBDYXRhbG9nRHRvO1xuXG4gIC8qKiBDw7NkaWdvIGRlbCBwcm9kdWN0byBvIHNlcnZpY2lvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0NsYXZlUHJvZFNlcnYuIERlZmF1bHQ6IFwiMDEwMTAxMDFcIiAqL1xuICBzYXRQcm9kdWN0Q29kZUlkPzogc3RyaW5nO1xuXG4gIC8qKiBDw7NkaWdvIGRlbCBwcm9kdWN0byBvIHNlcnZpY2lvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0NsYXZlUHJvZFNlcnYgZXhwYW5kaWRvICovXG4gIHNhdFByb2R1Y3RDb2RlPzogQ2F0YWxvZ0R0bztcbiAgXG4gIC8qKiBJbXB1ZXN0b3MgYXBsaWNhYmxlcyBhbCBwcm9kdWN0by4gRGVmYXVsdDogW0lWQSAxNiVdICovXG4gIHByb2R1Y3RUYXhlcz86IFByb2R1Y3RUYXhbXTtcbn1cblxuXG4vKipcbiAqIEltcHVlc3RvIGRlIHByb2R1Y3RvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFRheCB7XG4gIC8qKiBJZCBkZWwgcHJvZHVjdG8gYXNvY2lhZG8gYSBlc3RlIGltcHVlc3RvICovIFxuICBwcm9kdWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqIFRhc2EgZGVsIGltcHVlc3RvLiBFbCB2YWxvciBkZWJlIGVzdGFyIGVudHJlIDAuMDAwMDAgeSAxLjAwMDAwMCBwLiBlai4gYDAuMTYwMDAwYCBwYXJhIHVuIDE2JSBkZSBpbXB1ZXN0byAqL1xuICByYXRlOiBudW1iZXI7XG5cbiAgLyoqIEltcHVlc3RvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0ltcHVlc3RvLiBcIjAwMVwiIElTUiB8IFwiMDAyXCIgSVZBIHwgXCIwMDNcIiBJRVBTICovXG4gIHRheElkOiBzdHJpbmc7XG5cbiAgLyoqIEltcHVlc3RvLiBDYXTDoWxvZ28gZGVsIFNBVCBjX0ltcHVlc3RvLiBcIjAwMVwiIElTUiB8IFwiMDAyXCIgSVZBIHwgXCIwMDNcIiBJRVBTIEV4cGFuZGlkbyAqL1xuICB0YXg/OiBDYXRhbG9nRHRvO1xuICAgXG4gIC8qKiBOYXR1cmFsZXphIGRlbCBpbXB1ZXN0by4gXCJUXCIgVHJhc2xhZG8gbyBcIlJcIiBSZXRlbmNpw7NuICovXG4gIHRheEZsYWdJZDogc3RyaW5nO1xuXG4gIC8qKiBOYXR1cmFsZXphIGRlbCBpbXB1ZXN0by4gXCJUXCIgVHJhc2xhZG8gbyBcIlJcIiBSZXRlbmNpw7NuIEV4cGFuZGlkbyAqL1xuICB0YXhGbGFnPzogQ2F0YWxvZ0R0bztcblxuICAvKiogVGlwbyBkZSBpbXB1ZXN0byBcIlRhc2FcIiBUYXNhIHwgXCJDdW90YVwiIEN1b3RhIHwgXCJFeGVudG9cIiBFeGVudG8gKi9cbiAgdGF4VHlwZUlkOiBzdHJpbmc7XG5cbiAgLyoqIFRpcG8gZGUgaW1wdWVzdG8gXCJUYXNhXCIgVGFzYSB8IFwiQ3VvdGFcIiBDdW90YSB8IFwiRXhlbnRvXCIgRXhlbnRvIEV4cGFuZGlkbyAqL1xuICB0YXhUeXBlPzogQ2F0YWxvZ0R0bztcbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGF4LWZpbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL3RheC1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIgXG4vLyBzcmMvbW9kZWxzL3RheC1maWxlLnRzXG5pbXBvcnQgeyBCYXNlRHRvIH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UtZHRvJztcblxuLyoqXG4gKiBNb2RlbG8gVGF4RmlsZVxuICogUmVwcmVzZW50YSB1biBjb21wb25lbnRlIGluZGl2aWR1YWwgZGUgdW4gcGFyIENTRCAtIHlhIHNlYSBlbCBjZXJ0aWZpY2FkbyAoLmNlcikgbyBsYSBsbGF2ZSBwcml2YWRhICgua2V5KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRheEZpbGUgZXh0ZW5kcyBCYXNlRHRvICB7XG4gIC8qKiBJZCBkZSBsYSBwZXJzb25hIHByb3BpZXRhcmlhIGRlbCBjZXJ0aWZpY2FkbyAqL1xuICBwZXJzb25JZDogc3RyaW5nO1xuXG4gIC8qKiBSRkMgZGVsIHByb3BpZXRhcmlvIGRlbCBjZXJ0aWZpY2Fkby4gRGViZSBjb2luY2lkaXIgY29uIGVsIFJGQyBkZWwgY2VydGlmaWNhZG8gKi9cbiAgdGluOiBzdHJpbmc7XG5cbiAgLyoqIEFyY2hpdm8gY2VydGlmaWNhZG8gbyBsbGF2ZSBwcml2YWRhIGVuIGZvcm1hdG8gYmFzZTY0LiBQYXJhIGNlcnRpZmljYWRvcyBkZWJlIHNlciBlbCBhcmNoaXZvIC5jZXIgY29kaWZpY2FkbyBlbiBiYXNlNjQsIHBhcmEgbGxhdmVzIHByaXZhZGFzIGRlYmUgc2VyIGVsIGFyY2hpdm8gLmtleSBjb2RpZmljYWRvIGVuIGJhc2U2NCAqL1xuICBiYXNlNjRGaWxlOiBzdHJpbmc7XG5cbiAgLyoqIFRpcG8gZGUgYXJjaGl2byBxdWUgc2UgZXN0w6EgZW52aWFuZG8uIFZhbG9yZXM6IFwiMDFcIiAqL1xuICBmaWxlVHlwZTogbnVtYmVyO1xuXG4gIC8qKiBDb250cmFzZcOxYSBkZSBsYSBsbGF2ZSBwcml2YWRhLiBJbmRlcGVuZGllbnRlbWVudGUgc2kgc2UgZW52w61hIHVuIGNlcnRpZmljYWRvIG8gdW5hIGxsYXZlIHByaXZhZGEsIHNpZW1wcmUgc2UgZGViZSBlbnZpYXIgbGEgY29udHJhc2XDsWEgZGUgbGEgbGxhdmUgcHJpdmFkYSAqL1xuICBwYXNzd29yZDogc3RyaW5nO1xuXG4gIC8qKiBGZWNoYSBkZSBpbmljaW8gZGUgdmlnZW5jaWEgZGVsIGNlcnRpZmljYWRvIG8gbGxhdmUgcHJpdmFkYS4gQ2FsY3VsYWRvIGF1dG9tw6F0aWNhbWVudGUgKi9cbiAgdmFsaWRGcm9tPzogRGF0ZTtcblxuICAvKiogRmVjaGEgZGUgZmluIGRlIHZpZ2VuY2lhIGRlbCBjZXJ0aWZpY2FkbyBvIGxsYXZlIHByaXZhZGEuIENhbGN1bGFkbyBhdXRvbcOhdGljYW1lbnRlICovXG4gIHZhbGlkVG8/OiBEYXRlO1xuXG4gIC8qKiBOdW1lcm8gZGUgc2VjdWVuY2lhIHF1ZSBpZGVudGlmaWNhIGVsIHBhciBlbnRyZSBjZXJ0aWZpY2FkbyB5IGxsYXZlIHByaXZhZGEuIFPDs2xvIGNvbiBmaW5lcyBpbmZvcm1hdGl2b3MgKi9cbiAgc2VxdWVuY2U/OiBudW1iZXI7XG59Il19
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Constantes utilizadas en todo el SDK
3
+ */
4
+ export const SdkConstants = {
5
+ /**
6
+ * Formato de fecha SAT (para facturas mexicanas)
7
+ */
8
+ SAT_DATE_FORMAT: 'yyyy-MM-ddTHH:mm:ss',
9
+ /**
10
+ * Versión predeterminada de la API
11
+ */
12
+ DEFAULT_API_VERSION: 'v4',
13
+ /**
14
+ * Zona horaria predeterminada
15
+ */
16
+ DEFAULT_TIME_ZONE: 'America/Mexico_City',
17
+ /**
18
+ * Tiempo de espera HTTP predeterminado en milisegundos
19
+ */
20
+ DEFAULT_HTTP_TIMEOUT: 30000
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZGstY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQ3hCOztPQUVHO0lBQ0gsZUFBZSxFQUFFLHFCQUFxQjtJQUV0Qzs7T0FFRztJQUNILG1CQUFtQixFQUFFLElBQUk7SUFFekI7O09BRUc7SUFDSCxpQkFBaUIsRUFBRSxxQkFBcUI7SUFFeEM7O09BRUc7SUFDSCxvQkFBb0IsRUFBRSxLQUFLO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgXG4vKipcbiAqIENvbnN0YW50ZXMgdXRpbGl6YWRhcyBlbiB0b2RvIGVsIFNES1xuICovXG5leHBvcnQgY29uc3QgU2RrQ29uc3RhbnRzID0ge1xuICAgIC8qKlxuICAgICAqIEZvcm1hdG8gZGUgZmVjaGEgU0FUIChwYXJhIGZhY3R1cmFzIG1leGljYW5hcylcbiAgICAgKi9cbiAgICBTQVRfREFURV9GT1JNQVQ6ICd5eXl5LU1NLWRkVEhIOm1tOnNzJyxcbiAgICBcbiAgICAvKipcbiAgICAgKiBWZXJzacOzbiBwcmVkZXRlcm1pbmFkYSBkZSBsYSBBUElcbiAgICAgKi9cbiAgICBERUZBVUxUX0FQSV9WRVJTSU9OOiAndjQnLFxuICAgIFxuICAgIC8qKlxuICAgICAqIFpvbmEgaG9yYXJpYSBwcmVkZXRlcm1pbmFkYVxuICAgICAqL1xuICAgIERFRkFVTFRfVElNRV9aT05FOiAnQW1lcmljYS9NZXhpY29fQ2l0eScsXG4gICAgXG4gICAgLyoqXG4gICAgICogVGllbXBvIGRlIGVzcGVyYSBIVFRQIHByZWRldGVybWluYWRvIGVuIG1pbGlzZWd1bmRvc1xuICAgICAqL1xuICAgIERFRkFVTFRfSFRUUF9USU1FT1VUOiAzMDAwMFxuICB9OyJdfQ==
@@ -0,0 +1,15 @@
1
+ import { BaseFiscalapiService } from './base-fiscalapi-service';
2
+ /**
3
+ * Implementación del servicio de claves de API
4
+ */
5
+ export class ApiKeyService extends BaseFiscalapiService {
6
+ /**
7
+ * Crea una nueva instancia del servicio de claves de API
8
+ * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP
9
+ * @param {string} apiVersion - Versión de la API
10
+ */
11
+ constructor(httpClient, apiVersion) {
12
+ super(httpClient, 'apikeys', apiVersion);
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2FwaS1rZXktc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFjLFNBQVEsb0JBQTRCO0lBQzdEOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsVUFBa0I7UUFDOUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiIFxuaW1wb3J0IHsgQXBpS2V5IH0gZnJvbSAnLi4vbW9kZWxzL2FwaS1rZXknO1xuaW1wb3J0IHsgSUZpc2NhbGFwaUh0dHBDbGllbnQgfSBmcm9tICcuLi9odHRwL2Zpc2NhbGFwaS1odHRwLWNsaWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZmlzY2FsYXBpLXNlcnZpY2UnO1xuaW1wb3J0IHsgSUFwaUtleVNlcnZpY2UgfSBmcm9tICcuLic7XG5cbi8qKlxuICogSW1wbGVtZW50YWNpw7NuIGRlbCBzZXJ2aWNpbyBkZSBjbGF2ZXMgZGUgQVBJXG4gKi9cbmV4cG9ydCBjbGFzcyBBcGlLZXlTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8QXBpS2V5PiBpbXBsZW1lbnRzIElBcGlLZXlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGluc3RhbmNpYSBkZWwgc2VydmljaW8gZGUgY2xhdmVzIGRlIEFQSVxuICAgKiBAcGFyYW0ge0lGaXNjYWxhcGlIdHRwQ2xpZW50fSBodHRwQ2xpZW50IC0gQ2xpZW50ZSBIVFRQXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcGlWZXJzaW9uIC0gVmVyc2nDs24gZGUgbGEgQVBJXG4gICAqL1xuICBjb25zdHJ1Y3RvcihodHRwQ2xpZW50OiBJRmlzY2FsYXBpSHR0cENsaWVudCwgYXBpVmVyc2lvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoaHR0cENsaWVudCwgJ2FwaWtleXMnLCBhcGlWZXJzaW9uKTtcbiAgfVxufSJdfQ==