@rxap/open-api
Version:
This package provides tools for working with OpenAPI specifications in Angular applications. It includes services for configuring and loading OpenAPI definitions, validating requests and responses against schemas, and handling errors. It also offers utili
1 lines • 46 kB
Source Map (JSON)
{"version":3,"file":"rxap-open-api.mjs","sources":["../../../../../packages/angular/open-api/src/lib/error.ts","../../../../../packages/angular/open-api/src/lib/tokens.ts","../../../../../packages/angular/open-api/src/lib/utilities.ts","../../../../../packages/angular/open-api/src/lib/open-api-config.service.ts","../../../../../packages/angular/open-api/src/lib/open-api-http-response.error.ts","../../../../../packages/angular/open-api/src/lib/open-api-init.ts","../../../../../packages/angular/open-api/src/lib/schema-validation.mixin.ts","../../../../../packages/angular/open-api/src/index.ts","../../../../../packages/angular/open-api/src/rxap-open-api.ts"],"sourcesContent":["import { RxapError } from '@rxap/utilities';\n\nexport class RxapOpenApiError extends RxapError {\n\n constructor(message: string, code?: string, scope?: string) {\n super('@rxap/open-api', message, code ?? '', scope);\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const RXAP_OPEN_API_CONFIG = new InjectionToken('rxap/open-api/config');\nexport const RXAP_OPEN_API_STRICT_VALIDATOR = new InjectionToken('rxap/open-api/strict-validator');\nexport const DEFAULT_OPEN_API_REMOTE_METHOD_META_DATA = new InjectionToken(\n 'rxap/open-api/default-remote-method-meta-data');\nexport const DEFAULT_OPEN_API_DATA_SOURCE_META_DATA = new InjectionToken('rxap/open-api/default-data-source-meta-data');\nexport const DISABLE_SCHEMA_VALIDATION = new InjectionToken<boolean>('rxap/open-api/disable-schema-validation', {\n providedIn: 'root',\n factory: () => true,\n});\nexport const DISABLE_VALIDATION = new InjectionToken<boolean>('rxap/open-api/disable-validation', {\n providedIn: 'root',\n factory: () => true,\n});\n","import { OpenAPIV3 } from 'openapi-types';\nimport { RxapOpenApiError } from './error';\n\nexport function IsReferenceObject(obj?: any): obj is OpenAPIV3.ReferenceObject {\n return !!obj && obj.hasOwnProperty('$ref');\n}\n\nexport function NotContainsReferenceObjects<T>(array?: Array<OpenAPIV3.ReferenceObject | T | undefined>): array is T[] {\n return !!array && array.every(item => !IsReferenceObject(item) && !!item);\n}\n\nexport function IsOpenApiV3(obj?: any): obj is OpenAPIV3.Document {\n return !!obj && obj.hasOwnProperty('openapi') && obj.openapi.match(/^3\\./);\n}\n\nexport function AssertOpenApiV3(obj?: any): asserts obj is OpenAPIV3.Document {\n\n if (!IsOpenApiV3(obj)) {\n throw new RxapOpenApiError('Only openapi version 3.x.x is supported');\n }\n\n}\n","import {\n Inject,\n Injectable,\n isDevMode,\n Optional,\n} from '@angular/core';\nimport {\n OpenAPI,\n OpenAPIV3,\n} from 'openapi-types';\nimport { OperationObjectWithMetadata } from './open-api';\nimport { RXAP_OPEN_API_CONFIG } from './tokens';\nimport { AssertOpenApiV3 } from './utilities';\n\nexport type OperationMap = Map<string, OperationObjectWithMetadata>;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenApiConfigService {\n public static Config: OpenAPIV3.Document | null = null;\n\n public static DefaultServerIndex = 0;\n\n private static _operations: OperationMap | null = null;\n public defaultServerIndex: number = OpenApiConfigService.DefaultServerIndex;\n private _operations: OperationMap | null = null;\n private static serverConfigMap = new Map<string | undefined, OpenAPIV3.ServerObject[]>();\n\n private get serverConfigMap(): Map<string | undefined, OpenAPIV3.ServerObject[]> {\n return OpenApiConfigService.serverConfigMap;\n }\n\n get serverIds(): string[] {\n return Object.keys(this.serverConfigMap);\n }\n\n constructor(\n @Optional()\n @Inject(RXAP_OPEN_API_CONFIG)\n config: OpenAPIV3.Document | null = null,\n ) {\n config = config ?? OpenApiConfigService.Config;\n if (config) {\n this._config = config;\n this._operations = OpenApiConfigService.LoadOperations(config);\n }\n OpenApiConfigService.Config ??= config;\n }\n\n private _config: OpenAPIV3.Document | null = null;\n\n public get config(): OpenAPIV3.Document {\n if (!this._config) {\n throw new Error('Could not load open api config');\n }\n return this._config;\n }\n\n /**\n * Used to load the app open api config from a remote resource.\n *\n * Promise.all([ OpenApiDataSourceLoader.Load() ])\n * .then(() => platformBrowserDynamic().bootstrapModule(AppModule))\n * .catch(err => console.error(err))\n *\n */\n public static async Load(openApiUrl = 'openapi.json'): Promise<void> {\n if (!openApiUrl) {\n throw new Error('The open api url is not defined!');\n }\n\n let config: OpenAPIV3.Document | null = null;\n try {\n const response = await fetch(openApiUrl);\n config = await response.json();\n } catch (error: any) {\n console.debug(\n `Could not load the open api config from '${ openApiUrl }'!`,\n error,\n );\n console.error(\n `Could not load the open api config from '${ openApiUrl }'!`,\n error.message,\n );\n }\n\n if (config) {\n const expandedConfig = await this.ExpandOpenApi(config);\n\n AssertOpenApiV3(expandedConfig);\n\n this.Config = expandedConfig;\n } else {\n this.Config = null;\n }\n }\n\n public static GetOperation(operationId: string): OperationObjectWithMetadata {\n if (!this.Config) {\n throw new Error('Could not load open api config');\n }\n\n if (!this._operations) {\n this._operations = this.LoadOperations(this.Config);\n }\n if (!this._operations!.has(operationId)) {\n throw new Error(\n `The operation '${ operationId }' is not defined in the openapi-json`,\n );\n }\n return this._operations!.get(operationId)!;\n }\n\n private static LoadOperations(config: OpenAPIV3.Document): OperationMap {\n const operations = new Map<string, OperationObjectWithMetadata>();\n\n Object.entries(config.paths)\n .filter(\n (item): item is [ string, OpenAPIV3.PathItemObject ] =>\n item[0] !== undefined,\n )\n .filter(\n ([ _, methods ]: [ string, OpenAPIV3.PathItemObject ]) =>\n methods &&\n Object.keys(methods).some((method) =>\n [ 'get', 'put', 'post', 'delete', 'patch' ].includes(method),\n ),\n )\n .forEach(([ path, methods ]: [ string, OpenAPIV3.PathItemObject ]) =>\n Object.entries(methods)\n .filter(\n (item): item is [ string, OpenAPIV3.OperationObject ] =>\n item[0] !== undefined,\n )\n .forEach(\n ([ method, operation ]: [ string, OpenAPIV3.OperationObject ]) => {\n if (!operation.operationId) {\n throw new Error('The OpenApu OperationId is not defined');\n }\n\n if (operations!.has(operation.operationId)) {\n throw new Error(\n `The OpenApi Operation '${ operation.operationId }' is already defined.`,\n );\n }\n\n operations!.set(operation.operationId, {\n ...operation,\n path: path,\n method: method.toUpperCase(),\n });\n },\n ),\n );\n\n return operations;\n }\n\n private static GetBaseUrl(\n config: OpenAPIV3.Document,\n serverIndex: number = this.DefaultServerIndex,\n ): string {\n const server = config.servers ? config.servers[serverIndex] : null;\n\n if (!server) {\n console.debug(\n `Could not extract the server config with the index '${ serverIndex }' from the open api config`,\n config,\n );\n throw new Error(\n `Could not extract the server config with the index '${ serverIndex }' from the open api config`,\n );\n }\n\n return server.url;\n }\n\n /**\n * Replaces all $ref with the concrete definition\n *\n * @param config\n * @private\n */\n private static ExpandOpenApi(\n config: OpenAPI.Document,\n ): Promise<OpenAPI.Document> {\n return Promise.resolve(config);\n }\n\n public getOperation(operationId: string): OperationObjectWithMetadata {\n if (!this._operations) {\n if (!this._config) {\n throw new Error('The operations map is not loaded and the config object is not loaded');\n }\n this._operations = OpenApiConfigService.LoadOperations(this._config);\n }\n if (!this._operations.has(operationId)) {\n console.error(\n `The operation '${ operationId }' is not defined in the openapi-json`,\n isDevMode() ? this.config : undefined,\n );\n throw new Error(\n `The operation '${ operationId }' is not defined in the openapi-json`,\n );\n }\n return this._operations.get(operationId)!;\n }\n\n public getBaseUrl(serverIndex: number = this.defaultServerIndex, serverId?: string): string {\n let serverConfig: OpenAPIV3.ServerObject | undefined;\n const servers = this._config?.servers ?? [];\n if (!serverId && servers) {\n serverConfig = servers[serverIndex];\n }\n if (this.serverConfigMap.has(serverId)) {\n serverConfig = this.serverConfigMap.get(serverId)![serverIndex];\n }\n if (!serverConfig) {\n console.error(\n `Could not determine the base url with the index '${ serverIndex }' and the serverId '${ serverId }'`,\n isDevMode() ? servers : undefined,\n );\n throw new Error(`Could not determine the base url with the index '${ serverIndex }' and the serverId '${ serverId }'`);\n }\n return serverConfig.url;\n }\n\n public static InsertServer(\n serverConfig: OpenAPIV3.ServerObject,\n index: number,\n serverId?: string,\n config: OpenAPIV3.Document = this.Config!,\n ): void {\n if (!serverId && config) {\n if (!config.servers) {\n config.servers = [];\n }\n config.servers.splice(index, 1, serverConfig);\n }\n if (!this.serverConfigMap.has(serverId)) {\n this.serverConfigMap.set(serverId, []);\n }\n const list = this.serverConfigMap.get(serverId)!;\n list[index] = serverConfig;\n this.serverConfigMap.set(serverId, list);\n }\n\n public insertServer(\n serverConfig: OpenAPIV3.ServerObject,\n index: number = this.defaultServerIndex,\n serverId?: string,\n ): void {\n OpenApiConfigService.InsertServer(serverConfig, index, serverId, this.config);\n }\n\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { OpenApiMetaData } from './open-api.meta-data';\n\nexport class OpenApiHttpResponseError extends HttpErrorResponse {\n\n constructor(\n public readonly httpErrorResponse: HttpErrorResponse,\n public readonly metadata: OpenApiMetaData,\n ) {\n super({\n error: httpErrorResponse.error,\n headers: httpErrorResponse.headers,\n status: httpErrorResponse.status,\n statusText: httpErrorResponse.statusText,\n url: httpErrorResponse.url ?? undefined,\n });\n if ((Error as any)['captureStackTrace']) {\n (Error as any)['captureStackTrace'](this, OpenApiHttpResponseError);\n }\n Reflect.set(this, 'name', 'OpenApiHttpResponseError');\n }\n\n get operationId() {\n return this.metadata.id;\n }\n\n get serverId() {\n return this.metadata.serverId;\n }\n\n}\n","import { ConfigService } from '@rxap/config';\nimport { Environment } from '@rxap/environment';\nimport { JoinPath } from '@rxap/utilities';\nimport { OpenApiConfigService } from './open-api-config.service';\n\nexport interface OpenApiInitOptions {\n /**\n * true - load the open api config file from the default url\n * default url: openapi.json\n */\n load?: {\n openApiUrl?: string;\n } | boolean;\n /**\n * The location origin prefix for the open api base urls if the base url is not absolute. defaults to location.origin\n */\n origin?: string;\n}\n\nexport function OpenApiInit(environment: Environment, options: OpenApiInitOptions = {}) {\n const api = ConfigService.Get<Record<string, { baseUrl?: string }> & { baseUrl: string }>(\n 'api',\n {} as any,\n ConfigService.Config,\n );\n options.origin ??= environment.origin ?? location.origin;\n options.load ??= environment.openApi?.load ?? false;\n if (api.baseUrl) {\n OpenApiConfigService.InsertServer({\n url: api.baseUrl.match(/^https?:\\/\\//) ? api.baseUrl : JoinPath(options.origin, api.baseUrl),\n }, OpenApiConfigService.DefaultServerIndex);\n }\n for (const [ serverId, config ] of Object.entries(api)) {\n if (config && typeof config === 'object') {\n const baseUrl = config.baseUrl;\n if (baseUrl) {\n const url = baseUrl.match(/^https?:\\/\\//) ? baseUrl : JoinPath(options.origin, baseUrl);\n console.debug(`Add server '${ serverId }' with url '${ url }'`);\n OpenApiConfigService.InsertServer(\n { url },\n OpenApiConfigService.DefaultServerIndex,\n serverId,\n );\n }\n }\n }\n if (options.load) {\n return OpenApiConfigService.Load(typeof options.load === 'object' ? options.load.openApiUrl : undefined);\n }\n return undefined;\n}\n","import {\n HttpHeaders,\n HttpParams,\n} from '@angular/common/http';\nimport { isDevMode } from '@angular/core';\nimport { HttpRemoteMethodParameter } from '@rxap/remote-method/http';\nimport {\n assertsObject,\n coerceArray,\n isPromiseLike,\n IsRecord,\n} from '@rxap/utilities';\nimport Ajv from 'ajv';\nimport { OpenAPIV3 } from 'openapi-types';\nimport { RxapOpenApiError } from './error';\nimport { OperationObjectWithMetadata } from './open-api';\nimport {\n IsReferenceObject,\n NotContainsReferenceObjects,\n} from './utilities';\n\nexport interface SchemaValidationResponse<Data> {\n headers: HttpHeaders;\n status: number;\n body?: Data | null;\n data?: Data;\n}\n\n\n\nexport class SchemaValidationMixin<Response = any, Parameters extends Record<string, any> | void = any, RequestBody = any> {\n\n public static STRICT = false;\n\n protected disableSchemaValidation?: boolean;\n\n /**\n * Validates the parameters against the schema specified in the operation object\n *\n * @param operation\n * @param parameters\n * @param strict\n * @protected\n */\n public validateParameters(operation: OperationObjectWithMetadata, parameters?: Parameters, strict = false): void {\n\n const operationParameters = coerceArray(operation.parameters);\n\n if (!NotContainsReferenceObjects<OpenAPIV3.ParameterObject>(operationParameters)) {\n throw new RxapOpenApiError('The operation parameters contains ReferenceObject!');\n }\n\n if (parameters === undefined) {\n // TODO : find concept to definition witch parameter should not be checked if required\n // header parameters are never required if changes the semantic release manager breaks\n const requiredParameters = operationParameters.filter(parameter => parameter.required &&\n parameter.in !==\n 'header');\n if (requiredParameters.length) {\n if (isDevMode()) {\n console.debug('Some operation parameters are required!', requiredParameters.map(p => p.name));\n }\n this.validationError('Some operation parameters are required!', strict);\n }\n\n } else if (IsRecord(parameters)) {\n\n for (const parameter of operationParameters) {\n\n if (parameter.required) {\n // header parameters are never required if changes the semantic release manager breaks\n if (parameter.in !== 'header') {\n if (!parameters.hasOwnProperty(parameter.name)) {\n this.validationError(`The operation parameter '${ parameter.name }' is required!`, strict);\n }\n }\n }\n\n\n if (parameter.schema) {\n if (parameters.hasOwnProperty(parameter.name)) {\n\n const value = parameters[parameter.name];\n\n if (!this.validate(parameter.schema, value)) {\n this.validationError(\n `The parameter '${ parameter.name }' is not valid against the schema!`,\n strict,\n parameter.schema,\n value,\n );\n }\n\n }\n }\n\n }\n\n } else {\n if (operationParameters.length === 0 || operationParameters.every(op => !op.required)) {\n if (isDevMode()) {\n console.warn(\n `The operation ${ operation.operationId } does not expect any parameters. But a parameter is provided.`,\n parameters,\n );\n }\n } else {\n throw new Error('The parameters object is not a record');\n }\n }\n\n }\n\n /**\n * Validates the http response against the schema specified in the operation object\n *\n * @param operation\n * @param response\n * @param strict\n * @protected\n */\n public validateResponse(\n operation: OperationObjectWithMetadata,\n response: SchemaValidationResponse<Response>,\n strict = false,\n ): void {\n\n // region only validate the response if the content type is undefined or application/json\n\n const contentType = response.headers.get('Content-Type');\n\n if (contentType && contentType !== 'application/json') {\n if (isDevMode()) {\n console.warn('Response validation is only supported for content type application/json');\n }\n return;\n }\n\n // endregion\n\n if (operation.responses) {\n\n const status = response.status;\n\n // region extract the response object based on the response status\n let responseObject: OpenAPIV3.ResponseObject | OpenAPIV3.ReferenceObject | undefined;\n\n if (operation.responses[status]) {\n responseObject = operation.responses[status];\n } else {\n // use the default response object if no matching was found.\n responseObject = operation.responses['default'];\n }\n // endregion\n\n if (responseObject) {\n\n if (IsReferenceObject(responseObject)) {\n throw new RxapOpenApiError('Found a reference object. The operation config is not expand!');\n }\n\n // region validate the response against the schema if defined\n\n // TODO : create schema that validates all parameters at once\n\n if (responseObject.content &&\n responseObject.content['application/json'] &&\n responseObject.content['application/json'].schema) {\n\n const schema = responseObject.content['application/json'].schema;\n\n const data = response.body ?? response.data;\n\n if (!this.validate(schema, data)) {\n this.validationError('The response is not valid ageist the operation schema!', strict, schema, data);\n }\n\n }\n\n // endregion\n\n }\n\n\n }\n\n }\n\n public validateRequestBody(operation: OperationObjectWithMetadata, body?: RequestBody, strict = false): void {\n\n // only validate body if type of object\n if (typeof body !== 'object') {\n return;\n }\n\n if (operation.requestBody) {\n\n if (IsReferenceObject(operation.requestBody)) {\n throw new RxapOpenApiError('Found a reference object. The operation config is not expand!');\n }\n\n if (body === undefined && operation.requestBody.required) {\n this.validationError('The request body is required!', strict);\n }\n\n if (operation.requestBody.content && operation.requestBody.content['application/json']) {\n\n const schema = operation.requestBody.content['application/json'].schema;\n\n if (schema) {\n if (!this.validate(schema, body)) {\n this.validationError('The request body is not valid!', strict, schema, body);\n }\n }\n\n }\n\n }\n\n }\n\n public validationError(\n message: string,\n strict: boolean,\n schema?: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject,\n value?: any,\n ) {\n if (isDevMode() && schema !== undefined) {\n console.debug(\n message,\n {\n schema,\n value,\n },\n );\n }\n if (strict || SchemaValidationMixin.STRICT) {\n throw new RxapOpenApiError(message, '', 'SchemaValidationMixin');\n } else {\n console.warn(message);\n }\n }\n\n public buildHttpParams(\n operationParameters: OpenAPIV3.ParameterObject[],\n parameters?: Parameters,\n ignoreUndefined = true,\n ): HttpParams {\n\n let params = new HttpParams();\n\n if (IsRecord(parameters)) {\n\n for (const parameter of operationParameters.filter(p => p.in === 'query')) {\n const parameterName = parameter.name;\n\n if (parameters.hasOwnProperty(parameter.name)) {\n\n const value = parameters[parameter.name];\n\n if (value === undefined && ignoreUndefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n\n if (value.length) {\n\n const first = value.shift();\n\n params = params.set(parameterName, typeof first === 'object' ? JSON.stringify(first) : first);\n\n for (const item of value) {\n params = params.append(parameterName, typeof item === 'object' ? JSON.stringify(item) : item);\n }\n\n }\n\n } else {\n params = params.set(parameter.name, typeof value === 'object' ? JSON.stringify(value) : value);\n }\n\n }\n\n }\n\n }\n\n return params;\n\n }\n\n public buildHttpHeaders(operationParameters: OpenAPIV3.ParameterObject[], parameters?: Parameters): HttpHeaders {\n\n let headers = new HttpHeaders();\n\n if (IsRecord(parameters)) {\n\n for (const parameter of operationParameters.filter(p => p.in === 'header')) {\n\n if (parameters.hasOwnProperty(parameter.name)) {\n\n const value = parameters[parameter.name];\n\n if (Array.isArray(value)) {\n\n if (value.length) {\n\n const first = value.shift();\n\n headers = headers.set(parameters['name'], typeof first === 'object' ? JSON.stringify(first) : first);\n\n for (const item of value) {\n headers = headers.append(parameters['name'], typeof item === 'object' ? JSON.stringify(item) : item);\n }\n\n }\n\n } else {\n headers = headers.set(parameter.name, typeof value === 'object' ? JSON.stringify(value) : value);\n }\n\n }\n\n }\n\n }\n\n return headers;\n\n }\n\n public buildHttpPathParams(\n operationParameters: OpenAPIV3.ParameterObject[],\n parameters?: Parameters,\n ): Record<string, string> {\n\n const pathParams: Record<string, any> = {};\n\n if (IsRecord(parameters)) {\n\n for (const parameter of operationParameters.filter(p => p.in === 'path')) {\n\n if (parameters.hasOwnProperty(parameter.name)) {\n pathParams[parameter.name] = encodeURIComponent(typeof parameters[parameter.name] === 'object' ?\n JSON.stringify(parameters[parameter.name]) :\n parameters[parameter.name]);\n }\n\n }\n\n }\n\n return pathParams;\n\n }\n\n /**\n * Converts open api parameters into the corresponding http options to\n * create a http request. The transformation is guided by the openapi definition\n *\n * @param operation\n * @param parameters\n * @param requestBody\n * @param ignoreUndefined\n */\n public buildHttpOptions(\n operation: OperationObjectWithMetadata,\n parameters?: Parameters,\n requestBody?: RequestBody,\n ignoreUndefined = true,\n ): HttpRemoteMethodParameter {\n\n const options: HttpRemoteMethodParameter = {};\n\n const operationParameters = coerceArray(operation.parameters);\n\n if (!NotContainsReferenceObjects<OpenAPIV3.ParameterObject>(operationParameters)) {\n throw new RxapOpenApiError('The operation parameters contains ReferenceObject!');\n }\n\n const params = this.buildHttpParams(operationParameters, parameters, ignoreUndefined);\n const headers = this.buildHttpHeaders(operationParameters, parameters);\n const pathParams: Record<string, any> = this.buildHttpPathParams(operationParameters, parameters);\n\n if (params.keys().length) {\n options.params = params;\n }\n\n if (headers.keys().length) {\n options.headers = headers;\n }\n\n if (Object.keys(pathParams).length) {\n options.pathParams = pathParams;\n }\n\n if (requestBody !== undefined) {\n const [ body, contentType ] = this.buildBody(operation, requestBody);\n if (body !== undefined) {\n options.body = body;\n if (contentType !== undefined) {\n options.headers ??= new HttpHeaders();\n options.headers.set('Content-Type', contentType);\n }\n }\n }\n\n return options;\n\n }\n\n private buildBody(operation: OperationObjectWithMetadata, requestBody: RequestBody): [ any, string | undefined ] {\n const accept: string[] = [];\n if (operation.requestBody && !IsReferenceObject(operation.requestBody)) {\n if (operation.requestBody.content) {\n for (const contentType of Object.keys(operation.requestBody.content)) {\n accept.push(contentType);\n }\n }\n }\n if (!accept.length) {\n console.warn('No content type found for the request body! Omitting the body!');\n return [ undefined, undefined ];\n }\n if (accept.length > 1) {\n console.warn('Multiple content types found for the request body! Using the first one!');\n }\n const contentType = accept[0];\n switch (contentType) {\n\n case 'application/json':\n assertsObject(requestBody);\n return [ requestBody, contentType ];\n\n case 'application/x-www-form-urlencoded':\n assertsObject(requestBody);\n // eslint-disable-next-line no-case-declarations\n let params = new HttpParams();\n for (const [ key, value ] of Object.entries(requestBody)) {\n params = params.set(key, value);\n }\n return [ params.toString(), contentType ];\n\n case 'multipart/form-data':\n assertsObject(requestBody);\n // eslint-disable-next-line no-case-declarations\n const formData = new FormData();\n\n // Iterate through the JSON object and append each field to FormData\n for (const [ key, value ] of Object.entries(requestBody)) {\n formData.append(key, value);\n }\n return [ formData, contentType ];\n\n default:\n return [ requestBody, contentType ];\n\n }\n\n }\n\n private validate(schema: string | boolean | object, value: any): boolean {\n\n if (this.disableSchemaValidation) {\n return true;\n }\n\n if (typeof schema !== 'object') {\n throw new Error('The schema must be an object!');\n }\n\n if (!schema) {\n throw new Error('The schema must not be null or undefined!');\n }\n\n let result: boolean | PromiseLike<any>;\n\n const ajv = new Ajv();\n const validate = ajv.compile(schema);\n\n try {\n result = validate(value);\n } catch (e: any) {\n console.error(e.message);\n return false;\n }\n\n if (isPromiseLike(result)) {\n throw new Error(\n 'Async schema validation is not yet supported. Ensure the all refs in the openapi schema are internal!');\n }\n\n return result;\n }\n\n}\n","// region \nexport * from './lib/error';\nexport * from './lib/open-api-config.service';\nexport * from './lib/open-api-http-response.error';\nexport * from './lib/open-api-init';\nexport * from './lib/open-api.meta-data';\nexport * from './lib/open-api';\nexport * from './lib/schema-validation.mixin';\nexport * from './lib/tokens';\nexport * from './lib/utilities';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAEM,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAE7C,IAAA,WAAA,CAAY,OAAe,EAAE,IAAa,EAAE,KAAc,EAAA;QACxD,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC;;AAGtD;;MCNY,oBAAoB,GAAG,IAAI,cAAc,CAAC,sBAAsB;MAChE,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC;MACpF,wCAAwC,GAAG,IAAI,cAAc,CACxE,+CAA+C;MACpC,sCAAsC,GAAG,IAAI,cAAc,CAAC,6CAA6C;MACzG,yBAAyB,GAAG,IAAI,cAAc,CAAU,yCAAyC,EAAE;AAC9G,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,IAAI;AACpB,CAAA;MACY,kBAAkB,GAAG,IAAI,cAAc,CAAU,kCAAkC,EAAE;AAChG,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,IAAI;AACpB,CAAA;;ACXK,SAAU,iBAAiB,CAAC,GAAS,EAAA;IACzC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC;AAC5C;AAEM,SAAU,2BAA2B,CAAI,KAAwD,EAAA;IACrG,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAC3E;AAEM,SAAU,WAAW,CAAC,GAAS,EAAA;AACnC,IAAA,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5E;AAEM,SAAU,eAAe,CAAC,GAAS,EAAA;AAEvC,IAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACrB,QAAA,MAAM,IAAI,gBAAgB,CAAC,yCAAyC,CAAC;;AAGzE;;MCJa,oBAAoB,CAAA;aACjB,IAAM,CAAA,MAAA,GAA8B,IAA9B,CAAmC;aAEzC,IAAkB,CAAA,kBAAA,GAAG,CAAH,CAAK;aAEtB,IAAW,CAAA,WAAA,GAAwB,IAAxB,CAA6B;AAGxC,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAgD,CAAC;AAEzF,IAAA,IAAY,eAAe,GAAA;QACzB,OAAO,oBAAoB,CAAC,eAAe;;AAG7C,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAG1C,IAAA,WAAA,CAGI,SAAoC,IAAI,EAAA;AAfrC,QAAA,IAAA,CAAA,kBAAkB,GAAW,oBAAoB,CAAC,kBAAkB;QACnE,IAAW,CAAA,WAAA,GAAwB,IAAI;QAwBvC,IAAO,CAAA,OAAA,GAA8B,IAAI;AAR/C,QAAA,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,MAAM;QAC9C,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;YACrB,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,MAAM,CAAC;;AAEhE,QAAA,oBAAoB,CAAC,MAAM,KAAK,MAAM;;AAKxC,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;;QAEnD,OAAO,IAAI,CAAC,OAAO;;AAGrB;;;;;;;AAOG;AACI,IAAA,aAAa,IAAI,CAAC,UAAU,GAAG,cAAc,EAAA;QAClD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;QAGrD,IAAI,MAAM,GAA8B,IAAI;AAC5C,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC;AACxC,YAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;QAC9B,OAAO,KAAU,EAAE;YACnB,OAAO,CAAC,KAAK,CACX,CAAA,yCAAA,EAA6C,UAAW,CAAI,EAAA,CAAA,EAC5D,KAAK,CACN;YACD,OAAO,CAAC,KAAK,CACX,CAA6C,yCAAA,EAAA,UAAW,CAAI,EAAA,CAAA,EAC5D,KAAK,CAAC,OAAO,CACd;;QAGH,IAAI,MAAM,EAAE;YACV,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAEvD,eAAe,CAAC,cAAc,CAAC;AAE/B,YAAA,IAAI,CAAC,MAAM,GAAG,cAAc;;aACvB;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;;IAIf,OAAO,YAAY,CAAC,WAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;;AAGnD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;QAErD,IAAI,CAAC,IAAI,CAAC,WAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,kBAAmB,WAAY,CAAA,oCAAA,CAAsC,CACtE;;QAEH,OAAO,IAAI,CAAC,WAAY,CAAC,GAAG,CAAC,WAAW,CAAE;;IAGpC,OAAO,cAAc,CAAC,MAA0B,EAAA;AACtD,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuC;AAEjE,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACpB,aAAA,MAAM,CACL,CAAC,IAAI,KACH,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;aAExB,MAAM,CACL,CAAC,CAAE,CAAC,EAAE,OAAO,CAAwC,KACnD,OAAO;AACP,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAC/B,CAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC7D;AAEJ,aAAA,OAAO,CAAC,CAAC,CAAE,IAAI,EAAE,OAAO,CAAwC,KAC/D,MAAM,CAAC,OAAO,CAAC,OAAO;AACf,aAAA,MAAM,CACL,CAAC,IAAI,KACH,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;aAExB,OAAO,CACN,CAAC,CAAE,MAAM,EAAE,SAAS,CAAyC,KAAI;AAC/D,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAC1B,gBAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;;YAG3D,IAAI,UAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;gBAC1C,MAAM,IAAI,KAAK,CACb,CAAA,uBAAA,EAA2B,SAAS,CAAC,WAAY,CAAuB,qBAAA,CAAA,CACzE;;AAGH,YAAA,UAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;AACrC,gBAAA,GAAG,SAAS;AACZ,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;AAC7B,aAAA,CAAC;SACH,CACF,CACR;AAEP,QAAA,OAAO,UAAU;;IAGX,OAAO,UAAU,CACvB,MAA0B,EAC1B,WAAsB,GAAA,IAAI,CAAC,kBAAkB,EAAA;AAE7C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;QAElE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,CAAC,KAAK,CACX,CAAA,oDAAA,EAAwD,WAAY,CAA4B,0BAAA,CAAA,EAChG,MAAM,CACP;AACD,YAAA,MAAM,IAAI,KAAK,CACb,uDAAwD,WAAY,CAAA,0BAAA,CAA4B,CACjG;;QAGH,OAAO,MAAM,CAAC,GAAG;;AAGnB;;;;;AAKG;IACK,OAAO,aAAa,CAC1B,MAAwB,EAAA;AAExB,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;;AAGzB,IAAA,YAAY,CAAC,WAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;;YAEzF,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;;QAEtE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACtC,OAAO,CAAC,KAAK,CACX,CAAA,eAAA,EAAmB,WAAY,CAAsC,oCAAA,CAAA,EACrE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CACtC;AACD,YAAA,MAAM,IAAI,KAAK,CACb,kBAAmB,WAAY,CAAA,oCAAA,CAAsC,CACtE;;QAEH,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAE;;AAGpC,IAAA,UAAU,CAAC,WAAsB,GAAA,IAAI,CAAC,kBAAkB,EAAE,QAAiB,EAAA;AAChF,QAAA,IAAI,YAAgD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;AAC3C,QAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,EAAE;AACxB,YAAA,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;;QAErC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,WAAW,CAAC;;QAEjE,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,CAAC,KAAK,CACX,CAAA,iDAAA,EAAqD,WAAY,CAAwB,oBAAA,EAAA,QAAS,GAAG,EACrG,SAAS,EAAE,GAAG,OAAO,GAAG,SAAS,CAClC;YACD,MAAM,IAAI,KAAK,CAAC,CAAA,iDAAA,EAAqD,WAAY,CAAwB,oBAAA,EAAA,QAAS,CAAG,CAAA,CAAA,CAAC;;QAExH,OAAO,YAAY,CAAC,GAAG;;AAGlB,IAAA,OAAO,YAAY,CACxB,YAAoC,EACpC,KAAa,EACb,QAAiB,EACjB,MAAA,GAA6B,IAAI,CAAC,MAAO,EAAA;AAEzC,QAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,gBAAA,MAAM,CAAC,OAAO,GAAG,EAAE;;YAErB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC;;QAE/C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACvC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;;QAExC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY;QAC1B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;;IAGnC,YAAY,CACjB,YAAoC,EACpC,KAAA,GAAgB,IAAI,CAAC,kBAAkB,EACvC,QAAiB,EAAA;AAEjB,QAAA,oBAAoB,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;;AA1OpE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAoBrB,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AApBnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAoB7B;;0BACA,MAAM;2BAAC,oBAAoB;;;AClC1B,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;IAE7D,WACkB,CAAA,iBAAoC,EACpC,QAAyB,EAAA;AAEzC,QAAA,KAAK,CAAC;YACJ,KAAK,EAAE,iBAAiB,CAAC,KAAK;YAC9B,OAAO,EAAE,iBAAiB,CAAC,OAAO;YAClC,MAAM,EAAE,iBAAiB,CAAC,MAAM;YAChC,UAAU,EAAE,iBAAiB,CAAC,UAAU;AACxC,YAAA,GAAG,EAAE,iBAAiB,CAAC,GAAG,IAAI,SAAS;AACxC,SAAA,CAAC;QATc,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAQ,CAAA,QAAA,GAAR,QAAQ;AASxB,QAAA,IAAK,KAAa,CAAC,mBAAmB,CAAC,EAAE;YACtC,KAAa,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,wBAAwB,CAAC;;QAErE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC;;AAGvD,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;AAGzB,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;;AAGhC;;SCXe,WAAW,CAAC,WAAwB,EAAE,UAA8B,EAAE,EAAA;AACpF,IAAA,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAC3B,KAAK,EACL,EAAS,EACT,aAAa,CAAC,MAAM,CACrB;IACD,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;IACxD,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,KAAK;AACnD,IAAA,IAAI,GAAG,CAAC,OAAO,EAAE;QACf,oBAAoB,CAAC,YAAY,CAAC;YAChC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC;AAC7F,SAAA,EAAE,oBAAoB,CAAC,kBAAkB,CAAC;;AAE7C,IAAA,KAAK,MAAM,CAAE,QAAQ,EAAE,MAAM,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACtD,QAAA,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACxC,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;YAC9B,IAAI,OAAO,EAAE;gBACX,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;gBACvF,OAAO,CAAC,KAAK,CAAC,CAAA,YAAA,EAAgB,QAAS,CAAgB,YAAA,EAAA,GAAI,CAAG,CAAA,CAAA,CAAC;AAC/D,gBAAA,oBAAoB,CAAC,YAAY,CAC/B,EAAE,GAAG,EAAE,EACP,oBAAoB,CAAC,kBAAkB,EACvC,QAAQ,CACT;;;;AAIP,IAAA,IAAI,OAAO,CAAC,IAAI,EAAE;QAChB,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;;AAE1G,IAAA,OAAO,SAAS;AAClB;;MCpBa,qBAAqB,CAAA;aAElB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAI7B;;;;;;;AAOG;AACI,IAAA,kBAAkB,CAAC,SAAsC,EAAE,UAAuB,EAAE,MAAM,GAAG,KAAK,EAAA;QAEvG,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;AAE7D,QAAA,IAAI,CAAC,2BAA2B,CAA4B,mBAAmB,CAAC,EAAE;AAChF,YAAA,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC;;AAGlF,QAAA,IAAI,UAAU,KAAK,SAAS,EAAE;;;AAG5B,YAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ;AACnF,gBAAA,SAAS,CAAC,EAAE;AACZ,oBAAA,QAAQ,CAAC;AACX,YAAA,IAAI,kBAAkB,CAAC,MAAM,EAAE;gBAC7B,IAAI,SAAS,EAAE,EAAE;AACf,oBAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;AAE/F,gBAAA,IAAI,CAAC,eAAe,CAAC,yCAAyC,EAAE,MAAM,CAAC;;;AAGpE,aAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AAE/B,YAAA,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE;AAE3C,gBAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;;AAEtB,oBAAA,IAAI,SAAS,CAAC,EAAE,KAAK,QAAQ,EAAE;wBAC7B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;4BAC9C,IAAI,CAAC,eAAe,CAAC,CAA6B,yBAAA,EAAA,SAAS,CAAC,IAAK,CAAgB,cAAA,CAAA,EAAE,MAAM,CAAC;;;;AAMhG,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,IAAI,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;wBAE7C,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAExC,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AAC3C,4BAAA,IAAI,CAAC,eAAe,CAClB,CAAmB,eAAA,EAAA,SAAS,CAAC,IAAK,CAAA,kCAAA,CAAoC,EACtE,MAAM,EACN,SAAS,CAAC,MAAM,EAChB,KAAK,CACN;;;;;;aAQJ;YACL,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACrF,IAAI,SAAS,EAAE,EAAE;oBACf,OAAO,CAAC,IAAI,CACV,CAAkB,cAAA,EAAA,SAAS,CAAC,WAAY,CAA+D,6DAAA,CAAA,EACvG,UAAU,CACX;;;iBAEE;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;;;AAM9D;;;;;;;AAOG;AACI,IAAA,gBAAgB,CACrB,SAAsC,EACtC,QAA4C,EAC5C,MAAM,GAAG,KAAK,EAAA;;QAKd,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAExD,QAAA,IAAI,WAAW,IAAI,WAAW,KAAK,kBAAkB,EAAE;YACrD,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC;;YAEzF;;;AAKF,QAAA,IAAI,SAAS,CAAC,SAAS,EAAE;AAEvB,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM;;AAG9B,YAAA,IAAI,cAAgF;AAEpF,YAAA,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AAC/B,gBAAA,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;;iBACvC;;AAEL,gBAAA,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC;;;YAIjD,IAAI,cAAc,EAAE;AAElB,gBAAA,IAAI,iBAAiB,CAAC,cAAc,CAAC,EAAE;AACrC,oBAAA,MAAM,IAAI,gBAAgB,CAAC,+DAA+D,CAAC;;;;gBAO7F,IAAI,cAAc,CAAC,OAAO;AACxB,oBAAA,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC;oBAC1C,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE;oBAEnD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM;oBAEhE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;oBAE3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;wBAChC,IAAI,CAAC,eAAe,CAAC,wDAAwD,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;;;;;;;AAcvG,IAAA,mBAAmB,CAAC,SAAsC,EAAE,IAAkB,EAAE,MAAM,GAAG,KAAK,EAAA;;AAGnG,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B;;AAGF,QAAA,IAAI,SAAS,CAAC,WAAW,EAAE;AAEzB,YAAA,IAAI,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;AAC5C,gBAAA,MAAM,IAAI,gBAAgB,CAAC,+DAA+D,CAAC;;YAG7F,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE;AACxD,gBAAA,IAAI,CAAC,eAAe,CAAC,+BAA+B,EAAE,MAAM,CAAC;;AAG/D,YAAA,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAEtF,gBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM;gBAEvE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;wBAChC,IAAI,CAAC,eAAe,CAAC,gCAAgC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;;;;;;AAU/E,IAAA,eAAe,CACpB,OAAe,EACf,MAAe,EACf,MAA2D,EAC3D,KAAW,EAAA;AAEX,QAAA,IAAI,SAAS,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,CAAC,KAAK,CACX,OAAO,EACP;gBACE,MAAM;gBACN,KAAK;AACN,aAAA,CACF;;AAEH,QAAA,IAAI,MAAM,IAAI,qBAAqB,CAAC,MAAM,EAAE;YAC1C,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,EAAE,uBAAuB,CAAC;;aAC3D;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAIlB,IAAA,eAAe,CACpB,mBAAgD,EAChD,UAAuB,EACvB,eAAe,GAAG,IAAI,EAAA;AAGtB,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAE7B,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AAExB,YAAA,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;AACzE,gBAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI;gBAEpC,IAAI,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBAE7C,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAExC,oBAAA,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,EAAE;wBAC1C;;AAGF,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAExB,wBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAEhB,4BAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;4BAE3B,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAE7F,4BAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gCACxB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;;;;yBAK5F;wBACL,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;;;;;AAStG,QAAA,OAAO,MAAM;;IAIR,gBAAgB,CAAC,mBAAgD,EAAE,UAAuB,EAAA;AAE/F,QAAA,IAAI,OAAO,GAAG,IAAI,WAAW,EAAE;AAE/B,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AAExB,YAAA,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;gBAE1E,IAAI,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;oBAE7C,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;AAExC,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAExB,wBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAEhB,4BAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAE3B,4BAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAEpG,4BAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,gCAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;;;;yBAKnG;wBACL,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;;;;;AASxG,QAAA,OAAO,OAAO;;IAIT,mBAAmB,CACxB,mBAAgD,EAChD,UAAuB,EAAA;QAGvB,MAAM,UAAU,GAAwB,EAAE;AAE1C,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AAExB,YAAA,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;gBAExE,IAAI,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC7C,oBAAA,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,QAAQ;wBAC5F,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,wBAAA,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;;;AAOnC,QAAA,OAAO,UAAU;;AAInB;;;;;;;;AAQG;IACI,gBAAgB,CACrB,SAAsC,EACtC,UAAuB,EACvB,WAAyB,EACzB,eAAe,GAAG,IAAI,EAAA;QAGtB,MAAM,OAAO,GAA8B,EAAE;QAE7C,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;AAE7D,QAAA,IAAI,CAAC,2BAA2B,CAA4B,mBAAmB,CAAC,EAAE;AAChF,YAAA,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,CAAC;;AAGlF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,UAAU,EAAE,eAAe,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,UAAU,CAAC;QACtE,MAAM,UAAU,GAAwB,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,UAAU,CAAC;AAEjG,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACxB,YAAA,OAAO,CAAC,MAAM,GAAG,MAAM;;AAGzB,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACzB,YAAA,OAAO,CAAC,OAAO,GAAG,OAAO;;QAG3B,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AAClC,YAAA,OAAO,CAAC,UAAU,GAAG,UAAU;;AAGjC,QAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,YAAA,MAAM,CAAE,IAAI,EAAE,WAAW,CAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC;AACpE,YAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,gBAAA,OAAO,CAAC,IAAI,GAAG,IAAI;AACnB,gBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,oBAAA,OAAO,CAAC,OAAO,KAAK,IAAI,WAAW,EAAE;oBACrC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC;;;;AAKtD,QAAA,OAAO,OAAO;;IAIR,SAAS,CAAC,SAAsC,EAAE,WAAwB,EAAA;QAChF,MAAM,MAAM,GAAa,EAAE;AAC3B,QAAA,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;AACtE,YAAA,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE;AACjC,gBAAA,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;AACpE,oBAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;;;;AAI9B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC;AAC9E,YAAA,OAAO,CAAE,SAAS,EAAE,SAAS,CAAE;;AAEjC,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC;;AAEzF,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;QAC7B,QAAQ,WAAW;AAEjB,YAAA,KAAK,kBAAkB;gBACrB,aAAa,CAAC,WAAW,CAAC;AAC1B,gBAAA,OAAO,CAAE,WAAW,EAAE,WAAW,CAAE;AAErC,YAAA,KAAK,mCAAmC;gBACtC,aAAa,CAAC,WAAW,CAAC;;AAE1B,gBAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC7B,gBAAA,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;oBACxD,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;gBAEjC,OAAO,CAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAE;AAE3C,YAAA,KAAK,qBAAqB;gBACxB,aAAa,CAAC,WAAW,CAAC;;AAE1B,gBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;;AAG/B,gBAAA,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACxD,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;;AAE7B,gBAAA,OAAO,CAAE,QAAQ,EAAE,WAAW,CAAE;AAElC,YAAA;AACE,gBAAA,OAAO,CAAE,WAAW,EAAE,WAAW,CAAE;;;IAMjC,QAAQ,CAAC,MAAiC,EAAE,KAAU,EAAA;AAE5D,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;;QAGlD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;;AAG9D,QAAA,IAAI,MAAkC;AAEtC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE;QACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAEpC,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;;QACxB,OAAO,CAAM,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACxB,YAAA,OAAO,KAAK;;AAGd,QAAA,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CACb,uGAAuG,CAAC;;AAG5G,QAAA,OAAO,MAAM;;;;AC7ejB;AAUA;;ACVA;;AAEG;;;;"}